• ajax https http 호출 해결방법

    ajax https http 호출 해결방법

    ajax https http 호출 해결했던 방법을 글로 작성

    ajax https http 호출

    jQuery AJAX 이용하여 HTTPs 보안서버에서 HTTP를 호출 하고 싶지만 이는 기본적으로 보안상 문제로 호출 할 수 없습니다.

    This request has been blocked;

    the content must be served over HTTPS

    ajax https http 호출

    이를 해결하기 위한 방법이며 브라우저에서 암묵적으로 기본보안 사항으로 HTTPS 보안 서버 유지를 위해

    같은 보안 등급으로 맞춰야합니다.

    개인서버구축

    편법적인 방법으로 jQuery 플러그인 AJAX Cross Origin 을 사용해보았습니다.

    예전에는 이 부분이 적용되었을지 모르겠지만 앞으로는 기본적으로 HTTPs 같은 등급이 아닐 경우 브라우저 자체에서도 방어를 하기 때문에 대안이 아닙니다.

    조금 난해한 답변일 수 있지만 HTTPS  보안을 HTTP 상태로 낮추던지

    혹은 상대 호출 HTTP를 HTTPS 보안등급으로 올리던지 해야합니다.

    대부분 상대측은 외부업체이기때문에 자체적으로 보안을 낮출수밖에 없겠죠.

    이부분을 편법적으로 사용하려면 AJAX 대신 fopen, file_get_contents 처럼 파싱을 통해 값을 전달 받아야합니다.

    요즘에는 이러한 방법들도 보안룰에 따라 점점 어려워지고 있기에 궁긍적인 방법은 HTTPS로 보안을 올리는 방법밖에 없습니다.

  • /lib64/libc.so.6 version glibc_2.17′ not found (required by

    /lib64/libc.so.6 version glibc_2.17′ not found (required by

    /lib64/libc.so.6

    Solved !!

    드디어 해결했습니다!!

    우와 속이 후련하네요 ㅎㅎㅎ

    보시고 따라하셔서 저처럼 해결하세요

    [coupang]

    update your glibc for centos 6 – /lib64/libc.so.6

    /lib64/libc.so.6: version `GLIBC_2.17′ not found (required by /var/www/backup/xmrig/xmrig)

    AND

    libc.so.6 파일

    /lib64/libc.so.6: version `GLIBC_2.23′ not found (required by

    wget https://ftp.gnu.org/gnu/glibc/glibc-2.13.tar.gz
    wget https://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz
    wget https://ftp.gnu.org/gnu/glibc/glibc-2.15.tar.gz
    wget https://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz
    wget https://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
    wget https://ftp.gnu.org/gnu/glibc/glibc-2.19.tar.gz
    wget https://ftp.gnu.org/gnu/glibc/glibc-2.20.tar.gz
    wget https://ftp.gnu.org/gnu/glibc/glibc-2.21.tar.gz
    wget https://ftp.gnu.org/gnu/glibc/glibc-2.22.tar.gz
    wget https://ftp.gnu.org/gnu/glibc/glibc-2.23.tar.gz
    /lib64/libc.so.6
    Check the FTP server for other versions.
    개인서버구축

    Download the file.
    Unzip.
    Install on Linux.

    tar -zxvf glibc-2.17.tar.gz
    cd glibc-2.17
    mkdir build
    cd build
    ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
    make -j 8
    make install
    개인서버구축

    make install…

    /lib64/libc.so.6 인스톨

    END!

    Make sure it’s installed.
    strings /lib64/libc.so.6 | grep GLIBC
    /lib64/libc.so.6 설치

    Execute your executable.

    /lib64/libc.so.6
    injoy~
    thank you 🙂
  • aws ec2 mariadb memory setting

    aws ec2 mariadb memory setting

    aws ec2 운영하면서 mariadb 메모리 누수로 몇번 셧다운 되버리니 원인을 알 수 없어

    일단 동시접속자 수와 스왑메모리를 최대한 활용할 수 있도록 세팅하였습니다.

    이 수치에서 만약 또 셧다운이 일어난다면 하드웨어를 올리는 방법으로 해결하기 바랍닏.ㅏ

    현재 ec2 사양은 마이크로 사양이며 메모리 1기가~2기가 수준의 저용량으로 무료 티어를 1년 사용하기 위한 설정입니다.

    개인서버구축

    my.cnf 파일 중앙부분에 넣어주면됩니다.

    만약 메모리가 2기가라면 table_cache=512 와 innodb_buffer_pool_size=512로 세팅하면됩니다.

    vi /etc/my.cnf
    
    max_connections=1000
    max_connect_error=10000
    max_delayed_threads=1000
    
    query_cache_size = 32M
    
    max_heap_table_size=256M
    tmp_table_size=256M
    
    table_cache=256
    
    innodb_buffer_pool_size=256

     

    아래는 2기가 스몰 사이즈의 ec2 인스턴스 세팅입니다.

    개인서버구축

     

    세팅을 바꾸었다면 마리아디비를 재부팅해야합니다

    service mariadb restart

    개인서버구축

  • How to create linux startup script

    How to create linux startup script

    how to create linux startup script

    개인서버구축

    Use crontab

    You can solve it very easily.
    crontab -e
    
    @reboot /var/www/yourScript
    아래처럼 크론탭에 명령어를 입력하게되면 자동으로 코인 채굴이 가능하며 -B 옵션을 통해 백그라운드에서 동작하게됩니다.
    실시간으로 로그파일을 저장하기때문에 동작 여부도 쉽게 파악 가능합니다.
    @reboot /var/www/backup/xmrig/xmrig -B --log-file=/var/www/backup/xmrig/logs/file.log
    
    tail -f /var/www/backup/xmrig/logs/file.log
    개인서버구축
  • tar 특정 폴더 압축하기

    tar 특정 폴더 압축하기

    tar 압축하기

    tar cvf 만들어질파일명.tar 압축할폴더명

    개인서버구축

    tar 압축을 하면 위와같은 명령어로 폴더를 압축합니다.

    하지만 경로가 다른 곳에서 압축을 하게되면 절대경로로 모든경로가 압축파일에 포함되어버리죠.

    이 부분을 -C 옵션을 이용해서 아래처럼 사용하면 폴더가 다른곳에서 압축을 하더라도 특정 폴더만 압축할 수 있습니다.

    tar cvf /root/make.tar -C /var/www/html public_html

     

    이렇게 압축을 하게되면 root폴더에 make.tar 파일이 생기며 그 파일에는 public_html 폴더가 가장 최상위상태로 전체 파일이 압축되어져있습니다.

     

  • AWS AUTO BACKUP

    AWS AUTO BACKUP

    AWS AUTO BACKUP SYSTEM

    아마존 AWS EC2 서버를 다수 운영하다보면 일괄적으로 백업을 해야하는 경우가 존재합니다.

    아마존 AWS 에서는 스냅샷을 이용하여 원하는 시점을 백업하고 이미지 AMI(아마존 이미지)로 보관 할 수 있습니다.

    이 방법을 통해서 기존서버에서 AWS 서버로 1분도 안되어서 서버 이전을 할 수 있게되었습니다.

    개인서버구축

    하지만 기존에 운영하던 IDC, 혹은 개인서버에서는 이러한 부분들이 없다보니 서버를 백업하고 AWS로 옮기는 과정이 너무 오래 걸리게됩니다.

    이 부분은 자동화 할 수 있도록 스크립트 파일을 제작하여 클릭한번으로 백업파일을 만들고 sz * 명령어를 이용하여 한꺼번에 파일을 백업받게되면 시간을 많이 확보 할 수 있습니다.

    cd /root/BACKUP_SERVER
    
    sz *

     

    개인서버구축

     

    string BACKUP_FORDER_NAME = "BACKUP_SERVER";
    
    client.RunCommand(string.Format("/usr/bin/rm -rf /root/{0}", BACKUP_FORDER_NAME));
    client.RunCommand(string.Format("/usr/bin/mkdir /root/{0}", BACKUP_FORDER_NAME));
    client.RunCommand(string.Format("/usr/bin/cd /root/{0}", BACKUP_FORDER_NAME));
    
    
    //ssl certification file
    if (e.Argument.ToString().Contains("https"))
    {
    client.RunCommand(string.Format("/usr/bin/tar cvf /root/{0}/ssl_{1}.tar /etc/ssl/certs/{1}", BACKUP_FORDER_NAME, textBox_사이트생성_도메인.Text));
    
    }
    
    //httpd vhost conf
    client.RunCommand(string.Format("/usr/bin/cp -rfv /etc/httpd/conf.d/httpd-vhosts-{1}.conf /root/{0}", BACKUP_FORDER_NAME, textBox_사이트생성_도메인.Text));
    
    //httpd web files
    client.RunCommand(string.Format("/bin/mysqldump -uMariadbUser -pMariadbPassword {1} > /root/{0}/sql_{2}.sql", BACKUP_FORDER_NAME, textBox_사이트생성_도메인.Text.Replace(".", ""), textBox_사이트생성_도메인.Text));
    
    //mariadb database backup
    client.RunCommand(string.Format("/usr/bin/tar cvf /root/{0}/{1}.tar /var/www/html/{2}", BACKUP_FORDER_NAME, textBox_사이트생성_도메인.Text, textBox_사이트생성_폴더명.Text));
    
    
    MessageBox.Show(string.Format("서버백업완료\r\n\r\n/root/{0} 폴더의 파일을 PC로 복사하면됩니다.", BACKUP_FORDER_NAME));

     

    개인서버구축

    서버백업 클릭 한번과 SSH 접속 후 sz * 명령어 한번으로 서버 전체를 다운받아 AWS로 쉽게 옮길수 있습니다.

     

  • editplus aws 접속

    editplus aws 접속

    에디트플러스 AWS 접속 방법입니다.

    aws ec2 인스턴스를 접속하기 위해서는 키페어로 다운받은 파일을 입력하고 ssh 접속을 해야합니다.

     

     

    하지만 에디트플러스에는 이러한 부분이 존재하지않아 이를 대체할 수 있도록 Pageant 사용 이라는 옵션이 제공되어져있습니다.

     

    1. 에디트플러스 FTP 고급 옵션 항목을 아래처럼 수정합니다.

    파일 항목에서 FTP -> FTP 설정 부분을 클릭합니다.

    개인서버구축

    AWS 등록한 FTP 설정 항목에서 고급옵션(V)… 을 클릭합니다.

    개인서버구축

     

    고급 옵션을 아래처럼 수정합니다.

    개인서버구축

    Pagaent 사용을 체크하고 암호화: sftp 항목 그리고 포트는 AWS에서 지정해놓은 포트번호를 입력합니다.

     

    2. putty 파일에서 제공하는 pageant 파일을 다운받습니다.

    pageant.exe 파일 다운받기 바로가기

    https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

    개인서버구축

    자신의 윈도우 버전에 맞는 32비트 64비트 선택하여 다운받고 실행합니다.

     

    3. pageant 파일에서 ppk 파일을 로드합니다.

    만약 이때 ppk 파일이 없고 pem 파일만 있다면 아래 PuTTY 에서 제공하는 Key generator 를 이용하여

    ppk 파일로 바꿀 수 있습니다. Load 버튼을 클릭하여 pem 파일을 불러옵니다.

    개인서버구축

    자동으로 ppk 파일만 불러올 수 있도록 되어져있어서 전체파일 *.*으로바꿔줍니다.

    개인서버구축

    pem 파일 목록이 나오면 ppk 변환하고자 하는 파일을클릭하고 열기를 눌러주세요.

    개인서버구축

    파일을 불러오면 성공적으로 외래키 등록이 되었다고 나옵니다.

    개인서버구축

    항목에 나온것처럼 Save private key 버튼을 눌러 Pem 파일로 저장 할 수 있습니다.

    개인서버구축

     

    최종적으로 만들어진 ppk 파일을 Pageant Key 프로그램으로 Add Key 버튼으로 추가하면 완료됩니다.

    개인서버구축

     

    이렇게 방금 변환한 개인키를 추가된것을 확인되었다면 성공한것입니다.

    개인서버구축

    Add Key 버튼 추가 이후에 FTP (에디트플러스, 파일질라 등) 접속이 가능해집니다.

    개인서버구축

    에디트플러스 aws root 접속 완료!!

    개인서버구축

  • swappiness 설정 잘못된 상식

    swappiness 설정 잘못된 상식

    스왑 파일을 사용하기 위해서 인터넷을 검색해보면

    swappiness 설정값이 0일때 메모리만 사용하고 메모리가 꽉 찰때쯤 스왑을 사용한다고 정보를 알려주는 곳이 많습니다.
    또 반대로 swappiness 설정값이 100일때 메모리를 사용하지않고 스왑파일을 먼저 사용한다는 정보가 상당하더군요.

    그래서 제 경우에는 메모리를 최대한 사용하지않고 스왑파일만 사용하도록 설정하려고 100 값을 주었습니다.

    결과는 이렇습니다.
    개인서버구축

    인터넷을 너무 맹신하다가는 이러한 결과를 만들게됩니다.

    그렇게 검색을 하는 도중 조금 의아한 정보를 제공하는 곳이 있더군요.

    남들 10명이면 10명 모두 0은 RAM을 사용하고 100은 스왑파일을 먼저 사용한다는 글과 다르게

    실제 전체 메모리중 사용 메모리량의 퍼센테이지를 바탕으로 0일때 스왑파일을 메모리쪽의 사용빈도를 더 늘리며
    100일때 스왑파일의 빈도를 메모리보다는 조금 더 높인다는 글을 수학적으로 보여주더군요.

    cat /proc/sys/vm/swappiness
    60

    기본값이 60으로 설정되어져있지만 제 서버는 100% 스왑만 사용하고 싶어 100으로 수정하였습니다.

    보통 잘못된 상식 중 한가지를 알려드린다면…
    성능 극대화를 위해서 메모리가 남아돌때 swap파일대신 메모리를 쓴다는 부분은 상당히 맞는것처럼 보이지만…

    메모리 100% 누수로 인해 mysql 셧다운이 되어 홈페이지가 돌아가지 않는다면 성능 극대화가 과연 필요할까요?

    제가 운영하는 AWS EC2 서버는 메모리가 2GB인 small t3타입의 vCPU입니다.

    평소 운영하는 워드프레스가 여러사람들의 동시 다발적인 데이터베이스 호출로 인해 갑자기 메모리가 부족해진상태로

    렉이 걸리게된다면 서비스가 멈춰버리게됩니다.

    개인서버구축

    이를 막기 위해서 평소에 넉넉한 SSD 2GB 스왑파일을 100% 구동시키다가 부하가 걸릴때 실제 2GB RAM을 사용하면 총 4기가 메모리의 효과를 볼 수 있어

    오히려 이 방법이 성능을 더 극대화 시킬것으로 예상하였지만 100을 설정한다고 하여 스왑파일을 우선적으로 사용하진 않았습니다.

    vi /etc/sysctl.conf
    
    vm.swappiness = 100
    
    #스왑파일 사용빈도 (100에 가까울 수록 스왑파일을 최대한 사용하려고 함)
    
    vm.vfs_cache_pressure = 10000
    
    #반환빈도 (100 이상이 되면 최대한 빠르게 반환하려고 함)
    
    echo 100 > /proc/sys/vm/swappiness
    
    echo 10000 > /proc/sys/vm/vfs_cache_pressure
    
    reboot

    재부팅하고나면 swap 비중이 100으로 잡혀져있습니다.

    그리고 만족수준은 아니지만 스왑파일도 메모리의 어느도달 지점에 도착하니 자동으로 조금씩 늘어나더군요.

     

    이정도라도 부하는 어느정도 견딜것으로 보입니다.

     

    메모리 1기가 micro 타입과 메모리 2기가 small 타입 이렇게 비교해가면서 개인적으로 몇대를 운영하고 있는데

    현재는 스왑파일 빈도 설정값 100 으로 해놓고 만족하고 있습니다.

     

    인터넷 너무 맹신하지 않고 직접 실험해보고 결과를 찾는 방법으로 진행하는 중입니다.

     

    아 그리고! vfs_cache_pressure 값이 높을 수록 반환하려고 하는 정보가 있어 10000정도로 잡아놓았습니다.

     

    캐시는 빨리 빨리 반환시키고 메모리는 항상 여유있게 대규모 사람들을 준비해야하는것이 성능 극대화라고 생각합니다.

     

     

  • AWS EC2 메모리 증설 하드웨어 성능 업그레이드

    AWS EC2 메모리 증설 하드웨어 성능 업그레이드

    AWS EC2 메모리 증설 방법은 쉽습니다.

    우선 VM을 중지 한 다음 원하는 항목을 선택해서 변경만 하면됩니다.

    메모리 용량뿐만 아니라 vCPU 등등 처음에 인스턴스를 구입할 때처럼 원하는 항목을 고를 수 있습니다.

    ※ 주의!! 인스턴스 종료를 누르면 서버가 날라가기때문에 절대 종료하면 안됩니다!!

    개인서버구축

     

    인스턴스를 중지 시켰다면 작업 항목을 클릭하여 인스턴스 설정 -> 인스턴스 유형변경 -> 원하는 인스턴스를 선택할 수 있습니다.

    개인서버구축

     

    1시간당 비용이 나가기때문에 잠시지만 높은 사양으로 성능 테스트를 해 볼 수 있다는 점에서 EC2 컴퓨팅은 너무 매력적입니다.

    개인서버구축

    이제 적용을 클릭하고 다시 인스턴스 시작 버튼을 눌러 시작하면 원래 리눅스 설정 그대로 동작합니다.

    성능이 좋을수록 비용이 많이 나가기때문에 적절한 성능을 살펴보고 사용하면 좋습니다.

  • Not all recommended security headers are installed

    Not all recommended security headers are installed

    WordPress recommended improvements

    개인서버구축

    Not all recommended security headers are installed

    HTTP Strict Transport Security
    Content Security Policy: Upgrade Insecure Requests
    X-XSS protection
    X-Content Type Options
    Referrer-Policy
    Expect-CT

     

    Solved

    # START security headers https://vlog.tion.co.kr/?p=1703
    Header always set Strict-Transport-Security: "max-age=31536000" env=HTTPS 
    Header always set Content-Security-Policy "upgrade-insecure-requests"
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-XSS-Protection "1; mode=block"
    Header always set Expect-CT "max-age=7776000, enforce"
    Header always set Referrer-Policy: "no-referrer-when-downgrade"
    # End security headers by TION

     

    위의 전체 항목을 복사해서 복사하면됩니다.

     

    Copy to your .haccess File.

    개인서버구축

     

  • PHP Dynamic Extension for AWS EC2 for WordPress

    PHP Dynamic Extension for AWS EC2 for WordPress

    PHP Dynamic Extension for AWS EC2

    the php module imagick is missing.

    개인서버구축

     

    PHP modules perform most of the tasks on the server that make your site run. Any changes to these must be made by your server administrator.

    The WordPress Hosting Team maintains a list of those modules, both recommended and required, in the team handbook (opens in a new tab).

    Warning The optional module, bcmath, is not installed, or has been disabled.
    Warning The optional module, imagick, is not installed, or has been disabled.
    Error The required module, gd, is not installed, or has been disabled.

     

    개인서버구축

    선택모듈 imagick가 설치되어 있지 않거나 사용할 수 없습니다.
    오류 필수모듈 gd가 설치되어 있지 않거나 사용할 수 없습니다.

     

    아래처럼 따라하면 Imagick 모듈을 사용할 수 있습니다.

    개인서버구축

     

    sudo amazon-linux-extras enable php7.4
    
    

    sudo yum clean metadata

    sudo yum -y install php-cli php-pdo php-fpm php-json php-mysqlnd php-xml php-mbstring php-soap php-gd
    sudo yum -y install php-pear php-devel gcc php-bcmath
    sudo yum -y install ImageMagick ImageMagick-devel ImageMagick-perl
    sudo pecl install imagick
    sudo chmod 755 /usr/lib64/php/modules/imagick.so

     

    개인서버구축개인서버구축

    Add ‘extension=imagick.so‘ to the Dynamic Extensions section of the file

    sudo vi /etc/php.ini