googleAdsense_widever


AWS EC2에 Nginx, PHP-FPM, MySQL 설치하기 Server/SQL







기본설치 


아래처럼 터미널 상에서 쭉 실행하자. 


리눅스 업데이트 

sudo yum -y update

 

Nginx와 PHP-FPM 설치. PHP는 5.4로 선택했다. 

sudo yum install -y nginx php54-fpm

 

필요한 PHP extension들을 설치하자. 필요하면 더 넣길 바란다.

sudo yum install -y php54-devel php54-mysql php54-pdo php54-pear php54-mbstring php54-cli php54-odbc php54-imap php54-gd php54-xml php54-soap php54-mcrypt 

 

PHP-APC를 설치하자.

sudo yum install -y php54-pecl-apc

sudo yum install -y pcre54-devel

 

MySQL을 설치하자.

sudo yum -y install mysql-server mysql

 

Nginx 설정하자. 상세내용은 좀더 아래서 설명한다.

sudo vi /etc/nginx/nginx.conf

 

PHP-FPM 설정하자. 상세내용은 좀더 아래서 설명한다.

sudo vi /etc/php-fpm.d/www.conf

 

Nginx, PHP-FPM, MySQL이 재부팅시 자동실행하도록 해준다.

sudo chkconfig --add nginx

sudo chkconfig --levels 235 nginx on

sudo chkconfig --add php-fpm

sudo chkconfig --levels 235 php-fpm on

sudo chkconfig --add mysql

sudo chkconfig --levels 235 mysql on



설치확인

아시다시피 rpm을 통해서 확인할 수 있겠다.

# rpm -qa |grep php

php54-common-5.4.27-1.53.amzn1.x86_64

php54-gd-5.4.27-1.53.amzn1.x86_64

php54-odbc-5.4.27-1.53.amzn1.x86_64

php54-xml-5.4.27-1.53.amzn1.x86_64

php54-cli-5.4.27-1.53.amzn1.x86_64

php54-5.4.27-1.53.amzn1.x86_64

php54-mbstring-5.4.27-1.53.amzn1.x86_64

php54-mysqlnd-5.4.27-1.53.amzn1.x86_64

php54-devel-5.4.27-1.53.amzn1.x86_64

php54-imap-5.4.27-1.53.amzn1.x86_64

php54-process-5.4.27-1.53.amzn1.x86_64

php54-fpm-5.4.27-1.53.amzn1.x86_64

php54-pdo-5.4.27-1.53.amzn1.x86_64

php54-soap-5.4.27-1.53.amzn1.x86_64


# rpm -qa |grep nginx

nginx-1.4.7-1.17.amzn1.x86_64


# rpm -qa |grep mysql
mysql55-libs-5.5.37-1.46.amzn1.x86_64
mysql-server-5.5-1.6.amzn1.noarch
php54-mysqlnd-5.4.27-1.53.amzn1.x86_64
mysql55-common-5.5.37-1.46.amzn1.x86_64
mysql55-server-5.5.37-1.46.amzn1.x86_64
mysql-5.5-1.6.amzn1.noarch
mysql55-5.5.37-1.46.amzn1.x86_64

여러분은 이 상태에서 다음 명령으로 nginx 동작을 확인할 수 있다.
sudo serivce nginx start

웹브라우저에서 EC2에서 제공하는 URL로 접속하면 된다. 현제 기본 웹루트는 /usr/share/nginx/html 로 되어 있는데 이 웹루트는 적응이 안되고 불편하더라. 웹루트도 바꿀거지만 그 외에도 우린 상세 설정이 필요하다. 

mysql 구동 및 암호 설정 
아래처럼 구동하고 root 암호를 설정하자.

sudo service mysqld start
sudo mysqladmin -u root password 


nginx.conf 설정
php파일을 php-fpm으로 동작할 수 있도록 다음처럼 처리하자. 앞서 sudo vi /etc/nginx/nginx.conf 명령으로 편집할 수 있음을 알렸다. vi 에디터를 사용하는 방법은 따로 설명하지 않는다. 

수정사항 
아래처럼 index.php를 추가하고 기본 웹루트를 /usr/share/nginx/html 에서 /var/www/mywebroot 로 바꿨다. 웹루트는 여러분 마음대로 기억하기 편한곳에 정해두는게 좋지 않을까 싶다. 

index index.php index.html index.htm;
root /var/www/mywebroot;

추가사항
php-fpm은 php의 fastcgi로서 이를 동작시키기 위한 설정이 필요하다. 아래 코드를 삽입하도록 하자.
location ~ ^(.+\.php)(.*)$ {
  fastcgi_split_path_info       ^(.+\.php)(.*)$;
  fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
  fastcgi_index  index.php;
  fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
  fastcgi_param  PATH_INFO $fastcgi_path_info;
  include        fastcgi_params;
}

위 설정 파라미터에 대한 간단한 설명은 http://opentutorials.org/module/384/4332 에서 확인해보면 좋지 않을까 싶다. 

웹루트 생성 

웹루트를 /var/www/mywebroot 로 했기 때문에 해당 폴더를 생성해줘야 한다.
cd /var/www 
mkdir mywebroot 
chown ec2-user.ec2-user mywebroot 

vi /var/www/mywebroot/phpinfo.php 를 통해 다음 테스트용 php 코드를 작성하자. 이는 mysql을 접속해보고 phpinfo를 출력해준다.
<?php
header("Content-Type: text/html; charset=UTF-8");
$host_name = "localhost";
$user_name = "root";
$user_password = "디비암호";
$db_name = "test";
$db = new mysqli($host_name,$user_name,$user_password, $db_name);
if( $db->connect_error ) {
        die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());
} else {
        echo "DB 접속됨";
}
echo phpinfo();



php-fpm/www.conf 설정 

아래처럼 필요한 부분을 찾아 설정하거나 추가하자. 

[...]

;listen = 127.0.0.1:9000

listen = /var/run/php-fpm/php-fpm.sock

;listen.owner = nobody

listen.owner = nginx

;listen.group = nobody

listen.group = nginx

;listen.mode = 0666

listen.mode = 0664

 

user = nginx

group = nginx

[...]




nginx, php-fpm 구동, 동작확인


드디어 nginx, php-fpm, mysql 동작을 확인할 수 있게 되었다. 다음 명령을 통해 nginx와 php-fpm을 실행하자. 이전에 이미 실행했다면 start대신 restart를 하면 되겠다. 

 

sudo serivce nginx start

sudo service php-fpm start


EC2 인스턴스의 http://웹주소/phpinfo.php 로 접근해서 DB접속과 phpinfo가 잘 출력되는지 확인하자.




글쓴이 : 지돌스타 (http://blog.jidolstar.com/919)


덧글

댓글 입력 영역


공지

어서오십시오.
트위터 : @FCliver
기저심리학 : 네이버카페
카카오톡 : FCliver
페이스북 : Fredric Cliver

통계 위젯 (화이트)

012
111
285966

접속자 위치