전용 가상 웹 서버 조정

May 22, 2025
개인 정보 보호 및 보안
캐치되지 않은 콘텐츠

웹 사이트를 실행하기위한 전용 가상 서버가 있다면, 웹 사이트 실행을위한 성능을 극대화하도록 맞춤 설정되지 않고 모든 사람을 위해 구성되어있을 가능성이 높습니다.

내용

[ 숨는 장소 ]

  • 1. 개요
  • 2 Linux 구성
    • 2.1 DNS 비활성화
    • 2.2 SpamAssassin 사용 중지
    • 2.3 xinetd 비활성화
    • 2.4 Plesk 메모리 사용량 제한
    • 2.5 Plesk 사용 중지 또는 끄기 (선택 사항)
  • 3 MySQL 구성
    • 3.1 쿼리 캐시 사용
    • 3.2 TCP / IP 사용 중지
  • 4 Apache 구성
  • 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 구성
    종종 기본 설정은 소규모 서버를 기반으로하며 몇 가지 주요 변경 사항을 추가하여 성능을 크게 높일 수 있습니다.
  • Apache 구성
    기본적으로 대부분의 호스팅 제공 업체는 거의 모든 모듈이 설치된 아파치를 설치합니다. 모듈을 사용하지 않을 경우로드 할 이유가 없습니다.
  • PHP 구성
    기본 PHP 구성은 비슷하게 부풀어 있으며 일반적으로 불필요한 추가 모듈이 많이 설치되어 있습니다.
  • PHP Opcode 캐시
    PHP가 매번 스크립트를 다시 컴파일하도록 허용하는 대신 opcode 캐시가 컴파일 된 스크립트를 메모리에 캐시하여 성능을 크게 향상시킵니다.
  • 백업
    호스팅 제공 업체가 자동으로 백업하지 않기 때문에 일부 자동 백업을 설정해야합니다.
  • 보안
    물론 Linux는 기본적으로 충분히 안전하지만 일반적으로 몇 가지 빠른 설정으로 해결할 수있는 눈에 띄는 보안 문제가 있습니다.

Linux 구성

수행 할 수있는 조정 작업은 상당히 많으며 사용중인 서버에 따라 약간 씩 다릅니다. 이러한 조정은 CentOS를 실행하는 서버를위한 것이지만 대부분의 DV 서버에서 작동합니다.

DNS 비활성화

호스팅 제공 업체가 도메인의 DNS를 처리하는 경우 (가능성이 높음) DNS 서비스 실행을 비활성화 할 수 있습니다.

DNS 비활성화
/etc/init.d/named stop
chmod 644 /etc/init.d/ 이름 지정

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

SpamAssassin 비활성화

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

/etc/init.d/psa-spamassassin 중지
chmod 644 /etc/init.d/psa-spamassassin

xinetd 비활성화

xinetd 프로세스에는 여러 다른 프로세스가 포함되어 있지만 일반적인 웹 서버에는 유용하지 않습니다.

/etc/init.d/xinetd 중지
chmod 644 /etc/init.d/xinetd

Plesk 메모리 사용량 제한

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

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

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

MinSpareServers 1
MaxSpareServers 1
StartServers 1
MaxClients 5

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

Plesk 비활성화 또는 끄기 (선택 사항)

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

다음 명령을 실행하여 plesk를 해제하십시오.

/etc/init.d/psa 중지

다음 명령을 실행하여 시작시 실행되지 않도록 비활성화 할 수 있습니다.

chmod 644 /etc/init.d/psa

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

MySQL 구성

쿼리 캐시 활성화

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

[mysqld]
쿼리 캐시 유형 = 1
쿼리 캐시 크기 = 8M

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

TCP / IP 비활성화

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

netstat -an | 그렙 3306

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

스킵 네트워킹

Apache 구성

종종 /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의 메모리를 추가하면 40 개의 아파치 스레드에서 10MB의 메모리를 낭비하게됩니다.

불필요한 PHP 모듈 제거

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

다음 모듈로 loadmodule 행을 주석 처리하십시오.

  • odbc
  • snmp
  • pdo
  • odbc pdo
  • mysqli
  • ioncube 로더
  • json
  • imap
  • LDAP
  • ncurses

Todo : 여기에 더 많은 정보를 추가하세요.

PHP Opcode 캐시

APC, eAccelerator 및 Xcache를 포함하여 사용할 수있는 opcode 캐시가 많이 있습니다. 마지막 하나는 안정성 때문에 개인적으로 선호하는 것입니다.

xcache를 다운로드하여 디렉토리에 압축을 푼 후 xcache 소스 디렉토리에서 다음 명령을 실행하십시오.

phpize
./configure --enable-xcache
하다
설치하다

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 = 끄기
xcache.readonly_protection = 켜짐
xcache.mmap_path = "/ tmp / xcache"
xcache.coredump_directory = ""
xcache.cacher = 켜기
xcache.stat = 켜기
xcache.optimizer = 끄기

Todo : 이것을 약간 확장하고 참조에서 xcache에 연결해야합니다.

백업

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

자동 백업 스크립트 생성

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

mkdir -p / 백업 / 파일

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

vi /backups/backup.sh

파일에 다음을 추가하고 필요에 따라 경로와 mysqldump 비밀번호를 조정합니다.

#! / bin / sh

THEDATE =`날짜 + % d % m % y % H % M`

mysqldump -uadmin -pPASSWORD DATABASENAME> /backups/files/dbbackup$THEDATE.bak

tar -cf /backups/files/sitebackup$THEDATE.tar / var / www / vhosts / my-website-path / httpdocs
gzip /backups/files/sitebackup$THEDATE.tar

/ backups / files / site * 찾기 -mtime +5 -exec rm {} \;
/ backups / files / db * 찾기 -mtime +5 -exec rm {} \;

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

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

chmod u + x /backups/backup.sh

다음으로 크론에 의해 자동으로 실행되도록 할당해야합니다. 백업 디렉토리에 대한 액세스 권한이있는 계정을 사용하고 있는지 확인하십시오.

crontab -e

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

1       1       *       *       *       /backups/backup.sh

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

Rsync를 사용하여 오프 사이트 백업 동기화

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

이 명령을 다른 위치의 Linux 또는 Mac 컴퓨터에서 실행하여 테스트 할 수 있습니다 (집에 Linux 서버가 있으며 여기에서 실행합니다).

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

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

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

crontab -e

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

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

다른 시간에 실행하거나 하루에 한 번만 실행하도록 예약 할 수 있습니다. 그것은 당신에게 달려 있습니다.

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

보안

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

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

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

#PermitRootLogin yes

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

PermitRootLogin 번호

이 변경을 수행하기 전에 일반 사용자 계정이 있고 root로 su 할 수 있는지 확인하십시오. 그렇지 않으면 스스로 잠글 수 있습니다.

SSH 버전 1 비활성화

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

# 프로토콜 2,1
프로토콜 2

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

SSH 서버 다시 시작

이제이를 적용하려면 SSH 서버를 다시 시작해야합니다.

/etc/init.d/sshd 재시작

열린 포트 확인

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

netstat -an | grep 듣기

plesk를 위해 포트 22, 80 및 가능하면 8443 이외의 다른 항목을 수신하면 안됩니다.

방화벽 설정

더 많은 연결을 차단하기 위해 선택적으로 iptables 방화벽을 설정할 수 있습니다. 예를 들어, 저는 일반적으로 회사 네트워크 이외의 다른 포트에 대한 액세스를 차단합니다. 동적 IP 주소가있는 경우이 옵션을 사용하지 않는 것이 좋습니다.

지금까지이 가이드의 모든 단계를 이미 따랐다면 방화벽도 추가 할 필요는 없지만 옵션을 이해하는 것이 좋습니다.

또한보십시오

  • Linux에서 Iptables 사용

참고 문헌

Setting Up Virtual Hosts For The Apache Web Server - Tutorial

WHM Dedicated Server Configuration 3

Setting Up A Dedicated Server For A Multiplayer Game In Unity

WHM Bangla Tutorial Dedicated Server Configuration 2

Valheim Dedicated Server Setup | Host A FREE Private Server

How To Deploy A Cloud Dedicated Server With Free InterWorx - Host Unlimited Accounts

Set Up A Simple Web Server At Home In Under 10 Minutes Using Windows And WAMP

How To Setup A Cloud Dedicated Server W/InterWorx & Add Your Website, Name Servers, & Hostname SSL


개인 정보 보호 및 보안 - 가장 인기있는 기사

Discord에서 플레이중인 게임을 숨기는 방법

개인 정보 보호 및 보안 Apr 3, 2025

Discord는 현재 플레이중인 게임을 친구에게 자동으로 보여줍니다. 게임에서 Discord의 풍부한 존재감 기능을 사용하면 친구가 �..


Windows에 숨겨진 10 개 이상의 유용한 시스템 도구

개인 정보 보호 및 보안 Jul 24, 2025

Windows에는 유용하지만 숨겨져있는 다양한 시스템 유틸리티가 포함되어 있습니다. 일부는 시작 메뉴에 깊숙이 묻혀 있고 다른 일부는 실�..


2 단계 인증을 위해 Authy를 설정하는 방법 (및 장치 간 코드 동기화)

개인 정보 보호 및 보안 Jul 3, 2025

캐치되지 않은 콘텐츠 강력한 암호로는 더 이상 충분하지 않습니다. 2 단계 인증 언제든지 가능할 때. 이상적으로는 �..


HP 노트북에 Conexant Keylogger가 있는지 확인하는 방법

개인 정보 보호 및 보안 May 12, 2025

캐치되지 않은 콘텐츠 2015 년과 2016 년에 출시 된 많은 HP 노트북에는 큰 문제가 있습니다. Conexant에서 제공하는 오디오 드라이버에는 디..


LastPass를 시작하는 방법 Geek 가이드

개인 정보 보호 및 보안 Nov 5, 2024

계정 수와 수반되는 암호가 쌓이기 때문에 암호 보안을 엉망으로 만들기가 너무 쉽습니다. LastPass가 안전한 보안 암호를 생성하고 관리�..


더 강력한 영숫자 암호로 iOS 장치를 보호하는 방법

개인 정보 보호 및 보안 Jul 8, 2025

캐치되지 않은 콘텐츠 iOS 9를 실행하는 iOS 기기를 설정할 때 6 자리 암호를 입력하라는 메시지가 표시됩니다. 하지만 iOS 기기에서 문자�..


Windows 10 Insider Preview를 사용해야합니까?

개인 정보 보호 및 보안 Jun 9, 2025

캐치되지 않은 콘텐츠 으로 Windows 10의 Insider Preview 빌드로 전환 , 다른 Windows 사용자보다 먼저 최신 변경 사항과 기능을 얻을..


보안 강화를 위해 Windows 7에서 게스트 계정 이름 바꾸기

개인 정보 보호 및 보안 Dec 7, 2024

캐치되지 않은 콘텐츠 새 Windows 7 시스템을 보호하기 위해 게스트 계정 이름 변경을 살펴볼 수 있습니다. 오늘은 컴퓨터의 무단 액세스를 방지�..


카테고리