macsplex.com 로그인

검색

Debian
2006.07.08 00:41

1. Apache + PHP + ?MySQL + GD 설치

조회 수 353 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄
Extra Form


출처 :
http://debianusers.org/DebianWiki/wiki.php/APM
 

(Sarge의 경우부터는, apache2로 바뀌고 조금 다를 수 있지만, 설치에 큰 어려움은 없으실 겁니다.)


1. apt-get install 이나 dselect 를 사용하여 다음 패키지들을 설치합니다. (Sarge부터는 apache ---> apache2)
apache2 apache2-common libapache2-mod-php4 php4 php4-common php4-gd php4-mysql libdbd-mysql-perl libdbi-perl mysql-client mysql-server mysql-common



2. apache 설치시에 apacheconfig 를 실행시키겠냐고 물어보는데, 기본적인 설정을 해주는 작업입니다. y를 눌러 기본값을 입력해 줍니다.

(Sarge에서는 묻지 않음... )
3. php4-gd , php4-mysql 를 설치시에는 gd.so 와 mysql.so 를 php.ini 에 포함시킬 것인지 물어보는데, y를 눌러 포함시킵니다.



4. mysql 설치시에는 mysql 제거시 db 파일들도 제거할 것인가를 물어봅니다. 디폴트는 no 입니다. 깨끗한 삭제를 원하면, yes 를 선택합니다. (혹시, 버전업시 데이타들이 지워질 우려도 있으므로 no를 선택하는 것이 좋습니다.)

 

2. Apache + PHP + ?MySQL 기본 설정


각종 파일 위치 및 기본 정보 #

Apache 설정파일         : /etc/apache/httpd.conf                     /etc/apache2/apache2.conf : 아파치 2.x 대웹문서루트              : /var/www                                    /var/www/apache2-default/Apache 로그파일         : /var/log/apache                             /var/log/apache2Apache 데몬 계정과 그룹 : www-data www-dataPHP 설정파일            : /etc/php4/apache/php.ini                   /etc/php4/apache2/php.iniMySQL data 파일 위치    : /var/lib/mysql

httpd.conf 설정 (Apache + PHP + CGI) #Sarge(Apache 2.x 버전을 사용)의 경우부터는 httpd.conf대신 /etc/apache2/apache2.conf가 기본 설정파일입니다.

 






1. php 연동



설정파일 중에서 아래부분의 주석을 풀어줍니다.
LoadModule php4_module /usr/lib/apache/1.3/libphp4.so
php 확장자가 가능하도록 주석을 풀고 확장자를 추가시킵니다.
AddType application/x-httpd-php .php .inc .php4 .html .htm  
(원하는 확장자들을 추가하십시오)AddType application/x-httpd-php-source .phps

 



 

Sarge(Apache 2.x 버전을 사용)의 경우부터는 apache2.conf외에도 /etc/apache2/mods-enabled/ 에 php4.load 와 php4.conf 로 존재합니다.
각각 확인해 보세요.

 






2. CGI 사용 가능하게 하기



데비안 아파치에서는 기본적으로 httpd.conf 파일에서 cgi 설정을 하여도 보안상 문제로 웹문서루트가 아닌 일반 사용자 디렉토리에서는 cgi 사용이 불가능합니다. suEXEC 라는 프로그램을 사용하여 일반사용자의 cgi 사용을 막아놨기 때문입니다. 그래서 편법이지만 suEXEC 프로그램이 작동을 못하도록 /usr/lib/apache 밑에 있는 suexec 프로그램의 이름을 바꿉니다.
(보안상 좀더 확실한 방법을 하고 싶으신 분들은 아래 관련문서의 cgiwrap 을 사용하는 방법을 참고하세요.)





Options에 ExecCGI 를 추가하여 웹문서루트에서 cgi 를 작동하게 합니다.
<Directory /var/www/>## This may also be "None", "All", or any combination of "Indexes",# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".## Note that "MultiViews" must be named *explicitly* --- "Options All"# doesn't give it to you.#    Options Indexes Includes FollowSymLinks MultiViews ExecCGI
사용자 디렉토리 부분도 기존 설정부분을 주석(#)처리하고 웹문서루트와 동일하게 설정을 합니다.
<Directory /home/*/public_html>    Options Indexes Includes FollowSymLinks MultiViews ExecCGI    AllowOverride None    Order allow,deny    Allow from all#    AllowOverride FileInfo AuthConfig Limit#    Options MultiViews Indexes SymLinksIfOwnerMatch ExecCGI#    <Limit GET POST OPTIONS PROPFIND>#        Order allow,deny#        Allow from all#    </Limit>#    <Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>#        Order deny,allow#        Deny from all#    </Limit></Directory>
cgi 확장자가 사용가능하도록 AddHandler 의 주석을 제거합니다.
AddHandler cgi-script .cgi .sh .pl


Sarge(Apache 2.x 버전을 사용)의 경우부터는,
cgi 설정시에 /etc/apache2/Apache2.conf에서의 기본 설정외에도, /etc/apache2/sites-enabled/000-default 파일의 ?DocumentRoot (/var/www) 의 관련 설정에서, Options 항목에 ?ExecCGI 를 추가해 주어야 합니다.
: 우디에서는 ?ExecCGI를 /etc/apache/httpd.conf에 추가했었는데, 사지에서는 ?ExecCGI를 /etc/apache2/sites-enables/000-default에 추가
DocumentRoot /var/www/        <Directory />                Options FollowSymLinks                AllowOverride None        </Directory>        <Directory /var/www/>                Options Indexes FollowSymLinks MultiViews ExecCGI                AllowOverride None         ......
suexec 파일은 /usr/lib/apache2/suexec2 로 변경됨.


3. 한글설정

다음명령을 써서 한글언어를 추가 시킵니다.

AddLanguage kr .krAddCharset ISO-2022-KR .iso-kr
언어순위에 한글을 첫번째로 지정합니다.
LanguagePriority kr en da nl et fr de el it ja pl pt pt-br ltz ca es sv
기본 문자셋(ISO-8859)를 끕니다.
AddDefaultCharset off (혹은 AddDefaultsCharset EUC-KR 로 해도 되는 것 같네요.)
4. 이제 아파치 데몬을 재가동합니다.
/etc/init.d/apache restart
5. php 가 연동이 잘 되었는지 phpinfo.php 를 만들어 웹문서루트에 저장한뒤 웹브라우저에서 읽어봅니다.
vi /var/www/phpinfo.php<?phpinfo();?>


Sarge(Apache 2.x 버전을 사용)의 경우부터는,
AddLanguage ko .ko----------LanguagePriority ko en da nl et fr de el it ...... 
-----------AddDefaultCharset EUC-KR -----------/etc/init.d/apache2 restart
로 확인해 보세요.

 



3. MySQL root password 설정 및 사용자 추가



MySQL root password 설정
# mysqladmin -u root password 'new-password'



MySQL db 사용자 추가방법



1. MySQL에 root로 로그인 합니다.
# mysql -u root -pEnter Password:



2. 새로 추가할 db를 만듭니다.
mysql> create database db_new;   (세미 콜론을 꼭 입력하세요.)Query OK, 1 row affected (0.06 sec)



3. mysql 기본 데이타 베이스인 mysql을 선택하여, mysql에 userid 가 db_new라는 데이타 베이스를 이용한다는 정보를 넣어줍니다.
mysql> use mysql;Database changed.mysql> insert into db values ('localhost','db_new','userid','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');(Y는 모두 12개입니다.)Query OK, 1 row affected (0.04 sec)
06/06/03 etch 의 경우 mysql은 4.1 패키지가 사라지고, 5.0만 남아 있더군요. Y의 갯수를 17개로 하시면 됩니다.

4. mysql에 새로운 사용자와 암호 등록을 합니다.
mysql> insert into user (host, user, password) values ('localhost','userid',password('userpasswd'));Query OK, 1 row affected (0.04 sec)



5. 변경된 설정으로 ?MySQL을 재시작 합니다.
mysql> exit;# mysqladmin -u root -p reload



6.mysql 데몬 재시작후에 새로 등록된 사용자로 mysql에 접속하여 잘 되었는지 확인해 봅니다.
# /etc/init.d/mysql restart# mysql -u userid -p db_newEnter Password :mysql> show tables;당연히 아무런 값이 없다고 나옴mysql> exit



7. mysql 비번 바꾸기
mysql> set password for id@localhost = password('newpasswd');

 



MySQL 응용 
mysql 설정 화일 : /etc/mysql/my.cnf

1. mysql 에서 한글을 사용하기 위해 euc_kr 로 설정한다. : default-character-set=euc_kr

2. 원격 mysql 에 접속하기 위해 주석 처리 한다. #skip-networking

3. 05' 12. testing을 업그레이드 했더니 ?MySQL version이 4.1 대로 올라갔습니다.


이전 버전과의 차이점이 상당히 많아 데이터 베이스 백업본을 restore하는데도 문제가 발생하고
심지어 APM이 작동하지 않을 수도 있습니다.
내부적으로 유니코드를 기본으로 지원하고 서브쿼리등의기능이 추가되는등 바뀐사항이 많다고 합니다.
설정등을 바꿔줘야하는등 몇가지 고려사항이 있습니다.
1) 먼저 /etc/mysql/my.cnf 에서 ?mysqld section에

default-character-set=euckr 로 합니다. euc_kr 이 아니라 euckr 로 변경되었습니다.
init_connect = 'set names euckr' 을 추가합니다.
2) mysqldump로 백업받아보면, 예전의 필드 크기와 달라졌음을 발견하실수 있을겁니다.

4.1버전부터는 멀티바이트문자도 글자 하나당 1에 해당합니다. 그래서 예전에 필드 크기를 100으로 잡고
한글문자를 입력해 두었다면 자동으로 크기가 50으로 줄어들어 있을겁니다. 또한 Table Type이 4.0이하에서는
?MyISAM 혹은 ISAM인데, 4.1부터는 ENGINE=?MyISAM 이렇게 용어가 달라졌습니다. 그래서 백업 파일을 예전버전의
?MySQL에 적용하실때는 필드크기를 원래대로 늘리고 Type=?MyISAM이렇게 용어를 바꿔줘야 합니다.

4. 06' 6 testing 의 경우 Mysql 이 다시 5.0으로 올라갔습니다.

4.1부터 character set 의 지정이 중요해졌는데, 5.0의 경우는 더욱 까다로워져서 적절하게 encoding을 하지 않으면 한글이 깨져보입니다.
그래서 먼저 한글 설정에 대해 고민해 보아야 합니다.
1) 한글 설정의 기본은, encoding과 decoding이 동일하다면 한글은 그대로 보일것이다 입니다.

Mysql 5.0 이상의 경우 내부적으로 utf8을 사용하는것으로 알려져 있습니다.(자세한 내용은 database.sarang.net을 참조하세요.)
그래서 character set을 utf8로 한다면 Apache, php 등의 설정도 utf8로 하는것이 옳겠고, Eterm등의 터미널도 한글 설정을 utf8로 바꿔줘야 하겠죠.
저의 경우는, 노트북에 APM이 설정되어 있고, 웹 호스팅 업체(Mysql 4.0)에 홈페이지를 운영중이며, 봉사 단체에 설정해 준 APM등이 모두 euckr로 되어 있어서
자료의 호환성을 위하여 euckr로 하기로 하였습니다. 유저스 여러분이 utf8을 원하신다면 그렇게 하셔도 됩니다.
2) 저처럼 아무 생각이 없이 testing upgrade를 하신 분이라면, Mysql version 이 5.0으로 올라가면서 한글 자료가 깨져 보일 가능성이 높습니다.

한글 자료를 깨지지 않은 상태로 백업 받으시려면 4.1 버전을 다시 설치해야 하는데, 4.1 version은 stable 에만 있습니다.

첫째, php4-mysql, mysql-server, mysql-common, mysql-client 등을 모두 삭제합니다. dselect를 이용하여 의존성 걸린 패키지도 모두 삭제합니다.
둘째, 데비안유저스 홈페이지의 패키지 검색을 이용하여 stable version의 libdbd-mysql-perl, mysql-common-4.1, libmysqlclinet12_4.1, mysql-client-4.1,

mysql-server-4.1 등을 설치합니다.
셋째, /etc/mysql/my.cnf 에 ?mysqld section 에 init_connect='set names=euckr' default-character-set=euckr 로 설정하고

#/etc/init.d/mysql restart
db에 접속하여 한글이 깨지지 않은걸 확인한 후 mysqldump를 이용하여 자료를 백업받습니다.
한글이 깨진경우는 euckr대신 latin1으로 방금 한 과정을 반복하여 자료를 백업받습니다.
넷째, 백업받은 자료를 편집기로 살펴봅시다. 위에서 10번째 줄 정도에 SET NAMES latin1 */ 으로 되어 있는 부분을 SET NAMES euckr */ 로 바꿉니다.

set names utf8인 경우는 당연히 set names euckr 이겠죠.
각 테이블 구조마다 TYPE=ISAM 혹은 ENGINE=ISAM 등을 ENGINE=?MyISAM DEFAULT CHARSET euckr; 로 바꿔줍니다.
다섯째, Mysql의 root password 알아야 테이블 구조를 바꿔줄 수 있습니다.

mysql_fix_privilege_tables --password='password'
mysql_convert_table_format --user='root' --password='password' DB_name
이 두 명령을 실행하여 테이블 구조를 5.0 버전에 맞게 고쳐주어야 합니다.
3) php4-mysql을 다시 설치하고 업그레이드를 하면 Mysql version은 다시 5.0으로 설치가 됩니다.(정말 간단합니다^^.)

/etc/php4/apache2/php.ini 를 편집하여 extension=mysql.so 가 추가되어 있는지 확인합니다.(아마 파일 지우고 다시 설치하는 과정중에
php.ini가 새로 쓰여져서 이 라인을 추가하셔야 할겁니다.)
/etc/mysql/my.cnf 의 ?mysqld section 에

init_connect='set names=euckr'
default-character-set=euckr
을 추가한 후 apache와 mysql 서버를 재기동 합니다.
4) 이제 거의 끝이 보이는군요.

아까 백업받은 온전한 한글 자료들을 백업합니다.
mysql -u 'user' -p DB_name < BACKUP_file.sql
한글이 잘 보입니까?
5) APM으로 작성된 웹 페이지들을 모두 열어봅시다.

작동이 잘 안되는 페이지가 있습니까?
Mysql 5.0 부터 예약어가 대폭 늘어서, 예전에는 잘 되던 query 가 작동되지 않을 수도 있습니다.
가령 select inout from DB_name 하면 inout 이라는 테이블 이름이 예약어로 지정되는 바람에 작동을 하지 않습니다.
이때는 인용부호(Tab 키 윗쪽의 ` )를 테이블 이름 앞뒤에 붙여줍니다.
6) 정말 DB backup은 강조 또 강조해도 부족함이 없음을 깨달았습니다.

database.sarang.net 에 보면, iconv 을 이용하면 encoding을 바꿀 수 있다고 되어 있는데, 저는 실패했습니다.
mysqldump option 을 이용하여 character set을 지정하는 것 역시 잘 안되더군요.
mysql 에 접속한 후 set names euckr 을 실행하면 variable 들이 euckr 로 바뀌지만, 접속된 상태에서만 영향을 미치기 때문에 백업하는데는 아무런 도움이 되지
않는다는걸 무지~무지 많은 시행착오끝에 깨달았습니다. DB업그레이드시에 조금이나마 도움이 되시길 바랍니다.





--------------------------------------------------광고(Advertising)-------------------------------------------------------------------------------------