在 Ubuntu 24.04 上安装和配置 Nginx,PHP 和 MySQL 的完整指南
目录
本文的演示例子的系统版本:
显示 Linux 发行版信息的命令,提供了有关操作系统版本的详细信息。命令行输入:lsb_release -a
,返回以下信息:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 24.04.1 LTS
Release: 24.04
Codename: noble
显示CPU架构,命令行输入 uname -m
,返回以下信息:
x86_64
一般命令行输入ssh root@xxx.xxx.xx.x
,再输入密码,进行远程登陆。
首次登陆远程的服务器,首先先做一些基本操作:
1 更新软件包列表
sudo apt-get update -y
- 解释: 这个命令会更新系统的软件包索引,使得系统了解最新的可用软件包和它们的版本信息。
-y
参数表示自动回答“是”以确认操作。
2 升级已安装的软件包
sudo apt-get upgrade
- 解释: 这个命令会升级系统中所有已安装的软件包到最新版本。它会根据更新的软件包列表下载并安装可用的更新。
准备就绪,开始SET场
安装Nginx
安装 Nginx,这是一个高性能的 HTTP 和反向代理服务器。-y
参数自动确认安装,无需手动干预。
sudo apt-get install nginx -y
检查是否安装成功,可以通过查看版本信息进行验证
nginx -v
安装PHP及其扩展
PHP是服务器端脚本语言,wordpress就是使用该语言开发的。
sudo apt install php8.3-fpm php8.3-common php8.3-mysql php8.3-xml php8.3-curl php8.3-gd php8.3-mbstring php8.3-opcache php8.3-zip php8.3-intl -y
- 解释: 这一系列命令安装 PHP 8.3 及其多个扩展:
php8.3-fpm
: PHP FastCGI 进程管理器,用于处理 PHP 请求。php8.3-common
: PHP 的公共文件。php8.3-mysql
: PHP 与 MySQL 数据库的接口。php8.3-xml
: 处理 XML 的扩展。php8.3-curl
: 允许 PHP 通过 URL 进行数据传输。php8.3-gd
: 图像处理库。php8.3-mbstring
: 处理多字节字符串。php8.3-opcache
: 提高 PHP 代码执行效率的缓存。php8.3-zip
: 处理 ZIP 压缩包。php8.3-intl
: 国际化函数。
-y
参数同样用于自动确认安装。
php -v
安装MySql
sudo apt-get install mysql-server -y
- 解释: 安装 MySQL 数据库服务器,用于存储和管理数据。
-y
参数自动确认安装。
mysql --version
以下是我安装后的版本信息:
nginx 1.24.0
php 8.3
MySQL 8.0.40
所有需要安装都安装完毕,现在我们一步步进行服务器的配置
配置环境
NGINX
1,启动nginx服务
sudo systemctl enable nginx
sudo systemctl start nginx
enable:设置 Nginx 服务在系统启动时自动启动。
start:立即启动 Nginx 服务。
2,验证Nginx服务是否启动成功
sudo systemctl status nginx
status:查看 Nginx 服务的状态。
3,当修改了配置的时候,需要重启nginx,使配置生效的时候使用一下命令:
sudo systemctl reload nginx
4,打开你的主页
现在输入服务器IP,则可以看到nginx的默认信息页
PS:要注意的是,要查看服务器的安全组规则入方向是否有开启80端口?如果以后需要SSL服务的则还需要开启443端口。
现在有几个概念需要知道的
1,Nginx的配置文件存放的位置?
在这次的Ubuntu环境中,Nginx的存放位置在以下目录中:
cd /etc/nginx/sites-enabled
使用cd打开该目录,可以看到里面已经有一个default
的配置,这是范例文件,里面都注释了配置信息,以供参考。
2,是什么文件决定了Nginx的配置文件存放的位置?
Nginx的配置非常灵活,可以一个网站一个配置文件进行管理,那么是哪个文件决定的呢?可以在命令行用cat打开这个文件:
cat /etc/nginx/nginx.conf
可以看到该配置文件有两行内容如下:
...
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
...
这些目录,存放的就是Nginx的配置文件。
3,网站存放在哪里?
我们可以打开默认的配置信息
nano /etc/nginx/sites-enabled/default
可以看到里面有一些信息,其中:
server {
listen 80 default_server;
listen [::]:80 default_server;
...
root /var/www/html;
...
}
这里的root
即是网站的默认目录,可以在这个/var/www/html
目录里新建一个index.html
文件,例如
cd /var/www/html
nano index.html
index.html的内容如下:
hello lingshunlab.com
现在,在浏览器中输入服务器的IP
现在,已经实现在公网上查看到服务器的静态网页(html),现在我们来实现一个动态网页(php),查看php环境信息,这是经常用于测试php是否可用的方式。
PHP
这里主要修改nginx的配置使其能正常运行php程序,通过phpinfo可以查看到服务器环境中的php配置信息。
1,在网站目录下创建一个新文件,名字为index.php
,文件的代码如下:
<?php
phpinfo();
?>
此时,在浏览器访问服务器的IP,仍然是显示静态的index.html文件,接下来我们需要修改Nginx的配置文件
2,修改配置使其支持php
打开配置文件:nano /etc/nginx/sites-enabled/default
修改里面的配置,以下是完整的配置:
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;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
这里的信息可能因为你安装的不同版本,将会有所不同,这个路径可以找到对应的php的配置文件:cd /etc/php/8.3/fpm/pool.d
里面listen的指令。如果你忘记了你的php版本号,请使用命令
php -v
进行确认
3,测试Nginx配置
在保存配置文件后,测试 Nginx 配置的语法是否正确:
sudo nginx -t
如果配置正确,您将看到类似于 syntax is ok
和 test is successful
的消息。
4,重启 Nginx 服务
测试Nginx配置后,需要使配置生效,就需要重启 Nginx 服务:
sudo systemctl restart nginx
现在,可以在浏览器中输入服务器的IP,就可以看到服务器的PHP的环境信息;
现在NGINX + PHP 已经部署完成,接下来开始配置MySQL
配置MySQL
1. 登录 MySQL
首先,使用当前配置登录到 MySQL:
mysql -u root -p
第一次登陆是没有密码的,遇到提示输入密码的时候,直接按回车即可。
2. 设置 root
用户密码
一切顺利,则现在已经进入了MySQL的提示符输入环境中:
在 MySQL 提示符下,执行以下命令来为 root
用户设置密码。请将 new_password
替换为您希望设置的实际密码。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';
3. 刷新权限
确保更改立即生效:
FLUSH PRIVILEGES;
4. 退出 MySQL
输入以下命令退出 MySQL:
EXIT;
5. 验证密码设置
尝试使用新密码登录 MySQL,以确保密码设置成功:
mysql -u root -p
系统会提示您输入密码。输入您刚才设置的 new_password
。(new_password这里改成你想要的密码,这里只是演示)
6. 其他注意事项
- 安全性:确保选择一个强密码,包含字母、数字和特殊字符,以提高安全性。
- 配置文件:如果您在
/etc/mysql/my.cnf
或其他 MySQL 配置文件中有skip-grant-tables
选项,请将其注释掉或删除,以确保 MySQL 正常使用密码验证。 - 远程访问:如果需要从远程主机访问 MySQL,请确保在防火墙中开放相应的端口(通常是 3306),并在 MySQL 中配置允许远程访问的用户。
通过这些步骤,您可以为 MySQL root
用户设置密码,从而提高数据库的安全性。如果在执行过程中遇到任何问题,请确保 MySQL 服务正在运行,并检查 MySQL 错误日志以获取更多信息。
现在已经配置好Nginx + PHP + MySQL的基础环境了。之后就可以开始进行安装Wordpress,轻松建立你的独立站/博客/应用程序等等