우분투 버전을 선택한다. 여기서는 서비스 수명이 긴 14.04 버전을 선택하도록 하겠다.
구성가능한 서버 방식은 다음과 같다.
이 방식을 사용하여 설정을 잘 하면 가장 월등한 동접처리가 가능하다. 다만 일부 범용 프로그램에서 호환이 안된다. nginx는 가벼운 대신 모듈이 많지 않다. nginx는 .htaccess 파일을 해석할 수 없다.
apache 는 아주 많은 확장 모듈이 있다. 기본 내장된 mod_proxy 모듈을 사용해서 nginx와 동일한 역할을 할 수 있도록 할 수 있다.
다만 기본으로 처리하는 것이 많아서 nginx 보다 약간은 느리다.
Apache와 PHP 프로그램을 따로 구동하지 않고 Apache에 PHP 해석 모듈을 로드하게 한다.
vi /etc/hostname
호스트이름을 확인하고 적절한 이름으로 변경한다.
hostname -F /etc/hostname
위와 같이 변경된 이름을 적용할 수 있다.
apt-get install apache2 apache2 -v
apache 2.x를 설치하고 버전을 체크해 본다. 설치 완료후 파이어폭스등의 브라우저에서 http://자신의 아이피 혹은 localhost 를 사용해 웹 서버가 구동되는지 확인한다.
주로 사용하는 모듈과 필요없는 모듈을 비활성화 한다.
# a2enmod rewrite # a2enmod headers # a2dismod autoindex # service apache2 restart
apt-get install php5
자동으로 아파치 중단시키고 설정파일에 php를 등록시키고 재 구동되어 바로 적용된다.
apt-get install php5-cli
콘솔에서 php를 실행시키기 위해서 위와 같이 추가 패키지를 설치한다.
apt-get install php5-mcrypt apt-get install php5-gd apt-get install php5-curl
주로 사용하는 암호화, 이미지, 원격지 정보 읽기등을 설치한다. 추가로 설치하고 싶은 모듈이 있는 경우 다음과 같이 검색하여 설치한다.
apt-cache search php5-
service apache2 restart php -v
아파치 서비스를 재시작하고 php의 버전을 확인해 본다.
PHP 5.5.9-1ubuntu4 (cli) (built: Apr 9 2014 17:11:57) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
mysql과 mariaDB는 호환된다. mysql이 오라클로 인수되면서 나온 개발자들이 따로 mariaDB를 만들었다. 여기서 mariaDB를 설치하도록 하겠다.
apt-get install mariadb-server-5.5
루트 사용자로 지정할 암호를 넣어준다.
apt-get install mariadb-client-5.5 apt-get install php5-mysql mysql -V
클라이언트 프로그램과 연동 모듈을 설치하면 mariaDB가 사용 가능하다. 여기서 mysql과 동일한 인터페이스이므로 mysql 모듈을 설치해도 상관 없다.
DB가 기본적으로 latin1으로 생성되어 있으므로 이부분을 변경한다.
vi /etc/mysql/my.cnf
[mysqld] # # * Basic Settings # ... character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci ... max_allowed_packet = 256M
기존의 모든 utf8과 호환되는 utf8mb4 속성을 사용한다. 한행의 제한을 늘리기 위해 max_allowed_packet 속성을 조정한다. [mysqldump] 항목에도 존재한다.
service mysql restart
변경사항을 적용한다. 웹 서비스 구동시 발생할 수 있는 Nobody 퍼미션 관련 문제를 해결하기 위해 관련 프로그램을 설치한다. 이 세팅을 하면 shell의 권한과 sftp의 권한과 web의 권한이 동일하게 취급되며 보안도 좋게된다.
apt-get install apache2-mpm-itk chmod 711 /home chmod -R 700 /home/*
php .php3 .php4 .php5 .pht .phtml 확장자 파일이 php를 해석할 수 있게 되어있다. 웹 페이지에서 이 확장자 파일을 제대로 막자주지 못하면 사이트가 위험하게 된다.
vi /etc/apache2/mods-available/php5.conf
.php를 제외한 나머지의 접근을 차단 한다.
<FilesMatch ".+\.ph(p3|p4|p5|t|tml)$"> Order Deny,Allow Deny from all </FilesMatch>
이 값을 설정하지 않으면 시스템의 timezone을 사용한다.
vi /etc/php5/apache2/php.ini
date.timezone 값을 찾아서 주석을 제거하고 시간을 Asia/Seoul 설정한다.
service apache2 restart
항상 값 변경뒤엔 서비스를 재시작 한다.
adduser kildong su -l kildong mkdir www exit
/etc/apache2/sites-available/kildong.conf 에 저장한다.
<VirtualHost *:80> #main domain ServerName edu-vm #additional domain ServerAlias www.edu-vm.com # ServerAlias my-anotherdomain.com #document Root DocumentRoot /home/kildong/www/ #additional setting <Directory /home/kildong/www/> Options FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all # 14.04 rules require all granted </Directory> AssignUserID kildong kildong </VirtualHost>
SSL을 적용하고자 한다면 다음 라인을 추가한다.
<VirtualHost *:443> #main domain ServerName edu-vm #additional domain ServerAlias www.edu-vm.com # ServerAlias my-anotherdomain.com #document Root DocumentRoot /home/kildong/www/ #additional setting <Directory /home/kildong/www/> Options FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all # 14.04 rules require all granted </Directory> AssignUserID kildong kildong SSLEngine on SSLProtocol all -SSLv2 -SSLv3 SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA SSLHonorCipherOrder on SSLCertificateFile "/home/kildong/ssl/mysite_ssl.crt" SSLCertificateKeyFile "/home/kildong/ssl/mysite_ssl.key" SSLCertificateChainFile "/home/kildong/ssl/mysite_ssl.certchain.crt" </VirtualHost>
인증서 적용 결과는 아래 사이트에서 확인해 볼 수 있다.
https://www.sslshopper.com/ssl-checker.html#hostname=forum.phple.com
a2ensite kildong a2dissite kildong -> 사이트 비활성화 service apache2 restart
"If you would thoroughly know anything, teach it to other."
- Tryon Edwards -