活动公告

系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

CentOS安装LNMP一键安装包完全指南详细步骤与常见问题解决助你轻松搭建网站环境让运维工作更简单高效

SunJu_FaceMall

3万

主题

2720

科技点

3万

积分

执行版主

碾压王

积分
32881

塔罗立华奏

执行版主 发表于 2025-8-26 02:30:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1. LNMP环境介绍

LNMP是指Linux + Nginx + MySQL + PHP的组合,是一种非常流行的网站服务器环境。与传统的LAMP(Linux + Apache + MySQL + PHP)相比,LNMP具有更高的性能和更低的资源消耗,特别适合高并发网站。

Nginx作为Web服务器,以其高并发、低内存消耗的特点受到广泛欢迎;MySQL作为关系型数据库管理系统,为网站提供数据存储支持;PHP作为服务器端脚本语言,负责处理动态内容。

一键安装包的出现,大大简化了LNMP环境的搭建过程,使得即使是新手也能快速部署一个功能完整的网站运行环境。

2. 准备工作

在开始安装LNMP一键安装包之前,需要做好以下准备工作:

2.1 系统要求

• 推荐使用CentOS 7.x或CentOS 8.x系统
• 确保系统是全新安装的最小化版本
• 至少2GB的内存(推荐4GB以上)
• 至少20GB的可用磁盘空间

2.2 系统更新

在安装之前,建议先更新系统到最新版本:
  1. # 更新系统
  2. yum update -y
  3. # 安装必要的工具
  4. yum install -y wget screen vim
复制代码

2.3 关闭防火墙和SELinux(可选)

为了简化安装过程,可以选择临时关闭防火墙和SELinux:
  1. # 停止防火墙
  2. systemctl stop firewalld
  3. systemctl disable firewalld
  4. # 临时关闭SELinux
  5. setenforce 0
  6. # 永久关闭SELinux
  7. sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
复制代码

注意:在生产环境中,建议正确配置防火墙规则和SELinux策略,而不是直接关闭。

3. 选择LNMP一键安装包

目前市面上有多种LNMP一键安装包可供选择,比较流行的有:

1. lnmp.org提供的LNMP一键安装包
2. OneinStack一键安装包
3. 宝塔面板(带图形界面)
4. AMH面板(带图形界面)

本文将以lnmp.org提供的LNMP一键安装包为例进行详细介绍,因为它是最早、最经典的LNMP一键安装包之一,且更新频繁,社区支持良好。

4. 安装LNMP一键安装包

4.1 下载安装脚本

首先,我们需要下载LNMP一键安装包的安装脚本:
  1. # 下载安装脚本
  2. wget http://soft.vpser.net/lnmp/lnmp1.9.tar.gz -cO lnmp1.9.tar.gz
  3. # 解压安装包
  4. tar zxf lnmp1.9.tar.gz
  5. # 进入安装目录
  6. cd lnmp1.9
复制代码

4.2 执行安装脚本

运行安装脚本:
  1. # 执行安装脚本
  2. ./install.sh lnmp
复制代码

4.3 选择安装组件

执行安装脚本后,会进入交互式安装界面,需要选择安装的组件版本:

1. 选择MySQL版本:MySQL 5.5MySQL 5.6MySQL 5.7MySQL 8.0MariaDB 5.5MariaDB 10.0MariaDB 10.1MariaDB 10.2MariaDB 10.3MariaDB 10.4MariaDB 10.5
2. MySQL 5.5
3. MySQL 5.6
4. MySQL 5.7
5. MySQL 8.0
6. MariaDB 5.5
7. MariaDB 10.0
8. MariaDB 10.1
9. MariaDB 10.2
10. MariaDB 10.3
11. MariaDB 10.4
12. MariaDB 10.5

• MySQL 5.5
• MySQL 5.6
• MySQL 5.7
• MySQL 8.0
• MariaDB 5.5
• MariaDB 10.0
• MariaDB 10.1
• MariaDB 10.2
• MariaDB 10.3
• MariaDB 10.4
• MariaDB 10.5

建议选择MySQL 5.7或MariaDB 10.5,它们在性能和稳定性方面都有不错的表现。

1. 选择PHP版本:PHP 5.2PHP 5.3PHP 5.4PHP 5.5PHP 5.6PHP 7.0PHP 7.1PHP 7.2PHP 7.3PHP 7.4PHP 8.0PHP 8.1
2. PHP 5.2
3. PHP 5.3
4. PHP 5.4
5. PHP 5.5
6. PHP 5.6
7. PHP 7.0
8. PHP 7.1
9. PHP 7.2
10. PHP 7.3
11. PHP 7.4
12. PHP 8.0
13. PHP 8.1

• PHP 5.2
• PHP 5.3
• PHP 5.4
• PHP 5.5
• PHP 5.6
• PHP 7.0
• PHP 7.1
• PHP 7.2
• PHP 7.3
• PHP 7.4
• PHP 8.0
• PHP 8.1

建议选择PHP 7.4或PHP 8.0,它们在性能和功能上都有较大提升,且大多数现代应用都支持这些版本。

1. 选择是否安装内存优化器:不安装安装Jemalloc安装TCmalloc
2. 不安装
3. 安装Jemalloc
4. 安装TCmalloc

• 不安装
• 安装Jemalloc
• 安装TCmalloc

建议选择安装Jemalloc或TCmalloc,它们可以优化内存使用,提高系统性能。

1. 选择是否安装其他组件:是否安装Zend OPcache是否安装ionCube Loader是否安装ImageMagick是否安装GraphicsMagick是否安装fileinfo是否安装memcached是否安装memcached是否安装redis是否安装Xcache
2. 是否安装Zend OPcache
3. 是否安装ionCube Loader
4. 是否安装ImageMagick
5. 是否安装GraphicsMagick
6. 是否安装fileinfo
7. 是否安装memcached
8. 是否安装memcached
9. 是否安装redis
10. 是否安装Xcache

• 是否安装Zend OPcache
• 是否安装ionCube Loader
• 是否安装ImageMagick
• 是否安装GraphicsMagick
• 是否安装fileinfo
• 是否安装memcached
• 是否安装memcached
• 是否安装redis
• 是否安装Xcache

根据实际需求选择,如果不确定,可以先不安装,后续需要时再单独安装。

4.4 等待安装完成

选择完所有组件后,安装脚本会自动下载并编译安装所有组件。这个过程可能需要30分钟到2小时不等,具体时间取决于服务器性能和网络速度。

安装过程中,屏幕会显示安装进度和日志。如果安装过程中断,可以重新运行安装脚本,它会自动从断点继续安装。

安装完成后,会显示LNMP安装成功的提示,以及MySQL的root密码、PHPMyAdmin访问地址等信息。请务必记录这些信息,特别是MySQL的root密码。

5. LNMP环境配置

5.1 目录结构

LNMP一键安装包安装完成后,主要的目录结构如下:

• /usr/local/nginx- Nginx安装目录
• /usr/local/mysql- MySQL安装目录
• /usr/local/php- PHP安装目录
• /home/wwwroot- 网站根目录
• /home/wwwlogs- 网站日志目录

5.2 Nginx配置

Nginx的主配置文件位于/usr/local/nginx/conf/nginx.conf,虚拟主机配置文件位于/usr/local/nginx/conf/vhost/目录下。

可以使用LNMP提供的脚本添加虚拟主机:
  1. # 添加虚拟主机
  2. lnmp vhost add
复制代码

按照提示输入域名、网站目录、是否启用日志等信息,脚本会自动创建虚拟主机配置文件。

也可以手动创建虚拟主机配置文件:
  1. # 创建虚拟主机配置文件
  2. vim /usr/local/nginx/conf/vhost/example.com.conf
复制代码

添加以下内容:
  1. server {
  2.     listen 80;
  3.     server_name example.com www.example.com;
  4.     index index.html index.htm index.php default.html default.htm default.php;
  5.     root /home/wwwroot/example.com;
  6.     include rewrite/wordpress.conf; # 根据实际网站类型选择重写规则
  7.     location ~ .*\\.(php|php5)?$ {
  8.         fastcgi_pass unix:/tmp/php-cgi.sock;
  9.         fastcgi_index index.php;
  10.         include fastcgi.conf;
  11.     }
  12.     location ~ .*\\.(gif|jpg|jpeg|png|bmp|swf)$ {
  13.         expires 30d;
  14.     }
  15.     location ~ .*\\.(js|css)?$ {
  16.         expires 12h;
  17.     }
  18.     access_log /home/wwwlogs/example.com.log;
  19. }
复制代码

保存后,重载Nginx配置:
  1. # 重载Nginx配置
  2. /etc/init.d/nginx reload
复制代码

5.3 MySQL配置

MySQL的配置文件位于/etc/my.cnf。

如果需要修改MySQL root密码,可以使用以下命令:
  1. # 修改MySQL root密码
  2. mysqladmin -u root -p旧密码 password 新密码
复制代码
  1. # 登录MySQL
  2. mysql -u root -p
  3. # 创建数据库
  4. CREATE DATABASE example_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  5. # 创建用户并授权
  6. CREATE USER 'example_user'@'localhost' IDENTIFIED BY 'password';
  7. GRANT ALL PRIVILEGES ON example_db.* TO 'example_user'@'localhost';
  8. FLUSH PRIVILEGES;
  9. # 退出MySQL
  10. exit
复制代码

5.4 PHP配置

PHP的配置文件位于/usr/local/php/etc/php.ini。

可以使用vim编辑PHP配置文件:
  1. # 编辑PHP配置文件
  2. vim /usr/local/php/etc/php.ini
复制代码

常用配置项:
  1. ; 设置时区
  2. date.timezone = Asia/Shanghai
  3. ; 增加上传文件大小限制
  4. upload_max_filesize = 50M
  5. post_max_size = 50M
  6. ; 增加执行时间限制
  7. max_execution_time = 300
  8. ; 开启错误显示(开发环境)
  9. display_errors = On
  10. ; 关闭错误显示(生产环境)
  11. display_errors = Off
复制代码

修改后,需要重启PHP-FPM:
  1. # 重启PHP-FPM
  2. /etc/init.d/php-fpm restart
复制代码

LNMP一键安装包提供了安装PHP扩展的脚本:
  1. # 安装PHP扩展
  2. ./addons.sh install {扩展名}
复制代码

例如,安装redis扩展:
  1. # 安装redis扩展
  2. ./addons.sh install redis
复制代码

6. 常见问题及解决方案

6.1 安装过程中断

问题:安装过程中断,提示下载失败或编译错误。

解决方案:

1. 检查网络连接是否正常:ping www.baidu.com
2. 清理安装环境后重新安装:
“`bash清理安装环境./uninstall.sh

检查网络连接是否正常:
  1. ping www.baidu.com
复制代码

清理安装环境后重新安装:
“`bash

./uninstall.sh

# 重新下载安装包
   wgethttp://soft.vpser.net/lnmp/lnmp1.9.tar.gz-cO lnmp1.9.tar.gz
   tar zxf lnmp1.9.tar.gz
   cd lnmp1.9

# 重新安装
   ./install.sh lnmp
  1. 3. 如果是编译错误,可以查看错误日志,根据错误信息搜索解决方案。
  2. ### 6.2 Nginx启动失败
  3. **问题**:Nginx启动失败,提示端口被占用或配置错误。
  4. **解决方案**:
  5. 1. 检查端口是否被占用:
  6.    ```bash
  7.    # 检查80端口是否被占用
  8.    netstat -tulnp | grep 80
复制代码

如果80端口被占用,可以停止占用端口的进程,或修改Nginx配置文件中的监听端口。

1. 检查Nginx配置文件语法:# 检查Nginx配置文件语法
/usr/local/nginx/sbin/nginx -t

检查Nginx配置文件语法:
  1. # 检查Nginx配置文件语法
  2. /usr/local/nginx/sbin/nginx -t
复制代码

如果提示配置错误,根据错误信息修改配置文件。

1. 查看Nginx错误日志:# 查看Nginx错误日志
tail -f /home/wwwlogs/nginx_error.log

查看Nginx错误日志:
  1. # 查看Nginx错误日志
  2. tail -f /home/wwwlogs/nginx_error.log
复制代码

6.3 MySQL连接失败

问题:无法连接到MySQL数据库。

解决方案:

1. 检查MySQL服务状态:# 检查MySQL服务状态
/etc/init.d/mysql status

检查MySQL服务状态:
  1. # 检查MySQL服务状态
  2. /etc/init.d/mysql status
复制代码

如果MySQL未运行,尝试启动:
  1. # 启动MySQL
  2.    /etc/init.d/mysql start
复制代码

1. 检查MySQL配置文件:# 检查MySQL配置文件
vim /etc/my.cnf

检查MySQL配置文件:
  1. # 检查MySQL配置文件
  2. vim /etc/my.cnf
复制代码

确保配置文件中的设置正确。

1. 检查MySQL错误日志:# 查看MySQL错误日志
tail -f /usr/local/mysql/var/mysql.err
2. 重置MySQL root密码:
“`bash停止MySQL/etc/init.d/mysql stop

检查MySQL错误日志:
  1. # 查看MySQL错误日志
  2. tail -f /usr/local/mysql/var/mysql.err
复制代码

重置MySQL root密码:
“`bash

/etc/init.d/mysql stop

# 跳过权限表启动MySQL
   /usr/local/mysql/bin/mysqld_safe –skip-grant-tables &

# 登录MySQL
   mysql -u root

# 重置密码
   UPDATE mysql.user SET Password=PASSWORD(‘新密码’) WHERE User=‘root’;
   FLUSH PRIVILEGES;

# 退出MySQL
   exit

# 重启MySQL
   /etc/init.d/mysql restart
  1. ### 6.4 PHP-FPM启动失败
  2. **问题**:PHP-FPM启动失败,网站无法解析PHP文件。
  3. **解决方案**:
  4. 1. 检查PHP-FPM服务状态:
  5.    ```bash
  6.    # 检查PHP-FPM服务状态
  7.    /etc/init.d/php-fpm status
复制代码

如果PHP-FPM未运行,尝试启动:
  1. # 启动PHP-FPM
  2.    /etc/init.d/php-fpm start
复制代码

1. 检查PHP-FPM配置文件:# 检查PHP-FPM配置文件
vim /usr/local/php/etc/php-fpm.conf

检查PHP-FPM配置文件:
  1. # 检查PHP-FPM配置文件
  2. vim /usr/local/php/etc/php-fpm.conf
复制代码

确保配置文件中的设置正确。

1. 检查PHP-FPM错误日志:# 查看PHP-FPM错误日志
tail -f /usr/local/php/var/log/php-fpm.log
2. 检查Nginx与PHP-FPM的连接配置:# 检查Nginx配置文件中的PHP-FPM配置
vim /usr/local/nginx/conf/vhost/example.com.conf

检查PHP-FPM错误日志:
  1. # 查看PHP-FPM错误日志
  2. tail -f /usr/local/php/var/log/php-fpm.log
复制代码

检查Nginx与PHP-FPM的连接配置:
  1. # 检查Nginx配置文件中的PHP-FPM配置
  2. vim /usr/local/nginx/conf/vhost/example.com.conf
复制代码

确保以下配置正确:
  1. location ~ .*\\.(php|php5)?$ {
  2.        fastcgi_pass unix:/tmp/php-cgi.sock;
  3.        fastcgi_index index.php;
  4.        include fastcgi.conf;
  5.    }
复制代码

6.5 网站访问慢

问题:网站访问速度慢。

解决方案:

1. 优化Nginx配置:# 编辑Nginx主配置文件
vim /usr/local/nginx/conf/nginx.conf

优化Nginx配置:
  1. # 编辑Nginx主配置文件
  2. vim /usr/local/nginx/conf/nginx.conf
复制代码

可以调整以下参数:
  1. worker_processes auto; # 设置为auto或CPU核心数
  2.    worker_connections 1024; # 增加每个worker的最大连接数
  3.    keepalive_timeout 65; # 调整keepalive超时时间
  4.    gzip on; # 开启gzip压缩
  5.    gzip_comp_level 2; # 设置gzip压缩级别
  6.    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; # 设置需要压缩的文件类型
复制代码

1. 优化MySQL配置:# 编辑MySQL配置文件
vim /etc/my.cnf

优化MySQL配置:
  1. # 编辑MySQL配置文件
  2. vim /etc/my.cnf
复制代码

可以调整以下参数:
  1. # 增加InnoDB缓冲池大小(设置为系统内存的50%-70%)
  2.    innodb_buffer_pool_size = 4G
  3.    
  4.    # 增加最大连接数
  5.    max_connections = 500
  6.    
  7.    # 开启查询缓存
  8.    query_cache_type = 1
  9.    query_cache_size = 128M
  10.    query_cache_limit = 4M
复制代码

1. 优化PHP配置:# 编辑PHP配置文件
vim /usr/local/php/etc/php.ini

优化PHP配置:
  1. # 编辑PHP配置文件
  2. vim /usr/local/php/etc/php.ini
复制代码

可以调整以下参数:
  1. ; 增加内存限制
  2.    memory_limit = 256M
  3.    
  4.    ; 开启OPcache加速
  5.    opcache.enable=1
  6.    opcache.memory_consumption=128
  7.    opcache.interned_strings_buffer=8
  8.    opcache.max_accelerated_files=4000
  9.    opcache.revalidate_freq=60
  10.    opcache.fast_shutdown=1
  11.    opcache.enable_cli=1
复制代码

1. 安装并配置缓存系统:
“`bash安装redis./addons.sh install redis

安装并配置缓存系统:
“`bash

./addons.sh install redis

# 安装PHP redis扩展
   ./addons.sh install redis
  1. 然后在网站中使用Redis进行缓存。
  2. ### 6.6 磁盘空间不足
  3. **问题**:服务器磁盘空间不足,导致网站无法正常运行。
  4. **解决方案**:
  5. 1. 检查磁盘空间使用情况:
  6.    ```bash
  7.    # 查看磁盘空间使用情况
  8.    df -h
  9.    
  10.    # 查看目录大小
  11.    du -sh /home/wwwroot
  12.    du -sh /usr/local/mysql/var
  13.    du -sh /home/wwwlogs
复制代码

1. 清理日志文件:
“`bash清理Nginx日志/home/wwwlogs/nginx_error.log
/home/wwwlogs/access.log

清理日志文件:
“`bash

/home/wwwlogs/nginx_error.log
/home/wwwlogs/access.log

# 清理MySQL日志
   /usr/local/mysql/bin/mysql -u root -p -e “RESET MASTER;”
   /usr/local/mysql/bin/mysql -u root -p -e “PURGE BINARY LOGS BEFORE DATE_SUB(NOW(), INTERVAL 7 DAY);”
  1. 3. 设置日志轮转:
  2.    ```bash
  3.    # 安装logrotate
  4.    yum install -y logrotate
  5.    
  6.    # 创建Nginx日志轮转配置
  7.    vim /etc/logrotate.d/nginx
复制代码

添加以下内容:
  1. /home/wwwlogs/*.log {
  2.        daily
  3.        missingok
  4.        rotate 7
  5.        compress
  6.        delaycompress
  7.        notifempty
  8.        create 644 www www
  9.        postrotate
  10.            if [ -f /var/run/nginx.pid ]; then
  11.                kill -USR1 `cat /var/run/nginx.pid`
  12.            fi
  13.        endscript
  14.    }
复制代码

1. 优化MySQL二进制日志:# 编辑MySQL配置文件
vim /etc/my.cnf

优化MySQL二进制日志:
  1. # 编辑MySQL配置文件
  2. vim /etc/my.cnf
复制代码

添加或修改以下配置:
  1. # 设置二进制日志过期时间(单位:天)
  2.    expire_logs_days = 7
  3.    
  4.    # 禁用二进制日志(如果不需要主从复制)
  5.    # skip-log-bin
复制代码

1. 清理不必要的文件和目录:
“`bash清理临时文件rm -rf /tmp/*

清理不必要的文件和目录:
“`bash

rm -rf /tmp/*

# 清理yum缓存
   yum clean all

# 清理旧内核
   package-cleanup –oldkernels –count=1
  1. ## 7. 安全加固
  2. ### 7.1 防火墙配置
  3. 如果之前关闭了防火墙,现在应该正确配置防火墙规则:
  4. ```bash
  5. # 启动防火墙
  6. systemctl start firewalld
  7. systemctl enable firewalld
  8. # 开放HTTP和HTTPS端口
  9. firewall-cmd --permanent --add-service=http
  10. firewall-cmd --permanent --add-service=https
  11. # 开放SSH端口(默认22)
  12. firewall-cmd --permanent --add-port=22/tcp
  13. # 限制MySQL远程访问(如果需要)
  14. # firewall-cmd --permanent --add-port=3306/tcp
  15. # 重载防火墙配置
  16. firewall-cmd --reload
复制代码

7.2 SSH安全配置
  1. # 编辑SSH配置文件
  2. vim /etc/ssh/sshd_config
复制代码

修改以下配置:
  1. # 禁止root登录
  2. PermitRootLogin no
  3. # 更改SSH端口
  4. Port 2222
  5. # 禁用密码登录,使用密钥登录
  6. PasswordAuthentication no
  7. PubkeyAuthentication yes
  8. # 限制允许登录的用户
  9. AllowUsers user1 user2
复制代码

重启SSH服务:
  1. # 重启SSH服务
  2. systemctl restart sshd
复制代码

7.3 MySQL安全配置
  1. # 运行MySQL安全脚本
  2. mysql_secure_installation
复制代码

按照提示进行以下操作:

1. 设置root密码
2. 移除匿名用户
3. 禁止root远程登录
4. 移除测试数据库
5. 重新加载权限表

7.4 PHP安全配置
  1. # 编辑PHP配置文件
  2. vim /usr/local/php/etc/php.ini
复制代码

修改以下配置:
  1. ; 隐藏PHP版本信息
  2. expose_php = Off
  3. ; 禁用危险函数
  4. disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname
  5. ; 开启安全模式
  6. safe_mode = On
  7. ; 限制文件访问
  8. open_basedir = /home/wwwroot/:/tmp/
复制代码

7.5 Nginx安全配置
  1. # 编辑Nginx主配置文件
  2. vim /usr/local/nginx/conf/nginx.conf
复制代码

在http块中添加以下配置:
  1. # 隐藏Nginx版本信息
  2. server_tokens off;
  3. # 防止点击劫持
  4. add_header X-Frame-Options "SAMEORIGIN";
  5. # 防止MIME类型混淆
  6. add_header X-Content-Type-Options "nosniff";
  7. # 启用XSS保护
  8. add_header X-XSS-Protection "1; mode=block";
  9. # 限制请求方法
  10. if ($request_method !~ ^(GET|HEAD|POST)$ ) {
  11.     return 405;
  12. }
  13. # 防止图片盗链
  14. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
  15.     valid_referers none blocked server_names *.example.com;
  16.     if ($invalid_referer) {
  17.         return 403;
  18.     }
  19. }
复制代码

8. 性能优化

8.1 启用HTTPS
  1. # 安装Certbot
  2. yum install -y certbot python2-certbot-nginx
  3. # 获取SSL证书
  4. certbot --nginx -d example.com -d www.example.com
  5. # 设置自动续期
  6. echo "0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew" | sudo tee -a /etc/crontab > /dev/null
复制代码

8.2 启用HTTP/2

编辑Nginx配置文件:
  1. # 编辑Nginx配置文件
  2. vim /usr/local/nginx/conf/vhost/example.com.conf
复制代码

修改监听端口:
  1. listen 443 ssl http2;
复制代码

8.3 启用Brotli压缩
  1. # 安装依赖
  2. yum install -y git
  3. # 下载并编译Brotli
  4. cd /usr/local/src
  5. git clone https://github.com/google/ngx_brotli.git
  6. cd ngx_brotli
  7. git submodule update --init
  8. # 下载Nginx源码(需要与当前安装的Nginx版本一致)
  9. cd /usr/local/src
  10. wget http://nginx.org/download/nginx-1.20.1.tar.gz
  11. tar zxf nginx-1.20.1.tar.gz
  12. cd nginx-1.20.1
  13. # 配置并编译Nginx
  14. ./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/ngx_brotli --with-openssl=/usr/local/src/openssl-1.1.1k --with-openssl-opt='enable-ec_nistp_64_gcc_128 enable-tls1_3' --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-openssl-opt='enable-tls1_3' --with-http_gunzip_module --with-stream --with-stream_ssl_module
  15. make
  16. # 备份并替换Nginx二进制文件
  17. mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
  18. cp objs/nginx /usr/local/nginx/sbin/nginx
  19. # 重启Nginx
  20. /etc/init.d/nginx restart
复制代码

编辑Nginx配置文件,添加Brotli压缩配置:
  1. brotli on;
  2. brotli_comp_level 6;
  3. brotli_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
复制代码

8.4 启用PHP OPcache

编辑PHP配置文件:
  1. # 编辑PHP配置文件
  2. vim /usr/local/php/etc/php.ini
复制代码

添加或修改以下配置:
  1. [opcache]
  2. opcache.enable=1
  3. opcache.memory_consumption=128
  4. opcache.interned_strings_buffer=8
  5. opcache.max_accelerated_files=4000
  6. opcache.revalidate_freq=60
  7. opcache.fast_shutdown=1
  8. opcache.enable_cli=1
  9. opcache.save_comments=1
  10. opcache.enable_file_override=0
复制代码

重启PHP-FPM:
  1. # 重启PHP-FPM
  2. /etc/init.d/php-fpm restart
复制代码

8.5 启用Redis缓存
  1. # 安装Redis
  2. ./addons.sh install redis
  3. # 安装PHP Redis扩展
  4. ./addons.sh install redis
复制代码

在网站中使用Redis进行缓存,例如WordPress可以使用Redis Object Cache插件。

9. 备份与恢复

9.1 数据库备份

创建数据库备份脚本:
  1. # 创建备份脚本
  2. vim /usr/local/bin/backup_db.sh
复制代码

添加以下内容:
  1. #!/bin/bash
  2. # 设置变量
  3. DATE=$(date +%Y%m%d%H%M%S)
  4. BACKUP_DIR="/home/backup"
  5. MYSQL_USER="root"
  6. MYSQL_PASSWORD="your_password"
  7. DATABASES="db1 db2 db3"
  8. # 创建备份目录
  9. mkdir -p $BACKUP_DIR
  10. # 备份数据库
  11. for DB in $DATABASES
  12. do
  13.     mysqldump -u$MYSQL_USER -p$MYSQL_PASSWORD $DB | gzip > $BACKUP_DIR/$DB_$DATE.sql.gz
  14. done
  15. # 删除7天前的备份
  16. find $BACKUP_DIR -name "*.sql.gz" -type f -mtime +7 -delete
  17. # 记录日志
  18. echo "Database backup completed at $(date)" >> $BACKUP_DIR/backup.log
复制代码

设置脚本可执行权限:
  1. # 设置可执行权限
  2. chmod +x /usr/local/bin/backup_db.sh
复制代码

添加到crontab,每天凌晨2点执行备份:
  1. # 编辑crontab
  2. crontab -e
复制代码

添加以下内容:
  1. 0 2 * * * /usr/local/bin/backup_db.sh
复制代码

9.2 网站文件备份

创建网站文件备份脚本:
  1. # 创建备份脚本
  2. vim /usr/local/bin/backup_web.sh
复制代码

添加以下内容:
  1. #!/bin/bash
  2. # 设置变量
  3. DATE=$(date +%Y%m%d%H%M%S)
  4. BACKUP_DIR="/home/backup"
  5. WEB_DIR="/home/wwwroot"
  6. # 创建备份目录
  7. mkdir -p $BACKUP_DIR
  8. # 备份网站文件
  9. tar -zcf $BACKUP_DIR/web_$DATE.tar.gz $WEB_DIR
  10. # 删除7天前的备份
  11. find $BACKUP_DIR -name "web_*.tar.gz" -type f -mtime +7 -delete
  12. # 记录日志
  13. echo "Website backup completed at $(date)" >> $BACKUP_DIR/backup.log
复制代码

设置脚本可执行权限:
  1. # 设置可执行权限
  2. chmod +x /usr/local/bin/backup_web.sh
复制代码

添加到crontab,每天凌晨3点执行备份:
  1. # 编辑crontab
  2. crontab -e
复制代码

添加以下内容:
  1. 0 3 * * * /usr/local/bin/backup_web.sh
复制代码

9.3 恢复数据库
  1. # 解压备份文件
  2. gunzip < /home/backup/db1_20230101020001.sql.gz | mysql -u root -p db1
复制代码

9.4 恢复网站文件
  1. # 解压备份文件
  2. tar -zxf /home/backup/web_20230101030001.tar.gz -C /
复制代码

10. 监控与日志分析

10.1 安装监控工具
  1. # 安装Nginx扩展模块
  2. yum install -y nginx-module-vts
  3. # 编辑Nginx配置文件
  4. vim /usr/local/nginx/conf/nginx.conf
复制代码

在http块中添加:
  1. load_module modules/ngx_http_vhost_traffic_status_module.so;
复制代码

在server块中添加:
  1. location /status {
  2.     vhost_traffic_status_display;
  3.     vhost_traffic_status_display_format html;
  4. }
复制代码

重启Nginx:
  1. # 重启Nginx
  2. /etc/init.d/nginx restart
复制代码

10.2 安装日志分析工具
  1. # 安装GoAccess
  2. yum install -y goaccess
  3. # 分析Nginx访问日志
  4. goaccess /home/wwwlogs/access.log -c > /home/wwwroot/report.html
复制代码

10.3 安装系统监控工具
  1. # 安装htop
  2. yum install -y htop
  3. # 安装iotop
  4. yum install -y iotop
  5. # 安装iftop
  6. yum install -y iftop
复制代码

11. 总结

通过本文的详细介绍,我们了解了如何在CentOS系统上使用LNMP一键安装包快速搭建网站环境。从准备工作到安装过程,从环境配置到安全加固,从性能优化到备份恢复,我们全面覆盖了LNMP环境管理的各个方面。

LNMP一键安装包大大简化了网站环境的搭建过程,使得即使是新手也能快速部署一个功能完整的网站运行环境。同时,通过对常见问题的分析和解决方案的提供,帮助用户快速解决在使用过程中遇到的各种问题。

在实际应用中,还需要根据网站的具体需求和流量情况,对LNMP环境进行适当的优化和调整,以确保网站能够稳定、高效地运行。同时,定期备份和监控也是保障网站安全运行的重要措施。

希望本文能够帮助读者轻松搭建和管理LNMP环境,让运维工作更加简单高效。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则