Rocky Linux 是目前最好的 CentOS 替代系统,由于红帽的一系列骚操作,让用户对 CentOS 的使用前景产生了动摇,恰好 CentOS 之父挺身而出,独立开发了 Rocky Linux 项目,让广大 CentOS 的用户松了一口气。Rocky Linux 自发布以来,一直好评不断,逐渐在应用环境中广泛部署。

本文将详细讲解如何使用 Rocky Linux 系统部署 LEMP 环境。

1] 安装 Rocky Linux

Rocky Linux 的安装和 CentOS 安装十分类似,下载安装镜像刻录好介质直接安装即可。最新的 Rocky Linux 发行版版本为 8.4,对标 RHEL 8.4 版。

通过安装介质启动主机,选择好系统语言后,根据提示进行相关设置,即可进行 Rocky Linux 的安装:

图.1 Rocky Linux 安装界面

可以看到,Rocky Linux 的安装界面同 RHEL 系列没有区别,界面中需要设置的部分设置好,点击”Begin Installation”就会把 Rocky Linux 系统安装到硬盘中。由于要部署 LEMP 环境,对于 GUI 的需求不大,所以示例选择了最小化安装,需要其它应用直接通过”dnf”命令安装即可。

安装完成后,重新启动主机,就完成了 Rocky Linux 的安装,系统信息如下:

图.2 Rocky Linux 系统信息

2] 安装 Nignx 服务器

虽然 Rocky Linux 软件库中包含了 Nginx 软件包,但是建议通过添加官方软件库方式安装 Nginx 的预安装版本。这样可以安装最新版的 Nginx 服务器软件。

Rocky Linux 系统采用 Nginx 官方RHEL/CentOS 的解决方案来安装预安装版本。

首先使用如下命令预安装工具:

# yum install yum-utils

之后,添加”/etc/yum.repos.d/nginx.repo”文件用于指定 Nginx 软件源至系统软件源,文件内容如下:

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

最后,就可以通过如下命令选择安装稳定版还是主线版本了:

# yum-config-manager --enable nginx-mainline    //设置安装版本为主线版本(不设置默认安装稳定版)
# yum install nginx                             //根据设置安装nginx

由于没有特殊要求,示例直接安装稳定版。

安装完成后,启动 nginx 并查看状态:

# systemctl enable --now nginx
# systemctl status nginx

图.3 启动 Nginx 服务器并查看状态

Nginx 虽然启动成功,需要使用如下命令开启 Rocky Linux 的软件防火墙,否则不能通过浏览器访问 Nginx 的 Web 页面:

# firewall-cmd --add-service=http --zone=public --permanent
# firewall-cmd --reload

现以,就可以通过浏览器访问 Web 页面了。示例服务器 IP 地址为 172.16.200.1,浏览器输入该地址,就会见到如下页面,表示 Nginx 服务器安装配置成功:

图.4 Nginx 服务器默认主页

3] 安装 MySQL/MariaDB 数据库

LEMP 环境中的 M 既可以指代 MySQL 数据库,也可以指代 MariaDB 数据库,数据库操作比较类似,性能上 MySQL 优于 MariaDB。同样是由于 Oracle 的骚操作,MySQL 存在闭源化风险,于是 MariaDB 才会在 LEMP 环境中占有一席之地。

Rocky Linux 两种数据库管理系统均提供了预安装版本,根据自己的实际需要选择一款安装即可,操作上区别不大:

# dnf install mysql mysql-server        //安装mysql数据库
# dnf install mariadb mariadb-server    //安装mariadb数据库

安装完成后,启动数据库,并进行必要的安全配置,示例使用 MySQL 数据库:

# systemctl enable --now mysqld
# mysql_secure_installation
# mysql -u root -p

图.5 MySQL 数据库基本信息

启动 MySQL 数据库,成功登录后,查看系统如图.5所示,表示 MySQL 数据库已经安装成功。

4] 安装 PHP

Rocky Linux 同样有 PHP 的预安装版本,但是源代码安装可以根据使用要求选择 PHP 7 还是 PHP 8。PHP 是应用较为广泛的服务器端脚本语言,PHP 8据说在性能上有较大提升,示例将在 Rocky Linux 系统源代码安装 PHP 8。

下载 PHP 8 的源代码并解压,使用如下命令进行源代码安装:

# ./configure --enable-fpm --enable-gd --with-zlib --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock
# make && make test && make install

示例只安装了 php-fpm、gd 和 pdo-mysql 扩展,需要安装其他扩展的话,只需要进入源文件中对应扩展的目录,执行”phpize”命令,之后再进行配置和安装,最后在 PHP 的配置文件 php.ini 文件中引入该扩展即可,本次就不做过多演示。

安装成功后,需要修改 php 和 php-pfm 的配置来让 php 可以同 Nginx 配合工作。

首先将 php-fpm 工具及 php.ini 移动到正确位置:

# cp php.ini-development /usr/local/lib/php.ini
# cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
# cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf
# cp sapi/fpm/php-fpm /usr/local/bin

修改”/usr/local/lib/php.ini”,将”cgi.fix_pathinfo=1″取消注释,并修改为”cgi.fix_pathinfo=0″;

修改”/usr/local/etc/php-fpm.conf”,将”include=NONE/etc/php-fpm.d/*.conf”修改为”include=/usr/local/etc/php-fpm.d/*.conf”;

修改”/usr/local/etc/php-fpm.d/www.conf”,将”user=nobody”修改为”user=nginx”,将”group=nobody”修改为”group=nginx”;

之后修改 Nginx 的默认配置文件”/etc/nginx/conf.d/default.conf”,修改 cgi 部分使其支持 php:

location ~ \.php$ {
    root /usr/share/nginx/html;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
    include fastcgi_params;
}

验证 Nginx 和 PHP 是否协同工作正常,使用如下命令生成一个 php 文件:

# echo "<?php phpinfo(); ?>" >> /usr/share/nginx/html/php.php

之后,重新启动 Nginx 服务器,并启动 php-fpm:

# systemctl restart nginx
# php-fpm

最后,通过浏览器访问”http://172.16.200.1/php.php”,如果见到如下页面,则表示 PHP 安装成功并且同 Nginx 配合工作正常:

图.6 显示 PHP 信息页面

当然,源代码安装软件一般会遇到问题,常见问题及解决办法如下:

Q1、configure: error: no acceptable C compiler found in $PATH
A1:# dnf install gcc
Q2、Package 'libxml-2.0', required by 'virtual:world', not found
A2:# dnf install libxml2-devel
Q3、Package 'sqlite3', required by 'virtual:world', not found
A3:# dnf install sqlite-devel
Q4、Package 'libpng', required by 'virtual:world', not found
A4:# dnf install libpng-devel
Q5、PHP 页面显示不正常
A5:由于启用了 SElinux,建议将 Enforing 配置修改为 disabled

至此,Rocky Linux 系统的 LEMP 环境就搭建完成。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注