홈페이지 » 어떻게 » 전용 가상 웹 서버 조정

    전용 가상 웹 서버 조정

    웹 사이트를 실행하기 위해 전용 가상 서버를 사용하면 모든 사람들을 위해 구성되었으며 웹 사이트 실행을위한 성능을 극대화하도록 사용자 정의하지 않은 것이 좋습니다..

    내용

    [숨는 장소]

    • 1. 개요
    • 2 Linux 구성
      • 2.1 DNS 사용 중지
      • 2.2 SpamAssassain 해제
      • 2.3 xinetd 해제
      • 2.4 Plesk 메모리 사용 제한
      • 2.5 Plesk 비활성화 또는 비활성화 (선택 사항)
    • 3 MySQL 구성
      • 3.1 쿼리 캐시 사용
      • 3.2 TCP / IP 비활성화
    • 4 아파치 설정
    • 5 PHP 설정
      • 5.1 불필요한 PHP 모듈 제거하기
      • 5.2 PHP Opcode 캐시
    • 6 백업
      • 6.1 자동화 된 백업 스크립트 작성
      • 6.2 Rsync로 오프 사이트 동기화 백업
    • 7 보안
      • 7.1 SSH를 통한 루트 로그인 비활성화
      • 7.2 SSH 버전 1 사용 중지
      • 7.3 SSH 서버를 다시 시작하십시오.
      • 7.4 열린 포트 확인
      • 7.5 방화벽 설정
    • 8 관련 항목
    • 9 참고 문헌

    개요

    성능을 극대화하고자하는 문제 영역이 많이 있습니다.

    • Linux 구성
      일반적으로 더 이상 연결을 위해 사용될 수있는 메모리를 낭비하지 않는 서비스가 실행되고 있습니다..
    • MySQL 구성
      기본 설정은 소규모 서버를 기반으로하는 경우가 많습니다. 몇 가지 주요 변경 사항을 추가하여 성능을 크게 높일 수 있습니다.
    • 아파치 설정
      기본적으로 대부분의 호스팅 제공 업체는 거의 모든 모듈이 설치된 상태에서 아파치를 설치합니다. 모듈을 사용하지 않을 경우 모듈을로드 할 이유가 없습니다..
    • PHP 구성
      기본 PHP 설정은 비슷하게 부풀어 오른다. 보통 불필요한 추가 모듈이 설치되어있다..
    • PHP Opcode 캐시
      PHP가 매번 스크립트를 다시 컴파일하는 대신, opcode 캐시는 컴파일 된 스크립트를 거대한 성능 향상을 위해 메모리에 캐시합니다.
    • 백업
      호스팅 제공 업체가 자동 백업을 설정하지 않아도되므로 자동 백업을 설정해야합니다..
    • 보안
      물론 Linux는 기본적으로 충분히 안전하지만 몇 가지 빠른 설정으로 해결할 수있는 눈부신 보안 문제가 있습니다..

    리눅스 설정

    할 수있는 개조가 많이 있습니다. 사용하는 서버에 따라 약간 다를 수 있습니다. 이러한 조정은 CentOS를 실행하는 서버에 대한 것이지만 대다수의 DV 서버에서 작동해야합니다..

    DNS 사용 안 함

    호스팅 제공 업체가 도메인의 DNS를 처리하는 경우 (가능하면) DNS 서비스를 실행 중지 할 수 있습니다.

    dns 비활성화 /etc/init.d/named chmod stop 644 /etc/init.d/named

    chmod 명령은 스크립트에서 실행 권한을 제거하여 시작시 실행을 중지합니다..

    SpamAssassain 사용 중지

    서버 자체에서 전자 메일 계정을 사용하지 않는 경우 스팸 방지 도구를 실행하지 않아도됩니다. (또한 Google Apps, 더 나은 이메일 솔루션을 확인해야합니다)

    /etc/init.d/psa-spamassassin stop chmod 644 /etc/init.d/psa-spamassassin

    xinetd 사용 안함

    xinetd 프로세스는 다수의 다른 프로세스를 포함하고 있으며, 일반적인 웹 서버에는 유용하지 않습니다.

    /etc/init.d/xinetd stop chmod 644 /etc/init.d/xinetd

    Plesk 메모리 사용 제한

    plesk 패널을 사용하는 경우 옵션 파일을 추가하여 메모리를 적게 사용하도록 설정할 수 있습니다.

    vi /usr/local/psa/admin/conf/httpsd.custom.include

    파일에 다음 행을 추가하십시오.

    MinSpareServers 1 MaxSpareServers 1 시작 서버 1 MaxClients 5

    이 옵션은 MediaTemple DV 서버에서 작동하는 것으로 알려져 있지만 다른 옵션에서는 확인되지 않았습니다. (참고 문헌 참조)

    Plesk 사용 중지 또는 사용 중지 (선택 사항)

    Plesk를 1 년에 한 번만 사용하는 경우 Plesk를 전혀 사용하지 않는 이유가 거의 없습니다. 이 단계는 완전히 선택 사항이며 약간 더 고급입니다..

    plesk를 끄려면 다음 명령을 실행하십시오.

    /etc/init.d/psa stop

    다음 명령을 실행하여 시작시 실행되지 않도록 설정할 수 있습니다.

    chmod 644 /etc/init.d/psa

    이 옵션을 비활성화하면 파일 사용 권한을 다시 변경하지 않고 수동으로 시작할 수 없습니다 (chmod u + x).

    MySQL 구성

    쿼리 캐시 사용

    /etc/my.cnf 파일을 열고 [mysqld] 섹션에 다음과 같은 라인을 추가하십시오 :

    [mysqld] query-cache-type = 1 query-cache-size = 8M

    원하는 경우 쿼리 캐시에 메모리를 추가 할 수 있지만 너무 많이 사용하지 마십시오..

    TCP / IP 사용 안 함

    놀라운 수의 호스트가 기본적으로 TCP / IP에서 MySQL에 액세스 할 수 있습니다. 이는 웹 사이트에 아무런 의미가 없습니다. 다음 명령을 실행하여 mysql이 TCP / IP에서 수신 대기 중인지 알아낼 수있다.

    netstat -an | grep 3306

    비활성화하려면 /etc/my.cnf 파일에 다음 줄을 추가하십시오.

    스킵 네트워킹

    아파치 설정

    자주 /etc/httpd/conf/httpd.conf에있는 httpd.conf 파일을 엽니 다.

    다음과 같은 행을 찾습니다.

    시간 초과 120

    그리고 이것을 다음과 같이 변경하십시오 :

    제한 시간 20

    이제이 줄이 포함 된 섹션을 찾고 비슷한 것으로 조정하십시오.

    StartServers 2 MinSpareServers 2 MaxSpareServers 5 ServerLimit 100 MaxClients 100 MaxRequestsPerChild 4000

    PHP 설정

    PHP 플랫폼에서 서버를 조정할 때 기억해야 할 사항 중 하나는 모든 단일 아파치 스레드가 PHP를 메모리의 별도 위치에로드하는 것입니다. 즉, 사용하지 않는 모듈이 PHP에 256k의 메모리를 추가하면 40MB의 아파치 스레드에서 10MB의 메모리를 낭비하게됩니다..

    불필요한 PHP 모듈 제거

    일반적으로 /etc/php.ini에있는 php.ini 파일을 찾아야합니다 (일부 배포판에서는 .ini 파일이 여러 개있는 /etc/php.d/ 디렉토리가 있으며, 각 모듈 당 하나.

    다음 모듈을 사용하여로드 모듈을 주석 처리하십시오.

    • ODBC
    • SNMP
    • Pdo
    • ODBC Pdo
    • mysqli
    • 이온 큐브 - 로더
    • json
    • 잠잠하다
    • LDAP
    • ncurses

    Todo : 여기에 자세한 정보를 추가하십시오..

    PHP Opcode 캐시

    APC, eAccelerator 및 Xcache를 비롯하여 사용할 수있는 opcode 캐시가 여러 개 있습니다. 마지막으로 안정성 때문에 개인적인 선호가 있습니다..

    xcache를 다운로드하여 디렉토리에 추출한 다음 xcache 소스 디렉토리에서 다음 명령을 실행하십시오.

    phpize ./configure --enable-xcache make make make

    php.ini 파일을 열고 xcache에 대한 새로운 섹션을 추가하십시오. PHP 모듈이 다른 곳에서로드 된 경우 경로를 조정해야합니다..

    vi /etc/php.ini

    파일에 다음 섹션을 추가하십시오.

    [xcache-common] zend_extension = /usr/lib/php/modules/xcache.so [xcache.admin] xcache.admin.user = "myusername"xcache.admin.pass = "putanmd5hashhere"[xcache]; xcache.size를 변경하여 opcode 캐시의 크기 조정 xcache.size = 16M xcache.shm_scheme = "mmap"xcache.count = 1 xcache.slots = 8K xcache.ttl = 0 xcache.gc_interval = 0; 변수 캐시의 크기를 조정하려면 xcache.var_size를 변경하십시오. xcache.var_size = 1M xcache.var_count = 1 xcache.var_slots = 8K xcache.var_ttl = 0 xcache.var_maxttl = 0 xcache.var_gc_interval = 300 xcache.test = Off xcache.readonly_protection = xcache.mmap_path = "/ tmp / xcache"에서 xcache.coredump_directory = ""xcache.cacher = On xcache.stat = On xcache.optimizer = Off

    Todo : 참조를 xcache로 조금 확장하고 링크해야합니다..

    백업

    웹 사이트의 백업을 자동화하는 것보다 더 중요한 것은 없습니다. 호스팅 제공 업체로부터 스냅 샷 백업을 얻을 수도 있지만 매우 유용하지만 자동 백업도 선호합니다..

    자동화 된 백업 스크립트 만들기

    나는 보통 / backups 디렉토리를 만들고 그 아래에 / backups / files 디렉토리를 만들어 시작한다. 원하는 경우이 경로를 조정할 수 있습니다..

    mkdir -p / backups / files

    이제 backups 디렉토리에 backup.sh 스크립트를 작성하십시오.

    vi /backups/backup.sh

    필요에 따라 경로와 mysqldump 비밀번호를 조정하여 다음을 파일에 추가하십시오.

    mysqldump -uadmin -pPASSWORD DATABASENAME> /backups/files/dbbackup$THEDATE.bak tar -cf / backups / files / sitebackup $ THEDATE = "날짜 + % d % m % y % H % M" .tar / var / www / vhosts / my-website-path / httpdocs gzip /backups/files/sitebackup$THEDATE.tar 찾기 / 백업 / 파일 / 사이트 * -mtime +5 -exec rm  \; / backups / files / db를 찾으십시오. -mtime +5 -exec rm  \;

    스크립트는 먼저 날짜 변수를 생성하여 모든 파일의 이름이 단일 백업에 대해 동일하게 지정되고 데이터베이스를 덤프하고 웹 파일을 tars 한 다음 gzip으로 압축합니다. find 명령은 드라이브 공간 부족을 원하지 않기 때문에 5 일이 지난 파일을 제거하는 데 사용됩니다.

    다음 명령을 실행하여 스크립트를 실행 가능하게 만드십시오.

    chmod u + x /backups/backup.sh

    다음으로 cron에 의해 자동으로 실행되도록 지정해야합니다. 백업 디렉토리에 액세스 할 수있는 계정을 사용해야합니다..

    crontab -e

    crontab에 다음 행을 추가하십시오.

    1 1 * * * /backups/backup.sh

    사용자 계정에 로그온 한 상태에서 스크립트를 실행하여 미리 테스트 할 수 있습니다. (나는 보통 루트로서 백업을 실행한다)

    Rsync를 사용하여 사이트 외부에서 백업 동기화

    이제 서버의 자동 백업을 실행 했으므로 rsync 유틸리티를 사용하여 다른 곳에 동기화 할 수 있습니다. 자동 로그인을 위해 ssh 키를 설정하는 방법에 대한이 기사를 읽으십시오. 단일 명령으로 원격 서버에 공용 SSH 키 추가

    이 명령을 다른 위치에있는 리눅스 또는 맥 컴퓨터에서 실행하여 테스트해볼 수 있습니다 (저는 리눅스 서버를 집에서 가지고 있습니다.

    rsync -a [email protected] : / backups / files / * / offsitebackups /

    처음 실행하는 데는 꽤 시간이 걸리지 만 결국 로컬 컴퓨터에는 / offsitebackups / 디렉토리에 files 디렉토리의 복사본이 있어야합니다. 스크립트를 실행하기 전에 해당 디렉토리를 만들어야합니다.

    crontab 행에 추가하여이 작업을 예약 할 수 있습니다.

    crontab -e

    45 분에 rsync를 매 시간마다 실행하는 다음 행을 추가하십시오. 여기서 rsync에 대한 전체 경로를 사용한다는 것을 알 수 있습니다..

    45 * * * * / usr / bin / rsync -a [email protected] : / backups / files / * / offsitebackups /

    다른 시간에 실행되도록 예약하거나 하루에 한 번만 실행하도록 예약 할 수 있습니다. 그건 너에게 달렸어..

    ssh 또는 ftp를 통해 동기화 할 수있는 유틸리티가 많이 있습니다. rsync를 사용할 필요가 없습니다..

    보안

    가장 먼저 할 일은 ssh를 통해 사용할 일반 사용자 계정이 있는지 확인하고 su를 사용하여 root로 전환 할 수 있는지 확인하는 것입니다. ssh를 통한 root의 직접 로그인을 허용하는 것은 매우 나쁜 생각입니다..

    SSH를 통한 루트 로그인 비활성화

    / etc / ssh / sshd_config 파일을 편집하고 다음 줄을 찾습니다.

    #PermitRootLogin yes

    해당 줄을 다음과 같이 변경하십시오.

    PermitRootLogin 아니요

    이 변경을하기 전에 일반 사용자 계정이 있는지 확인하고 루트로 su를 할 수 있습니다. 그렇지 않으면 자신을 잠글 수 있습니다.

    SSH 버전 1 사용 중지

    이전 버전보다 안전하기 때문에 SSH 버전 2 이외의 다른 것을 사용할 이유가 없습니다. / etc / ssh / sshd_config 파일을 편집하고 다음 절을 찾으십시오.

    #Protocol 2,1 프로토콜 2

    표시된대로 프로토콜 2 만 사용하고 있는지 확인하십시오.

    SSH 서버 다시 시작

    이제 SSH 서버를 다시 시작해야 효과가 나타납니다..

    /etc/init.d/sshd restart

    열린 포트 확인

    다음 명령을 사용하여 서버가 수신 대기중인 포트를 확인할 수 있습니다.

    netstat -an | grep LISTEN

    plesk에는 포트 22, 80, 8443 이외의 것을 듣지 않아야합니다..

    방화벽 설정

    주요 기사 : 리눅스에서 iptables 사용하기

    선택적으로 iptables 방화벽을 설정하여 더 많은 연결을 차단할 수 있습니다. 예를 들어, 나는 보통 직장 네트워크가 아닌 다른 포트에 대한 액세스를 차단합니다. 유동 IP 주소를 사용하는 경우 해당 옵션을 피하기를 원할 것입니다.

    지금까지이 가이드의 모든 단계를 이미 수행 한 적이 있다면 믹스에 방화벽을 추가 할 필요는 없습니다.하지만 옵션을 이해하는 것이 좋습니다..

    참고 사항

    • 리눅스에서 iptables 사용하기

    참고 문헌

    • DV 서버 최적화 (mediatemple.net)
    • XCache