在 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

以下是我安装后的版本信息:

image-20241205220118857

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 服务的状态。

image-20241206220512076

3,当修改了配置的时候,需要重启nginx,使配置生效的时候使用一下命令:

sudo systemctl reload nginx

4,打开你的主页

现在输入服务器IP,则可以看到nginx的默认信息页

image-20241206221121233

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

image-20241207085644160

现在,在浏览器中输入服务器的IP

image-20241207085801472


现在,已经实现在公网上查看到服务器的静态网页(html),现在我们来实现一个动态网页(php),查看php环境信息,这是经常用于测试php是否可用的方式。


PHP

这里主要修改nginx的配置使其能正常运行php程序,通过phpinfo可以查看到服务器环境中的php配置信息。

1,在网站目录下创建一个新文件,名字为index.php,文件的代码如下:

<?php
phpinfo();
?>

image-20241207090616905

此时,在浏览器访问服务器的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的指令。

image-20241207111436138

如果你忘记了你的php版本号,请使用命令php -v进行确认

3,测试Nginx配置

在保存配置文件后,测试 Nginx 配置的语法是否正确:

sudo nginx -t

如果配置正确,您将看到类似于 syntax is oktest is successful 的消息。

4,重启 Nginx 服务

测试Nginx配置后,需要使配置生效,就需要重启 Nginx 服务:

sudo systemctl restart nginx

现在,可以在浏览器中输入服务器的IP,就可以看到服务器的PHP的环境信息;

image-20241207112924663


现在NGINX + PHP 已经部署完成,接下来开始配置MySQL


配置MySQL

1. 登录 MySQL

首先,使用当前配置登录到 MySQL:

mysql -u root -p

第一次登陆是没有密码的,遇到提示输入密码的时候,直接按回车即可。

2. 设置 root 用户密码

一切顺利,则现在已经进入了MySQL的提示符输入环境中:

image-20241207160435995

在 MySQL 提示符下,执行以下命令来为 root 用户设置密码。请将 new_password 替换为您希望设置的实际密码。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';

3. 刷新权限

确保更改立即生效:

FLUSH PRIVILEGES;

4. 退出 MySQL

输入以下命令退出 MySQL:

EXIT;

image-20241207160623720

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,轻松建立你的独立站/博客/应用程序等等