只需要一种选择,用中文进行转述:在AmazonLinux2上安装PHP8.1和nginx,并显示phpinfo();,直到成功
要使用Laravel9,需要PHP8.1,但amazon-linux-extras只提供PHP8.0。在查找的过程中,我遇到了php-fpm和nginx的配置问题,因此决定记录下备忘录。
在完成所有的工作之后,我写了这篇文章,如果有任何遗漏或错误,请指出并告知。非常感谢,请多多关照。
安装 PHP8.1
由于Amazon Linux Extras只提供了PHP8.0版本,因此您需要安装epel和remi。
sudo amazon-linux-extras install epel -y
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
安装PHP8.1和PHP-FPM
sudo yum install php81 php81-php-fpm
如果使用Laravel9,情况会是这样的。
sudo yum install php81 php81-php-mbstring php81-php-mysqlnd php81-php-gd php81-php-xml php81-php-fpm
我会在php中为您配置好以调用php81的设置。
sudo alternatives --install /usr/bin/php php /usr/bin/php81 1
(参考)使用Laravel需要先安装Composer。我参考了官方文档。
sudo php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
sudo php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
sudo php composer-setup.php
sudo php -r "unlink('composer-setup.php');"
nginx的安装和准备conf文件
我会安装nginx。
sudo amazon-linux-extras install nginx1
编辑/etc/nginx/nginx.conf文件中的root目录。
root /var/www/app/public;
在/etc/nginx/conf.d/目录下生成nginx的conf文件。
我认为以下两点是要点。
-
- rootディレクトリを先ほどのnginx.confと合わせる
- fastcgi_passをphp81のwww.sockにする
server {
listen 80;
charset UTF-8;
root /var/www/app/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_pass unix:/var/opt/remi/php81/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
将index.php放置在此处指定的root/var/www/app/public内。
<?php
phpinfo();
?>
将php-fpm与nginx一起使用。
我将编辑php-fpm的www.conf文件。
我在编辑这个录音时卡住了,因为没有写明哪里需要修改。
listen = /var/opt/remi/php81/run/php-fpm/www.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
;listen.acl_users = apache,nginx
启动nginx和php-fpm。
将它们都启动并启用自动启动。
sudo systemctl start php81-php-fpm
sudo systemctl enable php81-php-fpm
sudo systemctl start nginx
sudo systemctl enable nginx
这就完成了。当访问EC2实例的公共IPv4地址时,会显示phpinfo();。