通过AWS EC2设置nginx虚拟主机并启用PHP

在Apache上,使用PHP非常容易,但在nginx上需要额外的设置。
而且,每个虚拟域名都需要单独进行PHP设置。

因为无法在谷歌搜索中找到答案,所以我做了笔记。

前提:
必须以管理员权限执行。
AmazonLinux2 AMI。

安装nginx

您可以从amazon-linux-extras存储库中安装。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-install-extras-library-software/

请使用哪个命令来确认安装了amazon-linux-extras 包。

$ which amazon-linux-extras
/usr/bin/amazon-linux-extras ←このように表示されればOK

将nginx启用。
通过amazon-linux-extras命令确认nginx的注册名称。
在我的环境中,注册名称是nginx1。


まずnginxの登録名を確認
$ amazon-linux-extras 

nginxを有効にする
$ amazon-linux-extras enable nginx1

nginxを有効にする。インストールはyumコマンドでOK
$ yum install nginx

サーバー起動時にnginxも起動するように設定
$ systemctl enable nginx

設定できているか確認
$ systemctl list-unit-files -t service | grep nginx
enableになっていればOK

ついでにnginxのバージョンも確認
$ nginx -v

安装PHP

我們也會從亞馬遜下載這部分。
使用amazon-linux-extras指令來確認安裝的PHP版本。
在我的環境中,有php7.4版本。似乎還有一些舊版本。

まず phpのバージョンを確認
$ amazon-linux-extras

PHPを有効にする
$ amazon-linux-extras enable php7.4

PHPをインストールする
$ yum clean metadata && sudo yum install php-cli php-pdo php-fpm php-json php-mysqlnd

インストールできたか確認する
$ yum list installed php-cli php-pdo php-fpm php-json php-mysqlnd

サーバー起動時にphp-fpmも起動するように設定
$ systemctl enable php-fpm.service

設定できているか確認
$ systemctl list-unit-files -t service | grep php
enableになっていればOK

更改php-fpm的配置

listenの項目でUnixドメインソケットを利用するように設定し
PHP-FPMのworkerプロセスを実行するユーザーをnginxにします。
こうすることで、権限の違いによるエラーが起こりずらくなります。

在添加了`listen=/var/run/php-fpm/php-fpm.sock`的描述之后,我忘记删除初始值`listen=/run/php-fpm/www.sock`。添加完描述后,要确保它与初始值不相同。

- user = apache
- group = apache
- listen.owner=nobady
- listen.group=nobody
- listen=/run/php-fpm/www.sock

↑の記述を以下のように変更する

+ user = nginx
+ group = nginx
+ listen=/var/run/php-fpm/php-fpm.sock
+ listen.owner=nginx
+ listen.group=nginx
+ listen.mode=0660

确认/etc/php-fpm.d/www.conf文件。


cat  と grep でコメントを除いた内容を確認できます。
cat www.conf | grep -v "^\s*$" | grep -v "^\s*;"

准备nginx多域名配置

域名:test.com
文档根目录:/var/www/html/test.com

フォルダを作成します。
mkdir -p /var/www/html/test.com

テスト用のPHPフィルを作成します。
vim /var/www/html/test.com/test.php  #<?php echo 'test'; ?> などテスト用に記述

権限をnginxにします。
cd /var/www/
chown -R nginx:nginx html/
chmod -R 775 html/

在nginx中配置多域名和PHP设置。

我們要在/etc/nginx/conf.d下創建test.com.conf文件。讀取conf.d文件夾下的conf文件就像在apach中一樣。

vim /etc/nginx/conf.d/test.com.conf

在`/etx/nginx/conf.d/test.com.conf`文件中,添加以下内容:
※注意事项:
将`fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;`修改为`/etx/php-fpm.d/www.conf`文件中的`listen=/var/run/php-fpm/php-fpm.sock`。
在使用谷歌搜索并复制粘贴时出现了偏差。


server {
    listen       80;
    server_name  test.com;
    location / {
        root   /var/www/html/test.com;
        index  index.html index.htm index.php;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    location ~ \.php$ {
        root           /var/www/html/test.com;
        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;
    }
}


确认nginx和php-fpm的语法

$ php-fpm -t
$ nginx -t

重新启动nginx和php-fpm。

只需要一个选项:
※遇到了问题
不仅需要重新启动nginx,还需要重新启动php-fpm。

$ systemctl restart nginx.service
$ systemctl restart php-fpm.service

在使用Apache时,PHP可以立即执行,但在使用Nginx时,需要进行一些设置。

广告
将在 10 秒后关闭
bannerAds