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 环境就搭建完成。