CentOS7.1에서 nginx를 사용한 웹 서버 구축

이번에는 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 리포지토리를 추가합니다.
  • EPEL 리포지토리 추가
  • $ 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
    
  • Remi 리포지토리 추가
  • $ 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 설정 파일을 다음과 같이 편집합니다.
  • php.ini
  • $ 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
    
  • nginx conf 파일 수정

  • 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)
    



    참고문헌


  • 로그인할 수 없는 사용자를 만드는 방법, htps //w w. 예 xp rs. 네 c. 이. jp/ぃぬx/ぢst리부치온 s/k의 w㎇d게/sys m/푹신. HTML , Online; accessed 9-April-2016.
  • PHP-FPM(PHP7) + nginx 설치(CentOS 6) - Qiita, ぃ tp // 이 m/타츠네 t/아니 ms/54d486652377아 76104d1 , Online; accessed 2–February–2016.
  • nginx에서 PHP 이동 - Qiita, ぃ tp // 코 m / 붙이 - 어의 레고 / ms / 817b5f8 a c7 또는 b19 a 8897 , Online; accessed 2-Februrary-2016.
  • CentOS 7 서비스 자동 시작 설정 _ server-memo.net, h tp // w w. 세 r ょ r-메도. 네 t/전과 s-setchin gs/전과 s7/sys mctl-에나 bぇ. HTML , Online; accessed 9-April-2016.
  • 쿠보 타츠히코, 도이 슌스케, "nginx 실천 입문 (WEB+DB PRESS plus)", 2016/1/16.
  • nginx 와 PHP-FPM 의 구조를 제대로 이해하면서 PHP 의 실행 환경을 구축한다 - Qiita, ぃ tp // 코 m / 코타레 1110 / ms / 634f6 푹신 b33 굳이 0f51dc , Online; accessed 9-April-2016.
  • 조사하지 않으면 잘 수 없다! 라고 조사하면 불필요하게 잠들 수 없게 된 소켓의 이야기 - Qiita, ぃ tp // 코 m / 쿠니 나카지 / , Online; accessed 9-April-2016.
  • 좋은 웹페이지 즐겨찾기