Loading... # Ubuntu 下 LNMP 简单安装教程 在Web开发和部署中,**LNMP**(Linux、Nginx、MySQL、PHP)是一种常见且高效的技术栈组合。**Ubuntu** 作为广泛使用的Linux发行版,提供了稳定和安全的环境,适合搭建LNMP架构。本文将详细介绍在Ubuntu系统下安装和配置LNMP环境的步骤,包括各组件的安装、配置以及常见问题的解决方案,帮助您快速搭建功能完善的Web服务器。 ## 目录 1. [前言](#前言) 2. [前提条件与准备工作](#前提条件与准备工作) - [系统更新](#系统更新) - [安装必要的依赖库](#安装必要的依赖库) 3. [安装与配置 Nginx](#安装与配置-nginx) - [安装 Nginx](#安装-nginx) - [配置防火墙允许 HTTP 和 HTTPS 流量](#配置防火墙允许-http-和-https-流量) - [测试 Nginx 安装](#测试-nginx-安装) 4. [安装与配置 MySQL](#安装与配置-mysql) - [安装 MySQL](#安装-mysql) - [安全配置 MySQL](#安全配置-mysql) - [创建数据库和用户](#创建数据库和用户) 5. [安装与配置 PHP](#安装与配置-php) - [安装 PHP 及必要扩展](#安装-php-及必要扩展) - [配置 PHP-FPM](#配置-php-fpm) - [测试 PHP 安装](#测试-php-安装) 6. [配置 Nginx 以支持 PHP](#配置-nginx-以支持-php) - [创建 Nginx 服务器块](#创建-nginx-服务器块) - [配置虚拟主机](#配置虚拟主机) - [测试 LNMP 环境](#测试-lnmp-环境) 7. [常见问题及解决方案](#常见问题及解决方案) - [问题一:Nginx 无法启动](#问题一nginx-无法启动) - [问题二:无法连接到 MySQL 数据库](#问题二无法连接到-mysql-数据库) - [问题三:PHP 页面显示错误或不执行](#问题三php-页面显示错误或不执行) - [问题四:权限问题导致无法访问网站文件](#问题四权限问题导致无法访问网站文件) 8. [最佳实践与优化建议](#最佳实践与优化建议) - [使用强密码和安全配置](#使用强密码和安全配置) - [优化 Nginx 性能](#优化-nginx-性能) - [定期备份数据库](#定期备份数据库) - [监控服务器性能](#监控服务器性能) 9. [分析说明表](#分析说明表) 10. [总结](#总结) --- ## 前言 **LNMP**(Linux、Nginx、MySQL、PHP)架构因其高效、稳定和灵活性,成为Web服务器搭建的热门选择。**Ubuntu** 20.04作为一款长期支持(LTS)版本,具备良好的软件包管理和社区支持,是搭建LNMP环境的理想平台。通过本文的详细指导,您将能够在Ubuntu系统下顺利安装和配置LNMP环境,快速部署Web应用。 ## 前提条件与准备工作 在开始安装之前,需要确保系统满足以下条件,并完成必要的准备工作。 ### 系统更新 在安装任何新软件之前,确保您的系统软件包是最新的,以避免潜在的兼容性问题。 ```bash sudo apt update sudo apt upgrade -y ``` **解释**: - `sudo apt update`:更新本地包索引,确保获取最新的软件包信息。 - `sudo apt upgrade -y`:升级所有已安装的软件包到最新版本,`-y` 参数表示自动确认。 ### 安装必要的依赖库 某些软件包在编译或运行时依赖特定的库和工具,提前安装这些依赖项可以避免后续安装过程中的错误。 ```bash sudo apt install -y software-properties-common ``` **解释**: - `software-properties-common`:提供 `add-apt-repository`命令,便于添加PPA源。 ## 安装与配置 Nginx **Nginx**是一款高性能的Web服务器,广泛应用于负载均衡、反向代理等场景。 ### 安装 Nginx 1. **添加官方 Nginx PPA 源**: ```bash sudo add-apt-repository ppa:nginx/stable sudo apt update ``` **解释**: - `add-apt-repository ppa:nginx/stable`:添加Nginx官方稳定版PPA源,获取最新稳定版本。 - `sudo apt update`:更新包索引以包含新添加的PPA源。 2. **安装 Nginx**: ```bash sudo apt install -y nginx ``` **解释**: - `nginx`:安装Nginx服务器。 - `-y`:自动确认安装。 ### 配置防火墙允许 HTTP 和 HTTPS 流量 确保服务器的防火墙允许HTTP(80端口)和HTTPS(443端口)流量通过。 ```bash sudo ufw allow 'Nginx Full' sudo ufw enable ``` **解释**: - `ufw allow 'Nginx Full'`:允许Nginx的HTTP和HTTPS流量。 - `ufw enable`:启用防火墙,保护系统安全。 ### 测试 Nginx 安装 启动Nginx并检查其状态,确保安装成功。 ```bash sudo systemctl start nginx sudo systemctl enable nginx sudo systemctl status nginx ``` **解释**: - `sudo systemctl start nginx`:启动Nginx服务。 - `sudo systemctl enable nginx`:设置Nginx开机自启。 - `sudo systemctl status nginx`:检查Nginx服务状态,确保其正在运行。 打开浏览器,访问服务器的IP地址,如果看到“Nginx 欢迎页面”,则表示Nginx安装成功。 ## 安装与配置 MySQL **MySQL**是最常用的关系型数据库管理系统,提供可靠的数据存储和查询功能。 ### 安装 MySQL 1. **安装 MySQL 服务器**: ```bash sudo apt install -y mysql-server ``` **解释**: - `mysql-server`:安装MySQL服务器组件。 - `-y`:自动确认安装。 2. **启动并启用 MySQL 服务**: ```bash sudo systemctl start mysql sudo systemctl enable mysql sudo systemctl status mysql ``` **解释**: - `sudo systemctl start mysql`:启动MySQL服务。 - `sudo systemctl enable mysql`:设置MySQL开机自启。 - `sudo systemctl status mysql`:检查MySQL服务状态,确保其正在运行。 ### 安全配置 MySQL 执行安全脚本,增强MySQL的安全性,设置root密码,移除匿名用户等。 ```bash sudo mysql_secure_installation ``` **解释**: - 该命令启动MySQL安全配置向导,按提示设置root密码,删除匿名用户,禁止root远程登录,删除测试数据库,并重新加载权限表。 ### 创建数据库和用户 为您的Web应用创建独立的数据库和用户,确保数据安全。 1. **登录MySQL**: ```bash sudo mysql -u root -p ``` **解释**: - `-u root`:以root用户身份登录。 - `-p`:提示输入密码。 2. **创建数据库**: ```sql CREATE DATABASE mywebsite; ``` **解释**: - `CREATE DATABASE mywebsite;`:创建名为 `mywebsite`的数据库。 3. **创建数据库用户并授予权限**: ```sql CREATE USER 'webuser'@'localhost' IDENTIFIED BY 'password123'; GRANT ALL PRIVILEGES ON mywebsite.* TO 'webuser'@'localhost'; FLUSH PRIVILEGES; ``` **解释**: - `CREATE USER 'webuser'@'localhost' IDENTIFIED BY 'password123';`:创建名为 `webuser`的用户,密码为 `password123`。 - `GRANT ALL PRIVILEGES ON mywebsite.* TO 'webuser'@'localhost';`:授予 `webuser`用户对 `mywebsite`数据库的所有权限。 - `FLUSH PRIVILEGES;`:刷新权限表,使权限更改立即生效。 4. **退出MySQL**: ```sql EXIT; ``` **解释**: - 退出MySQL命令行界面。 ## 安装与配置 PHP **PHP**是服务器端脚本语言,广泛用于动态网页开发。 ### 安装 PHP 及必要扩展 安装PHP及其与MySQL和Nginx集成所需的扩展。 ```bash sudo apt install -y php-fpm php-mysql ``` **解释**: - `php-fpm`:PHP FastCGI Process Manager,用于处理PHP请求。 - `php-mysql`:PHP MySQL扩展,允许PHP与MySQL数据库交互。 ### 配置 PHP-FPM 确保PHP-FPM与Nginx协同工作,配置PHP-FPM监听正确的套接字。 1. **编辑PHP-FPM配置文件**: ```bash sudo nano /etc/php/7.4/fpm/pool.d/www.conf ``` **解释**: - 打开PHP-FPM的池配置文件,通常位于 `/etc/php/7.4/fpm/pool.d/www.conf`,根据PHP版本可能有所不同。 2. **设置监听地址为Unix套接字**: 找到以下行: ```ini listen = /run/php/php7.4-fpm.sock ``` 确保 `listen`指向正确的Unix套接字路径。 3. **保存并退出**: - 按 `Ctrl + X`,然后按 `Y` 确认保存,最后按 `Enter` 退出编辑器。 4. **重启PHP-FPM服务**: ```bash sudo systemctl restart php7.4-fpm ``` **解释**: - 重启PHP-FPM服务,使配置更改生效。 ### 测试 PHP 安装 创建一个测试PHP文件,验证PHP是否正确运行。 1. **创建测试文件**: ```bash sudo nano /var/www/html/info.php ``` **解释**: - 在Nginx默认的根目录 `/var/www/html`下创建 `info.php`文件。 2. **添加PHP信息代码**: ```php <?php phpinfo(); ?> ``` **解释**: - `phpinfo()`函数输出PHP的配置信息,便于测试和调试。 3. **保存并退出**: - 按 `Ctrl + X`,然后按 `Y` 确认保存,最后按 `Enter` 退出编辑器。 4. **访问测试页面**: 在浏览器中访问 `http://your_server_ip/info.php`,如果看到PHP配置信息页面,说明PHP安装成功。 **重要事项**:**测试完成后,删除 `info.php`文件以防止敏感信息泄露。** ```bash sudo rm /var/www/html/info.php ``` **解释**: - 删除测试文件,提升服务器安全性。 ## 配置 Nginx 以支持 PHP 将Nginx配置为处理PHP请求,并与PHP-FPM协同工作。 ### 创建 Nginx 服务器块 为您的网站创建一个新的Nginx服务器块,配置其基本设置。 1. **创建服务器块文件**: ```bash sudo nano /etc/nginx/sites-available/mywebsite ``` **解释**: - 在 `/etc/nginx/sites-available`目录下创建一个名为 `mywebsite`的配置文件。 2. **添加服务器配置**: ```nginx server { listen 80; server_name example.com www.example.com; root /var/www/mywebsite; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; } location ~ /\.ht { deny all; } } ``` **解释**: - `listen 80;`:监听80端口,处理HTTP请求。 - `server_name example.com www.example.com;`:定义服务器名称,替换为您的域名。 - `root /var/www/mywebsite;`:设置网站根目录,需确保该目录存在并拥有正确权限。 - `index index.php index.html index.htm;`:定义默认首页文件。 - `location /`:配置请求处理,使用 `try_files`指令尝试访问请求的文件或目录,若不存在则返回404错误。 - `location ~ \.php$`:配置PHP文件的处理方式,包含FastCGI配置并指定PHP-FPM套接字。 - `location ~ /\.ht`:阻止访问 `.ht`开头的文件,提升安全性。 3. **创建网站根目录并设置权限**: ```bash sudo mkdir -p /var/www/mywebsite sudo chown -R $USER:$USER /var/www/mywebsite sudo chmod -R 755 /var/www/mywebsite ``` **解释**: - `mkdir -p /var/www/mywebsite`:创建网站根目录。 - `chown -R $USER:$USER /var/www/mywebsite`:将目录所有权赋予当前用户。 - `chmod -R 755 /var/www/mywebsite`:设置目录权限,确保Nginx可以访问。 4. **启用服务器块**: ```bash sudo ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/ ``` **解释**: - 创建符号链接,使Nginx启用新创建的服务器块配置。 5. **测试 Nginx 配置**: ```bash sudo nginx -t ``` **解释**: - 检查Nginx配置文件是否存在语法错误,确保配置正确。 6. **重新加载 Nginx**: ```bash sudo systemctl reload nginx ``` **解释**: - 重新加载Nginx服务,使新配置生效。 ### 配置虚拟主机 为您的网站创建一个基本的PHP页面,验证LNMP环境是否正常工作。 1. **创建PHP测试文件**: ```bash nano /var/www/mywebsite/index.php ``` **解释**: - 在网站根目录下创建 `index.php`文件。 2. **添加PHP代码**: ```php <?php echo "Hello, LNMP on Ubuntu!"; ?> ``` **解释**: - 简单的PHP代码,输出文本,验证PHP处理是否正常。 3. **保存并退出**: - 按 `Ctrl + X`,然后按 `Y` 确认保存,最后按 `Enter` 退出编辑器。 4. **访问网站**: 在浏览器中访问 `http://example.com`,如果看到“Hello, LNMP on Ubuntu!”的消息,说明LNMP环境配置成功。 ## 测试 LNMP 环境 确保所有组件协同工作,您的LNMP环境已准备就绪。 1. **Nginx 测试**: 确认Nginx能正确处理HTTP请求,并返回默认的欢迎页面。 2. **PHP 测试**: 通过访问 `index.php`文件,验证PHP-FPM是否正常工作。 3. **MySQL 测试**: 通过PHP脚本连接MySQL数据库,验证数据库连接是否成功。 **示例PHP脚本**: ```php <?php $servername = "localhost"; $username = "webuser"; $password = "password123"; $dbname = "mywebsite"; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname); // 检测连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } echo "连接成功"; ?> ``` **解释**: - 使用 `mysqli`扩展连接到MySQL数据库,验证数据库连接是否正常。 **步骤**: - 创建一个名为 `db_test.php`的文件,添加上述代码。 - 将文件放置在网站根目录。 - 访问 `http://example.com/db_test.php`,如果看到“连接成功”消息,说明MySQL配置正确。 **重要事项**:**测试完成后,删除 `db_test.php`文件以防止数据库连接信息泄露。** ```bash sudo rm /var/www/mywebsite/db_test.php ``` **解释**: - 删除测试文件,提升服务器安全性。 ## 常见问题及解决方案 在安装和配置LNMP环境的过程中,可能会遇到各种问题。以下列出了一些常见的问题及其解决方案,帮助您快速排查和解决。 ### 问题一:Nginx 无法启动 #### 现象 尝试启动Nginx时,服务未能启动,显示错误信息。 #### 解决方案 1. **检查Nginx配置文件语法**: ```bash sudo nginx -t ``` **解释**: - 验证Nginx配置文件是否存在语法错误,确保配置正确。 2. **查看错误日志**: ```bash sudo tail -n 20 /var/log/nginx/error.log ``` **解释**: - 查看Nginx错误日志,获取详细的错误信息,便于定位问题。 3. **确保端口未被占用**: ```bash sudo lsof -i :80 sudo lsof -i :443 ``` **解释**: - 检查80和443端口是否被其他服务占用,如有冲突,停止占用端口的服务或修改Nginx端口。 4. **重启Nginx服务**: ```bash sudo systemctl restart nginx ``` **解释**: - 重启Nginx服务,应用配置更改。 ### 问题二:无法连接到 MySQL 数据库 #### 现象 通过PHP脚本或命令行无法连接到MySQL数据库,显示连接失败的错误信息。 #### 解决方案 1. **确认MySQL服务运行**: ```bash sudo systemctl status mysql ``` **解释**: - 检查MySQL服务状态,确保其正在运行。 2. **检查数据库凭证**: - 确认用户名、密码和数据库名称正确无误。 - 确认用户拥有访问特定数据库的权限。 3. **测试MySQL连接**: ```bash mysql -u webuser -p -h localhost mywebsite ``` **解释**: - 使用命令行测试MySQL连接,确保用户凭证和数据库配置正确。 4. **查看MySQL错误日志**: ```bash sudo tail -n 20 /var/log/mysql/error.log ``` **解释**: - 查看MySQL错误日志,获取详细的错误信息,便于定位问题。 5. **检查防火墙设置**: - 确认防火墙未阻止MySQL端口(默认3306)。 - 如果需要远程访问,确保MySQL配置文件允许远程连接。 **修改MySQL配置文件**: ```bash sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf ``` **解释**: - 确认 `bind-address`设置为 `0.0.0.0`,允许来自所有IP地址的连接。 ```ini bind-address = 0.0.0.0 ``` **保存并重启MySQL**: ```bash sudo systemctl restart mysql ``` ### 问题三:PHP 页面显示错误或不执行 #### 现象 访问PHP页面时,浏览器显示PHP代码或错误信息,无法正常执行PHP脚本。 #### 解决方案 1. **确认PHP-FPM服务运行**: ```bash sudo systemctl status php7.4-fpm ``` **解释**: - 检查PHP-FPM服务状态,确保其正在运行。 2. **检查Nginx与PHP-FPM的连接**: - 确认Nginx配置文件中的 `fastcgi_pass`指向正确的PHP-FPM套接字路径。 ```nginx fastcgi_pass unix:/run/php/php7.4-fpm.sock; ``` 3. **查看Nginx错误日志**: ```bash sudo tail -n 20 /var/log/nginx/error.log ``` **解释**: - 查看Nginx错误日志,获取详细的错误信息,便于定位问题。 4. **确保PHP扩展已安装**: - 根据应用需求,安装必要的PHP扩展,如 `php-mbstring`、`php-xml`等。 ```bash sudo apt install -y php-mbstring php-xml sudo systemctl restart php7.4-fpm ``` **解释**: - 安装并重启PHP-FPM服务,确保扩展生效。 5. **测试PHP-FPM配置**: - 创建一个简单的PHP文件,验证PHP-FPM是否正常工作。 ```php <?php echo "PHP is working!"; ?> ``` **解释**: - 如果访问该文件显示“PHP is working!”,则PHP-FPM配置正常。 ### 问题四:权限问题导致无法访问网站文件 #### 现象 访问网站时,显示“403 Forbidden”错误,无法访问网站文件。 #### 解决方案 1. **检查网站根目录权限**: ```bash sudo chown -R $USER:$USER /var/www/mywebsite sudo chmod -R 755 /var/www/mywebsite ``` **解释**: - 将网站根目录的所有权赋予当前用户,并设置适当的权限,确保Nginx能够读取文件。 2. **确认Nginx用户有访问权限**: - 默认情况下,Nginx以 `www-data`用户运行,确保该用户有权限访问网站文件。 ```bash sudo chown -R www-data:www-data /var/www/mywebsite ``` **解释**: - 将网站根目录的所有权赋予 `www-data`用户,确保Nginx可以访问和读取文件。 3. **检查Nginx配置文件中的 `root`路径**: - 确认 `root`指令指向正确的目录路径。 ```nginx root /var/www/mywebsite; ``` 4. **查看Nginx错误日志**: ```bash sudo tail -n 20 /var/log/nginx/error.log ``` **解释**: - 查看错误日志,获取详细的权限错误信息,便于定位问题。 ## 最佳实践与优化建议 为了确保LNMP环境的高效、安全和稳定运行,以下是一些最佳实践和优化建议。 ### 使用强密码和安全配置 - **强密码**:为MySQL用户和服务器账户设置复杂的密码,包含字母、数字和特殊字符。 - **限制MySQL远程访问**:仅允许必要的IP地址访问MySQL,避免开放到公网。 - **定期更新系统和软件**:保持Ubuntu、Nginx、MySQL和PHP的最新版本,及时修补安全漏洞。 ### 优化 Nginx 性能 - **启用Gzip压缩**: ```nginx gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; ``` **解释**: - 启用Gzip压缩,减少传输的数据量,提升加载速度。 - **配置缓存**: ```nginx location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 30d; add_header Cache-Control "public, no-transform"; } ``` **解释**: - 设置静态资源的缓存时间,减少服务器负载,提升用户体验。 - **使用多进程和连接数优化**: 编辑Nginx主配置文件: ```bash sudo nano /etc/nginx/nginx.conf ``` 修改以下参数: ```nginx worker_processes auto; events { worker_connections 1024; } ``` **解释**: - `worker_processes auto;`:根据CPU核心数自动设置工作进程数。 - `worker_connections 1024;`:每个工作进程允许的最大连接数。 ### 定期备份数据库 - **使用 `mysqldump` 进行备份**: ```bash mysqldump -u webuser -p mywebsite > mywebsite_backup.sql ``` **解释**: - 导出 `mywebsite`数据库到 `mywebsite_backup.sql`文件,确保数据安全。 - **设置自动备份**: 可以通过设置Cron任务,定期备份数据库。 ```bash crontab -e ``` 添加以下行,每天凌晨2点备份数据库: ```cron 0 2 * * * mysqldump -u webuser -ppassword123 mywebsite > /backup/mywebsite_$(date +\%F).sql ``` **解释**: - `0 2 * * *`:每天凌晨2点执行备份任务。 - `mysqldump`:执行数据库备份命令。 - `$(date +\%F)`:为备份文件添加日期标签,便于管理。 ### 监控服务器性能 - **使用 `htop` 监控系统资源**: ```bash sudo apt install -y htop htop ``` **解释**: - `htop`:实时监控系统的CPU、内存和进程使用情况,帮助识别性能瓶颈。 - **安装和配置 `Nginx Amplify`**: **解释**: - `Nginx Amplify`是一款免费的监控工具,提供详细的Nginx性能指标和日志分析,帮助优化Nginx配置。 ## 分析说明表 以下表格总结了LNMP架构中各组件的功能、安装命令及其作用,便于快速查阅和理解整个安装流程。 | 组件 | 功能 | 安装命令 | 作用 | | ----------------- | --------------------------------------------------- | -------------------------------------------------- | --------------------------------------- | | **Nginx** | 高性能的Web服务器,处理HTTP请求,反向代理和负载均衡 | `sudo apt install -y nginx` | 提供Web服务,处理静态文件和代理动态请求 | | **MySQL** | 关系型数据库管理系统,存储和管理网站数据 | `sudo apt install -y mysql-server` | 存储网站内容,如用户数据、文章等 | | **PHP** | 服务器端脚本语言,生成动态网页内容 | `sudo apt install -y php-fpm php-mysql` | 处理动态请求,与MySQL交互,生成HTML内容 | | **Remmina** | 图形化远程桌面客户端工具 | `sudo apt install -y remmina remmina-plugin-rdp` | 远程管理服务器,进行维护和配置 | | **PHP-FPM** | PHP FastCGI Process Manager,处理PHP请求 | 自动安装,通过 `php-fpm`安装命令 | 管理PHP进程,与Nginx协同工作 | | **ufw** | Uncomplicated Firewall,简化的防火墙管理工具 | 已预安装,通过 `ufw allow`命令配置 | 管理服务器的防火墙规则,保护服务器安全 | **重要事项**:**每个组件的正确安装和配置是构建稳定、高效的LNMP环境的基础,确保按照步骤逐一完成安装和配置。** ## 总结 通过本文的详细指导,您已掌握在Ubuntu 20.04系统下安装和配置LNMP环境的全过程。**LNMP**架构凭借其高效、稳定和灵活的特点,适用于各种规模的Web应用部署。通过合理配置Nginx、MySQL和PHP,结合最佳实践和安全建议,您可以构建出功能强大且安全可靠的Web服务器环境。 **关键要点回顾**: - **系统更新与依赖安装**:确保系统和必要库的最新状态,避免兼容性问题。 - **Nginx安装与配置**:搭建高性能的Web服务器,配置防火墙和服务器块。 - **MySQL安装与安全配置**:安装数据库服务,增强安全性,创建独立数据库和用户。 - **PHP安装与配置**:安装PHP及扩展,配置PHP-FPM与Nginx协同工作。 - **配置虚拟主机**:创建网站服务器块,测试LNMP环境,确保各组件正常工作。 - **常见问题解决**:掌握排查和解决常见安装和配置问题的方法,提升维护效率。 - **最佳实践与优化**:遵循安全配置,优化服务器性能,定期备份和监控系统。 **重要事项**:**在实际应用中,根据具体需求和环境,灵活调整配置参数,持续优化和维护LNMP环境,确保其高效、安全和稳定运行。通过定期更新和监控,及时应对潜在问题,提升Web服务器的整体性能和可靠性。** 通过系统化的学习和实践,您将能够熟练运用Ubuntu下的LNMP架构,构建出高效、稳定且功能丰富的Web服务器,满足各种Web应用的部署需求,充分发挥LNMP在现代Web开发中的优势。 最后修改:2024 年 09 月 23 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏