Nginx + PHP-FPM + MariaDB 설치 (CentOS 7)
과거에는 APM (Apache + PHP + MySQL)이 인기있는 플랫폼이 였지만 최근에는 Nginx 가 나오고 PHP-FPM 이 나오면서 NPM 으로 많이 대체되고 있는 추세에 있습니다. 이 글은 Nginx,PHP-FPM, MariaDB 설치에 관한 것입니다.
준비
이 글에서 NPM을 설치하는 환경은 다음과 같습니다.
- CentOS 7.2.1511
- X86_64
- Selinux Disable
- 작성시간: 2015. 12. 27
설치하는 방법은 CentOS 7 에서 제공하는 패키지 관리 프로그램인 YUM을 이용하는 것입니다. 다음과 같이 CentOS 7 를 최신 버전으로 만듭니다.
1 |
yum update -y |
PHP 설치
다음과같이 YUM 을 이용해서 설치해 줍니다.
1 |
yum install php-fpm php-mysql php-cli |
php-mysql 은 MariaDB 와 연동하기 위한 것임으로 함게 설치해 줍니다.
systemctl 에 등록하고 시작해 줍니다.
1 2 |
systemctl enable php-fpm.service systemctl start php-fpm.service |
php-fpm 의 pool 설정을 다음과 같이 해줍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[www] listen = 127.0.0.1:9000 listen.owner = nginx listen.group = nginx listen.mode = 0660 user = cacti group = cacti pm = dynamic pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35 chdir = /home/cacti/www/ php_value[session.save_handler] = files php_value[session.save_path] = /var/lib/php/cacti_session |
세션(Session) 디렉토리의 소유권을 cacti 로 변경해 줍니다.
1 |
chown cacti: -R /var/lib/php/cacti_session |
MariaDB 설치
MariaDB 의 최신 버전 설치를 위해서 다음과 같이 YUM 저장소를 추가해 줍니다. YUM 저장소 추가는 다음 내용을 파일로 저장해주면 됩니다.
1 2 3 4 5 |
[mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.1/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 |
현재 MariaDB 의 최신버전은 10.1 이기 때문에 baseurl 에 버전이 정확해야 합니다. 다음과 같이 설치를 해줍니다.
1 |
yum install MariaDB-server MariaDB-client |
systemctl 에 등록을 해주고 데몬을 시작해 줍니다.
1 2 |
systemctl enable mariadb.service systemctl start mariadb.service |
mysql_secure_installation 을 실행해서 root 패스워드와 불필요한 데이터베이스를 삭제 합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
[root@localhost ~]# mysql_secure_installation .... Enter current password for root (enter for none): [그냥 엔터] OK, successfully used password, moving on... .... Set root password? [Y/n] Y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success! ..... Remove anonymous users? [Y/n] y ... Success! ..... Disallow root login remotely? [Y/n] y ... Success! ..... Remove test database and access to it? [Y/n] y - Dropping test database... ... Success! - Removing privileges on test database... ... Success! ..... Reload privilege tables now? [Y/n] y ... Success! [root@localhost ~]# systemctl restart mariadb # mariadb 재시작. |
Nginx 설치
Nginx 의 최신 버전 설치를 위해서 다음과 같이 YUM 저장소를 추가해 줍니다. YUM 저장소 추가는 다음 내용을 파일로 저장해주면 됩니다.
1 2 3 4 5 6 |
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgkey=http://nginx.org/keys/nginx_signing.key gpgcheck=0 enabled=1 |
cacti 서비스를 예를들어 다음과 같이 cacti.conf 파일을 작성합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
server { listen 80; server_name cacti.system.com; #charset koi8-r; #access_log /var/log/nginx/log/host.access.log main; location / { root /home/cacti/www index index.html index.htm index.php; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { root /home/cacti/www; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } |
웹 서비스를 위한 홈 디렉토리가 ‘/home/cacti’ 를 만들어주고 www 디렉토리를 생성해 줍니다.
1 2 3 4 |
]# useradd cacti ]# chmod 755 /home/cacti ]# su - cacti ]$ mkdir www |
nginx 문법체크를 하고 systemctl 에 서비스를 등록하고 서비스를 시작해 줍니다.
1 2 3 |
]# nginx -t ]# systemctl enable nginx.service ]# systemctl start nginx.service |
80(http) 방화벽 설정
80 포트, 즉 HTTP 를 위한 방화벽 설정을 다음과 같이 해줍니다.
1 2 |
]# firewall-cmd --permanent --zone=public --add-service=http ]# firewall-cmd --reload |