Apache + PHP + MySQL 이 설치된 상태에서 가상 호스팅 설정 방법입니다.

아파치가 사용할 계정을 생성합니다.

[root@yongbok ~]# groupadd -g 81 apache
[root@yongbok ~]# useradd -u 81 -g 81 -s /sbin/nologin  -c “apache account” -d /home/www apache

[root@yongbok ~]# cat /etc/passwd | grep apache
apache:x:81:81:apache account:/home/www:/sbin/nologin

[root@yongbok ~]# mkdir /home/www
[root@yongbok ~]# chown apache:apache /home/www

아파치 디렉토리의 httpd.conf 를 수정합니다.

[root@yongbok ~]# vi /usr/local/apache2/conf/httpd.conf

# 필자는 원본 설정 파일중 필요 없는 부분은 제거 하였습니다.
# 2010/02/08 – by.ruo91 ( ruo91@yongbok.net )
# ———————— 서버 설정 ———————— #
# 아파치가 설치된 디렉토리 경로 (컴파일시 지정한 경로)
ServerRoot “/usr/local/apache2”

# 아파치에 사용할 포트
Listen 80

# 아파치 사용자, 그룹 지정
User apache
Group apache

# 관리자 이메일 주소
ServerAdmin ruo91@yongbok.net

# 기본 도메인 주소
# 이것을 지정 해주면 아이피로 접속시 도메인으로 접속이 됩니다.
ServerName www.yongbok.net:80

# ———————— 모듈 설정 ———————— #
# DSO 모듈
# 모듈 사용 예제:
# LoadModule foo_module modules/mod_foo.so
# ———————– 비사용 모듈 ———————– #
# 비활성화 모듈 (필요없는 모듈 주석 처리)
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
#LoadModule authn_dbd_module modules/mod_authn_dbd.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
#LoadModule ssl_module modules/mod_ssl.so
#LoadModule dav_module modules/mod_dav.so
#LoadModule info_module modules/mod_info.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule cache_module modules/mod_cache.so
#LoadModule disk_cache_module modules/mod_disk_cache.so
#LoadModule mem_cache_module modules/mod_mem_cache.so
# ———————— 사용 모듈 ———————— #
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule dbd_module modules/mod_dbd.so
LoadModule dumpio_module modules/mod_dumpio.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule include_module modules/mod_include.so
LoadModule filter_module modules/mod_filter.so
LoadModule substitute_module modules/mod_substitute.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule expires_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so
LoadModule ident_module modules/mod_ident.so
LoadModule unique_id_module modules/mod_unique_id.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule version_module modules/mod_version.so
LoadModule mime_module modules/mod_mime.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule asis_module modules/mod_asis.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule imagemap_module modules/mod_imagemap.so
LoadModule actions_module modules/mod_actions.so
LoadModule speling_module modules/mod_speling.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule php5_module        modules/libphp5.so

# ———————— 문서 관련 설정 ———————— #
# 기본 문서 디렉토리
DocumentRoot “/home/www”

# 기본 index 페이지 설정
<IfModule dir_module>
DirectoryIndex index.htm index.html index.php
</IfModule>

# .htaccess 설정
<FilesMatch “^\.ht”>
Order allow,deny
Deny from all
Satisfy All
</FilesMatch>

# PHP 사용
<IfModule mod_php3.c>
AddType application/x-httpd-php3 .php3 .htm .html
AddType application/x-httpd-php3-source .php3s
</IfModule>

<IfModule mod_php4.c>
AddType application/x-httpd-php .php .htm .html
AddType application/x-httpd-php-source .phps
</IfModule>

<IfModule mod_php5.c>
AddType application/x-httpd-php .php .htm .html
AddType application/x-httpd-php-source .phps
</IfModule>

# ———————— 로그 관련 설정 ———————— #
# 아파치 서버 데몬 에러 로그
ErrorLog “logs/error_log”

# 로그 레벨 설정
# error_log 에 기록될 제어 번호.
# 불러올수 있는 변수
# debug, info, notice, warn, error, crit, alert, emerg.
LogLevel warn

<IfModule log_config_module>
#
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
#
LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” combined
LogFormat “%h %l %u %t \”%r\” %>s %b” common

<IfModule logio_module>
# You need to enable mod_logio.c to use %I and %O
LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\” %I %O” combinedio
</IfModule>
</IfModule>

# ———————— cgi-bin 설정 ———————— #
<IfModule alias_module>
ScriptAlias /cgi-bin/ “/usr/local/apache2/cgi-bin/”
</IfModule>

<IfModule cgid_module>
#
# ScriptSock: On threaded servers, designate the path to the UNIX
# socket used to communicate with the CGI daemon of mod_cgid.
#
#Scriptsock logs/cgisock
</IfModule>
<Directory “/usr/local/apache2/cgi-bin”>
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>

# ———————— MIME 설정 ———————— #
DefaultType text/plain

<IfModule mime_module>
TypesConfig conf/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
</IfModule>

# ———————— MMAP 설정 ———————— #
# EnableMMAP and EnableSendfile: On systems that support it,
# memory-mapping or the sendfile syscall is used to deliver
# files.  This usually improves server performance, but must
# be turned off when serving from networked-mounted
# filesystems or if support for these functions is otherwise
# broken on your system.
#
#EnableMMAP off
#EnableSendfile off

# ———————— 그외 설정 ———————— #
# MPM 설정
#Include conf/extra/httpd-mpm.conf

# 사용자 디렉토리 설정 (user_dir)
#Include conf/extra/httpd-userdir.conf

# 기본값 설정
#Include conf/extra/httpd-default.conf

# 가상 호스팅 설정
Include conf/extra/httpd-vhosts.conf

가상 호스팅을 설정하기 위해서 httpd-vhosts.conf 파일을 수정합니다.

[root@yongbok ~]# vi /usr/local/apache2/conf/extra/httpd-vhosts.conf

NameVirtualHost *:80
# ———————— yongbok.net ———————— #
<VirtualHost *:80>
# 기본 도메인을 지정합니다.
ServerName www.yongbok.net
#
# 관리자 이메일 주소를 입력합니다.
ServerAdmin ruo91@yongbok.net
#
# 도메인 별로 접속시 동일하게 접근 가능 합니다.
ServerAlias yongbok.com www.yongbok.com yongbok.net www.yongbok.net
#
# 기본 문서가 있는 디렉토리를 지정 합니다.
DocumentRoot /home/www/
#
# 잘못된 접근이나 페이지를 찾을수 없을때 표시할 페이지 설정 입니다.
ErrorDocument 403 http://www.yongbok.net/error/permission
ErrorDocument 404 http://www.yongbok.net/error/
#
# 아파치의 로그를 24시간이 경과하면 날짜별로 분할 기록합니다.
CustomLog “|/usr/local/apache2/bin/rotatelogs /home/www/log/access-%Y-%m-%d.log 86400” combined
#
# 디렉토리 옵션을 설정 합니다.
<Directory “/home/www”>
Options FollowSymLinks
AllowOverride FileInfo AuthConfig
</Directory>
#
# 별칭(Alias) 추가
# phpMyAdmin 의 별칭을 걸어 줍니다.
Alias /myadmin “/home/src/myadmin”
</VirtualHost>

적용을 위해 아파치를 재시작 해줍니다.
[root@yongbok ~]# /usr/local/apache2/bin/apachectl restart