한국어

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/

조회 수 :
17269
등록일 :
2012.06.11
22:52:02 (*.234.246.12)
엮인글 :
https://www.rain9.com/xe/tc_backup/4009/7f1/trackback
게시글 주소 :
https://www.rain9.com/xe/tc_backup/4009
List of Articles
번호 제목 글쓴이 조회 수 추천 수 날짜
220 [iphone] decrypt 도구 file 엔신 16581   2012-06-11
 
219 udp tunnel 엔신 11346   2012-06-11
udp utnnel 만들어봐야 할 일이 생겨서 찾아봤더니 duat 이라는 구글에 올라와있는 tool이 있었다. http://code.google.com/p/duat/ perl로 만들어져 있어서 플랫폼에 종속적이지 않은 장점이 있는데 64비트에서는 안된다. 32비트에서 잘 되면 되는거지 뭐 ㅎ...  
» ubuntu APM(apache2 php mysql) 설치 방법 엔신 17269   2012-06-11
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 insta...  
217 [perl] AES 암호화/복호화 엔신 20248   2012-06-11
# Functional style use Crypt::Rijndael_PP ‘:all’; $key = ‘a’ x 16; # 128bit hex number $data = ”encrypt test 111222″; print $key.”\n\n\n”; print $data.”\n\n\n”; # keysize = 128bit, blocksize = 128bit $c_txt = rijndael_encrypt($key, MODE_CBC,...  
216 iPhone code sign 엔신 9892   2012-06-11
https://lael.be/237 Apple 어플개발을 위해서 공인인증서가 3개 필요하다. * 하나는 Apple 사를 증명하고 * 하나는 당신이 개발자 라는 것을 증명하고 * 하나는 당신의 어플이라는 것을 증명한다. 위 블로그의 내용을 인용한다.(방법도 잘 설명 되어 있음) 기...  
215 [excel] 최대 행과 열 엔신 21596   2012-06-11
Excel에서는 1,048,576개의 행과 16,384개의 열 제한을 초과할 수 없습니다. 기본적으로 Excel 통합 문서 파일에는 워크시트가 세 개 있습니다. 각 워크시트는 1,048,576개의 데이터 행과 16,384 개의 데이터 열을 포함할 수 있으며, 컴퓨터의 메모리가 충분하...  
214 [WMI,VBS] IIS FTP 서버 IPSecurity 설정 확인 엔신 21374   2012-06-11
Dim Result Dim IISObj Set IISObj = GetObject(“IIS://localhost/MSFTPSVC”) for each IISSite in IISObj if (IISSite.Class = “IIsFtpServer”) Then IIsObjectPath = “IIS://localhost/MSFTPSVC/” & IISSite.Name & “/ROOT” Set IIsObject = GetObje...  
213 [WMI,VBS] WMI를 이용한 vbs 작성시 Windows 2008에서 오류 해결 엔신 18610   2012-06-11
Windows 2008의 WMI에 문제가 생겼다. 참고적으로 2008에서 WMI나 ADSI할때 GetObject가 작동하기 위해서는 관리자 권한으로 실행 상태여야 한다. 기존 Windows 2003에서 작성한 코드가 2008에서는 오류 발생. 아래는 IIS FTP에서 홈디렉터리 쓰기 권한 여부를...  
212 Windows [VBS] xml parsing file 엔신 19763   2011-01-11
 
211 Windows WMI 엔신 14110   2011-01-07
WMI란? 원래 1998년 Windows NT 4.0 서비스 팩 4의 추가 구성 요소로 릴리스된 WMI는 Windows 2000, Windows XP 및 Windows Server 2003 운영 체제 제품군에 구축된 핵심 관리 기술입니다. DMTF(Distributed Management Task Force)에 의해 발견된 업계 표준을...  
210 이란과 아랍간의 사이가 나쁜 이유가 뭘까요? [2] 엔신 12879   2010-11-28
굉장히 맘에 상세하고 이해가 쉬운 글이라 저장용으로 퍼옴... 왠만하면 아래 링크 클릭해서 보시기루 http://kin.naver.com/qna/detail.nhn?d1id=6&dirId=60904&docId=48922973&qb=7J20656AIOyVhOuejQ==&enc=utf8§ion=kin&rank=3&search_sort=0&spq=0&pid...  
209 ETC 메모 엔신 9847   2010-10-30
트라시마코스는 정의는 강자의 이익이라고 주장 전통과 관습에 대한 밀의 사유로 적합한 설명 : 전통과 관습에 대한 맹종은 때로 개인과 사회의 행복에 장애가 될 수도 있다. 프로이트 - 꿈의 정체  
208 Linux 패키지 파일 만들기 엔신 11710   2010-10-30
wget http://nmap.org/dist/nmap-5.00.tar.bz2 tar xvjf nmap-5.00.tar.bz2 cd nmap-5.00 dh_make --createorig sudo apt-get build-dep nmap fakeroot debian/rules binary dpkg -i 파일명.deb http://ubuntu.or.kr/viewtopic.php?f=9&t=1538  
207 Programming [JSP] getParameter() 사용시 파라미터가 있고 없고 엔신 13622   2010-07-08
// 키워드 자체가 없는 경우(처음 불러올 때) if(request.getParameter("keyword") == null){ // keyword는 없지만 category 선택은 있는 경우 if(request.getParameter("category1") != null && request.getParameter("category1").equals("")){ Syst...  
206 DBMS Oracle 요약 엔신 20501   2010-07-08
sqlplus 기본 설정 명령 show user; // 현재 접속한 유저명이 나옴 show linesize; // 한줄에 출력하는 라인 수 set linesize 140; // linesize를 140으로 변경하기. show pagesize; // 한 페이지에 출력되는 라인수.(한 페이지 사이즈보다 넘으면 각 컬럼 명 ...  
205 DBMS PL-SQL 엔신 7458   2010-07-08
PL/SQL SQL의 확장 절차적 프로그래밍을 가능 Block 단위로 중첩 가능 모든 문장의 종결 기호는 ;을 사용 대입 연산자 는 := 실행은 /를 이용(또는 exec) 기본 구조 [DECLARE variables, cursor, user_defined, exception] BEGIN SQL,PL/SQL statements; [EXCE...  
204 Programming [JSP] JSP 요약 엔신 33042   2010-07-07
Tomcat 5.5 설치 다운로드 받아서 C드라이브에 압축을 푼다. 시스템 환경변수 등록을 한다. 변수이름 : CATALINA_HOME 변수 값 : C:\apache-tomcat 변수이름 : JAVA_HOME 변수 값 : C:\Java\jdk1.6.0_13 환경변수 추가 변수이름 : CLASSPATH 변수 값 : C:\Java...  
203 Programming [JSP] JDBC를 이용한 데이터베이스 활용법 엔신 10629   2010-07-07
JDBC를 이용한 데이터베이스 활용법 // 1. 대표 클래스를 로딩한다. try{ Class.forName("oracle.jdbc.driver.OracleDriver"); System.err.println("클래스 로딩 성공"); } catch(ClassNotFoundException e){ System.err.println("클래스 로딩 오류 : " + e); ...  
202 Programming perl http post 엔신 10780   2010-06-07
use strict; use warnings; use LWP 5.64; my $browser = LWP::UserAgent->new; my $url = 'http://rain9.com/api/save_replays.php'; for(my $i=1;$i<=300;$i++) { my $response = $browser->post($url,['winner' => '0', 'losses0' => '33', 'point0' => '99...  
201 Ambiguous 인터넷 엔지니어링 태스크 포스 file 엔신 11483   2010-04-27