• 컴퓨터 원격제어 프로그램 시스템 구축

    컴퓨터 원격제어 프로그램 시스템 구축

    프로그램 세팅 및 AS 원격제어

    (아래 배너를 클릭하여 원격 제어 프로그램을 다운받고 실행하여주세요)


    위와 같은 원격 시스템구축을 만드는 방법입니다.

    워드프레스 블로그를 이용하여 온라인상에서 컴퓨터 원격제어 시스템을 구축할 수 있습니다.

    간단한 방법으로는 팀뷰어 원격제어 프로그램을 워드프레스 홈페이지에 업로드 하여 고객 컴퓨터를 원격제어 할 수 있습니다.

    제가 하는 방법이기도 하며 팀뷰어 11 정식 버전을 이용하여 고객 컴퓨터를 직접 원격제어 하고 있습니다.

    우선 HTML 소스코드로 팀뷰어 11 QuickSupport 파일을 다운 받을 수 있도록 합니다.

    HTML 소스코드

    <div style="position:relative; width:200px; height:135px;">
      <a href="https://sta.tion.co.kr/wp-content/uploads/2023/04/TeamViewerQS_11.exe" style="text-decoration:none;">
        <img decoding="async" src="https://sta.tion.co.kr/wp-content/uploads/2023/04/teamviewer_badge_flat2.webp" alt="TeamViewer를 이용한 인터넷상 원격 접속 및 지원" title="TeamViewer를 이용한 인터넷상 원격 접속 및 지원" border="0" width="200" height="125" class="jetpack-lazy-image jetpack-lazy-image--handled" data-lazy-loaded="1" loading="eager"><noscript><img data-lazy-fallback="1" decoding="async" src="https://sta.tion.co.kr/wp-content/uploads/2023/04/teamviewer_badge_flat2.webp" alt="TeamViewer를 이용한 인터넷상 원격 접속 및 지원" title="TeamViewer를 이용한 인터넷상 원격 접속 및 지원" border="0" width="200" height="125"  /></noscript>
        <span style="position:absolute; top:93px; left:5px; display:block; cursor:pointer; color:White; font-family:Arial; font-size:14px; line-height:1.2em; font-weight:bold; text-align:center; width:190px;">
          티온스테이션 원격지원 QS
        </span>
      </a>
    </div>

    팀뷰어 원격제어 프로그램 업로드

    만약 실행파일 확장자 .exe 파일이 업로드 안 될 경우 아래 방법대로 따라 하면 팀뷰어 실행 파일을 워드프레스 홈페이지에 업로드 할 수 있습니다.

    워드프레스 페이지 생성

    워드프레스 글 생성, 페이지 생성 이 중 한가지를 이용하여 보여줄 랜딩 페이지를 생성합니다.

    최종적으로 아래와 같은 배너가 만들어지게되며 고객은 그 랜딩 페이지에서 배너를 클릭하여 원격 프로그램을 실행 할 수 있습니다.

    고객은 위의 배너를 클릭하여 팀뷰어 Quick Support 11 버전을 다운받고 실행합니다.

    아래와 같은 팀뷰어 퀵 서포트 화면이 나타나면 [ 귀하의 ID ] 와 [ 비밀번호 ] 두 항목을 알려달라고 하여 팀뷰어 원격 프로그램으로 접속하면 됩니다.

    이제 고객 화면을 인터넷이 연결되는 컴퓨터에서 언제든지 즉시 원격제어 할 수 있습니다.

    감사합니다.

  • ESXi VMWARE Resolution SET 1920 x 1080

    ESXi VMWARE Resolution SET 1920 x 1080

    ESXi VMWARE ResolutionSet Static Method

    윈도우 7, 윈도우 8, 윈도우 10, 윈도우 11 모두 해당하며 VMWare Tools 에서 제공되는 ResolutionSet.exe 파일로 해상도를 고정 할 수 있습니다.

    사용법

    VMwareResolutionSet.exe 0 1 ,0 0 1920 1080

    VMwareResolutionSet 파일을 이용하면 윈도우의 해상도가 고정됩니다.

    ESXi 웹상에서 접속을 하더라도 동일한 해상도가 유지됩니다.

    VMWare Workstation 에서 접속을 하더라도 동일한 해상도가 유지됩니다.

    1920 x 1080 해상도 변경

    VMwareResolutionSet.exe 0 1 ,0 0 1920 1080

    1024 x 768 해상도 변경

    VMwareResolutionSet.exe 0 1 ,0 0 1024 768

    해상도 변경 방법 보고 따라해보세요.

    VMwareResolutionSet.exe Variable1 Variable2 , Variable3 Variable4 Variable5 Variable6
    
    Variable 1 is the index of the primary monitor (Default = 0).
    Variable 2 is the number of total monitors (Default = 1).
    Variable 3 is the starting X position of monitor 0 (Default = 0).
    Variable 4 is the starting Y position of monitor 0 (Default = 0).
    Variable 5 is the width (X) of monitor 0 in pixels.
    variable 6 is the width (Y) of monitor 0 in pixels.
    
    For Example: 
    
    To set the virtual machine display resolution to 3280 x 2048:
    
    VMwareResolutionSet.exe 0 1 , 0 0 3280 2048
    
    To set a virtual machine with two monitors side-by-side, one at 1920x1200 and one at 1600x1200:
    
    VMwareResolutionSet.exe 0 2 , 0 0 1920 1200 , 1920 0 1600 1200

    참조 https://kb.vmware.com/s/article/2058577

    Virtual Machine Changes
     
    
    Power off the virtual machine.
    Open the .vmx file in a text editor.
    If you are using ESX, you can proceed to step 4.
    
    If you are using an older version of hosted product (Workstation, ACE, Player, Server, or Fusion), add this line so that video memory settings changes made here will be respected by the virtual machine and not overridden by VMware Tools:
    
    svga.autodetect = "FALSE"
    
    Note: If you are using ESX, this value is set by default.
     
    Calculate the amount of video memory required to support the highest desired resolution. Multiply the width by the height of the largest resolution desired, then multiply the result by 4. If the result exceeds 16777216 (or 4194304 for ESX Server), the video memory must be increased. Add or update this line in the .vmx file and then append the resulting value of the calculation:
    
    svga.vramSize =
    
    Example: To add the resolution 2560 x 2048 to a Workstation virtual machine, multiply 2560 * 2048 * 4 to get 20971520. This is the amount of memory in bytes required for the resolution. The result, 20971520 bytes, exceeds the default of 16777216 bytes. Therefore, you must add this line to increase the video memory available:
    
    svga.vramSize = 20971520
    
    Notes:
    The value must be evenly divisible by 65536 when the guest is running Windows. For more information, see Certain graphical elements are not drawn in a virtual machine running Windows (1001558).
    If the value exceeds the maximum video RAM supported by your hardware version, it is automatically adjusted to the maximum.
     
    Add or update the maxWidth and maxHeight values to provide the desired resolution. This value is used to report the maximum size of the attached virtual monitor to the guest operating system. Values cannot exceed the resolutions used to calculate the video memory size in step 4, to ensure that there is enough video memory available to support the resolution.
    
    svga.maxWidth = 2560
    svga.maxHeight = 2048
    
    Note: Certain resolutions are not supported by all guests. Virtual machines running Netware or FreeBSD guest operating systems may not support this resolution change. The value must be evenly divisible by 65536 when the guest is running Windows.
    If you are using more than one display monitor in the virtual machine, add the following line to the .vmx file.
    
    svga.numDisplays = "number_of_displays"
    If you are using two display monitors then the entry would be svga.numDisplays = "2"
    
    Note: If the above value is not declared, the virtual machine will default to one display monitor.
     
    Save the file and open the virtual machine.

    참조 https://kb.vmware.com/s/article/1003

    vmware 에서 직접 제공해주는 자료를 참고하여 글을 작성하였습니다.

    위의 마지막 부분은 듀얼모니터 사용할 때 각각 해상도 고정하는 방법입니다.

  • .htaccess Redirect RewriteEngine 리다이렉트

    .htaccess Redirect RewriteEngine 리다이렉트

    이 문서는 매우 중요한 문서이며 공개 될 경우 개발자들 사이에서 많이 사용하게 됩니다.

    오늘 이 정보는 너무 중요해서 가리겠습니다.

    부자들은 아래 코드를 사용해야합니다

    [coupang]

    .htaccess Redirect

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^(domain\.com|www\.domain\.kr)
    RewriteRule (.*) https://RedirectDomain.com [L]
    
    #예시
    RewriteRule (.*) https://vlog.tion.co.kr/smartphone/?referer=refererUrl&r=refereValue [L]

    도메인을 이용하여 전체 URL에 대해서 특정 URL로 강제 리다이렉트 시킬 수 있습니다.

    이때 주의 할 점은 301 Redirect 를 사용하면 안됩니다.

    [coupang_end]

    301을 사용하게 될 경우 크롬브라우저에서 처음을 인지하지 않고 마지막을 기억하여 캐시로 바로 마지막 주소에 도달하게 됩니다. 결국 앞에 레퍼값이 모두 사라지게 되므로 원하는 그림을 만들기가 어렵게 됩니다.

    307 또는 308 리다이렉트를 사용해야하며 딜레이는 딱히 주지 않아도 됩니다.

    0초를 주던 1초를 주던 상대 도착지점에서는 레퍼값이 이전 값을 알수 없게됩니다.

    같은 정보라도 보는 사람에 따라 어떻게 활용하냐에 달려있는 거 같습니다.

    보물 지도를 보고도 그게 보물인지 모르죠.

    마치 지금 이 글처럼요..

    실제 어떻게 활용되고 응용되는지 눈응로 보여주면 ‘아~~~’ 하겠지만…

    그전까지는 그저 .haccess 301 Redirect 스크립트에 불과하죠.

    끝!

  • AWS Route 53 도메인 20개 제한 해제

    AWS Route 53 도메인 20개 제한 해제

    도메인 기관이전을 열심히 하고 있었습니다.

    KSDOM -> AWS Route 53 이렇게 옮기는데 도메인 20개째부터 더이상 이전신청이 되지 않아 알아보니 AWS Route 53에서 제공하는 갯수가 20개더군요.

    그래서 오늘로써 그 제한을 해제신청했습니다. 여태 모르고 있었네요.

    https://us-east-1.console.aws.amazon.com/servicequotas/home?region=us-east-1#!/services/route53/quotas

    1000개로 늘려놓아야겠네요.

    여태 도메인 갯수 20개 제한 있는것도 모르고 있었는걸 보면 제가 그동안 얼마나 게을리 있었는지 알 수 있습니다.

    한국에 사이트 몇개 운영 하지 않을때에도 도메인이 100개 넘었는데 글로벌하게 확장하려면 최소 1000개 이상은 구입해야겠죠.

    그런 의미에서 매일마다 웹사이트 하나씩 만들어보도록 하겠습니다.

    AWS Route 53 도메인 20개 제한 해제 끝!

  • AWS Route 53 도메인 이전 갯수 제한 20개 늘리기

    AWS Route 53 도메인 이전 갯수 제한 20개 늘리기

    이번에 AWS Route 53 쪽으로 도메인을 이전을 많이 하게 되었습니다.

    처음에는 한개씩 이전하다보니 몰랐었는데.. Route 53 서비스도 도메인 이전 제한이 있더군요.

    그런데 다시 알아보니 AWS Route 53 도메인 한계치가 20개더군요. 즉 20개째까지 기관이전이 가능했고 21개부터 신청이 안된거였습니다.

    2개가 이미 이전상태로 대기중이라면 3번째 도메인은 대기상태가 아닌 아예 신청이 안됩니다.

    	
    죄송하지만 일부 도메인에 대한 도메인 이전 요청을 제출할 때 다음과 같은 오류가 발생했습니다.
    royalkeyword.net
    최대 허용 도메인 수에 도달했습니다. Route 53 대시보드에서 제한 증가를 요청할 수 있습니다.
    

    이렇게 진행 자체가 되지 않습니다.

    예전에 EC2 인스턴스도 5개 이상 구입할경우 탄력적 IP (고정아이피)를 6개째부터 사용할 수 없었죠.

    그때도 제한을 풀어서 20개까지 사용했었습니다.

    그 후로 라이트세일도 제한이 걸려있었고 이번에 또 Route 53 서비스에서 이전진행할때 2개까지만 되는군요.

    위처럼 2개를 10개로 아니면 그 이상으로 열어달라고 요청했습니다.

    지금은 2개가 진행중인 상태입니다.

    일단 제한이 늘어나기전에 2개 진행부터 되면 또 신청 할 수 있으니 진행은 빠르게 버튼 눌러가면서 진행하고 있습니다.

    .com 도메인과 .net 도메인은 국제도메인이라서 AWS Route 53 에서 관리할 수 있으며 각각 13달러 11달러라서 한국 업체에서 구입하는거랑 큰 차이도 없어서 그냥 AWS 에서 관리하기로 했습니다.

    도메인 이전이 완료되면 바로 DNS 서버 연결이 될 수 있도록 네임서버 세팅도 마무리 했습니다.

    IT 전문가는 암기 그리고 아는것이 중요한게 아니라 실전에 실제로 적용시키면서 시스템을 만들어 낼 수 있어야 합니다.

    도메인 20개 할당 제한 요청

    https://us-east-1.console.aws.amazon.com/servicequotas/home?region=us-east-1#!/services/route53/quotas

    오늘도 끝!

  • AWS Route 53 도메인 이전 KSDOM(iTEASY) 가져오기

    AWS Route 53 도메인 이전 KSDOM(iTEASY) 가져오기

    AWS Route 53 쪽으로 도메인을 모으고 있습니다.

    이유는 간단합니다.

    관리가 편하거든요.

    사실 ITEASY (구. KSDOM) 업체를 이용했던 이유는 한가지였습니다.

    한국 도메인 (co.kr 과 kr)이 저렴하다는 정도였고 부가적인 요소를 굳이 찾으라 한다면 웹 DNS 를 도메인별로 50개 정도 제공한다는 점이 매력적이었죠. 사실 도메인마다 50개 다 채우려면 제 메인 tion.kr , tion.co.kr 이런 도메인들 아니고서는 힘들죠.

    관리 차원에서 tion.kr 도메인은 50개를 넘어서 tion.co.kr 도메인쪽에 DNS를 넘겨서 사용해야 했던 불편한 사항은 있긴했습니다.

    다른 업체 ( 후이즈, 가비아, 카페24, 닷네엠코리아, 도레지 등등 ) 왠만한 도메인 대행 업체를 사용해보았으며 가격면에서 KSDOM 만한 곳이 없었죠.

    하지만 최근에 와서 제가 위에 보여드린것처럼 AWS Route 53 쪽으로 도메인을 모으고 있습니다.

    특히 .com 도메인의 경우 13달러 (한화 대략 15000~16000원) 정도이며 여러가지 부가적인 세금이 붙으면 17000원 정도 하는데

    KSDOM과 가격차이가 거의 없더군요.

    게다가 제가 요즘 확보하는 도메인들은 글로벌화 하게 .com .net .link .click .es 등등 이러한 글로벌화에 맞춘 도메인들이라서 굳이 .co.kr 과 .kr 을 고집할 필요가 없더군요.

    그래서 만기 돌아오는 co.kr 도메인과 .kr 도메인은 필요하지 않다 싶으면 그냥 낙장으로 버리고 있고요.

    사용중인 도메인은 그냥 ksdom에 놔두고 사용중입니다.

    대신 .com 도메인과 .net 도메인들은 AWS Route 53 쪽으로 기관 이전을 신청하여 하나씩 옮기고 있습니다.

    옮기면서 더 좋아진 점이라면….음…. 자동결제? ㅎㅎ

    한국에도 자동결제 되는 업체가 있겠지만 그리고 10년 장기 결제 해놓으면 딱히 이런 부분들을 생각하지 않겠지만…

    1년단위로 결제를 해야하는 도메인도 사실 있습니다. 그리고 매해 결제를 늦지 않고 해야하죠.

    그런 도메인들이 자동으로 결제가 된다면 굿데디나 이런 서비스를 사용해도 괜찮죠.

    암튼… AWS Route 53 에 도메인을 올려놓으면 제가 편하고 좋습니다.

    DNS 서버도 아마존에서 EC2 인스턴스로 2개 운영하고 있으니 그냥 도메인관련해서는 아마존에게 다 맡긴 샘이죠.

    제 개인적으로 운영중이던 munhoyoung.com 도메인이 만료일이 다 되어서 낙장 대기 명단에 올라와있더군요.

    이를 KSDOM 업체에서 AWS Route 53 쪽으로 기관 이전을 진행합니다.

    위에 보시면 [ 기존 도메인을 이전 ] 합니다 라고 적혀있거든요. 이부분을 클릭하면 됩니다.

    확인 버튼을 클릭하면 이전이 가능한지 여부를 확인하고 바로 장바구니 넣어서 진행할 수 있습니다.

    이까지 딱히 어려운 부분은 없습니다.

    1. 권한 부여 코드 및 이름 서버

    이 부분은 영어가 아닌 한글로 번역되다보니 재미있는 단어가 나온거 같습니다.

    인증코드랑 네임서버 이렇게 두가지를 입력해야합니다.

    인증코드는 KSDOM 업체로 요청하면 도메인에 등록된 메일로 코드가 발급됩니다.

    이 코드를 아마존 Route 53 인증코드 항목에 입력하면 되고요.

    네임서버 항목에 뭘 넣으셔야 할지 모르는 분들이 상당히 많이 있습니다.

    일단은 이전하실때에는 이전전에 등록된 NameServer 리스트 그대로 유지하시는게 좋습니다.

    저처럼 네임서버를 따로 운영하고 관리를 해야한다면 새로 등록하면 되지만 ….

    저는 이전하기 이전에 KSDOM 업체에서 이미 네임서버를 변경한 상태입니다.

    개인정보관련해서 입력하시면 됩니다.

    저는 도메인을 이미 많이 등록한 상태라서 기존 등록된 기본 주소랑 정보가 입력되었네요.

    이 부분은 제가 중요하게 여기는 부분입니다. ㅎ

    도메인을 자동 갱신하시겠습니까? Yes!!

    이렇게 해서 신청했습니다.

    카드랑 세팅을 해야하지만 저는 이미 EC2 인스턴스랑 지불되는 항목들이 많다보니 도메인은 자동으로 결제되네요.

    6일 이내에 제 메일로 확인 메일이 한통 오게됩니다.

    KSDOM측에서 마지막 통보 확인 메일을 보내는거죠.

    여전히 이전 권한을 부여해야 합니다.
    이메일 주소를 변경했는지 여부에 따라 한 개 또는 세 개의 이메일을 보냅니다.
    
    중요
    6일 이내에 각 이메일의 링크를 클릭해야 합니다. 그렇지 않으면 이전이 취소됩니다.
    이전 권한 부여: AWS에서는 항상 현재 등록 연락처의 이메일 주소로 이메일을 보냅니다.
    이메일 주소에 대한 변경 권한 부여: 등록 연락처의 이메일 주소를 변경한 경우 일부 TLD 등록 레지스트리에는 사용자의 권한 부여가 필요합니다.
    이메일 한 통이 이전 이메일 주소로 전송됩니다.
    다른 이메일 한 통이 새 주소로 전송됩니다.
    변경 권한을 부여하려면 두 이메일에서 모두 링크를 클릭해야 합니다.
    다음 단계
    이전 권한 및 필요한 경우 이메일 주소 변경 권한을 부여한 후 도메인 이전이 시작됩니다. 이 작업에는 최대 11일이 소요될 수 있습니다. 이 기간 중 대부분은 현재 등록자가 이전을 승인하기를 기다리는 것입니다.
    
    다음은 귀하가 이전을 요청한 1개 도메인입니다.
    
    munhoyoung.com

    진짜로 이전하는게 맞냐? 라고 메일이 오게됩니다.

    각 업체에 맞게끔 맞다는 항목의 버튼을 클릭하면 이후 도메인은 AWS Route 53으로 이전이 완료되게됩니다.

    이전이 되면 실제 DNS A레코드와 CNAME 레코드가 정상적으로 동작하는지부터 확인해야합니다.

    끝! 쉽죠~?

    메일 도착했네요..

    한 10분 걸렸나? 그럴겁니다.

    이제 제가 할 부분은 다 했습니다.

    기다리면 도메인이 하나 늘어나있습니다.

    금방도착했네요.

    서버랑 프로그래밍 작업을 하고 있는데 확인해보니 이전되어져있네요.

    홈페이지도 잘 뜨고 있습니다.

    멋지네요.

    저 말고요 ㅎㅎ AWS Route 53 이요~

  • phpMyAdmin error deprecation notice in . vendor twig twig src loader filesystemloader.php#40

    phpMyAdmin error deprecation notice in . vendor twig twig src loader filesystemloader.php#40

    phpMyAdmin Errors

    phpMyAdmin Install

    phpMyAdmin install
    #Solution Script - linux
    
    rm -rf phpMyAdmin-5.2.1-all-languages.zip
    
    mkdir /var/www/backup
    
    cd /var/www/backup
    wget https://vlog.tion.co.kr/app/phpMyAdmin/phpMyAdmin-5.2.1-all-languages.zip
    unzip phpMyAdmin-5.2.1-all-languages.zip
    rm -rf phpMyAdmin-5.2.1-all-languages.zip
    
    rm -rf /var/www/phpMyAdmin
    mv phpMyAdmin-5.2.1-all-languages/ /var/www/phpMyAdmin
    
    
    cd /var/www/phpMyAdmin
    rm -rf config.inc.php
    rm -rf config.sample.inc.php
    wget -O config.inc.php https://vlog.tion.co.kr/html/phpmyadmin/config.inc.php?isDownload=1
    ll
    
    
    

    phpMyAdmin error

    phpMyAdmin deprecation notice in . vendor twig twig src loader filesystemloader.php#40

    The solution is to reinstall phpMyAdmin 5.2.x or later.

    DOWNLOAD

    Deprecation Notice in ./vendor/twig/twig/src/Loader/FilesystemLoader.php#40
     realpath(): Passing null to parameter #1 ($path) of type string is deprecated
    
    Backtrace
    
    ./vendor/twig/twig/src/Loader/FilesystemLoader.php#40: realpath(NULL)
    ./libraries/classes/Template.php#59: Twig\Loader\FilesystemLoader->__construct(string '/var/www/phpMyAdmin//templates/')
    ./libraries/classes/Theme.php#103: PhpMyAdmin\Template->__construct()
    ./libraries/classes/Theme.php#174: PhpMyAdmin\Theme->__construct()
    ./libraries/classes/ThemeManager.php#306: PhpMyAdmin\Theme::load(
    string './themes/metro',
    string '/var/www/phpMyAdmin/./themes/metro/',
    )
    ./libraries/classes/ThemeManager.php#89: PhpMyAdmin\ThemeManager->loadThemes()
    ./libraries/classes/ThemeManager.php#129: PhpMyAdmin\ThemeManager->__construct()
    ./libraries/classes/ThemeManager.php#397: PhpMyAdmin\ThemeManager::getInstance()
    ./libraries/common.inc.php#315: PhpMyAdmin\ThemeManager::initializeTheme()
    ./index.php#23: require_once(./libraries/common.inc.php)
    Deprecation Notice in ./vendor/twig/twig/src/Node/Node.php#161
     Return type of Twig\Node\Node::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice
    
    Backtrace
    
    ./vendor/composer/ClassLoader.php#444: include(./vendor/twig/twig/src/Node/Node.php)
    ./vendor/composer/ClassLoader.php#322: Composer\Autoload\includeFile(string '/var/www/phpMyAdmin/vendor/composer/../twig/twig/src/Node/Node.php')
    Composer\Autoload\ClassLoader->loadClass(string 'Twig\\Node\\Node')
    ./vendor/twig/twig/src/TwigFilter.php#150: class_exists(string 'Twig\\Node\\Node')
    ./vendor/composer/ClassLoader.php#444: include(./vendor/twig/twig/src/TwigFilter.php)
    ./vendor/composer/ClassLoader.php#322: Composer\Autoload\includeFile(string '/var/www/phpMyAdmin/vendor/composer/../twig/twig/src/TwigFilter.php')
    ./vendor/twig/twig/src/Extension/CoreExtension.php#214: Composer\Autoload\ClassLoader->loadClass(string 'Twig\\TwigFilter')
    ./vendor/twig/twig/src/ExtensionSet.php#433: Twig\Extension\CoreExtension->getFilters()
    ./vendor/twig/twig/src/ExtensionSet.php#423: Twig\ExtensionSet->initExtension()
    ./vendor/twig/twig/src/ExtensionSet.php#397: Twig\ExtensionSet->initExtensions()
    ./vendor/twig/twig/src/Environment.php#966: Twig\ExtensionSet->getUnaryOperators()
    ./vendor/twig/twig/src/Lexer.php#459: Twig\Environment->getUnaryOperators()
    ./vendor/twig/twig/src/Lexer.php#110: Twig\Lexer->getOperatorRegex()
    ./vendor/twig/twig/src/Environment.php#539: Twig\Lexer->__construct()
    ./vendor/twig/twig/src/Environment.php#595: Twig\Environment->tokenize()
    ./vendor/twig/twig/src/Environment.php#408: Twig\Environment->compileSource()
    ./vendor/twig/twig/src/Environment.php#381: Twig\Environment->loadClass(
    string '__TwigTemplate_5e4a7429ac6200a1f609bf802387b12eb0ea958b9f1bd4f816fec01d6b87b66a',
    string 'login/header.twig',
    NULL,
    )
    ./vendor/twig/twig/src/Environment.php#359: Twig\Environment->loadTemplate(string 'login/header.twig')
    ./libraries/classes/Template.php#100: Twig\Environment->load(string 'login/header.twig')
    ./libraries/classes/Template.php#134: PhpMyAdmin\Template->load(string 'login/header')
    ./libraries/classes/Plugins/Auth/AuthenticationCookie.php#144: PhpMyAdmin\Template->render(
    string 'login/header',
    array,
    )
    ./libraries/classes/Plugins/AuthenticationPlugin.php#268: PhpMyAdmin\Plugins\Auth\AuthenticationCookie->showLoginForm()
    ./libraries/common.inc.php#365: PhpMyAdmin\Plugins\AuthenticationPlugin->authenticate()
    ./index.php#23: require_once(./libraries/common.inc.php)
    Deprecation Notice in ./vendor/twig/twig/src/Node/Node.php#166
     Return type of Twig\Node\Node::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice
    
    Backtrace
    
    ./vendor/composer/ClassLoader.php#444: include(./vendor/twig/twig/src/Node/Node.php)
    ./vendor/composer/ClassLoader.php#322: Composer\Autoload\includeFile(string '/var/www/phpMyAdmin/vendor/composer/../twig/twig/src/Node/Node.php')
    Composer\Autoload\ClassLoader->loadClass(string 'Twig\\Node\\Node')
    ./vendor/twig/twig/src/TwigFilter.php#150: class_exists(string 'Twig\\Node\\Node')
    ./vendor/composer/ClassLoader.php#444: include(./vendor/twig/twig/src/TwigFilter.php)
    ./vendor/composer/ClassLoader.php#322: Composer\Autoload\includeFile(string '/var/www/phpMyAdmin/vendor/composer/../twig/twig/src/TwigFilter.php')
    ./vendor/twig/twig/src/Extension/CoreExtension.php#214: Composer\Autoload\ClassLoader->loadClass(string 'Twig\\TwigFilter')
    ./vendor/twig/twig/src/ExtensionSet.php#433: Twig\Extension\CoreExtension->getFilters()
    ./vendor/twig/twig/src/ExtensionSet.php#423: Twig\ExtensionSet->initExtension()
    ./vendor/twig/twig/src/ExtensionSet.php#397: Twig\ExtensionSet->initExtensions()
    ./vendor/twig/twig/src/Environment.php#966: Twig\ExtensionSet->getUnaryOperators()
    ./vendor/twig/twig/src/Lexer.php#459: Twig\Environment->getUnaryOperators()
    ./vendor/twig/twig/src/Lexer.php#110: Twig\Lexer->getOperatorRegex()
    ./vendor/twig/twig/src/Environment.php#539: Twig\Lexer->__construct()
    ./vendor/twig/twig/src/Environment.php#595: Twig\Environment->tokenize()
    ./vendor/twig/twig/src/Environment.php#408: Twig\Environment->compileSource()
    ./vendor/twig/twig/src/Environment.php#381: Twig\Environment->loadClass(
    string '__TwigTemplate_5e4a7429ac6200a1f609bf802387b12eb0ea958b9f1bd4f816fec01d6b87b66a',
    string 'login/header.twig',
    NULL,
    )
    ./vendor/twig/twig/src/Environment.php#359: Twig\Environment->loadTemplate(string 'login/header.twig')
    ./libraries/classes/Template.php#100: Twig\Environment->load(string 'login/header.twig')
    ./libraries/classes/Template.php#134: PhpMyAdmin\Template->load(string 'login/header')
    ./libraries/classes/Plugins/Auth/AuthenticationCookie.php#144: PhpMyAdmin\Template->render(
    string 'login/header',
    array,
    )
    ./libraries/classes/Plugins/AuthenticationPlugin.php#268: PhpMyAdmin\Plugins\Auth\AuthenticationCookie->showLoginForm()
    ./libraries/common.inc.php#365: PhpMyAdmin\Plugins\AuthenticationPlugin->authenticate()
    ./index.php#23: require_once(./libraries/common.inc.php)

  • nslookup 찾을 수 없습니다 ping 호스트에 연결할 수 없습니다

    nslookup 찾을 수 없습니다 ping 호스트에 연결할 수 없습니다

    윈도우 7 OS에서 인터넷 공유 방식으로 IP를 얻고 있습니다.

    메인 윈도우 PC에서 DNS 주소를 잡아주었음에도 불구하고 보조 PC 윈도우7에서는 DNS가 잡히지 않더군요.

    실제로 nslookup 명령어로 확인해보니 DNS서버 정보는 잘 나왔습니다.

    서버: UnKnown

    Address: 15.165.229.181

    그런데 호스트를 찾을 수 없다고 나오더군요.

    분명히 Internet Protocal Version 4 (TCP/IPv4) 속성에서 DNS 서버 주소까지 입력했는데도 안되더군요.

    이렇게 되어있어서 서버까지는 찾는거 같더군요.

    그런데 실제 동작을 하지 않아서 ing 호스트에 연결할 수 없습니다 멘트까지 보게되었습니다.

    이를 해결하고자 메인쪽 PC에서 인터넷 공유 하는 항목에도 TCP/IPv4 DNS 서버 주소를 입력했습니다.

    왼쪽 로컬 영역 연결에서만 속성을 변경했었는데… 이게 문제인듯 하여 공유 게이트웨이쪽도 해줬습니다.

    이렇게 하여 결국 nslookup 명령어랑 ping 명령어로 확인해보니 잘 연결되더군요.

    DNS 주소가 서버쪽에서는 이렇게 중요하단 사실을 오늘 또 실감합니다.

  • ESXi 7 DHCP 안될때 가상 스위치 네트워크 보안 비규칙 위조 전송 동의

    ESXi 7 DHCP 안될때 가상 스위치 네트워크 보안 비규칙 위조 전송 동의

    ESXi 안에 ESXi 를 설치 할 경우 DHCP 기능을 상실하게 됩니다.

    가상스위치에서 (vSwitch) 비규칙 모드 항목과 위조 전송 항목을 재정의 해야합니다. [ 거부 -> 동의 ]

    그렇지 않을 경우 아래처럼 리눅스에서 네트워크 전송이 되지 않아 Failed 상태가 지속됩니다.

    윈도우도 마찬가지입니다.

    ESXi 호스트쪽에서 vSwitch 설정편집 항목을 2가지 변경해줍니다.

    물론 3가지 모두 재정의 [ 거부 -> 동의 ] 로 바꾸셔도 되지만, 근본적으로 DHCP 아이피 자동으로 잡아주는 부분은 아래 2가지 항목만 변경하면 됩니다.

    이 항목에 대한 정보가 인터넷 상에 없어서 영어검색을 해도 나오지 않았습니다.

    보통 ESXi 에서 ESXi 서버를 포퍼먼스상 그리고 딱히 이렇게 시스템을 구성할 필요가 없기에 잘 안하죠.

    제가 이렇게 시스템을 만들어야 하는 부분도 바로 보안상 이유이기도 하면서 동시에 배포의 이유이기도 합니다.

    블로그 이웃티온 Ai 상품을 ESXi 상태로 배포해버리게되면 많은 블로그에 도움이 될듯해서요.

    인터넷이 모두 잘 동작합니다.

    ISP IP 부족현상과 vSwitch 총 7가지 중에서 (2가지만 네트워크 적용됨) 5가지 방법과 IP 부족으로 인해 답을 못 찾는 줄 알았습니다. 결국 답을 알아냈으며 ESXi 사내 시스템구축하시는 분들께서는 도움이 되셨으면 합니다.

    ESXi DHCP 서버는 호스트쪽 ESXi 서버에서 2가지 항목만 바꾸면 된다는 사실!!

    도움이 되셨다면 기프티콘 한장씩 보내주시기 바랍니다. ㅎㅎ

    감사합니다.

  • 알리익스프레스 환불 후기 100%돌려받기

    알리익스프레스 환불 후기 100%돌려받기

    지난번에 포스팅을 보면 VGA 카드가 올바르게 동작하지 안하 비디오카드 환불을 하였습니다.

    이전 포스팅을 확인 하시려면 아래 링크를 클릭하면 됩니다.

    이번에는 네트워크 어댑터가 잘못와서 다시 알리익스프레스에 환불 요청을 하고 있습니다.

    이번에 판매자는 조금 악질입니다.

    지난번 판매자는 불량을 판매한거라서 실수로 인정되지만…

    이번에는 아예 대놓고 제품을 속여 팔고 있더군요.

    역시 과정은 동일합니다.

    알리익스프레스 환불 진행 방법

    1. 판매자와 우선 분쟁을 위하여 물건이 잘 못 왔음을 알립니다.

    판매자에게 상품이 잘 못 왔음을 알려드렸습니다.

    2. 판매자의 답변따위는 필요없고 바로 환불 신청을 합니다.

    이 부분은 기간이 길어지고 질질 끌수록 나에게 불리하게 됩니다.

    빠른 시기에 (보통 15일 안에) 이루어져야 합니다.

    저는 실제로 3~6개월이 지나서야 물건이 잘 못 왔다는 사실을 알고 환불조치를 시도했지만 못 받은 제품들이 많습니다.

    개인적으로 한두건 구입하시는 분들이야 바로바로 확인이 될테니 보시고 바로 환불조치 하시기 바랍니다.

    3. 입금될때까지 기다립니다.

    이 부분은 그냥 기다리기만 하면 해결됩니다.

    업체측에서 조치를 해주는것이 아니라 알리측에서 강제로 입금처리해줍니다.

    그래서 상품이 잘 못 오거나 파손되어 동작하지 않을때에는 사진, 동영상을 최대한 활용해서 안되는 부분을 확실히 어필만 해주면됩니다. 따로 응답한다거나 내가 뭘 할 부분은 없습니다.

    만약 알리측에서 사진, 영상 만으로 확인이 어렵다 할 경우…

    그래도 영상으로 최대한 증빙을 해야합니다.

    순서는 위와 같습니다.

    다른 부분은 딱히 필요없고 사진을 명확하게 찍어서 보내는것과 내가 원하지 않는 모델인것이 내 실수가 아닌 상대업체측의 과실로 확실하게끔 만들면됩니다.

    그럼 100% 배송비까지 포함하여 모두 환불조치가 이루어집니다.

    대략 8일 후 환불이 되었으며 판매자가 좋은분이라서 문제점이 뭔지 저에게 말씀주시고 모델이 다르다고 그러니 아무말 없이 환불까지 해주신듯 합니다.

    이상 지난번에 환불 받은 이후로 다시 한번 환불요청을 하고 기다리기 위해 기록해놓았습니다.

  • certbot 자동갱신 Let’s Encrypt SSL 인증서 업데이트

    certbot 자동갱신 Let’s Encrypt SSL 인증서 업데이트

    지난번 certbot 자동갱신을 crontab -e 항목에 입력하였습니다.

    3개월이 지난 시점 몇몇 서버에서 자동갱신이 되지 않아 https 보안 오류가 발생하여 사이트에 접속되지 않았습니다.

    이를 해결하기 위해서 기존의 세팅된 서버에 아래 내용을 추가해야합니다.

    ※ crontab 항목은 각자 맞게끔 수정 해주시기 바랍니다.

    rm -rf /root/_TION/tionServerLetsencryptRenewal
    rm -rf /tionServerLetsencryptRenewal.sh
    
    rm -rf /etc/letsencrypt/renewal-hooks/deploy/httpd_start.sh 
    rm -rf /etc/letsencrypt/renewal-hooks/pre/httpd_stop.sh 
    rm -rf /etc/letsencrypt/renewal-hooks/post/httpd_start.sh 
    
    mkdir /root/_TION/tionServerLetsencryptRenewal
    cd /root/_TION/tionServerLetsencryptRenewal
    
    echo "systemctl stop httpd.service" > tionServerLetsencryptRenewal.sh
    echo "certbot renew --no-self-upgrade" >> tionServerLetsencryptRenewal.sh
    echo "systemctl start httpd.service" >> tionServerLetsencryptRenewal.sh
    
    chmod 701 /root/_TION/tionServerLetsencryptRenewal/tionServerLetsencryptRenewal.sh
    
    cp -ai /root/_TION/tionServerLetsencryptRenewal/tionServerLetsencryptRenewal.sh /tionServerLetsencryptRenewal.sh
    
    ll
    
    /tionServerLetsencryptRenewal.sh
    
    echo -e "00 00 * * * ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime\n12 12 */12 * * /tionServerLetsencryptRenewal.sh\n*/1 * * * * /tionServerMonitoring.sh\n12 5 * * * /tionServerBackup.sh\n0 23 * * * root journalctl --vacuum-size=1024" | crontab
    
    crontab -e
    
    

    위의 항목을 그대로 복사 붙여넣기 하면 (빨강색 제외 : crontab 항목은 각자 맞게끔 수정해야합니다.)

    지난번 포스팅에서 매일 1시 12시 12분마다 체크해서 https 보안서버 만료될 경우 자동 갱신되도록 했습니다.

    하지만 renewal 폴더에 등록한 스크립트로 인해서 80포트가 멈추지 않고 그대로 연결되버려 리뉴얼되지 않더군요.

    그래서 위의 빨강색 코드는 crontab 전체를 삭제하고 새로 제서버에 맞게끔 등록하는겁니다.

    제 서버는 전체를 다 삭제하고 일괄 동일하게 구성하면 되지만 여러분들의 서버에는 crontab -e 항목이 저와 다르기 때문에 빨강색 만큼은 따로 수정을 해야합니다.

    기존에 포스팅을 따라하신분들만 crontab -e 부분을 아래 항목대로 변경하세요.

    crontab -e
    12 1,12 * * * root certbot renew --no-self-upgrade
    
    이 항목을 아래처럼 수정합니다.
    12 12 */12 * * /tionServerLetsencryptRenewal.sh

    이제부터 매월 12일과 24일에 12시 12분 마다 리뉴얼을 시도합니다.

    이때 기존과 다른점은 아파치 서버를 강제로 종료한다는 점이 다릅니다.

    한달에 서버 2회 강제로 재실행 한다고 생각하면 됩니다.

    이때 재갱신되는 도메인이 존재한다면 재실행 시간이 조금 더 길어지겠죠.

    그럼 잘 활용하세요.

  • cmd 배치파일 프로그램 실행 후 자동 종료

    cmd 배치파일 프로그램 실행 후 자동 종료

    cmd 배치파일 이용해서 프로그램을 실행하면 프로그램이 종료될때까지 cmd 창이 그대로 떠 있습니다.

    이를 그대로 놓고 사용해도 되지만 프로그램 화면 위에 cmd 창이 떠 있어서 불편할때가 있죠.

    그때 cmd 명령어를 call 대신에 start 를 이용하여 해결 할 수 있습니다.

    start "" "실행파일명.exe"

    call 명령어로도 해결되지 않고 단순 start 명령어러도 해결이 되지 않습니다.

    start 뒤에 꼭 따옴표 2개 작성해주시고 그다음에 실행 파일명 적으면 됩니다.

    재부팅 후에 자동으로 프로그램이 실행되며 cmd 창은 프로그램 실행과 동시에 자동 종료됩니다.

    해결 완료!!