한국어

tc_backup

wiki는 버린다. 데이터는 남겨둔다.

ubuntu APM(apache2 php mysql) 설치 방법

기본적인 설치 방법


기본적인 설치 방법

$sudo apt-get install apache2
$sudo apt-get install php5 libapache2-mod-php5
$sudo apt-get install mysql-server
$sudo apt-get install phpmyadmin
$sudo /etc/init.d/apache2 restart

apache2를 설치하고 php5와 php5에 대한 apache2 모듈을 설치하고, mysql-server를 설치한다. phpmyadmin의 경우 사용자의 편의에 따라 설치하지 않아도 되며 mysql-server의 경우 설치 도 중 mysql root의 비밀번호를 설정하게 된다. apaceh2가 가동되면 http://주소/phpmyadmin 으로 phpmyadmin 페이지에 접속할 수 있다.


apache2 설정 경로 디렉토리 설명

/etc/apache2 (apache2 설정 경로)
/etc/apache2/apache2.conf (아파치 설정 파일)
/etc/apache2/mods-available (모듈 설정 파일 경로)
/etc/apache2/mods-enabled (모듈 설정 파일 enabled 경로, mods-available 경로의 실제 모듈 설정 파일을 심볼릭 링크파일로 걸어놓아야 작동됨)
/etc/apache2/conf.d (아파치 conf 파일 경로, charset, phpmyadmin.conf, security)
/etc/apache2/sites-available (site 설정 경로, virtualhost 설정도 여기에 파일로 생성)
/etc/apache2/sites-enabled (site 설정 enabled 경로, sites-available 설정 파일을 심볼릭 링크 파일을 sites-enabled 경로에 만들어놔야 작동됨)


rewrite module load

ubuntu 9.10에서 apt-get install로 apache2를 설치하면 기본적으로 rewrite 모듈이 활성화되어있지 않으므로 load하여 활성화 시켜주어야 rewrite 모듈을 사용 할 수 있다.

$a2enmod rewrite

또는

$ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
$sudo /etc/init.d/apache2 restart

rewrite 모듈 load 확인 방법

$sudo vi /var/www/phpinfo.php
<?php
phpinfo();
?>

브라우저에서 http://주소/phpinfo.php 로 접속하여 apache2handler 항목에서 mod_rewrite가 있는지 확인한다.


도메인 설정하기

예전에 서버 세팅 할 당시에는 Virtualhost를 사용하지 않고, 한 서버에서 default로 한대의 도메인만 설정하여 사용하는 방법으로만 세팅을 해왔었지만, 여러 도메인을 사용하기 위해서는 Virtualhost를 사용하여야 하며 최근에는 기본적으로 한개의 도메인을 사용하여도 virtualhost 방식으로 설정하게끔 되어 있다.

Name-based vs. IP-based Virtual Hosts

IP기반 가상호스트는 연결한 IP 주소를 가지고 서비스할 가상호스트를 결정한다. 그래서 각 호스트는 서로 다른 IP 주소를 가져야 한다. 이름기반 가상호스트의 경우 클라이언트가 HTTP 헤더에 호스트명을 서버으로 전달하여야 한다. 이런 방법으로 한 IP 주소로 여러 다른 호스트를 서비스할 수 있다. 여기서는 한 IP에서 여러 도메인을 사용할 것이므로 이름 기반 호스트를 사용한다.

/etc/apache2/sites-available/ 경로를 보면 기본적으로 default, default-ssl 파일이 존재한다. 해당 파일은 그대로 보관한다. default 파일의 경우 var/www 경로를 Root로 인식하고 도메인이 아닌 IP로 접근하는 경우 해당 페이지를 보여주게 된다. 기본적으로 It’s Work 페이지를 보여주지만, 관리자 메일 주소정도 적어놔도 나쁘지 않다.

도메인별 설정 파일을 생성한다.

$sudo vi /etc/apache2/sites-available/rain9.com
<VirtualHost *:80>
	ServerAdmin darkhi@gmail.com
	DocumentRoot /home/darkhi/http/www
	<Directory /home/darkhi/http/www>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride All
		Order allow,deny
		allow from all
	</Directory>

	ServerName rain9.com
	ServerAlias www.rain9.com

	ErrorLog /var/log/apache2/rain9.com-error_log

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn

	CustomLog /var/log/apache2/rain9.com-access_log common

</VirtualHost>
$sudo vi /etc/apache2/sites-available/wiki.rain9.com
<VirtualHost *:80>
	ServerAdmin darkhi@gmail.com
	DocumentRoot /home/darkhi/http/wiki
	<Directory /home/darkhi/http/wiki>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride All
		Order allow,deny
		allow from all
	</Directory>

	ServerName wiki.rain9.com
	ServerAlias www.wiki.rain9.com

	ErrorLog /var/log/apache2/wiki.rain9.com-error_log

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn

	CustomLog /var/log/apache2/wiki.rain9.com-access_log common

</VirtualHost>
$a2ensite rain9.com
$a2ensite wiki.rain9.com

apache2 재시작

$sudo /etc/init.d/apache2 restart

심볼릭 링크(Symbolic Link) 파일 만들기

ln -s 원본파일경로 심볼릭링크파일명(ex:ln -s /etc/apache2/sites-available/rain9.com rain9.com)

a2ensite 사용법 : a2ensite rain9.com /etc/apache2/sites-available 경로에 있는 rain9.com 설정 파일에 대한 심볼릭 링크파일을 /etc/apache2/sites-enabled 경로에 생성한다.

a2dissite 반대로 /etc/apache2/sites-enabled의 심볼릭 링크파일을 제거한다.

a2enmoda2dismod 위와 동일한 기능을 mods-available, mods-enabled 경로로 실행한다.


도메인 ip 설정

사용하는 DNS에서 ip를 해당 서버 ip로 설정해 놓으면 된다.

PHP Accelerators

PHP의 속도 향상을 위해서 다양항 가속 프로그램이 존재한다. Zend Optimizer, APC (Alternative PHP Cache), eAccelerator, XCache, 등의 다양한 가속 프로그램이 존재하며 Zend Optimizer는 과거에 많이 쓰였고, APC는 free이며 PHP6에 default로 들어가게 될 정도로 안정적이며, eAccelerator는 APC보다 빠르지만 APC보다 인정은 덜 받는 상황이며, XCache는 빠르지만(벤치마크를 보니 APC나 eAccelerator보다) Lighttpd에 대하여 최적화되어져 개발되어지고 있는 상황이다. 그러므로 apaceh2를 사용한다면 APC나 eAccelerator를 사용하고, Lighttpd를 쓴다면 XCache를 추천한다. 이는 개인적인 생각이다.


apc 설치

$sudo apt-get install php-apc
$sudo /etc/init.d/apache2 restart

apache2 log 경로

/var/log/apache2/

apache2 작동에 문제가 생겼을 경우 로그 확인을 하여야 한다. 해당 경로로 접근이 가능한지 확인 한 후, 접근이 불가능 할 경우, 디렉토리 소유권을 확인하여야 한다.

root adm 권한으로 되어 있다면, adm 그룹에 현재 유저를 넣어주고 세션을 다시 시작하면 정상적으로 접근이 가능하며, 그룹에 추가 하기 위해서는 아래 명령어를 사용한다.

$usermod -G 그룹 -a 사용자계정명

또는

$sudo vi /etc/group

에서 해당 group에 직접 사용자계정명 추가.

소유권 그룹에 추가하지 않고 직접 파일을 액세스 하는 방법도 있다. 비소유그룹에 대한 권한 설정과 직접 경로 액세스 방법.

$sudo tail -f /var/log/apache2/access.log
$sudo tail -f /var/log/apache2/error.log

발생할 가능성 있는 error

apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName

/etc/apache2/httpd.conf 파일은 빈 파일이고, 해당 파일에 ServerName을 추가한다. 꼭 httpd.conf 파일은 아니어도 된다.

$sudo vi /etc/apache2/httpd.conf

ServerName 127.0.0.1

127.0.0.1 대신 localhost 일 수 도 있고, loopback이 아닌 IP라면 /etc/hosts에 기록된 서버의 hosts명을 적어도 된다. 본인은 IP로 나와서 호스트명을 적었다.


apache2.conf 파일

ServerRoot "/etc/apache2"
# 서버의 Root 디렉토리 지정

LockFile /var/lock/apache2/accept.lock
# 아파치 LockFile의 경로 지정을 위한 설정. 동기화(Serialize)와 관련됨.

PidFile ${APACHE_PID_FILE}
# apache2 시작될 때 자신의 프로세스번호를 기록하는 파일

Timeout 300
# 클라이언트와 서버 간에 정보 연결 유지 시간(초단위).
# 페이지 로딩후 다음 페이지 로딩 작업이 300초 내에 이루어지면
# 대기중이던 쓰레드(또는 프로세스)로 처리하게 되고, 300초가 지나면 해당 대기중이던 쓰레드(또는 프로세스)는 다른 일을 하게 됨.

KeepAlive On
# 프로세스가 특정 사용자의 한가지 작업 요청을 처리하고 소멸할 것인지, 아니면 특정 사용자의 다른 요청도 처리할 것인지 결정하는 요소.
# 프로세스 생성과 소멸은 부하가 생기는 작업이므로 작업이 있다면 더 처리하는 것이 효율적이다.

MaxKeepAliveRequests 100
# KeepAlive On일때 유효
# 프로세스가 특정 사용자의 요청을 100번까지 처리하게 되면 해당 자식 프로세스는 소멸하고 다른 프로세스가 100번 이후의 요청을 처리하게 된다.
# 무한적으로 요청을 처리하게 할려면 0으로 설정

KeepAliveTimeout 15
# KeepAlive On일때 유효
# 특정 사용자의 지속적인 요청이 지정된 시간(초단위)안에 없을 경우 연결을 끊는다.

<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>
# Ifmodule 지시자
# mpm_prefork : 전통적인 처리 방식(프로세스)

# StartServers
# 아파치 데몬이 시작될 때 자식 프로세스 개수 설정
# MinSpareServers, MaxSpareServers
# 유휴상태(Idle) 자식프로세스가 MinSpareServers의 개수보다 적을 경우 추가로 생성하게 되고, 유후(Idle) 자식프로세스가 MaxSpareServers의 개수보다 많을 경우 소멸시킨다.

<IfModule mpm_worker_module>
    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>
# mpm_worker 쓰레드 처리 방식

# StartServers
# 아파치 데몬이 시작될 때 자식 프로세스 개수 설정
# MaxClients 동시 연결 가능한 클라이언트 최대 개수
# MinSpareThreads, MaxSpareThreads
# 유후상태(Idle) 쓰레드가 MinSpareThreads의 개수보다 적을 경우 추가로 생성하게 되고, 유후상태(Idle) 쓰레드가 MaxSpareThreads의 개수보다 많을 경우 소멸시킨다.

User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
# 아파치 자식 프로세스들의 실행 소유자와 소유 그룹

AccessFileName .htaccess
# 디렉토리 접근 제어 정보 파일 명칭
# Directory 지시자와 관련있음(AllowOverride)

<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>
# .htaccess 파일 접근

DefaultType text/plain
# 정의되어있지 않은 파일 형식에 대한 요청을 받았을 때 응답 방법 mime type으로 설정

HostnameLookups Off
# Off일때는 로그에 방문자의 IP로 기록, On일때 방문자의 IP에 해당하는 도메인을 DNS에 조회하여 있을 경우 도메인으로 기록, 해당 도메인이 없는 경우에는 IP로 기록
# DNS 조회는 속도와 관련이 있으므로 Off

ErrorLog /var/log/apache2/error.log
# apache2 서버 에러 로그 파일 위치

LogLevel warn
# 에러 로그 기록 레벨 결정
# emerg가 가장 적은 양의 로그, debug가 가장 많은 양의 로그를 남기게 된다.
# default 권장은 notice or warn이며 warn을 추천.
# emerg : 최상위, 매우위험한 상황의 메시지, 전체공지가 요구되는 메시지, 매우 위급한 상황, 시스템을 사용할 수 없는 상황
# alert : 즉각적인 조치를 취해야하는 상황의 메시지로 즉시 행동이 취해져야하는 상황
# crit : 급한 상황은 아니지만 치명적인 시스템문제발생 상황 메시지
# error : 에러가 발생한 상황의 메시지
# warn : 주의를 요하는 메시지
# notice : 에러가 아닌 알림에 관한 메시지
# info : 단순한 프로그램에 대한 정보 및 통계관련 메시지
# debug : 최하위로 디버깅 관련 메시지

Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf

Include /etc/apache2/httpd.conf

Include /etc/apache2/ports.conf

LogFormat "%v:%p %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
# CustomLog 지시자에서 사용할 로그 형식
# %h 호스트명
# %l 리모트 로그 이름
# %u 사용자 인증에 사용된 유저명
# %t 시간
# %r 요청한 내용의 첫 번째 줄
# %s 서버 상태
# %b 전송량 (헤더 포함)
# %{헤더} 요구된 헤더 내용
# %U 요구한 URL

CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined
# common : 공통 로그 형식
# Combined : 결합된 로그 형식

Include /etc/apache2/conf.d/

Include /etc/apache2/sites-enabled/

VirtualHost 설정 설명

ServerAdmin : 해당 가상호스트의 관리자 메일 주소
DocumentRoot : 해당 가상 호스트의 홈디렉토리위치 지정
ServerName : 해당 가상 호스트의 도메인명
ServerAlias : ServerName에 지정한 도메인에 대한 별칭 지정
ErrorLog : 에러로그 파일의 위치 지정
CustomLog : 로그 파일의 위치 지정


참조 사이트

로그형식 http://bluebreeze.textcube.com/176
이름 기반 호스트 http://httpd.apache.org/docs/2.2/vhosts/name-based.html
Apache HTTP Server Version 2.2 문서 http://httpd.apache.org/docs/2.2/ko/
SULINUX를 웹서버로 사용하기 1편 http://blog.daum.net/stock-chart/129
Ubuntu Server Guide > HTTPD – Apache2 Web Server https://help.ubuntu.com/9.10/serverguide/C/httpd.html
PHP Accelerators http://www.ducea.com/2006/10/30/php-accelerators/

조회 수 :
17247
등록일 :
2012.06.11
22:52:02 (*.234.246.12)
엮인글 :
http://www.rain9.com/xe/tc_backup/4009/ccb/trackback
게시글 주소 :
http://www.rain9.com/xe/tc_backup/4009
List of Articles
번호 제목 글쓴이 날짜 조회 수
220 [iphone] decrypt 도구 file 엔신 2012-06-11 16581
219 udp tunnel 엔신 2012-06-11 11344
» ubuntu APM(apache2 php mysql) 설치 방법 엔신 2012-06-11 17247
217 [perl] AES 암호화/복호화 엔신 2012-06-11 19976
216 iPhone code sign 엔신 2012-06-11 9870
215 [excel] 최대 행과 열 엔신 2012-06-11 21596
214 [WMI,VBS] IIS FTP 서버 IPSecurity 설정 확인 엔신 2012-06-11 21332
213 [WMI,VBS] WMI를 이용한 vbs 작성시 Windows 2008에서 오류 해결 엔신 2012-06-11 18606
212 Windows [VBS] xml parsing file 엔신 2011-01-11 19649
211 Windows WMI 엔신 2011-01-07 14049
210 이란과 아랍간의 사이가 나쁜 이유가 뭘까요? [2] 엔신 2010-11-28 12876
209 ETC 메모 엔신 2010-10-30 9847
208 Linux 패키지 파일 만들기 엔신 2010-10-30 11667
207 Programming [JSP] getParameter() 사용시 파라미터가 있고 없고 엔신 2010-07-08 13621
206 DBMS Oracle 요약 엔신 2010-07-08 20501
205 DBMS PL-SQL 엔신 2010-07-08 7339
204 Programming [JSP] JSP 요약 엔신 2010-07-07 31675
203 Programming [JSP] JDBC를 이용한 데이터베이스 활용법 엔신 2010-07-07 10629
202 Programming perl http post 엔신 2010-06-07 10719
201 Ambiguous 인터넷 엔지니어링 태스크 포스 file 엔신 2010-04-27 11483