모든 설정이 다릅니다. 나에게는 각각 웹 사이트를 호스팅하는 서버에 많은 사용자가 있으므로 시스템에서 둘 이상의 사용자를 만들 필요는 없습니다. 그러나이 서버에서 여러 웹 사이트를 관리하는 경우이 설정을 사용하면 표준 LAMP 설정보다 쉽게 각 도메인을 관리, 구성 및 디버깅 할 수 있습니다. 이를 위해 Apache의 여러 장치를 사용하여 권한 오류를 피할 수 있습니다.
첫째, 이것은 내가 사용하는 문서 구조입니다.
/home/[USER]/domains/[DOMAIN]/html
/home/[USER]/domains/[DOMAIN]/logs
각 사용자는 도메인 폴더가있는 자체 계정을 가지고 있습니다 (추가 한 폴더 /etc/skel
는 매번 생성됩니다. 각 도메인에는 폴더가있는 domains
폴더에 자체 폴더가 있습니다 html
(이 이유는 주로 도메인 외부에 웹 파일을 가질 수 있음) 적절한 경우이 구조를 자유롭게 수정하십시오.이 게시물 전체에서 이러한 변경 사항을 수행해야합니다.
둘째, PHP 사이트를 많이 호스팅하므로 구성에 suPHP를 사용합니다. 기본적으로 표준 아카이브 패키지에는 적절한 컴파일 플래그가 활성화되어 있지 않으므로 suPHP의 보안 수준이 떨어집니다. 서버에서 사용하는 자체 suPHP 패키지, 아래 설치 지침을 만들었습니다. suPHP를 사용하면 실행할 사용자 PHP 스크립트를 정의 할 수 있습니다 (각 사이트의 사용자 정의 php.ini 등 포함). 또한 suExec for Apache를 활성화하여 www-data 사용자 (내가 멸시하는 사용자)에 대한 소유권이 없어도됩니다.
먼저 Apache 및 기타 모든 서비스가 서버에 설치되어 있는지 확인하십시오. 그들이 적어도 작동하는지 확인하십시오. 그런 다음 suphp-common 및 필수 libapache2-mod-suphp 모듈을 설치하는 것이 좋습니다 (자세한 정보 : PPA 란 무엇이며 어떻게 사용합니까? ). 그런 다음 설치 후 suPHP 및 suexec를 사용하여 활성화하십시오.a2enmod
sudo a2enmod suphp
sudo a2enmod suexec
sudo a2dismod php5
sudo /etc/init.d/apache restart
다음으로 구성 파일이 나타납니다. 새 사이트를 추가 할 때마다 구성 파일을 자동으로 생성하는 다양한 도구를 만들었습니다. 그러나 다음은 내가 사용하는 기본 템플릿입니다.
<VirtualHost *:80>
ServerAdmin [EMAIL]
ServerName [DOMAIN]
ServerAlias www.[DOMAIN] [DOMAIN]
DocumentRoot /home/[USER]/domains/[DOMAIN]/html
<Directory /home/[USER]/domains/[DOMAIN]>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
</Directory>
ErrorLog /home/[USER]/domains/[DOMAIN]/logs/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /home/[USER]/domains/[DOMAIN]/logs/access.log combined
SuexecUserGroup [USER] [USER]
suPHP_UserGroup [USER] [USER]
suPHP_ConfigPath /home/[USER]/etc
</VirtualHost>
그러면 해당 도메인, 문서 루트 및 도메인 작동에 필요한 기타 모든 기본 사항에 대한 로깅이 설정됩니다. 이러한 파일을 /etc/apache2/sites-available/
일반적으로 이름이 지정된 곳에 배치하고 다음 [USER]-[DOMAIN]
과 a2ensite
같이 활성화 / 비활성화합니다 .
sudo a2ensite [USER]-[DOMAIN]
sudo a2dissite [USER]-[DOMAIN]
구성 파일을 수정할 때마다 Apache를 다음과 같이 다시로드해야합니다.
sudo /etc/init.d/apache reload
유연성의 양을 설정하는 것이 많은 것처럼 보이지만, 제 생각에는 설정 시간보다 훨씬 큽니다. 단일 사용자 웹 서버 만 있으면되지만 나중에 단일 사용자 웹 서버 이외의 다른 것을 원한다면 추가 작업을 수행하거나 보안을 함께 삭제해야합니다.