ubuntu 22.04安装php8.1 并设置nginx为运行用户
以下是在Ubuntu 22.04上安装PHP 8.1并设置Nginx为运行用户的步骤:
首先,添加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
打开Nginx的默认配置文件:
sudo nano /etc/nginx/sites-available/default
找到以下行:
#location ~ .php$ {
#}
将其替换为:
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;
}
保存并关闭文件。
打开Nginx的配置文件:
sudo nano /etc/nginx/nginx.conf
找到以下行:
user www-data;
worker_processes auto;
将其替换为:
user nginx;
worker_processes auto;
保存并关闭文件。
使用以下命令重启Nginx和PHP-FPM:
sudo systemctl restart nginx
sudo systemctl restart php8.1-fpm
现在,您已经成功安装PHP 8.1并将Nginx设置为以nginx用户身份运行。
nginx: [emerg] getpwnam("nginx") failed in /etc/nginx/nginx.conf:1
这个错误提示意味着Nginx无法找到名为“nginx”的用户。这通常是因为在安装Nginx时未创建该用户。
您可以使用以下命令创建“nginx”用户:
sudo useradd -s /sbin/nologin nginx
然后,将Nginx配置文件中的“user”行更改为:
user nginx;
保存并关闭文件,然后重新启动Nginx:
sudo systemctl restart nginx
现在,Nginx应该能够以“nginx”用户身份正常运行。
nginx: [emerg] unknown directive "pass" in /etc/nginx/sites-enabled/default:5
这个错误提示意味着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服务器。
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'. 翻译中文,并告诉我怎么做
这段信息是在安装MariaDB时显示的,提醒您设置root用户的密码或使用unix_socket来保护root用户,以确保没有未经授权的用户可以登录到MariaDB的root用户。
如果您已经设置了root用户的密码,或者使用了unix_socket来保护root用户,则可以安全地回答“n”,否则建议您设置root用户的密码或使用unix_socket来保护root用户。
要设置root用户的密码,请按照以下步骤操作:
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_password';
请将“your_password”替换为您想要设置的密码。
quit;
如果您想使用unix_socket来保护root用户,则可以按照以下步骤操作:
sudo mysql
CREATE USER 'root'@'localhost' IDENTIFIED VIA unix_socket;
GRANT ALL PRIVILEGES ON . TO 'root'@'localhost';
quit;
完成上述步骤后,您可以回答“n”,因为您已经保护了root用户。
Job for nginx.service failed.
这个错误提示意味着Nginx服务无法启动或执行操作失败。这可能是由于配置文件中的错误、端口冲突或其他问题导致的。
以下是一些可能的解决方法:
使用以下命令检查Nginx配置文件是否存在语法错误:
sudo nginx -t
如果有语法错误,则会显示相应的错误消息。您需要修复这些错误并重新测试。
如果其他程序正在使用Nginx所需的端口(通常是80或443),则Nginx将无法启动。您可以使用以下命令查看端口占用情况:
sudo netstat -tlnp | grep ':80|:443'
如果端口被其他程序占用,请释放端口或更改Nginx配置文件中所使用的端口。
Nginx的日志文件通常位于“/var/log/nginx/”目录下。您可以查看这些日志文件以了解Nginx服务启动失败的原因。
例如,使用以下命令查看错误日志:
sudo cat /var/log/nginx/error.log
如果上述方法无法解决问题,您可以尝试重新安装Nginx。首先,卸载Nginx:
sudo apt remove nginx
然后重新安装它:
sudo apt install nginx
以上是一些可能的解决方法。如果问题仍然存在,请尝试查找其他错误消息或寻求进一步的技术支持。
nginx: [emerg] no port in upstream "php-fpm" in /etc/nginx/conf.d/test3.freeliunx.one.conf:14
这个错误提示意味着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服务器。
在upstream中指定主机和端口号
An error occurred with your deployment
EDGE_FUNCTION_INVOCATION_TIMEOUT
在upstream中指定主机和端口号