[nginx] Amazon Linux + nginx + php-fpm에서 PHP 스크립트 실행 (기본 인증 포함)

Amazon Linux 2015.09 환경에서 nginx+php-fpm으로 PHP 스크립트가 실행되는 환경을 구축합니다.

1. 사전 작업



1.1. Amazon Linux 환경 구축


  • Amazon Linux 환경 구축
  • 키 쌍 만들기(신규): ぃ tp // 이 m / tsh / ms / 59303d9506 또는 7d13f744
  • 인스턴스 만들기(Public): ぃ tp // 이 m / tsh / ms / 굳이 8f1f0d706237327c5


  • 1.2. PHP 환경 구축



    설치 (yum 패키지의 경우)
    sudo yum install php54 -y
    

    명령
    which php
    

    결과 (예/AmazonLinux)
    /usr/bin/php
    

    명령 (버전 확인)
     php -v
    

    결과 (예/AmazonLinux)
    PHP 5.4.45 (cli) (built: Sep 11 2015 21:23:18) 
    Copyright (c) 1997-2014 The PHP Group
    Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
    

    1.3. nginx 설치


  • (참고) Amazon Linux에 nginx 설치 (yum 패키지) : ぃ tp // m / tsh / ms / 001c05 9b0 5a 34a bc7

  • 명령
    which nginx
    

    결과 (예/AmazonLinux)
    /usr/sbin/nginx
    

    1.4. (선택 사항) htpasswd 명령



    nginx로 기본 인증하는 경우 필요합니다.
    Amazon Linux의 경우 처음부터 말한 것 같습니다.

    명령
    which htpasswd
    

    결과 (예/AmazonLinux)
    /usr/bin/htpasswd
    

    존재하지 않으면 설치하십시오.

    명령
    sudo yum install httpd-tools
    

    2. php-fpm 설치



    2.1. 설치



    명령
    sudo yum install php54-fpm -y
    

    결과 (예/AmazonLinux)
    ()
    
    インストール:
      php54-fpm.x86_64 0:5.4.45-1.75.amzn1
    
    完了しました!
    

    2.2. 확인



    명령
    which php-fpm
    

    결과 (예/AmazonLinux)
    /usr/sbin/php-fpm
    

    3. php-fpm 설정



    설정 파일 중, apache라고 기술되어 있는 곳을 nginx에 재기록합니다.

    /etc/php-fpm.d/www.conf
    ;39行目付近
    ;user = apache
    user = nginx
    
    ;41行目付近
    ;group = apache
    group = nginx
    

    4. php-fpm 시작



    명령
    sudo service php-fpm start
    

    결과 (예/AmazonLinux)
    Starting php-fpm:                                          [  OK  ]
    

    명령
    sudo chkconfig php-fpm on \
      && chkconfig --list php-fpm
    

    결과 (예/AmazonLinux)
    php-fpm         0:off   1:off   2:on    3:on    4:on    5:on    6:off
    

    5. nginx 설정 변경



    5.1 nginx 설정 변경



    /etc/nginx/nginx.conf
        # 44行目付近
        # index   index.html index.htm;
        index   index.php index.html;
    
            # 78行目付近
            #location ~ \.php$ {
            #    root           html;
            #    fastcgi_pass   127.0.0.1:9000;
            #    fastcgi_index  index.php;
            #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            #    include        fastcgi_params;
            #}
            location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
                include        fastcgi_params;
            }
    

    설정을 변경하면 설정 파일이 올바른 문법을 따르는지 확인합니다.

    명령
    sudo nginx -t
    

    결과 (예/AmazonLinux)
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    

    5.2 nginx 재부팅



    일단 nginx를 다시 시작하고 성공적으로 시작하는지 확인하십시오.

    명령
    sudo service nginx restart
    

    결과 (예/AmazonLinux)
    Stopping nginx:                                            [  OK  ]
    Starting nginx:                                            [  OK  ]
    

    6. (선택 사항) 기본 인증 설정



    여기서는 'sysadm'이라는 디렉토리에 대해 기본 인증하기로 결정합니다.

    6.1. 인증 파일용 디렉토리 작성



    인증 파일은 공개 디렉토리(/usr/share/nginx/html) 바로 아래가 아닌 곳에 둡시다.

    명령
    sudo mkdir /usr/share/nginx/credentials
    

    6.2. 인증 파일 만들기



    변수 설정
    AUTH_USER='sysadm'
    

    명령
    htpasswd -c htpasswd ${AUTH_USER}
    

    입력
    New password: 
    Re-type new password:
    

    결과(예)
    Adding password for user sysadm
    

    작성한 인증 파일을 배치합니다.

    명령
    sudo mv htpasswd /usr/share/nginx/credentials/ \
      && ls /usr/share/nginx/credentials/htpasswd
    

    6.3. 기본 인증을 위한 디렉토리 만들기



    명령
    sudo mkdir /usr/share/nginx/html/sysadm
    

    6.4. nginx 설정 변경



    sysadm 디렉토리의 설정을 nginx에 추가합니다.
    '/sysadm' 이하에서 PHP 스크립트를 실행하는 경우 php-fpm 설정도 개별적으로 필요한 것 같습니다.

    /etc/nginx/nginx.conf
            # 57行目付近に追加
            location ~ ^/sysadm/* {
              auth_basic "Welcome sysadm.";
              auth_basic_user_file /usr/share/nginx/credentials/htpasswd;
    
              location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php; 
                fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
                include        fastcgi_params;
              }
            }
    

    설정을 변경하면 설정 파일이 올바른 문법을 따르는지 확인합니다.

    명령
    sudo nginx -t
    

    결과 (예/AmazonLinux)
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    

    6.5 nginx 재부팅



    명령
    sudo service nginx restart
    

    결과 (예/AmazonLinux)
    Stopping nginx:                                            [  OK  ]
    Starting nginx:                                            [  OK  ]
    

    7. PHP 스크립트의 동작 확인



    7.1. PHP 스크립트 작성



    명령
    cat << EOF > ~/info.php 
    <?php
    phpinfo();
    EOF
    

    작성한 PHP 스크립트를 공개 디렉토리에 배치하십시오.

    명령 (기본 인증을 설정 한 경우)
    sudo cp ~/info.php /usr/share/nginx/html/sysadm/ \
      && cat /usr/share/nginx/html/sysadm/info.php
    

    명령 (기본 인증을 설정하지 않은 경우)
    sudo cp ~/info.php /usr/share/nginx/html/ \
      && cat /usr/share/nginx/html/info.php
    

    7.2. PHP 스크립트의 동작 확인



    브라우저에서 PHP 스크립트에 액세스해 봅니다.
  • 기본 인증을 설정한 경우: http:///sysadm/info.php

  • 기본 인증 대화 상자가 표시되고 사용자 이름과 암호를 입력하면 다음 화면이 표시됩니다.
  • 기본 인증을 설정하지 않은 경우 : http:///info.php

  • 다음 화면이 표시되어야 합니다.



    기본 인증을 설정하지 않은 경우 동작 확인 후에 반드시 삭제해 둡시다.

    명령
    sudo rm /usr/share/nginx/html/info.php
      && cat /usr/share/nginx/html/info.php
    

    결과(예)
    cat: /usr/share/nginx/html/info.php: そのようなファイルやディレクトリはありません
    

    완료

    좋은 웹페이지 즐겨찾기