이번 포스트는 낚시와 관련된게 아니라 제가 현재 회사에서 작업을 하고 있거나 했던 내용을 참고 하기 위해 올리는거라 설명이 별루 없으며 순간 순간 수정이 되오니 ㅎㅎ 양해 바랍니다.

ㅠ.ㅠ 출조 가고파요~~ 족저근막염 때문에 출조를 못 나가니.. 이거워 야 원....

아무튼 낚시와 관련된게 아니니 서버쪽과 관련이 없으신분들은 패스~~~하세요!!!

고객사에서 이번에 HP Server(HP ProLiant DL360 G9)를 새로 구입을 하였는데 따로 RAID Controller를 구입하지 않으시고 내장 RAID Controller B140i을 사용 하시네요. B140i를 사용할때에는 CentOS 설치시 반드시 dd 형식으로 설치 해야하는데 HP에서 B140i에서 CentOS 설치 지원되는 최소 버젼이 6.6 버전이라 어차피 dd 로 올릴꺼 최신 버전으로 CentOS 7(x86_64 1804) 설치를 합니다.

문제는 현재 사용하고 있는 APM(Apache, PHP, Mysql) 들이 CentOS 6.2 버전이고 홈페이지 소스를 관리하는 업체에서 최대한 APM 버전을 그대로 해달라는 요청에 저만 죽어나네요.

RPM, yum 으로 APM 예전 버전들을 찾아서 설치해 보았으나 모조리 실패~~!!

어쩔수 없이 Source 컴파일 설치를 시작합니다.

APM Source 파일을 찾아서 다운로드 하는것만 해도 하루 지나가네요. ㅡ,.ㅡ

예전 설치 환경

OS : CentOS 6.2

Apache : httpd-2.2.24

MySQL : MySQL 5.1.52

PHP : 5.3.3

새로 설치 환경

OS : CentOS 7.5(x86_64 1804)

Apache : httpd-2.2.24

MySQL : MySQL 5.1.52

PHP : 5.3.3

MySQL 5.1.52 Source 컴파일 설치

다운로드 경로 :

# wget https://downloads.mysql.com/archives/get/file/mysql-5.1.52.tar.gz

Source 로 설치시 필요한 의존성 패키지를 모조리 설치합니다~

# yum install -y wget patch pcre-devel lua-devel libxml2-devel ncurses-devel zlib zlib-devel curl openssl openssl-devel libtermcap-devel libc-client-devel bison gcc g++ cpp gcc-c++ freetype freetype-devel freetype-utils gd gd-devel libjpeg libjpeg-devel libpng libpng-devel curl curl-devel flex php-mbstring libexif-devel libmcrypt libmcrypt-devel

# tar xvfpz mysql-5.1.52.tar.gz

# ./configure --prefix=/usr/local/mysql --enable-thread-safe-client --localstatedir=/usr/local/msyql/data --enable-shared --with-mysqld-user=mysql --with-charset=utf8 --with-extra-charsets=all --with-libedit --enable-assembler --sysconfdir=/etc

# make && make install

# useradd mysql

# chown -R mysql.mysql /usr/local/mysql

# chown -R mysql.mysql /usr/local/mysql/data

# chmod 755 /usr/local/mysql/data

# /usr/local/mysql/bin/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data

# cp /usr/local/mysql/share/mysql/my-huge.cnf /etc/my.cnf

# cd

# vi ~/.bash_profile

PATH=$PATH:$HOME/bin:/etc/rc.d/init.d:/usr/local/mysql/bin

# /usr/local/mysql/bin/mysqld_safe --user=mysql &

# cp -a /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld

# chkconfig --add mysqld

그다음 root 암호 설정을 알아서...

APAHCE 2.2.24 컴파일 설치

다운로드 경로 :

# wget https://archive.apache.org/dist/httpd/httpd-2.2.24.tar.gz

# tar xfpz httpd-2.2.24.tar.gz

# cd httpd-2.2.24

# ./configure --prefix=/usr/local/apache2 --enable-rule=SHARED_CORE --enable-modules=all --enable-mods-shared=most --with-mpm=worker --enable-rewrite --enable-deflate --enable-headers --enable-so --enable-ssl --enable-unique-id

# make && make istall

# cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/httpd

PHP 5.3.3 컴파일 설치

다운로드 경로 : http://php.net/releases/

# wget http://museum.php.net/php5/php-5.3.3.tar.gz

# tar xvfpz php-5.3.3.tar.gz

# cd php-5.3.3

# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/apache2/conf --with-regex=php --with-zlib --disable-debug --enable-calendar --enable-ftp --enable-sockets --enable-sysvsem --enable-sysvshm --enable-mbstring --enable-magic-quotes

# make && make install

위의 명령어를 적었는데 아래와 같이 오류가 발생하면..

.. php-5.3.3/ext/dom/node.c: In function 'dom_canonicalization'

.. php-5.3.3/ext/dom/node.c: 1953:21: ............

.. php-5.3.3/ext/dom/node.c: 1955:5: ............

아래 명령어를 사용하여 다운 받아 진행을 합니다.

# wget -O php.patch https://mail.gnome.org/archives/xml/2012-August/txtbgxGXAvz4N.txt

(참조 : http://blog.naver.com/PostView.nhn?blogId=ssik425&logNo=10175143994)

# cd php-5.3.3

# patch -p0 -b < php.patch

# make && make install



CentOS Apache



아파치(Apache)에서 설정 시 webadmin 사용자 추가 후 디폴트로 되어 있는 DocumnetRoot 를 변경(/var/www/html -> /home/webadmin/www/html) 


테스트 시 아래와 같은 에러가 발생


Forbidden You don’t have permission to access / on this server. 



먼저 홈페이지 디렉토리(/var/www/html)을 사용자 디렉토리로 옮겼다는 가정하에 시작합니다.


# chown -R webadmin:webadmin /home/webadmin/www/html

// 사용자와 그룹을 webadmin으로 변경(root 권한)


# vi /etc/httpd/conf/httpd.conf


아래 내용을 추가 기입하세요.


<Directory /Users/mytory/workspace>

   Options FollowSymLinks

   AllowOverride None

   Order deny,allow

   Allow from all

</Directory>



# service httpd restart


이제 홈페이지로 접속 테스트를 해 보니 정상 작동~














1. hosts 호스트명 변경


# vi /etc/hosts

127.0.0.1    localhost    localhost.localdomain    도메인


2. 자체방화벽이 있다면 iptable, ip6table 정책 삭제 및 이름 변경

   CentOS 6.4 설치 후 iptable의 정책이 돌아가고 있으면 Apache 를 실행 하여도 접속하지 못함. 주의~


# rm /etc/sysconfig/iptables

# rm /etc/sysconfig/ip6tables 


3. Apache http.conf 수정


# vi /etc/httpd/conf/httpd.conf

276 줄에 있는 ServerName 변경


예) #ServerName www.example.com:80 을   # 없얘고  ServerName www.test.com(자기 도메인):80



4. php.ini 파일수정


# vi /etc/php.ini


229 줄에 있는 short_open_tab = Off 를  On 으로 변경

만약 위의 작업을 하지 않는다면 아무리 phpinfo() 파일을 해 봐도 화면에 나타나지 않음.. ㅡㅡ;



5. phpinfo 에서 mysql 적용이 되지않다면 php-mysql을 설치해야함 


# yum install php-mysql 


위의 문구만 치고 apache를 재시작 하면 적용 끝


# yum install php-mysql



이상 더 생각이 나면 추가 할 예정임..







설정 환경 : Linux

Apache에 SSL 을 적용하게 되면 대개 www.m-sys.co.kr 이나 회원 로그인 할때만 사용을 하는데 고객의 요청으로 서브 도메인까지 SSL 적용을 해야하는 경우가 있어서 제가 사용한 방법을 글로 남깁니다.


Apache 2.0.x 이하 버젼의 경우를 먼저 하도록 하겠습니다.

일단 ssl.conf 이 파일을 찾는게 중요합니다. 대부분의 설정을 여기서 하기 때문이죠

# cd /usr/local/apache/conf      <- 대부분 여기에 위치해요~

아차~ 제일 중요한 vhost.conf 에 있는 내용을 ssl.conf 로 넣어야 하니 이 작업을 먼저 하겠습니다.

# cat vhost.conf  >>  ssl.conf           <- 이렇게 하면 vhost.conf 의 내용이 ssl.conf 제일 밑 부분으로 연결되어 추가 됩니다.


그다음 vi 를 이용하여 수정~~

# vi ssl.conf

<IfDefine SSL>     <- cat 을 이용하여 vhost.conf 내용을 그냥 가져왔으니 여기와 끝을 잘 보시고 수정하셔야합니다. 맨 끝에는 </IfDefine> 이게 있어야겠죠?
.
.
.
Listen 443
NameVirtualHost 218.*.*.213:443         <-  대충 여기에 해당 서버 IP랑 Port 443 을 추가합니다.

그리고

SSLPassPhraseDialog  builtin   <- 수정을 하거나 주석(#) 처리해서 Server Reboot 시 패스워드를 자동으로 기입하도록 해야합니다.   아참 이부분은 Apache 시작시 패스워드를 묻지 않도록 인증서를 만들었으면 패스~~~~~~하셔도 됩니다.

요렇게... ^^

#SSLPassPhraseDialog  builtin
SSLPassPhraseDialog exec:/usr/local/apache/conf/ssl/startssl_pw.sh       <- 이부분은 저의 블로그에 보면 Apache 에서 자동 패스워드 적용이라는 타이틀로 되어 있는걸 참고 하시길 바랍니다.


그리고 밑의 내용처럼 수정 해 주시면 됩니다.

<VirtualHost 218.*.*.213:443>
        ServerAdmin webmaster@test.co.kr
        DocumentRoot /usr/local/home/test
        ServerName test.co.kr:443
        ServerAlias test.co.kr:443
        ScriptAlias /cgi-bin/ "/home/WWW/test/cgi/"
        ErrorLog logs/test-error_log
        CustomLog logs/test-access_log combined
</VirtualHost>

<VirtualHost 218.*.*.213:443>
        ServerAdmin webmaster@test.co.kr
        DocumentRoot /usr/local/home/test
        ServerName test.co.kr:443
        ServerAlias test.co.kr:443
        ScriptAlias /cgi-bin/ "/home/WWW/test/cgi/"
        ErrorLog logs/test-error_log
        CustomLog logs/test-access_log combined
</VirtualHost>
.
.
.
.
</IfDefine>    <-꼭~ 확인하세요~



이제 Apache2.0.x 이상 버젼을 하도록 하겠습니다.
뭐~ 위에 꺼와 틀린점은 ssl.conf  파일 이름과 디렉토리 위치가 틀리다는거 빼고는 다 똑같습니다.

# cd /usr/local/apache/conf/extra      <- 대부분 여기에 위치해요~

아차~ 제일 중요한 httpd-vhosts.conf 에 있는 내용을 httpd-ssl.conf 로 넣어야 하니 이 작업을 먼저 하겠습니다.

# cat httpd-vhosts.conf  >>  httpd-ssl.conf           <- 이렇게 하면 httpd-vhosts.conf 의 내용이 httpd-ssl.conf 제일 밑 부분으로 연결되어 추가 됩니다.


그다음 vi 를 이용하여 수정~~

# vi httpd-ssl.conf

<IfDefine SSL>     <- cat 을 이용하여 httpd-vhosts.conf 내용을 그냥 가져왔으니 여기와 끝을 잘 보시고 수정하셔야합니다. 맨 끝에는 </IfDefine> 이게 있어야겠죠?
.
.
.
Listen 443
NameVirtualHost 218.*.*.213:443         <-  대충 여기에 해당 서버 IP랑 Port 443 을 추가합니다.

그리고

SSLPassPhraseDialog  builtin   <- 수정을 하거나 주석(#) 처리해서 Server Reboot 시 패스워드를 자동으로 기입하도록 해야합니다.       아참 이부분은 Apache 시작시 패스워드를 묻지 않도록 인증서를 만들었으면 패스~~~~~~하셔도 됩니다.

요렇게... ^^

#SSLPassPhraseDialog  builtin
SSLPassPhraseDialog exec:/usr/local/apache/conf/ssl/startssl_pw.sh       <- 이부분은 저의 블로그에 보면 Apache 에서 자동 패스워드 적용이라는 타이틀로 되어 있는걸 참고 하시길 바랍니다.


그리고 밑의 내용처럼 수정 해 주시면 됩니다.

<VirtualHost 218.*.*.213:443>
        ServerAdmin webmaster@test.co.kr
        DocumentRoot /usr/local/home/test
        ServerName test.co.kr:443
        ServerAlias test.co.kr:443
        ScriptAlias /cgi-bin/ "/home/WWW/test/cgi/"
        ErrorLog logs/test-error_log
        CustomLog logs/test-access_log combined
</VirtualHost>

<VirtualHost 218.*.*.213:443>
        ServerAdmin webmaster@test.co.kr
        DocumentRoot /usr/local/home/test
        ServerName test.co.kr:443
        ServerAlias test.co.kr:443
        ScriptAlias /cgi-bin/ "/home/WWW/test/cgi/"
        ErrorLog logs/test-error_log
        CustomLog logs/test-access_log combined
</VirtualHost>
.
.
.
.
</IfDefine>    <-꼭~ 확인하세요~



이상입니다.
저도 아직 수정해야 할 부분이 많이 있습니다. 혹시나 제가 적은 글에서 틀린 점이 있거나 의문사항이 있으면 댓글을 남겨주시길 바랍니다.



Linux 에서 Apache2.0.47을 SSL 적용하여 설치를 해보니 실행시(startssl)  마다 패스워드를 넣어줘야만
실행이 되더군요.   이렇게 되니 Server 가 Reboot 될때 startssl로 자동실행하게 되면 패스워드 부분에서 걸려 apache가 실행이 되지 않으니 참고 하시길 바랍니다.  이 부분을 해결 하는 방법을  맨 밑에 제가 적어 놓도록 하겠습니다.

애초에 패스워드를 묻지 않도록 인증서를 만들면 될텐데... 일을 만들고 있네요  ㅠ.ㅠ  뭐 이것도 경험이니...... -_-;

일단 인증서가 있는 디렉토리로 이동하세요~ (예, /usr/local/apaceh/conf/ssl)
뭐 이부분은 그냥 패스워드를 넣을 파일을 만드는 작업이라 아무곳에 하셔도 되지만 인증서가 있는곳에 하시면 더 좋겠죠? 응?  퍽~~~

일단 디렉토리로 이동하셨다면 밑에 적을것 처럼 하시면 됩니다.

# cat > startssl_pw.sh
  #!/bin/sh
  echo 패스워드
Ctrl + C  <- 이 부분은 키보드에서 눌리는거에요. 혹시 이대로 적으시면 안되요~~
#

그다음은 이 파일이 사용할 수 있도록 권한을 설정하겠습니다.
# chmod 755 startssl_pw.sh


이제 한 고비는 넘겼네요. ㅎㅎ

이제 httpd.conf 혹은 ssl.conf 가 있는 곳으로 이동~~~~~~   (예, /usr/local/apache/conf)
둘중에 아무곳이나 마음에 드시는곳에 수정하시면 됩니다.

난 일단 httpd.conf 이쪽으로,,

# vi httpd.conf

그다음 밑의 부분을 찾으세요~~

<IfModule mod_ssl.c>
SSLPassPhraseDialog exec:/usr/local/apache/conf/ssl/startssl_pw.sh   <- 여기에 추가 하시면 됩니다.   
</IfModule mod_ssl.c>


아참 ssl.conf 에서는 밑의 부분을 찾아서 주석(#) 처리를 하셔서 추가 하시거나 builtin 을 exec:/usr/local/apache/conf/ssl/startssl_pw.sh 로 수정해 주시면 됩니다.

# vi ssl.conf

SSLPassPhraseDialog builtin   ->     #SSLPassPhraseDialog builtin    주석처리하고 밑의 부분을 추가 혹은

SSLPassPhraseDialog exec:/usr/local/apache/conf/ssl/startssl_pw.sh    <-  이렇게 수정

이렇게 하시고 apache 를 실행해 보시면 패스워드를 묻지 않고 그냥 스스륵~~~ 실행이 됩니다.


이젠 Server Reboot 시 자동실행이 되도록 수정을 하도록 하겠습니다.

# vi /etc/rc.d/rc.local

/usr/local/apache/bin/apachectl startssl

이렇게 적어 주시면 Server Reboot 하더라도 자동으로 apache가 실행이 됩니다.

혹시나 의문점이 계시면 댓글~~~~~



 

Solaris8 (SPARC) APM 과 보안서버(SSL)설치

 


현재 제가 직접 설치한것을 토대로 글을 작성합니다. (2009.09.30)


환경 : Solaris 8 SPARC


1.
필요한  APM 및 라이브러리  다운

 

http://sunfreeware.com  에서 접속하여 오른쪽에 있는 해당 하드웨어 사항들을 체크한 다음  클릭하여  아래에 적힌 목록들을 다운

apache-2.2.9-sol8-sparc-local.gz
mysql-5.0.67-sol8-sparc-local.gz
ncurses-5.6-sol8-sparc-local.gz
php-5.2.6-sol8-sparc-local.gz
expat-2.0.1-sol8-sparc-local.gz
openldap-2.4.11-sol8-sparc-local.gz
sasl-2.1.21-sol8-sparc-local.gz
gcc-3.4.6-sol26-sparc-local.gz
libgcc-3.4.6-sol26-sparc-local.gz
libiconv-1.11-sol26-sparc-local.gz
libintl-3.4.0-sol26-sparc-local.gz
libxml2-2.6.31-sol26-sparc-local.gz
openssl-0.9.8i-sol26-sparc-local.gz
zlib-1.2.3-sol26-sparc-local.gz
libidn-1.10-sol8-sparc-local.gz
libpng-1.2.33-sol8-sparc-local.gz
curl-7.19.1-sol8-sparc-local.gz
fontconfig-2.4.2-sol8-sparc-local.gz
freetype-2.3.1-sol8-sparc-local.gz
gd-2.0.35-sol8-sparc-local.gz
jpeg-6b-sol8-sparc-local.gz
xpm-3.4k-sol8-sparc-local.gz


새로 Server를 설치하였다면 위의 목록들을 모두 받아놓는게 정신건강상 좋습니다.


~ 필요한거에요.


~ 혹시 위에 버젼보다 높은 버젼이 나왔다면 그걸 받아서 설치하셔도 됩니다.


위의 파일들은 모두 패키지 형식이기 때문에 gzip으로 압축만 풀고 간단한 명령어가 치면 자동으로

설치 됩니다.


) #  gzip -d gcc-3.4.6-sol26-sparc-local.gz


이렇게 모두 압축을 풀어주세요

압축을 풀게 되면 gcc-3.4.6-sol26-sparc-local 이렇게만 남습니다.


그다음 패키지를 풀면됩니다.


) # pkgadd -d gcc-3.4.6-sol26-sparc-local

Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]:  all

이렇게 모두 파일이름만 바꾸고 설치 하시면 됩니다.

 


2. PATH
설정


밑의 내용을 /etc/profile 에서 넣어주시면 됩니다.


# vi /etc/profile
# for Apache located at /usr/local/apache2
if [ -d /usr/local/apache2 ]
then
  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apache2/lib; export LD_LIBRARY_PATH
  PATH=$PATH:/usr/local/apache2/bin; export PATH;
fi
# for MySQL located at /usr/local/mysql
if [ -d /usr/local/mysql/lib/mysql ]
then
  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib/mysql; export LD_LIBRARY_PATH
  PATH=$PATH:/usr/local/mysql/bin; export PATH;
fi



밑의 내용을 PATH  에 대해 적용 방법등을 적어놓았습니다.


현재 자신의 PATH 값을 보려면 아래와 같이 하면 됩니다.

# echo $PATH

 
그리고 PATH에 새로운 값을 추가하려면 아래와 같이 하면 됩니다.

 
# PATH=$PATH:/usr/local/bin:/usr/ccs/bin
# export PATH


위에서 /usr/local/bin /usr/ccs/bin 디렉토리를 추가했습니다. 이제 /usr/local/bin에 있는 명령어를 아무곳에서나 경로명 없이 실행할 수 있습니다.


하지만 위의 방법은 로그아웃하기 전까지만 유효합니다. 다시 로그인하면 또 위와 같이 PATH를 설정해줘야합니다.

그래서 이걸 자동적으로 적용되는 방법이 있는데 그건 사용자의 profile에 위의 내용들을 추가하는 겁니다.


# vi $HOME/.profile
PATH=$PATH:/usr/local/bin:/usr/ccs/bin
export PATH

만약 csh을 사용한다면 아래와 같이 하세요.

# vi $HOME/.login
setenv PATH $PATH:/usr/local/bin:/usr/ccs/bin



3. APM  설정


1) Apache


밑의 내용처럼  httpd.conf 파일을 수정해 주세요~!


# vi /usr/local/apache2/conf/httpd.conf
User nobody
Group nobody
daemon
으로 되어 있는걸 nobody로 수정


DefaultType text/plain
<IfModule mime_module> 
이부분에

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
위 두 내용을 추가.


LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule php5_module        modules/libphp5.so   
이부분 추가.

ServerName  192.168.1.69:80
IP
대신 도메인을 사용할 수 있음. test를 위해서는 일단 ip로 해도 괜찮아요.


Include conf/extra/httpd-mpm.conf
Include conf/extra/httpd-multilang-errordoc.conf
Include conf/extra/httpd-autoindex.conf
Include conf/extra/httpd-languages.conf
Include conf/extra/httpd-userdir.conf
Include conf/extra/httpd-info.conf
Include conf/extra/httpd-vhosts.conf
Include conf/extra/httpd-manual.conf
Include conf/extra/httpd-dav.conf
Include conf/extra/httpd-default.conf
Include conf/extra/httpd-ssl.conf
위의 사항들을 사용하고 싶다면 # 주석을 없애면 됩니다.


# /usr/local/apache2/bin/apachectl start


혹시 에러가 생기다면 필요한 라이브러리를 설치하지 않아 생겼을 테니 꼭 라이브러리를 설치하시길 바랍니다.

 

부팅시 자동으로 Apache를 구동할 수 있도록 스크립을 작성하겠습니다.
위의 사항들을 제대로 구성하셨으면 /etc/init.d/apache  라는 파일이 만들어져 있을껍니다.
이건 그냥 무시하시고 저는 간단하게 하기 위해 짧게 할 예정이라 한줄 밖에 안됩니다.
          
#vi /etc/init.d/apache2

#!/sbin/sh
#
# apache starting script
#

/usr/local/apache2/bin/apachectl start

더 이상 없습니다.


# chown root:sys /etc/init.d/apache2
소유자와 그룹을 root : sys로 변경

# chmod 744 /etc/init.d/apache2
파일 권한은 744

# ln /etc/init.d/apache2 /etc/rc2.d/S99apache  
# ln /etc/init.d/apache2 /etc/rc1.d/K16apache
# ln /etc/init.d/apache2 /etc/rcS.d/K16apache
여기에 링크를 걸어주시면 부팅시 자동으로 Apache 데몬이 작동이 됩니다.

 


2) PHP

cp /usr/local/php/doc/php/php.ini-recommended /usr/local/php/lib/php.ini
/usr/local/php/doc/php/php.ini-recommended
/usr/local/php/lib/php.ini 복사합니다.


테스트를 위해 아래 내용을 새로 작성

# vi /usr/local/apache2/htdocs/index.php
<?
  phpinfo()
?>

확인방법은 http://192.168.1.69/index.php  (이건 저의 셋팅에 따라 만든거에요)
제대로 되었다면 밑의 그림이 나올껍니다. ~ 그리고 이 테스트는 APM 모두 설치 셋팅한다음 테스트를 하시길 바랍니다.





3) MySQL


# useradd -d /export/home/mysql -g staff -m -u 102 -s /bin/false mysql
MySQL
을 사용할 계정을 추가


# cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
# vi /etc/my.cnf
/usr/local/mysql/share/mysql
my-huge.cnf, my-large.cnf, my-medium.cnf, my-small.cnf 의 예제 설정 파일이 있다. 이를 /etc/my.cnf 으로 이름을 바꿔 복사하면 된다.


skip-networking
#log-bin
리플리케이션을 사용하지 않는다면 [log-bin]을 찾아 주석처리하고 외부에서 접속이 없다면 [skip-networking]의 주석을 푼다.


# /usr/local/mysql/bin/mysql_install_db
기본 MySQL DB를 생성


# chown -R mysql:staff /usr/local/mysql/var
기본 MySQL DB가 생성되는  /usr/local/mysql/var 의 디렉토리 및 파일들의 소유자를 mysql  그룹은 staff로 변경


# /usr/local/mysql/share/mysql/mysql.server start
MySQL
서버를 시작
종료는 /usr/local/mysql/share/mysql/mysql.server stop


# /usr/local/mysql/bin/mysqladmin -u root password 'PASSWORD'
MySQL
root 패스워드를 변경
기본값은 없기 때문에 보안을 위해서 반드시 수정


# /usr/local/mysql/bin/mysqladmin -u root -h test -p password 'NEW-PASSWORD'
Enter password: PASSWORD
위처럼 하시면 새로운 패스워드로 변경이 됩니다. 위에서  test host 이름입니다.

 

 

부팅시 자동으로 Mysql를 구동할 수 있도록 스크립을 작성하겠습니다.

# vi /etc/init.d/mysql

#!/sbin/sh
#
# mysql starting script
#
 
/usr/local/mysql/bin/mysqld_safe &


# chown root:sys /etc/init.d/mysql
소유자와 그룹을 root : sys로 변경

# chmod 744 /etc/init.d/mysql
파일 권한은 744

# ln /etc/init.d/mysql /etc/rc2.d/S99mysql  

이렇게 하면 mysql도 부팅시 자동으로 데몬이 올라오게 됩니다.

 

 

 


 

4. 보안서버(SSL) 설치 및 설정

 


1) openssl 을 이용하여 key 파일 생성 및 csr 코드 생성

 

일단 ssle 인증서 키와 파일들을 저장할 디렉토리를 만들어놓습니다.

# mkdir /usr/local/apache2/conf/ssl

# cd /usr/local/apache2/conf/ssl

 

Ps. 꼭 개인키와 csr 코드 등은 복사등을 해서 백업을 해주시길 바랍니다.

 

- 개인Key 파일 생성

# openssl genrsa -des3 1024 > m-sys_co_kr.key

 

Generating RSA private key, 1024 bit long modulus

.................................++++++

...............++++++

e is 65537 (0x10001)

Enter pass phrase:  <- 암호 필히 기억 (apache 실행시 사용함)

Verifying - Enter pass phrase:

 

만약 apache 실행시 암호를 사용하지 않고 사용하실려면 아래의 명령어를 통해 개인키를 생성하시길 바랍니다.

 

# openssl genrsa 1024 > m-sys_co_kr.key

 

 

 

- csr 코드 생성

# openssl req -new -key m-sys_co_kr.key -out m-sys_co_kr.csr

 

Enter pass phrase for m-sys_co_kr.key:

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [AU]:KR

State or Province Name (full name) [Some-State]:Busan

Locality Name (eg, city) []:BusanJin

Organization Name (eg, company) [Internet Widgits Pty Ltd]:Minerva Systems   <-회사명

Organizational Unit Name (eg, section) []:Technical Support Team   <-소속 부서

Common Name (eg, YOUR name) []:www.m-sys.co.kr    <-홈페이지 도메인

Email Address []:***@m-sys.co.kr

 

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:    <- 암호 필히 기억

An optional company name []:


 

 

- csr 코드 확인(보안상 *** 처리하였습니다)

# cat m-sys_co_kr.csr

 

-----BEGIN CERTIFICATE REQUEST-----

MIIB/jCCAWcCAQAwgagxCzAJBgNVBAYTAktSMQ4wDAYDVQQIEwVCdXNhbjERMA8G

A1UEBxMIQnVzYW5KaW4xGDAWBgNVBAoTD01pbmVydmEgU3lzdGVtczEfMB0GA1UE

***********************

934AJEaN5VPO3RJR6w4O2GwW/AM3iNuNr2IaBJmfKip9gA==

-----END CERTIFICATE REQUEST-----

 

공공기관이나 교육기관 등등에서 사용하기 위해서는 위에 생성된 csr 코드를 SSL 인증키 업체에게 메일이나 웹으로 이 파일을 보내서 인증키 발급을 신청해야합니다.

 

메일이나 웹으로 csr 내용을 SSL 인증키 업체에게 보내서 인증서 발급을 받으면 key csr 파일이 있는 경로(저의 경우는  /usr/local/apache2/conf/ssl) ftp를 이용하시던 다른 어떤수를 사용해서라도 넣어놓으세요.  ㅎㅎ

 

자체 인증서를 만들어서 테스트하는 방법은 뒤에서 설명하도록 하겠습니다.

 

 

2) SSL을 사용하기 위한 httpd.conf & httpd-ssl.conf 수정

 

어떤 파일 형식으로 인증서를 받으실지 모르겠지만 대충 m-sys_co_kr.pem 으로 받았다고 가정하고 시작하도록 하겠습니다.

 

저는 그냥 m-sys_co_kr.pem 파일을 복사해서 이름을 바꾸어서 사용하였습니다.

 

# cp m-sys_co_kr.pem  m-sys_co_kr.crt

 

 

먼저 위에서 Apache의 옵션 httpd.conf 파일안에 있는

Include conf/extra/httpd-vhosts.conf

Include conf/extra/httpd-ssl.conf  이 두 부분에서 주석처리를 없애버렸기 때문에 바로 httpd-ssl.conf 를 수정하겠습니다.

 

 

# vi /usr/local/apache2/conf/extra/httpd-ssl.conf

 

 

##

## SSL Virtual Host Context

##

 

<VirtualHost 210.*.223.*:443> <-이부분 수정 해당 IP (보안상 * 표시하였습니다만.. -_-;)

 

#   General setup for the virtual host

DocumentRoot "/home1/homepage/www"   <- 수정

ServerName www.m-sys.co.kr:443  <- 수정

ServerAdmin kwonbk@m-sys.co.kr  <- 수정

ErrorLog "/usr/local/apache2/logs/m-sys.co.kr_ssl_error_log"  <- 알아서 수정하세요 ^^

TransferLog "/usr/local/apache2/logs/m-sys.co.kr_ssl_access_log" <- 이것도 ..

 

#   SSL Engine Switch:

#   Enable/Disable SSL for this virtual host.

SSLEngine on

 

#   SSL Cipher Suite:

#   List the ciphers that the client is permitted to negotiate.

#   See the mod_ssl documentation for a complete list.

SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

 

#   Server Certificate:

#   Point SSLCertificateFile at a PEM encoded certificate.  If

#   the certificate is encrypted, then you will be prompted for a

#   pass phrase.  Note that a kill -HUP will prompt again.  Keep

#   in mind that if you have both an RSA and a DSA certificate you

#   can configure both in parallel (to also allow the use of DSA

#   ciphers, etc.)

SSLCertificateFile "/usr/local/apache2/conf/ssl/m-sys_co_kr.crt"  <- 발급받은 인증서 경로

#SSLCertificateFile "/usr/local/apache2/conf/server-dsa.crt"

 

#   Server Private Key:

#   If the key is not combined with the certificate, use this

#   directive to point at the key file.  Keep in mind that if

#   you've both a RSA and a DSA private key you can configure

#   both in parallel (to also allow the use of DSA ciphers, etc.)

SSLCertificateKeyFile "/usr/local/apache2/conf/ssl/m-sys_co_kr.key"  <- 개인키 경로

#SSLCertificateKeyFile "/usr/local/apache2/conf/server-dsa.key"

 

#   Server Certificate Chain:

#   Point SSLCertificateChainFile at a file containing the

#   concatenation of PEM encoded CA certificates which form the

#   certificate chain for the server certificate. Alternatively

 

#SSLCACertificateFile "/usr/local/apache2/conf/ssl.crt/ca-bundle.crt"  <- CA 있으면 추가~!

 

<FilesMatch "\.(cgi|shtml|phtml|php)$">

    SSLOptions +StdEnvVars

</FilesMatch>

<Directory "/usr/local/apache2/cgi-bin">

    SSLOptions +StdEnvVars

</Directory>

 

BrowserMatch ".*MSIE.*" \

         nokeepalive ssl-unclean-shutdown \

         downgrade-1.0 force-response-1.0

 

CustomLog "/usr/local/apache2/logs/ssl_request_log" \

          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

 

</VirtualHost>

 


 

3) SSL 적용한 Apache 실행하기

 

이제 httpd-ssl.conf 파일을 저장하고 apache를 실행하시면 됩니다.

일단 테스트를 해서 옵션등에 에러가 없는지 확인하겠습니다.

 

# /usr/local/apache2/bin/apachectl –t

Syntax OK

 

이렇게 정상적인 OK 가 나오면 실행하시면 됩니다. 간혹 인증서 때문에 테스트에서는 정상 작동이 된다고 하지만 실행해보면 실패가 되는 경우가 있는데 운영중인 서버라면 httpd.conf 에서 Include conf/extra/httpd-ssl.conf 부분을 주석처리하고 일단 상황을 보시고 실행하시길 바랍니다.

 

그리고 Solaris에서는 모르겠지만 Linux 에서는 apache 2.x.x 버전은 openssl, 이 자체 내장되어서 나옵니다. sunfreeware 사이트에서 설치시 받아야할 항목을 모두 받아서 설치한거니 헷갈리지 마세요 ^^;  아참 apache 1.3.x 버전의 경우 apache 실행시 apachectl startssl 을 해야 하지만 apache 2.x.x 의 경우 밑의 명령어 처럼 start 명령어만 해주면 됩니다.

 

 

# ./apachectl start

Apache/2.2.12 mod_ssl/2.2.12 (Pass Phrase Dialog)

Some of your private key files are encrypted for security reasons.

In order to read them you have to provide the pass phrases.

 

Server www.m-sys.co.kr:443 (RSA)

Enter pass phrase:

 

OK: Pass Phrase Dialog successful.

 

 

이렇게 하고 443 Port가 사용하고 있는지 확인하세요.

 

# netstat –an | grep 443

 

*.443                *.*                0      0 24576      0 LISTEN

      *.443                             *.*                             0      0 24576      0 LISTEN

 

 

443 Port 가 열려있다면 이제 익스플로러나 파폭등을 이용해서 https://m-sys.co.kr 주소로 들어가시면 SSL 보안이 실행되고 있는지 확인하실 수가 있습니다.

 


 

 

4) 자체 인증서 만들기

 

# openssl genrsa 1024 > m-sys_co_kr.key

 

# openssl req -new -key m-sys_co_kr.key -out m-sys_co_kr.csr

 

# openssl x509 -in m-sys.co.kr.csr -out m-sys.co.kr.crt -req -signkey m-sys.co.kr.key -days 3650

Signature ok

subject=/C=KR/ST=Busan/L=Busan/O=Minerva Systems/OU=Technical Support Team/CN=www.m-sys.co.kr/emailAddress=****@m-sys.co.kr

Getting Private key

 

이건 자체 테스트용으로 한것이기 때문에 기간은 10년으로ㅎㅎ

 

이렇게 하신다음 apache를 재시작 하시면 됩니다.

 

 

 

5) 각 운영체제 별 현재 설치된 apache, openssl 등을 확인 방법

 

- Linux

 

# rpm –qa | grep apache

# rpm –qa | grep ssl

 

# find / -name apache

# find / -name ssl

 

 

- Solaris

 

# pkginfo | grep apache

# pkginfo | grep ssl

 

# find / -name apache

# find / -name ssl

 

 

Linux에 아파치, Tomcat, PHP 설치법

Posted 2008. 10. 24. 04:30


출처 : http://cafe.naver.com/networkn.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=215 

 

 소스코드를 받아 설치하는 방법을 설명하기로 합니.
기본적으로 소스코드을은 /usr/local/src에 두고 작업을 합니다.

먼저 APACHE 2.x버전 소스를 서버에 두고 해당디렉토리에서 다음 명령어들을 실행합니다.

$./configure --prefix=/usr/local/apache --enable-rule=SHARED_CORE --enable-modules=so --enable-so
$make
$make install

APACHE가 설치되었으면 확인해 실행시켜보죠.
$/usr/local/apache/bin/apachectl start
$/usr/local/apache/bin/apachectl stop

그럼 다음으로 PHP를 설치하기로 합니다..
PHP4.x 버전을 소스로 구하여 서버에 두고 다음과 같은 명령어를 수행합니다.

$./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --enable-track-vars=yes --with-mod-charset --with-language=korean --with-charset=euc_kr --disable-debug --with-xml

$make
$make install
$cp /usr/local/src/php-4.3.0/php.ini-dist /usr/local/lib/php.ini

설치 되었으면 APACHE와 PHP를 연동시키기로 하죠..
아래와 같이 몇줄을 추가 시켜주면 된답다.

아파치 httpd.conf 아래에 840라인 정도에 추가

LoadModule php4_module modules/libphp4.so
AddType application/x-httpd-php .php4 .php3 .html .htm .phtml .ph .php
AddType application/x-httpd-php-source .phps

아래의 내용을 찾아 추가
DirectoryIndex index.html index.php index.phtml index.jsp


이제 PHP에 ZendOptimizer 설치하기로 합니다...
ZendOptimizer 해당 디렉토리에서 install.sh을 수행시키고 계속 OK 눌러 주시면 설치가 완료된답니다.
마지막에 나오는 메세지는 "php.ini는 새로 심볼릭 링크 했다. 수정하고 싶으면 /usr/local/Zend/etc 에있는 php.ini를 해라."는 것이니 신경쓰지 말고 ㅋ.

그럼 이제 톰켓을 설치 해보도록 하자...
톰캣 4.x 버전을 구해서 /usr/local/tomcat에 먼저 둔답니다.
그리고 vi /root/.bash_profile, 파일을 열어서 환경 설정을 다음과 같이 합니다,

JAVA_HOME=/usr/local/j2sdk
CATALINA_HOME=/usr/local/tomcat
PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
export JAVA_HOME CATALINA_HOME

/usr/local/tomcat/conf/server.xml 을 열어서 추가해줌

# 내용중 다음을 찾아서
<Server port="8005" shutdown="SHUTDOWN" debug="0">
# 밑줄에 다음을 입력한다.
<Listener className="org.apache.ajp.tomcat4.config.ApacheConfig" />

# 내용중 다음을 찾아서
<Host name="localhost" debug="0" appbase="webapps">
# 밑줄에 다음을 입력한다.
<Listener className="org.apache.ajp.tomcat4.config.ApacheConfig" append="true" />

이제 톰캣과 아파치의 연동되는 부분을 만들기로 하죠..

mod_jk.so 생성하기로 합니다..

# cd /usr/local/src
# tar xzvf jakarta-tomcat-connectors-4.1.12-src.tar.gz
# cd /tmp/jakarta-tomcat-connectors-4.1.12-src/jk/native
# ./buildconf.sh
# ./configure --with-apxs=/usr/local/apache/bin/apxs
# make
# make install
# ll /usr/local/apache/modules

톰캣을 기동 시키면 $catalina.sh start

/usr/local/tomcat/conf 밑에 jk와 auto 디렉토리가 자동으로 생기죠..

그 디렉토리 안에 프로퍼티 화일을 만들고 다음과 같이 설정한답니다.
$cd /usr/local/tomcat/conf/jk
$ vi workers.properties

# Start setup file (화일 내용 시작)
#
workers.tomcat_home=/usr/local/tomcat
workers.java_home=/usr/local/java
ps=/
worker.list=ajp12, ajp13

# Definition for Ajp13 worker
#
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
#
# End setup file (화일 내용 끝)


마지막으로 httpd.conf 화일의 마지막에 아래의 내용을 추가합니다..
#
#Load mod_jk
#
LoadModule jk_module modules/mod_jk.so
#
#Configure mod_jk
#
JkWorkersFile /usr/local/tomcat/conf/jk/workers.properties
JkLogFile /usr/local/tomcat/logs/mod_jk.log
JkLogLevel emerg
#
# Root context
JkMount /*.jsp ajp13
JkMount /servlet/* ajp13
Include /usr/local/tomcat/conf/auto/mod_jk.conf

이제 아파치와 톰캣을 구동시키면 잘 연동 되는것을 알수 있을것입니다.
서버는 톰캣을 먼저 띄운후에 아파치를 기동 시켜야 된답니다.
이점을 명심해야 해요....

버전에 따라 약간의 차이가 있지만 대체적으로 위의 로직을 따라서 설치하면
제대로 설치가 될것입니다...