風車

CentOS Stream 8 使用 lnmp.org 搭建 LNMP 建站环境小记

博主开始使用 VPS 建 WordPress 博客就是使用 lnmp.org 搭建 LNMP 建站环境,后来发现 OneinStack 升级会稍方便,就换过去了。军哥的 lnmp.org 也很不错,稳定,时隔多年这里重新体验一次顺便记录一下。

LNMP lnmp.org 简介

官网:https://lnmp.org/,目前最新稳定版 LNMP 1.8,测试版 LNMP 1.9,一般每年6月1号会发布最LNMP新稳定版本。比如:如无意外,2022年6月1日会发布 LNMP 1.9 稳定正式版。

LNMP 一键安装包是什么?

LNMP 一键安装包是一个用 Linux Shell 编写、可以为 CentOS/RHEL/Fedora/Aliyun/Amazon、Debian/Ubuntu/Raspbian/Deepin/Mint Linux VPS 或独立主机安装 LNMP(Nginx/MySQL/PHP)、LNMPA(Nginx/MySQL/PHP/Apache)、LAMP(Apache/MySQL/PHP) 生产环境的 Shell 程序。

LNMP 一键安装包优势和功能特点

无需一个一个的输入命令,无需值守,编译安装优化编译参数,提高性能,解决不必要的软件间依赖,特别针对配置自动优化。

支持自定义 Nginx、PHP 编译参数及网站和数据库目录、支持生成 Let's Encrypt 证书、LNMP 模式支持多PHP版本、支持单独安装 Nginx/MySQL/MariaDB/Pureftpd 服务器。

提供一些实用的辅助工具如:虚拟主机管理、FTP用户管理、Nginx、MySQL/MariaDB、PHP 升级、安装常用缓存组件Redis/Xcache等、重置MySQL root密码、502 自动重启、日志切割、SSH防护DenyHosts/Fail2Ban、备份等许多实用脚本。

CentOS Stream 8 使用 lnmp.org 一键搭建 LNMP 建站环境

Vultr 上开了一台 1G 内存 VPS 测试,CentOS Stream 8 系统,先把 screen 安装上,系统也更新一下:

yum -y install epel-release
yum -y install screen
dnf -y update

生成一键 LNMP 命令

lnmp.org 也支持无人值守安装,可以到 https://lnmp.org/auto.html 生成安装命令。

比如选择 LNMP 架构,MySQL 5.6,启用 InnoDB,设置数据库root密码,PHP 8.0:

会生成如下安装命令:

wget http://soft.vpser.net/lnmp/lnmp1.8.tar.gz -cO lnmp1.8.tar.gz && tar zxf lnmp1.8.tar.gz && cd lnmp1.8 && LNMP_Auto="y" DBSelect="3" DB_Root_Password="OFIGljsd4nmEj883r" InstallInnodb="y" PHPSelect="11" SelectMalloc="1" ./install.sh lnmp

温馨提示:实际环境注意保护好数据库 root 密码。

一键 LNMP 命令安装 lnmp

安装时间与 VPS 性能密切相关,建议开 screen 安装,避免断网中断安装。执行上面生成的命令,如:

screen -S lnmp
wget http://soft.vpser.net/lnmp/lnmp1.8.tar.gz -cO lnmp1.8.tar.gz && tar zxf lnmp1.8.tar.gz && cd lnmp1.8 && LNMP_Auto="y" DBSelect="3" DB_Root_Password="OFIGljsd4nmEj883r" InstallInnodb="y" PHPSelect="11" SelectMalloc="1" ./install.sh lnmp

喝喝茶,喝喝咖啡,喝口可口可乐……静待安装完成。测试安装足足用了 67 分钟……

安装成功一般会有:Nginx: OK、MySQL: OK、PHP: OK、PHP-FPM: OK 和 Install lnmp V1.8 completed! enjoy it. 字样提示。

一键 LNMP 命令 开启 / 安装 Opcache

PHP 7 以上建议开启 / 安装 Opcache,性能提升明显。LNMP 1.3 以上版本默认已安装但未启用,进入 lnmp 解压后目录执行如下命令即可开启(安装):

./addons.sh install opcache

注意:Opcache 与 eAccelerator 冲突,脚本会卸载 eAccelerator 后再安装 Opcache,回车确认后就会自动安装或开启 Opcache。

一键 LNMP 命令 开启 / 安装 memcached

WordPress 博客的话,可以把 Memcached 也安装上。

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。

进入 lnmp 解压后的目录,执行命令安装:

./addons.sh install memcached

可以根据自己的需求选择 php-memcache 或 php-memcached 扩展,功能上 php-memcached 更强大一些。建议安装 php-memcached(带d)。

安装过程中可能会出现如下错误:

fatal: unable to access 'https://github.com.cnpmjs.org/php-memcached-dev/php-memcached/': Could not resolve host: github.com.cnpmjs.org

貌似脚本识别 VPS ip 所在地出错,选择了镜像地址无法访问……

简单解决方法是修改 /root/lnmp1.8/include/memcached.sh 文件,把如下代码:

        Get_Country
if [ "${country}" = "CN" ]; then
git clone https://github.com.cnpmjs.org/php-memcached-dev/php-memcached php-memcached-src
cd php-memcached-src
else
git clone https://github.com/php-memcached-dev/php-memcached php-memcached-src
cd php-memcached-src
fi

改成:

        #Get_Country
#if [ "${country}" = "CN" ]; then
# git clone https://github.com.cnpmjs.org/php-memcached-dev/php-memcached php-memcached-src
# cd php-memcached-src
#else
git clone https://github.com/php-memcached-dev/php-memcached php-memcached-src
cd php-memcached-src
#fi

然后重新安装即可。

LNMP 如何升级 Nginx 和 PHP?

LNMP 1.2、1.3、1.4、1.5 及更高版本已经包含 Nginx、MySQL/MariaDB、PHP、PHPMyAdmin 升级脚本,可以快速升级 Nginx、PHP 等。

LNMP Nginx 升级脚本

进入 lnmp 解压目录,如:cd /root/lnmp1.8

执行:./upgrade.sh nginx 按提示输入版本号后回车(访问 http://nginx.org/en/download.html 可查找 nginx 最新版本号和以往旧版本号。如:1.20.2 ),再次回车确认即可开始升级 Nginx。Nginx 升级为平滑升级,升级过程不影响 nginx 运行(网站/博客可正常访问)

如升级失败,将「/usr/local/nginx/sbin/nginx.日期」的文件重命名为 nginx ,然后再启动 nginx 即可。

LNMP PHP升级脚本

升级PHP前,请确认网站程序是否支持升级到的PHP版本,防止升级到网站程序不兼容的PHP版本。

进入 lnmp 解压目录,如:cd /root/lnmp1.8

执行:./upgrade.sh php 升级(到 http://www.php.net/downloads.php 获取版本号,输入版本号,如 8.0.16)回车,再次回车确认即可开始升级。

温馨提示:建议不要跨大版本升级,比如 8.0.8 可以升级到 8.0.16,但是不要升级到 8.1.2。PHP 升级开始会停掉 nginx、php 等,所以升级过程中网站将无法访问。

并且,php 升级完成,Opcache 和 memcached 等需要重新安装 / 开启

嗯,还是那个味道~

如果升级失败要恢复原 PHP,将 /usr/local/ 下「oldphp日期」的目录重命名为 php 并将 /usr/local/oldphp日期/init.d.php-fpm.bak.日期 文件拷贝到 /etc/init.d/ 目录下重命名为 php-fpm 即可恢复。

-- 完 --