本文参考How to Install LEMP Stack on Rocky Linux 9一文,并在虚拟机中试验成功。
LNMP(又有称LEMP的)是免费、开源软件的组合。首字母缩略词LNMP指的是Linux(操作系统)、Nginx服务器、MySQL(数据库软件)和PHP、PERL或Python的首字母,它们是构建一个可行的通用web服务器的主要组件。
升级系统
首先,我们将使用以下命令将系统更新到最新版本
dnf update
注:如果你习惯用yum update
,那么Rocky Linux同样支持。两者属于不同的包管理软件,只是dnf更强大,速度也更快,所以下面所有的安装都通过dnf进行。
安装NGINX服务
首先,我们将从安装Nginx服务开始。要完成安装,请使用以下命令:
dnf install nginx -y
输出:
安装完成后,启动web服务器,添加Nginx到系统服务中,并使用以下命令验证状态。
systemctl start nginx
systemctl enable nginx
systemctl status nginx
输出:
检查Nginx版本:
nginx -v
输出:
[root@localhost ~]# nginx -v
nginx version: nginx/1.20.1
要使你的网页对公众开放,你必须使用以下命令编辑你的防火墙规则,以允许web服务器上的HTTP请求。
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
输出:
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-service=http
success
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-service=https
success
[root@localhost ~]# firewall-cmd --reload
success
通过访问服务器的IP地址,验证web服务器正在运行并可访问。
在浏览器中输入地址:
http://IP_address
我们需要让Nginx用户成为web目录的所有者。默认情况下,它属于root用户。
chown nginx:nginx /usr/share/nginx/html -R
注:用户可以根据自己的需要调整,别太离谱就成。常用的还有www:www或者http:http之类的。
安装MariaDB服务
MariaDB是一个流行的数据库服务器(它属于MySQL的分支,并保留了与MySQL的高度兼容性)。安装很简单,只需要几个步骤,如下所示。
dnf install mariadb-server mariadb -y
安装完成后,启动MariaDB,开启MariaDB的自启动服务,并使用下面的命令验证状态。
systemctl start mariadb
systemctl enable mariadb
systemctl status mariadb
最后,你需要通过以下命令来对MariaDB的安装进行安全设置。
mysql_secure_installation
安全设置之后,你可以连接到MySQL,并使用以下命令查看数据库服务器上的现有数据库。
mysql -e "SHOW DATABASES;" -p
输出:
[root@localhost ~]# mysql -e "SHOW DATABASES;" -p
Enter password:
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
安装PHP
执行以下命令安装PHP-FPM。
dnf install php php-mysqlnd php-fpm php-opcache php-gd php-xml php-mbstring -y
安装完成后,启动php-fpm,启用php-fpm自动启动,并使用下面的命令验证状态。
systemctl start php-fpm
systemctl enable php-fpm
systemctl status php-fpm
默认情况下,PHP-FPM作为Apache用户运行。由于我们使用的是NGINX Web服务器,因此我们需要更改以下行。
使用你喜欢的编辑器,编辑文件/etc/php-fpm.d/www.conf
。
vim /etc/php-fpm.d/www.conf
找到以下内容:
user = apache
group = apache
将它们改为:
user = nginx
group = nginx
注:如果你在安装nginx的步骤中,将web目录改成了www或者http用户和用户组,那么这里也做相应调整。
更改后,需要重新加载php-fpm
。
systemctl reload php-fpm
现在,可以通过创建一个简单的info.php文件来测试你的PHP服务。该文件应放在你的Web服务器的根目录/usr/share/nginx/html/
中。
用以下代码创建文件:
echo "<?php phpinfo() ?>" > /usr/share/nginx/html/info.php
重启Nginx和PHP-FPM。
systemctl restart nginx php-fpm
现在,再次访问http://localhost/info.php或http://yourserver-ip-address/info.php,你应该看到与下面类似的页面。
问题汇总
在使用systemctl enable nginx
命令时,系统提示/etc/rc.d/rc.local not marked executable, skipping
。
使用systemctl status rc-local
命令查看rc-local的服务
结果服务未启动。
使用systemctl enable rc-local
开启服务,错误提示如下:
The unit files have no [Install] section. They are not meant to be enabled
using systemctl.
Possible reasons for having this kind of units are:
1) A unit may be statically enabled by being symlinked from another unit's
.wants/ or .requires/ directory.
2) A unit's purpose may be to act as a helper for some other unit which has
a requirement dependency on it.
3) A unit may be started when needed via activation (socket, path, timer,
D-Bus, udev, scripted systemctl call, ...).
解决办法就是编辑/etc/systemd/system/rc-local.service
文件:
[Unit]
Description=/etc/rc.d/rc.local Compatibility
ConditionPathExists=/etc/rc.d/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.d/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
保存后还需确保rc.local可执行,因此执行如下命令:
sudo chmod +x /etc/rc.d/rc.local
重新启动服务,问题解决。
该问题参考资料:https://www.linuxbabe.com/linux-server/how-to-enable-etcrc-local-with-systemd