如何部署LNMP运行环境并安装WordPress?

User avatar placeholder
Written by Andy

2025年1月21日

什么是LNMP?

LNMP 是一个常见的缩写,代表 Linux、Nginx、MySQL 和 PHP 的组合。这是一种流行的 Web 服务器环境配置,广泛用于托管动态网站和 Web 应用程序。LNMP 堆栈是 LAMP 堆栈(Linux, Apache, MySQL, PHP/Python/Perl)的一个变体,其中 Apache 被 Nginx 替代。Nginx 通常被认为在处理静态内容和并发连接方面比 Apache 更高效。这种配置非常适合运行内容管理系统(如 WordPress)和其他需要数据库支持的动态网站。

军哥LNMP一键安装包是一个用 Linux Shell 编写的可以为 Linux VPS 或独立主机安装 LNMP(Nginx/MySQL/PHP)、LNMPA(Nginx/MySQL/PHP/Apache)、LAMP(Apache/MySQL/PHP) 生产环境的Shell程序。

安装LNMP要求

  • 系统要求CentOS/RHEL/Fedora/Debian/Ubuntu/Raspbian/Deepin/Aliyun/Amazon/Mint Linux发行版
  • 需要5GB以上可用硬盘空间,MySQL 5.7/MariaDB 10至少9GB剩余空间,MySQL8.0最新版至少25GB以上。
  • 需要128MB以上内存(小内存VPS至少要有128MB以上的SWAP),注意小内存请勿使用64位系统!
  • 安装MySQL 5.6/5.7及MariaDB 10必须 1G 以上内存,更高版本至少要2G内存。
  • 安装PHP 7及以上版本必须1G以上内存。

安装LNMP 2.1 步骤

使用putty或类似的SSH工具登陆VPS或服务器。

登陆后,可以先运行screen命令,

screen -S lnmp

(如果提示 screen: command not found 命令不存在,使用 yum install screen 或 apt-get install screen 命令安装)

安装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

(如果提示 wget: command not found 命令不存在,使用 yum install wget 或 apt-get install wget 命令安装)

输入命令并回车后,出现以下选项,你可以参考配置:

  1. You have 11 options for your DataBase install. (输入 4 回车,选用 mysql 5.7 版本)
  2. Using Generic Binaries (输入 y 回车,如选 n 源码安装时间更长)
  3. Please setup root password of MySQL. (为数据库设置 root 密码,直接回车将会设置为lnmp.org#随机数字)
  4. Do you want to enable or disable the InnoDB Storage Engine? (输入 y 回车,一般建议开启)
  5. You have 9 options for your PHP install. (输入 10 回车,WordPress要求PHP 7.4+版本)
  6. You have 3 options for your Memory Allocator install. (输入 1 回车,不需要内存汉化)

最后,出现 Press any key to install…or Press Ctrl+c to cancel 回车开始安装。(安装时间可能会几十分钟到几个小时不等,主要是机器的配置网速等原因会造成影响。因为时间长,这里突出了使用screen命令的重要性。)

安装完成后,显示phpMyAdmin地址,phpinfo地址,默认目录路径,数据库root密码等信息,并提示安装使用的时间及Install lnmp V2.1 completed! enjoy it. 的话,说明已经安装成功。

LNMP 2.1 正式版命令集

LNMP状态管理:lnmp {start|stop|reload|restart|kill|status}

LNMP各个程序的状态管理:lnmp {nginx|mysql|mariadb|php-fpm|pureftpd} {start|stop|reload|restart|kill|status}

虚拟主机管理:lnmp vhost {add|list|del}

数据库管理:lnmp database {add|list|edit|del}

FTP用户管理:lnmp ftp {add|list|edit|del|show}

已存在虚拟主机添加SSL:lnmp ssl add

通过DNS API方式生成证书并创建虚拟主机:lnmp dns {cx|dp|ali|…}

只通过DNS API方式生成SSL证书:lnmp onlyssl {cx|dp|ali|…}

在LNMP中添加网站

一般情况下每个虚拟主机就是一个网站,网站一般通过域名进行访问。如果输入有错误需要删除时,可以按住Ctrl再按Backspace键进行删除。

虚拟主机管理基本命令介绍:lnmp vhost {add|list|del}

域名操作

在域名提供商进行DNS操作,先一步将根域名指向服务器IP(A记录),以及子域名(www)设置(A记录或CNAME记录),等待DNS更新。可以在ping.pe查询域名,查询到服务器ip则DNS生效。

添加虚拟站点

执行以下命令:

lnmp vhost add

Please enter domain

这里输入要添加网站的主域名,只一个!(举例,example.com)

Enter more domain name

然后再输入其他相关的子域名或根域。多个域名空格隔开,如不需要绑其他域名就直接回车。(举例,www.example.com en.example.com)

Default directory (这里直接回车,按默认路径)

Allow Rewrite rule? (输入 y 回车)(伪静态设置)

Please enter the rewrite of programme, (输入 wordpress 回车)

Enable PHP Pathinfo? (输入 y 回车)

Allow access log? (输入 y 回车,再次回车使用默认log文件名称)

Enable IPv6? (根据实际需要,这里输入 n 回车)

Create database and MySQL user with same name (输入 y 回车,然后输入数据库root密码,注意这里输入密码不会显示,可以直接黏贴操作)

Enter database name (输入数据库名称。建议直接输入域名,小数点用下划线“_”代替。这里同时创建了数据库和用户)

Please enter password for mysql user (输入数据库密码,不要和root密码一样,记录好)

Add SSL Certificate (输入 y 回车,然后输入 2 回车,输入一个你的邮箱)(SSL设置)

Using 301 to Redirect HTTP to HTTPS? (输入 y 回车)

Press any key to start create virtul host… (回车)

最后会返回虚拟站点信息,记录下来方便下面WordPress的安装。

删除虚拟站点

执行命令

lnmp vhost del

删除网站会先列出当前已有虚拟主机,按提示输入要删除的虚拟主机域名回车确认。

这里只是删除虚拟主机配置文件,网站文件并不会删除需要自己删除。

如果删除遇阻,是因为权限不够,先使用cd命令进入网站目录,然后执行以下命令:

chattr -i /.user.ini

当执行chown或chmod对网站目录属主属组或权限进行操作时可能会提示chown: changing ownership of `/home/wwwroot/default/.user.ini’: Operation not permitted,不需要理会,如果有强迫症可以参考前面先进行chattr -i的操作。

在LNMP中安装WordPress

上面虽然创建了站点,但是只是设置好框架,还需要进一步上传WordPress网站程序,然后运行程序安装。

添加数据库

相关站点数据库的创建在上面的步骤已经做过,如果错过或需创建额外的数据库。执行以下命令:

lnmp database add

Create database and MySQL user with same name (输入 y 回车,然后输入数据库root密码,注意这里输入密码不会显示,可以直接黏贴操作)

Enter database name (输入数据库名称。建议直接输入域名,小数点用下划线“_”代替。这里同时创建了数据库和用户)

Please enter password for mysql user (输入数据库密码,不要和root密码一样,记录好)

其他的一些数据库命令

编辑数据库用户密码命令:lnmp database edit

删除数据库命令:lnmp database del

安装FTP服务器

上传网站文件需要安装Pureftpd服务,然后通过你的FTP信息登录后上传网站或sftp等软件上传网站。

进入lnmp安装包目录:

cd /root/lnmp2.1

然后执行命令:

./pureftpd.sh

提示Press any key to start install ProFTPd… 后回车确认就会自动安装Pureftpd。

使用命令lnmp ftp {add|del|edit} 进行管理。

添加ftp账号:

i

Enter ftp account name (输入账号)

Enter password for ftp account (输入新设密码)

Enter directory for ftp account (输入网站目录的完整路径,举例,/home/wwwroot/example.com)

回车后创建ftp账户。

上传网站文件

在WordPress官网下载最新程序,在本地先行解压。进入解压的文件夹里,全选所有wp文件,然后重新压缩为zip格式。将重新压缩的zip文件上传到网站路径 /home/wwwroot/example.com 下。

ssh连接服务器,使用cd命令先进入网站目录:

cd /home/wwwroot/example.com

然后使用unzip命令解压:

unzip 上传压缩包文件名.zip

伪静态

伪静态在上面添加网站的步骤已经设置过,但它也可以随时添加或删除,如果添加完虚拟主机后忘记或没有添加伪静态,可以通过修改配置文件来添加伪静态。

虚拟主机配置文件在:/usr/local/nginx/conf/vhost/域名.conf,LNMP 1.5 及之后版本伪静态文件都在 /usr/local/nginx/conf/rewrite 目录下。

编辑虚拟主机配置文件,可以使用vi或nano(CLI工具),或winscp等FTP工具直接编辑,FTP工具对新手来说简单些。

SSL

SSL的安装在添加网站的步骤已经设置过,如果SSL部署失败,最多的一个原因是DNS未同步成功,需等待DNS生效。

然后执行命令:

lnmp ssl add

Please enter domain

这里输入要添加网站的主域名,只一个!(举例,abc.com)

Enter more domain name

然后再输入其他相关的子域名或根域。多个域名空格隔开,如不需要绑其他域名就直接回车。(举例, www.abc.com en.abc.com)

Default directory (这里直接回车,按默认路径)

Allow Rewrite rule? (输入 y 回车)(这里实际上是伪静态设置)

Please enter the rewrite of programme, (输入 wordpress 回车)

Add SSL Certificate (输入 y 回车,然后输入 2 回车,输入一个你的邮箱)(这里实际上是SSL设置)

Using 301 to Redirect HTTP to HTTPS? (输入 y 回车)

Press any key to start create virtul host… (回车)

LNMP中的安全设置(可选)

防跨目录设置

LNMP 2.1防跨目录功能使用.user.ini,该文件在网站根目录下,可以修改.user.ini 里面的open_basedir的值来设置限制访问的目录或删除来移除防跨目录的设置。

.user.ini文件无法直接修改,如要修或删除需要先执行:

chattr -i /home/wwwroot/example.com/.user.ini

,然后使用winscp文件管理、vi/vim编辑器或nano编辑器进行修改。

修改完成后再执行:

chattr +i /home/wwwroot/example.com/.user.ini

.user.ini不需要重启一般5分钟左右生效,也可以重启一下php-fpm立即生效。

安装Fail2ban

fail2ban安装脚本,保证SSH安全,自动屏蔽破解SSH的IP。

先进入lnmp工具包目录:

cd /root/lnmp2.1/tools

然后执行脚本:

./fail2ban.sh

卸载LNMP堆栈

在lnmp安装包目录下执行:

./uninstall.sh

按提示选择当前环境类型,回车确认,会删除lnmp相关程序组件,网站文件会保留,数据库目录会另外备份到 /root 目录下,如有另外需要保存的文件请在卸载前备份。

LNMP评价

LNMP一键安装包在国内的服务器运行环境安装产品中有比较高的知名度,整体功能丰富,占用资源小,适合习惯CLI代码的运维人员使用,但对小白来说,接受度没有宝塔的可视化操作便利。对比国外的WordOps,两者同样是CLI运维方式,通过可选的堆栈项来解决不必要的软件间依赖,但WordOps感觉相对的安装速度更快一些。在一些小型虚拟服务器(比如1核1G内存的VPS)上使用LNMP堆栈运行WordPress,整体的使用体验是很好的,相对宝塔面板来说,感觉运行更加流畅。

Image placeholder

Lorem ipsum amet elit morbi dolor tortor. Vivamus eget mollis nostra ullam corper. Pharetra torquent auctor metus felis nibh velit. Natoque tellus semper taciti nostra. Semper pharetra montes habitant congue integer magnis.

发表评论