ubuntu 22.04安装php8.1 并设置nginx为运行用户

2023-05-05by@2747736845-IWkau&@ChatGPT.Model: gpt-3.5
2747736845-IWkau

ubuntu 22.04安装php8.1 并设置nginx为运行用户

Avatar
Avatar

以下是在Ubuntu 22.04上安装PHP 8.1并设置Nginx为运行用户的步骤:

  1. 安装PHP 8.1

首先,添加Ondrej Sury的PPA存储库以获取PHP 8.1软件包:

sudo add-apt-repository ppa:ondrej/php

更新apt软件包列表:

sudo apt update

安装PHP 8.1:

sudo apt install php8.1-fpm php8.1-mysql php8.1-curl php8.1-gd php8.1-intl php8.1-mbstring php8.1-soap php8.1-xml php8.1-zip

  1. 配置Nginx

打开Nginx的默认配置文件:

sudo nano /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:/var/run/php/php7.4-fpm.sock;

# With php-cgi (or other tcp sockets):

#fastcgi_pass 127.0.0.1:9000;

#}

将其替换为:

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/php8.1-fpm.sock;
# With php-cgi (or other tcp sockets):
#fastcgi_pass 127.0.0.1:9000;

}

保存并关闭文件。

  1. 设置Nginx运行用户

打开Nginx的配置文件:

sudo nano /etc/nginx/nginx.conf

找到以下行:

user www-data;
worker_processes auto;

将其替换为:

user nginx;
worker_processes auto;

保存并关闭文件。

  1. 重启Nginx和PHP-FPM

使用以下命令重启Nginx和PHP-FPM:

sudo systemctl restart nginx
sudo systemctl restart php8.1-fpm

现在,您已经成功安装PHP 8.1并将Nginx设置为以nginx用户身份运行。

2747736845-IWkau

nginx: [emerg] getpwnam("nginx") failed in /etc/nginx/nginx.conf:1

Avatar
Avatar

这个错误提示意味着Nginx无法找到名为“nginx”的用户。这通常是因为在安装Nginx时未创建该用户。

您可以使用以下命令创建“nginx”用户:

sudo useradd -s /sbin/nologin nginx

然后,将Nginx配置文件中的“user”行更改为:

user nginx;

保存并关闭文件,然后重新启动Nginx:

sudo systemctl restart nginx

现在,Nginx应该能够以“nginx”用户身份正常运行。

2747736845-IWkau

nginx: [emerg] unknown directive "pass" in /etc/nginx/sites-enabled/default:5

Avatar
Avatar

这个错误提示意味着Nginx无法识别“pass”指令。这通常是由于配置文件中使用了错误的语法或拼写错误。

在Nginx中,将请求转发到FastCGI服务器的指令是“fastcgi_pass”。因此,您需要将“pass”指令更改为“fastcgi_pass”。

打开Nginx的默认配置文件:

sudo nano /etc/nginx/sites-enabled/default

找到以下行:

location ~ .php$ {
include snippets/fastcgi-php.conf;
pass unix:/run/php/php7.4-fpm.sock;
}

将其替换为:

location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}

请注意,我们将“pass”指令替换为“fastcgi_pass”,并将PHP-FPM套接字的路径更改为PHP 8.1版本的路径。

保存并关闭文件,然后重新启动Nginx:

sudo systemctl restart nginx

现在,Nginx应该能够正常读取默认配置文件并将请求转发到PHP 8.1版本的FastCGI服务器。

2747736845-IWkau

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'. 翻译中文,并告诉我怎么做

Avatar
Avatar

这段信息是在安装MariaDB时显示的,提醒您设置root用户的密码或使用unix_socket来保护root用户,以确保没有未经授权的用户可以登录到MariaDB的root用户。

如果您已经设置了root用户的密码,或者使用了unix_socket来保护root用户,则可以安全地回答“n”,否则建议您设置root用户的密码或使用unix_socket来保护root用户。

要设置root用户的密码,请按照以下步骤操作:

  1. 打开MariaDB:

sudo mysql

  1. 为root用户设置密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_password';

请将“your_password”替换为您想要设置的密码。

  1. 退出MariaDB:

quit;

如果您想使用unix_socket来保护root用户,则可以按照以下步骤操作:

  1. 打开MariaDB:

sudo mysql

  1. 创建一个名为“root”的用户,使用unix_socket身份验证:

CREATE USER 'root'@'localhost' IDENTIFIED VIA unix_socket;

  1. 将此用户分配为root:

GRANT ALL PRIVILEGES ON . TO 'root'@'localhost';

  1. 退出MariaDB:

quit;

完成上述步骤后,您可以回答“n”,因为您已经保护了root用户。

2747736845-IWkau

Job for nginx.service failed.

Avatar
Avatar

这个错误提示意味着Nginx服务无法启动或执行操作失败。这可能是由于配置文件中的错误、端口冲突或其他问题导致的。

以下是一些可能的解决方法:

  1. 检查Nginx配置文件是否存在语法错误:

使用以下命令检查Nginx配置文件是否存在语法错误:

sudo nginx -t

如果有语法错误,则会显示相应的错误消息。您需要修复这些错误并重新测试。

  1. 检查端口是否被其他程序占用:

如果其他程序正在使用Nginx所需的端口(通常是80或443),则Nginx将无法启动。您可以使用以下命令查看端口占用情况:

sudo netstat -tlnp | grep ':80|:443'

如果端口被其他程序占用,请释放端口或更改Nginx配置文件中所使用的端口。

  1. 检查Nginx日志:

Nginx的日志文件通常位于“/var/log/nginx/”目录下。您可以查看这些日志文件以了解Nginx服务启动失败的原因。

例如,使用以下命令查看错误日志:

sudo cat /var/log/nginx/error.log

  1. 重新安装Nginx:

如果上述方法无法解决问题,您可以尝试重新安装Nginx。首先,卸载Nginx:

sudo apt remove nginx

然后重新安装它:

sudo apt install nginx

以上是一些可能的解决方法。如果问题仍然存在,请尝试查找其他错误消息或寻求进一步的技术支持。

2747736845-IWkau

nginx: [emerg] no port in upstream "php-fpm" in /etc/nginx/conf.d/test3.freeliunx.one.conf:14

Avatar
Avatar

这个错误提示意味着Nginx配置文件中指定的upstream主机没有指定端口号。在Nginx配置文件中,upstream用于定义代理服务器和后端服务器之间的连接。

您需要在upstream中指定主机和端口号。例如,如果您的PHP-FPM套接字位于本地主机上的9000端口,则upstream应该如下所示:

upstream php-fpm {
server 127.0.0.1:9000;
}

请检查您的Nginx配置文件中的upstream指令,并确保已指定正确的主机和端口号。

如果您正在使用Unix套接字而不是TCP套接字,则应该使用以下格式:

upstream php-fpm {
server unix:/run/php/php8.1-fpm.sock;
}

请注意,unix:前缀指定了套接字的类型,/run/php/php8.1-fpm.sock是PHP-FPM套接字的路径,应该根据您的实际路径进行更改。

更新完配置文件后,检查配置文件是否有语法错误:

sudo nginx -t

如果没有错误,则重新启动Nginx:

sudo systemctl restart nginx

现在,Nginx应该能够正确读取upstream配置并连接到PHP-FPM服务器。

2747736845-IWkau

在upstream中指定主机和端口号

Avatar
Avatar

An error occurred with your deployment

EDGE_FUNCTION_INVOCATION_TIMEOUT

2747736845-IWkau

在upstream中指定主机和端口号

Avatar