Raspberry Pi OS에 Nginx&PHP를 설치하여 웹 서버를 구축

제한사항



웹 서비스용이 아니고, http 프로토콜 관계의 실험용이므로, 데이터베이스 서버의 인스톨은 하고 있지 않습니다.
PHP는 필요 없을지도 모르지만, 일단.
LAN 내의 독립 서버를 가정합니다. 그래서 보안이라든지 생각하지 않습니다.

OS&HW 버전 확인


$ lsb_release -a #OSのバージョンを確認
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 10 (buster)
Release:    10
Codename:   buster
$ uname -a #カーネルのバージョンを確認
Linux capybara 5.4.79-v7+ #1373 SMP Mon Nov 23 13:22:33 GMT 2020 armv7l GNU/Linux
$ cat /proc/device-tree/model #ハードウェアのモデルを確認
Raspberry Pi 3 Model B Rev 1.2

Nginx 설치


$ sudo apt update
$ sudo apt install nginx

호스트명 지정으로 /var/www/html/index.html 가 표시되는 것을 확인한다.


Nginx 설정



fastcgi_params



Nginx에서 PHP를 움직이기위한 설정 추가
$ sudo echo 'fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;' | sudo tee -a /etc/nginx/fastcgi_params
tee-a 옵션 잊으면 추기가 아니고 덮어쓰기 버리니까 주의.
$ sudo nginx -t #構文チェック
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

PHP 설치


$ apt list | grep PHP | grep fpm #インストールできるバージョンの確認
php-fpm/stable,now 2:7.3+69 all
php7.1-fpm/stable 7.1.20-1+b2 armhf
php7.2-fpm/stable 7.2.9-1+b2 armhf
php7.3-fpm/stable,now 7.3.19-1~deb10u1 armhf

위의 예라면, php7.1 php7.2 php7.3를 지정하면 자동으로 최신 php-fpm가 설치됩니다.
$ sudo apt-get install php-fpm #PHPをインストール
$ apt list | grep php | grep fpm #確認
php-fpm/stable,now 2:7.3+69 all [インストール済み]
php7.1-fpm/stable 7.1.20-1+b2 armhf
php7.2-fpm/stable 7.2.9-1+b2 armhf
php7.3-fpm/stable,now 7.3.19-1~deb10u1 armhf [インストール済み、自動]

Nginx에서 PHP가 실행되도록


php7.3
수정 전
# Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html;

수정 후 (index.php 추가)
# Add index.php to the list if you are using PHP
    index index.php index.html index.htm index.nginx-debian.html;

수정 전
    # pass PHP scripts to FastCGI server
    #
    #location ~ \.php$ {
    #    include snippets/fastcgi-php.conf;
    #
    #    # With php-fpm (or other unix sockets):
    #    fastcgi_pass unix:/run/php/php7.3-fpm.sock;
    #    # With php-cgi (or other tcp sockets):
    #   fastcgi_pass 127.0.0.1:9000;
    }

수정 후 (댓글 아웃 제거/sudo vim /etc/nginx/sites-available/default 추가)
    # pass PHP scripts to FastCGI server
    #
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;

        # With php-fpm (or other unix sockets):
        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
        # With php-cgi (or other tcp sockets):
    #   fastcgi_pass 127.0.0.1:9000;
        include fastcgi_params;
    }

최종형
# Default server configuration
#
server {
    listen 80 default_server;
    listen [::]:80 default_server;

    # SSL configuration
    #
    # listen 443 ssl default_server;
    # listen [::]:443 ssl default_server;
    #
    # Note: You should disable gzip for SSL traffic.
    # See: https://bugs.debian.org/773332
    #
    # Read up on ssl_ciphers to ensure a secure configuration.
    # See: https://bugs.debian.org/765782
    #
    # Self signed certs generated by the ssl-cert package
    # Don't use them in a production server!
    #
    # include snippets/snakeoil.conf;

    root /var/www/html;

    # Add index.php to the list if you are using PHP
    index index.php index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
    }

    # pass PHP scripts to FastCGI server
    #
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;

        # With php-fpm (or other unix sockets):
        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
        # With php-cgi (or other tcp sockets):
    #   fastcgi_pass 127.0.0.1:9000;
        include fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #   deny all;
    #}
}

sudo nginx -t #構文テスト

확인용 페이지 작성(index.php)


include fastcgi_params;sudo vim /var/www/html 를 작성한다.
<?php
phpinfo();

PHP 페이지 표시 테스트


$ sudo systemctl restart nginx

브라우저에서 호스트 이름을 지정하여 액세스. index.php 대신 index.html가 표시되는지 확인합니다.


- 이상 -

좋은 웹페이지 즐겨찾기