2015년 7월 5일 일요일

Mysql, nginx 설치

참고: http://webdir.tistory.com/217
참고: https://gist.github.com/ntakaaki/2891895

Maria DB를 설치 하고 싶었으나, 라즈비안에서 기본으로 Mysql이 들어 있어서 그냥 Mysql을 설치 하기로 한다. 어짜피 장난감인데 따질게 뭐 있겠나. 귀차니즘....

사실 파이에 Maria DB 설치에 대해서 대충 구글링 해보니 고생 할 것이 보여서 그냥 포기 했다.
4시간 컴파일 하고 6시간 trouble shooting 했다고 하니..흐......
(하나는 프랑스 이지만 설치하는 명령어 보니 동일하게 보인다. 혹시 시도 하고 싶으면 참고 해서 시도 하시라 ~)

https://plus.google.com/+KylePlatt/posts/8pmWKvbaGd2
http://raspbian-france.fr/installer-mariadb-raspbian/

mysql은 다음 명령어로 간단하게 설치 된다.

pi@raspberrypi ~/tmp $ sudo apt-cache search mysql
pi@raspberrypi ~/tmp $ sudo apt-get install mysql-server-5.5

설치 완료 되면 제대로 되었는지 확인 한다.

pi@raspberrypi ~/tmp $ ps -ef | grep mysqld
pi@raspberrypi ~/tmp $ which mysql

확인 되었다면 붙어 보도록 하자.

pi@raspberrypi ~/tmp $ mysql -u root -p

root 패스워드는 mysql 인스톨시에 설정한 패스워드 이다. character set 을 utf-8로 사용 할 것이므로, mysql 설정도 모두 utf-8 로 바꾸도록 한다. mysql 환경 설정 파일을 열어서 다음 내용을 추가 한다. charater set 바꾸는 김에 쿼리문 max size 도 같이 바꾼다.

pi@raspberrypi /etc/mysql $ sudo vi /etc/mysql/my.cnf

[client]
default-character-set = utf8

[mysqld]
max_allowed_packet    = 256M
character-set-client-handshake=FALSE
init_connect="SET collation_connection = utf8_general_ci"
init_connect="SET NAMES utf8"
character-set-server = utf8 
collation-server = utf8_general_ci

[mysqldump]
default-character-set = utf8

[mysql]
default-character-set = utf8

설정 변경 되고 나면 mysql restart 후 mysql에 접속해서 변경 사항 적용 되었는지 확인 한다.

pi@raspberrypi /etc/mysql $ sudo service mysql restart
pi@raspberrypi ~/tmp $ mysql -u root -p

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.5.43, for debian-linux-gnu (armv7l) using readline 6.2

Connection id:  37
Current database:
Current user:  root@localhost
SSL:   Not in use
Current pager:  stdout
Using outfile:  ''
Using delimiter: ;
Server version:  5.5.43-0+deb7u1 (Debian)
Protocol version: 10
Connection:  Localhost via UNIX socket
Server characterset: utf8
Db     characterset: utf8
Client characterset: utf8
Conn.  characterset: utf8
UNIX socket:  /var/run/mysqld/mysqld.sock
Uptime:   2 min 17 sec


mysql> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

다음은 nginx 를 설치 하도록 하자. apache httpd는 사용하지 않고 nginx로만 사용할 예정이다.
nginx도 라즈비안에 기본으로 들어 있기 때문에 쉽게 설치 가능 하다.

pi@raspberrypi ~ $ sudo apt-cache search nginx
pi@raspberrypi ~ $ sudo apt-get install nginx

설치 완료 되면 nginx가 존재하는지 체크 해 본다.

pi@raspberrypi ~ $ which nginx

nginx는 /etc/nginx/nginx.conf 가 환경 설정 파일인데, 내용을 보면 Virtual Host Configs 항목으로 site-enabled를 include 하고 있다. site-enabled 에 기본으로 존재하는 default 를 없애고 신규로 추가 하기로 한다.

소유하고 있는 도메인이 없기 때문에 그냥 hosts 파일에 dhkim94.org 로 임의 등록해서 사용하기로 한다.

pi@raspberrypi /etc/nginx/sites-available $ cd /etc/nginx/sites-available
pi@raspberrypi /etc/nginx/sites-available $ sudo cp default dhkim94.org
pi@raspberrypi /etc/nginx/sites-available $ sudo vi dhkim94.org

dhkim94.org 파일을 다음 내용으로 수정 한다.

server {
    root /data/www/dhkim94.org;
    server_name dhkim94.org;

    access_log /data/log/dhkim94.org/nginx/access_pipe;
    error_log /data/log/dhkim94.org/nginx/error_pipe;

    #location /doc/ {
    #       alias /usr/share/doc/;
    #       autoindex on;
    #       allow 127.0.0.1;
    #       allow ::1;
    #       deny all;
    #}
    ....
}

로그 파일 분리를 위해서 nginx 기본 설정도 변경 한다. access_log 와 error_log 를 주석 처리 한다.

pi@raspberrypi / $ cd /etc/nginx
pi@raspberrypi /etc/nginx $ sudo cp nginx.conf nginx.conf.20150705
pi@raspberrypi /etc/nginx $ sudo vi nginx.conf

이젠 site-enabled 디렉토리에 기본 링크를 삭제 하고 금방 생성한 것의 링크를 추가 한다.

pi@raspberrypi /etc/nginx/sites-enabled $ cd /etc/nginx/sites-enabled
pi@raspberrypi /etc/nginx/sites-enabled $ sudo unlink default
pi@raspberrypi /etc/nginx/sites-enabled $ sudo ln -s /etc/nginx/sites-available/dhkim94.org dhkim94.org

환경 파일에 설정한 홈 디렉토리및 로그 디렉토리를 생성 한다.

pi@raspberrypi ~ $ cd /
pi@raspberrypi / $ sudo mkdir data
pi@raspberrypi / $ cd data
pi@raspberrypi /data $ sudo mkdir www
pi@raspberrypi /data $ cd www
pi@raspberrypi /data/www $ sudo mkdir dhkim94.org
pi@raspberrypi /data/www $ sudo chown -R www-data dhkim94.org
pi@raspberrypi /data/www $ sudo chgrp -R www-data dhkim94.org
pi@raspberrypi /data $ sudo mkdir log
pi@raspberrypi /data $ cd log
pi@raspberrypi /data/log $ sudo mkdir dhkim94.org
pi@raspberrypi /data/log $ cd dhkim94.org
pi@raspberrypi /data/log/dhkim94.org $ sudo mkdir nginx
pi@raspberrypi /data/log/dhkim94.org $ sudo chown -R www-data nginx
pi@raspberrypi /data/log/dhkim94.org $ sudo chgrp -R www-data nginx

이제 완료 되었으니 nginx 를 올리자.

pi@raspberrypi ~ $ sudo service nginx start
pi@raspberrypi ~ $ ps -ef | grep nginx

만일 정상으로 올라가지 않으면 올라가지 않는 내용을 자세히 보여 주므로 당황하지 말고 읽어보고 수정 하면 된다. nginx는 apache httpd에 비해서 훨씬 간단하니 어려울건 없다.

추후 테스트를 위해서 index.html 파일을 하나 만들어 둔다.

pi@raspberrypi ~ $ cd /data/www/dhkim94.org
pi@raspberrypi /data/www/dhkim94.org $ sudo vi index.html

hello nginx

아! 잊지 말고 파이에 접속하는 PC의 host에 dhkim94.org 를 등록하도록 한다.

daeheekimui-MacBook-Pro-2:~ dhkim94$ sudo vi /etc/hosts

# raspberrypi
192.168.1.180     dhkim94.org

또한 가짜 도메인이므로 파이의 /etc/hosts 에도 등록해 두자.

pi@raspberrypi ~ $ sudo vi /etc/hosts

127.0.0.1       dhkim94.org

nginx 설정이 모두 완료 되었고 daemon도 올라 갔으므로 정상으로 동작하는지 최종으로 외부에서 접속해 본다. hosts가 등록된 PC에서 다음과 같이 한다.(간단하게 웹브라우저로 붙어 봐도 된다.)

daeheekimui-MacBook-Pro-2:~ dhkim94$ telnet dhkim94.org 80
Trying 192.168.1.180...
Connected to dhkim94.org.
Escape character is '^]'.
GET /index.html HTTP/1.0

GET /index.html HTTP/1.0 을 입력하고 엔터 두번 치면 index.html 내용을 볼 수 있다.
돌아가는 것을 확인 했다면 nginx 의 log에 rotate 를 걸도록 하자.

log rotate를 위해서 cronolog를 사용하기로 한다.

pi@raspberrypi ~ $ sudo apt-cache search cronolog
pi@raspberrypi ~ $ sudo apt-get install cronolog
pi@raspberrypi ~ $ sudo vi /etc/init.d/nginx

다음 내용을 nginx 스크립트에 추가 한다.

logdir="/data/log/dhkim94.org/nginx"
cronolog="/usr/bin/cronolog"

cronolog_start() {
    if ! [ -p $logdir/access_pipe ]; then
       rm -f $logdir/access_pipe
       rm -f $logdir/error_pipe
       mkfifo $logdir/access_pipe
       mkfifo $logdir/error_pipe
    fi

    /bin/sh -c "/bin/cat $logdir/access_pipe | $cronolog $logdir/access.%Y%m%d &"
    /bin/sh -c "/bin/cat $logdir/error_pipe  | $cronolog $logdir/error.%Y%m%d &"
}

# 다음은 start case 문 변경
case "$1" in
        start)
                echo -n "Starting $DESC: "
                test_nginx_config
                # Check if the ULIMIT is set in /etc/default/nginx
                if [ -n "$ULIMIT" ]; then
                        # Set the ulimits
                        ulimit $ULIMIT
                fi
                # cronolog_start 추가
                cronolog_start || return 7

                start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
                    --exec $DAEMON -- $DAEMON_OPTS || true
                echo "$NAME."
                ;;
...

nignx 스크립트를 변경하고 nginx를 내렸다 올리자.

pi@raspberrypi ~ $ sudo service nginx stop
pi@raspberrypi ~ $ sudo service nginx start

웹브라우저로 다시 접속 후 로그가 분리 되어 있는지 확인 한다.
여기까지 mysql, nginx는 설치 완료! 변경 사항이 필요하면 사용하면서 변경 하도록 한다.

댓글 없음:

댓글 쓰기