VPS建站

LNMP一键安装包-添加网站,SSL证书,日志管理,网站备份和安全问题

要是说到用VPS主机建站,目前一般流行两种方式:一是直接在VPS主机上安装虚拟主机面板,例如宝塔面板,另一种就是直接安装Nginx、Mysql、PHP等组件。两种方式各有各的优缺点,使用虚拟主机面板简单但是容易有安全问题和资源占用过大的问题。

手动搭建 LNMP 比用脚本装环境更费功夫,但装完之后,虚拟主机、证书、日志和备份还是要自己维护。OneinStack 和 LNMP.org 在 2023 年的安全争议,可参考本文最后一节的历史资料。

本文原以 2024 年的 LNMP 一键安装包 2.1 为例。2.1 当时增加了 PHP 8.3、MySQL 8.4 和 Nginx HTTP/3 支持。现行稳定分支见 LNMP 2.3 正式版:https://lnmp.org/notice/23.html,LNMP 2.4 测试版:https://lnmp.org/notice/lnmp-2-4-beta.html 的安装与真实升级恢复仍有待完整验收。下面的旧安装截图用于识别历史环境,日常维护先看服务器实际安装的版本和配置。

如果你对国内的建站程序没有兴趣,你可以试试国外的比较成熟的建站程序和面板,更多的一键建站脚本请查看专题:一键建站脚本工具专题。

  1. 国内外流行的VPS主机和服务器控制面板-让VPS像虚拟主机一样轻松建站
  2. OpenLiteSpeed安装与使用-开源轻量高性能的建站面板-免费SSL,多PHP,LSCache
  3. Centmin Mod国外优秀的LNMP一键建站工具-优化ngx_pagespeed和WebP

PS:2026年11月4日更新,对照 LNMP 2.3 正式版和 2.4 测试版,更新了虚拟主机、证书和服务维护说明,并修正了日志轮转及备份脚本的用法。

一、LNMP一键包安装

网站:

  1. https://lnmp.org/

登陆VPS主机后运行:screen -S lnmp,如果提示screen: command not found 命令不存在可以执行:yum install screen 或 apt-get install screen安装。

下面保留 2.1 的历史安装命令。新机器要安装时,从 官网下载页:https://lnmp.org/download.html 获取安装包,核对当前版本及官方提供的校验值后再解压。2.3 安装器默认选择 PHP 8.3 和 MySQL 8.4 LTS,已有服务器的版本要另行检查。

# LNMP 2.1 历史安装示例,仅供查阅。
# wget https://soft.lnmp.com/lnmp/lnmp2.1.tar.gz -O lnmp2.1.tar.gz && tar zxf lnmp2.1.tar.gz && cd lnmp2.1 && ./install.sh lnmp

旧安装器用 lnmp、lnmpa、lamp 选择架构,部分版本也支持 ./install.sh nginx 或 ./install.sh db 单独安装组件。这些是安装入口。维护已有环境时,先核对组件和配置,确需升级时按官方组件升级文档另行备份和演练。

下面是原 LNMP 2.1 的安装选择界面。

旧版允许选择 MySQL、MariaDB 或跳过数据库。编译资源要求随数据库版本、发行版和安装方式变化,按所选版本的官方说明预留内存、磁盘和时间。

根据提示选择PHP版本。

提示”Press any key to install...or Press Ctrl+c to cancel“后,按回车键确认开始安装。LNMP脚本就会自动安装编译Nginx、MySQL、PHP、phpMyAdmin等软件及相关的组件。安装时间可能会几十分钟到几个小时不等,主要是机器的配置网速等原因会造成影响。

旧安装器会显示组件状态和用时。验收时还要确认本机 HTTP 能响应、PHP 可执行、应用可连接数据库。数据库可以通过 Unix socket 或仅在本机监听,公网不需要开放 3306。

二、添加网站和SSL证书

新增站点使用 lnmp vhost add,已有站点先用 lnmp vhost list 核对域名,再检查实际站点目录、访问日志和 Nginx 虚拟主机配置。WordPress 伪静态及 PHP 实例按实际部署选择。官方虚拟主机教程:https://lnmp.org/faq/lnmp-vhost-add-howto.html

下图保留 2.1 的 SSL 菜单。新增站点时可按向导启用 HTTPS,已有虚拟主机可用 lnmp ssl add。自备证书时填写实际证书链和与之匹配的私钥路径。免费 CA 的选项和可用性以现用版本与服务商为准。2.3 的 SSL 模板默认启用 TLS 1.2 和 1.3,已有站点请核对实际配置。

签发失败时先查域名解析和验证条件。HTTP-01 要让 CA 能访问域名的 80 端口及验证路径,泛域名证书使用 DNS-01。2.3 提供 lnmp dns 用 DNS API 签证书并创建站点,也可用 lnmp onlyssl 只签证书,部署步骤再单独完成。签发和部署后核对 Nginx 配置、证书域名、到期时间和续期任务。相关操作可参考 acme.sh 安装和切换 SSL CA 教程。

日常服务检查:先用 lnmp status 查看整套状态,再用 lnmp nginx status、lnmp php-fpm status 和实际使用的 lnmp mysql status 或 lnmp mariadb status 定位组件。多 PHP 或 LNMPA/LAMP 要核对实际实例和服务。仅修改 Nginx 配置时,先用实际安装的 Nginx 执行 nginx -t,测试通过后再按需执行 lnmp nginx reload。官方服务命令:https://lnmp.org/faq/lnmp-status-manager.html

三、LNMP日志管理

日志持续写入时会增长,不能从安装了 LNMP 就推断已经配置定时轮转。先确认虚拟主机的 access_log、error_log 和实际文件,再查现有 cron、systemd timer 或 logrotate。官方安装包 tools 目录提供 cut_nginx_logs.sh。官方工具说明:https://lnmp.org/faq/lnmp-1-2-tools.html

下面是旧脚本参数。log_files_name 填实际存在的 .log 文件基名,log_files_path 只指向专用日志目录。

#设置nginx日志文件目录路径
log_files_path="/home/wwwlogs/"
#日志文件将会存放到/home/wwwlogs/年/月/日志文件名_年月日.log
log_files_dir=${log_files_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")
#设置要切割的日志的名字,如果日志目录下面的日志文件名为vpser.net.log,则填写vpser.net,每个日志名用空格分隔
log_files_name=(access vpser.net licess)
#设置nginx文件的位置
nginx_sbin="/usr/local/nginx/sbin/nginx"
#设置日志保存的时间,天
save_days=30

2.3 与本次核对的 2.4 测试包都先重命名选定日志,再按时间清理并请求 Nginx reload。清理范围是配置的日志目录树,超过保留天数的条目可能被删除。2.4 测试版也收紧了 Nginx 日志目录权限,排查时请核对实际执行账号。下面只检查脚本语法。

bash -n ./cut_nginx_logs.sh

先在测试环境确认切割后新日志能继续写入,旧日志可读。已有 logrotate 负责同一批文件时,沿用现有轮转任务。

下面是 cron 格式示例。若采用官方工具,先将通过核对的脚本放入实际维护目录,再按机器时区和保留策略设定运行时间。

0 0 * * * /bin/bash /opt/lnmp-tools/cut_nginx_logs.sh

关于crontab定时任务设置,请参考:Linux Crontab命令定时任务基本语法与操作教程。

四、LNMP网站备份

LNMP 一键安装包 的 tools/backup.sh 可以打包指定网站目录和导出指定数据库。下列参数保留作配置对照,路径、数据库名和凭据按实际环境核对。

Backup_Home="/home/backup/" #####备份文件存放目录
MySQL_Dump="/usr/local/mysql/bin/mysqldump" ####mysqldump路径,如果是mariadb替换/usr/local/mysql为/usr/local/mariadb
######~Set Directory you want to backup~######
Backup_Dir=("/home/wwwroot/vpser.net" "/home/wwwroot/lnmp.org") ##########要备份的目录,目录用双引号括起来,多个目录空格隔开,如前面的例子

######~Set MySQL Database you want to backup~######
Backup_Database=("lnmp" "vpser") ########要备份的数据库,前面有例子

######~Set MySQL UserName and password~######
MYSQL_UserName='root' ####不用说了,MySQL root账号
MYSQL_PassWord='yourrootpassword' ##### MySQL root密码

######~Enable Ftp Backup~######
Enable_FTP=0 #####是否启用ftp备份,0 启用,非0 不启用
# 0: enable; 1: disable
######~Set FTP Information~###### ftp账号信息
FTP_Host='1.2.3.4'
FTP_Username='vpser.net'
FTP_Password='yourftppassword'
FTP_Dir="backup" #########ftp服务器上存放备份的目录

#Values Setting END!

默认备份文件保存3天,可以修改backup.sh里的-3day为你指定的天数。

官方包内的旧脚本会将数据库账号和密码传给导出命令,并按日期命名和清理旧归档。先检查执行账号、保留规则、导出范围和失败退出行为。新任务宜使用权限受限的数据库账号及私有客户端选项文件。

先在测试环境核对导出结果,确认能解包、能导入,再配置定时任务。下例假定脚本已审查并放入维护目录,时间按调度机器的时区解释。

30 2 * * * /bin/bash /opt/lnmp-tools/backup.sh

官方 2.3 和本次核对的 2.4 测试包中,这个脚本的可选远传使用 lftp,Enable_FTP=0 实际表示启用 FTP。原有 又拍云 FTP 的历史用法 可供维护旧任务时查阅。用对象存储时,应单独配置支持对应后端的客户端,先加密可能含凭据或个人数据的归档。

归档完成后,可用 Rsync、SCP 或 rclone 将已验证的文件传到异地。备份也要覆盖必要配置,保留独立历史版本,并做读回校验和隔离恢复。可参考 网站和数据库的加密备份与隔离恢复。

  1. 三个命令工具Rsync,SCP,Tar-快速解决VPS远程网站搬家与数据同步
  2. 一个命令让Linux定时打包备份指定目录文件夹并同步备份到各大网盘

五、LNMP安全问题

2023 年 OneinStack 和 LNMP.org 的安全争议及讨论链接如下,供追查历史。维护时从官方入口核对版本、下载校验值和变更记录。

  1. https://github.com/oneinstack/oneinstack/issues/511
  2. https://github.com/oneinstack/oneinstack/issues/487
  3. https://www.v2ex.com/t/979226

相关的网页截图见:https://do.wzfou.net/wzfou/lnmp/oneinstackma.png

文章出自:挖站否 https://wzfou.com/lnmp21/,版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。

文章更新于: 2026年11月4日 下午4:53

Qi

关于站长(Qi),2008年开始混迹于免费资源圈中,有幸结识了不少的草根站长。之后自己摸爬滚打潜心学习Web服务器、VPS、域名等,兴趣广泛,杂而不精,但愿将自己经验与心得分享出来与大家共勉。

查看评论