如何部署LNMP运行环境并安装WordPress?
什么是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 命令安装)
输入命令并回车后,出现以下选项,你可以参考配置:
You have 11 options for your DataBase install. (输入 4 回车,选用 mysql 5.7 版本)
Using Generic Binaries (输入 y 回车,如选 n 源码安装时间更长)
Please setup root password of MySQL. (为数据库设置 root 密码,直接回车将会设置为lnmp.org#随机数字)
Do you want to enable or disable the InnoDB Storage Engine? (输入 y 回车,一般建议开启)
You have 9 options for your PHP install. (输入 10 回车,WordPress要求PHP 7.4+版本)
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,整体的使用体验是很好的,相对宝塔面板来说,感觉运行更加流畅。