CentOS7.1에서 nginx를 사용한 웹 서버 구축
구축한 환경은 다음과 같습니다.
환경
OS/미들웨어
버전
CentOS
7.1
php
7.3
nginx
1.8.1
1. 시스템 사용자 생성
먼저 웹 서버를 처리하는 시스템 사용자를 만듭니다.
$ sudo groupadd hoge
$ sudo useradd -g hoge hoge
작성한 시스템 사용자로 로그인하지 않도록 다음 명령을 입력하십시오.
$ sudo usermod -s /bin/false hoge
2. PHP 설치
CentOS에 최신 PHP를 설치하기 위해 EPEL 리포지토리와 Remi 리포지토리를 추가합니다.
먼저 웹 서버를 처리하는 시스템 사용자를 만듭니다.
$ sudo groupadd hoge
$ sudo useradd -g hoge hoge
작성한 시스템 사용자로 로그인하지 않도록 다음 명령을 입력하십시오.
$ sudo usermod -s /bin/false hoge
2. PHP 설치
CentOS에 최신 PHP를 설치하기 위해 EPEL 리포지토리와 Remi 리포지토리를 추가합니다.
$ sudo rpm -ivh https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
$ sudo yum -y update epel-release
$ sudo rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
$ sudo rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
$ sudo yum -y update remi-release
리포지토리 추가가 완료되면 다음 명령으로 PHP를 설치합니다.
$ sudo yum -y --enablerepo=remi-php73,epel install php-fpm php-gd php-gmp php-mbstring php-mcrypt php-opcache php-pdo php-pear-MDB2-Driver-mysqli php-pecl-memcached php-pecl-msgpack php-xml
$ php -v
$ php -v
PHP 7.3.0RC5 (cli) (built: Nov 6 2018 10:22:47) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.0-dev, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.0RC5, Copyright (c) 1999-2018, by Zend Technologies
PHP 설치가 완료되면 PHP 설정 파일을 다음과 같이 편집합니다.
$ vi /etc/php.ini
php.ini
・
・
date.timezone = "Asia/Tokyo" # タイムゾーンを Asia/Tokyo に設定
・
・
・
www.conf
php-fpm의 실행 사용자를 hoge(1단계에서 만든 시스템 사용자)로 변경합니다.
Fast-CGI를 수락하는 주소를 Unix 도메인 소켓으로 변경합니다.
$ vi /etc/php-fpm.d/www.conf
www.conf
・
・
・
# 22行目あたり
; RPM: apache Choosed to be able to access some dir as httpd
user = hoge
; RPM: Keep a group allowed to write in log dir.
group = hoge
・
・
・
# 37行目あたり
listen = /var/run/php-fpm/php-fpm.sock
・
・
・
# 48行目あたり
listen.owner = hoge
listen.group = hoge
listen.mode = 0660
・
・
・
3. nginx 설치
이번 환경이 CentOS7계이므로 nginx-release-centos-7-0.el 7.ngx.noarch.rpm을 리포지토리에 추가하고 nginx를 설치합니다.
$ sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
$ sudo yum -y update nginx-release-centos
$ sudo yum -y --enablerepo=nginx install nginx
$ nginx -v
nginx version: nginx/1.8.1
$ sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
$ sudo yum -y update nginx-release-centos
$ sudo yum -y --enablerepo=nginx install nginx
$ nginx -v
nginx version: nginx/1.8.1
nginx 실행 사용자를 hoge(1단계에서 만든 시스템 사용자)로 변경합니다.
$ sudo vi /etc/nginx/nginx.conf
nginx.conf
# 2行目あたり
user hoge;
nginx에서 PHP를 처리 할 수 있도록 conf 파일에 다음 내용을 추가합니다.
$ sudo vi /etc/nginx/conf.d/default.conf
default.conf
# 30行目あたり
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
4. PHP-FPM·nginx의 기동
다음 명령으로 php-fpm과 nginx를 시작합니다.
$ sudo systemctl start php-fpm.service
$ sudo systemctl start nginx.service
다음 명령을 사용하여 php-fpm과 nginx가 제대로 작동하는지 확인하십시오.
$ ps aux | grep -e nginx -e php-fpm
root 13785 0.0 4.7 492728 29788 ? Ss 12:42 0:00 php-fpm: master process (/etc/php-fpm.conf)
hoge 13786 0.0 1.2 493148 8168 ? S 12:42 0:00 php-fpm: pool www
hoge 13787 0.0 1.2 493148 7840 ? S 12:42 0:00 php-fpm: pool www
hoge 13788 0.0 0.9 493016 6048 ? S 12:42 0:00 php-fpm: pool www
hoge 13789 0.0 0.8 492728 5356 ? S 12:42 0:00 php-fpm: pool www
hoge 13790 0.0 0.8 492728 5356 ? S 12:42 0:00 php-fpm: pool www
root 13910 0.0 0.1 47520 1152 ? Ss 13:29 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
hoge 13911 0.0 0.3 47912 2144 ? S 13:29 0:00 nginx: worker process
vagrant 13940 0.0 0.1 112656 964 pts/0 R+ 13:44 0:00 grep --color=auto -e nginx -e php-fpm
계속해서, 서버의 재기동이 행해졌을 경우에서도 자동으로 php-fpm와 nginx가 기동되도록(듯이) 설정합니다.
$ sudo systemctl enable php-fpm.service
Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.
$ sudo systemctl enable nginx.service
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
다음 명령을 사용하여 자동 시작 설정이 성공했는지 확인합니다.
$ systemctl list-unit-files -t service | grep -e nginx -e php-fpm
nginx.service enabled
php-fpm.service enabled
5. 동작 확인
마지막으로 웹 서버의 동작을 확인합니다.
웹 (nginx) 서버에서 PHP가 성공적으로 처리되었는지 확인하려면 문서 루트/usr/share/nginx/html 아래에 index.php 파일을 만듭니다.
$ sudo vi /usr/share/nginx/html/index.php
index.php<?php phpinfo() ?>
웹 서버에 액세스하고 다음과 같이 출력되면 완료됩니다.
$ curl localhost/index.php | head
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<style type="text/css">
body {background-color: #fff; color: #222; font-family: sans-serif;}
pre {margin: 0; font-family: monospace;}
a:link {color: #009; text-decoration: none; background-color: #fff;}
a:hover {text-decoration: underline;}
table {border-collapse: collapse; border: 0; width: 934px; box-shadow: 1px 2px 3px #ccc;}
.center {text-align: center;}
.center table {margin: 1em auto; text-align: left;}
100 48904 0 48904 0 0 291k 0 --:--:-- --:--:-- --:--:-- 292k
curl: (23) Failed writing body (248 != 4256)
참고문헌
$ sudo systemctl start php-fpm.service
$ sudo systemctl start nginx.service
$ ps aux | grep -e nginx -e php-fpm
root 13785 0.0 4.7 492728 29788 ? Ss 12:42 0:00 php-fpm: master process (/etc/php-fpm.conf)
hoge 13786 0.0 1.2 493148 8168 ? S 12:42 0:00 php-fpm: pool www
hoge 13787 0.0 1.2 493148 7840 ? S 12:42 0:00 php-fpm: pool www
hoge 13788 0.0 0.9 493016 6048 ? S 12:42 0:00 php-fpm: pool www
hoge 13789 0.0 0.8 492728 5356 ? S 12:42 0:00 php-fpm: pool www
hoge 13790 0.0 0.8 492728 5356 ? S 12:42 0:00 php-fpm: pool www
root 13910 0.0 0.1 47520 1152 ? Ss 13:29 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
hoge 13911 0.0 0.3 47912 2144 ? S 13:29 0:00 nginx: worker process
vagrant 13940 0.0 0.1 112656 964 pts/0 R+ 13:44 0:00 grep --color=auto -e nginx -e php-fpm
$ sudo systemctl enable php-fpm.service
Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.
$ sudo systemctl enable nginx.service
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
$ systemctl list-unit-files -t service | grep -e nginx -e php-fpm
nginx.service enabled
php-fpm.service enabled
마지막으로 웹 서버의 동작을 확인합니다.
웹 (nginx) 서버에서 PHP가 성공적으로 처리되었는지 확인하려면 문서 루트/usr/share/nginx/html 아래에 index.php 파일을 만듭니다.
$ sudo vi /usr/share/nginx/html/index.php
index.php
<?php phpinfo() ?>
웹 서버에 액세스하고 다음과 같이 출력되면 완료됩니다.
$ curl localhost/index.php | head
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<style type="text/css">
body {background-color: #fff; color: #222; font-family: sans-serif;}
pre {margin: 0; font-family: monospace;}
a:link {color: #009; text-decoration: none; background-color: #fff;}
a:hover {text-decoration: underline;}
table {border-collapse: collapse; border: 0; width: 934px; box-shadow: 1px 2px 3px #ccc;}
.center {text-align: center;}
.center table {margin: 1em auto; text-align: left;}
100 48904 0 48904 0 0 291k 0 --:--:-- --:--:-- --:--:-- 292k
curl: (23) Failed writing body (248 != 4256)
참고문헌
Reference
이 문제에 관하여(CentOS7.1에서 nginx를 사용한 웹 서버 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ksugawara61/items/0fcf3f72cc905bb6d654텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)