RockyLinux9源码安装LNMP

作者: 温新

分类: 【Linux】

阅读: 3048

时间: 2022-07-24 14:55:45

hi,我是温新,一名PHPer

贴近源码,折腾是一种进步

1、准备工作

我这里使用是的全新的环境进行安装。

更新

# 更新
dnf update -y

安装相关依赖包

# 依赖包
yum -y install epel-release
yum -y group install "Development Tools"

# mysql 依赖
yum -y install ncurses-devel

dnf -y install apr* autoconf automake bison bzip2* cpp curl-devel fontconfig fontconfig-devel kernel keyutils keyutils-libs-devel krb5-devel patch ncurses-devel  gtk* ntpstat na* bison*

dnf -y install gd gd-devel gettext-devel libjpeg* libtool* libxml2-devel libxml* libXaw-devel pcre-devel perl php-common php-gd sqlite-devel unzip libcurl-devel

源码安装 openssl

经过不断踩坑,才有了源码来安装 openssl 依赖。为什么要源码安装,因为 dnf -y install openssl-devel 后,后续安装 mysql8.0.20 没有识别到 openssl,但确实安装了 openssl。

cd /home/tmp
wget https://www.openssl.org/source/openssl-1.1.1q.tar.gz
cd openssl-1.1.1q

./config
make && make install

安装 PHP oniguruma

wget https://dl.rockylinux.org/pub/rocky/9/CRB/x86_64/os/Packages/o/oniguruma-devel-6.9.6-1.el9.5.x86_64.rpm
dnf -y install oniguruma-devel-6.9.6-1.el9.5.x86_64.rpm

安装 MySQL libtirpc-devel

wget https://dl.rockylinux.org/pub/rocky/9/CRB/x86_64/os/Packages/l/libtirpc-devel-1.3.2-1.el9.x86_64.rpm
dnf -y insatll libtirpc-devel-1.3.2-1.el9.x86_64.rpm

安装 MySQL 依赖 rpcsvc-proto

wget https://github.com/thkukuk/rpcsvc-proto/releases/download/v1.4/rpcsvc-proto-1.4.tar.gz
tar -zxvf rpcsvc-proto-1.4.tar.gz
cd rpcsvc-proto-1.4
./configure
make && make install

工具

dnf install -y wget vim lrzsz

关闭防火墙

# 关闭防火墙
systemctl stop firewalld.service
# 禁止开机自启
systemctl disable firewalld.service
# 查看状态
systemctl status firewalld.service

源码安装 MySQL8.0.28

卸载 mariadb

# 查看是否自带数据
rpm -qa|grep mariadb   

# 载自带数据库
yum -y remove mariadb* boost-*

检查是否存在mysql用户、用户组,不存在,创建

cat /etc/group  | grep mysql
cat /etc/passwd | grep mysql

# 创建mysql用户组
groupadd mysql

# 创建mysql用户并禁止登陆
useradd -g mysql mysql -M -s /sbin/nologin/

若存在,删除my.cnf mysql

rm -rf /etc/my.cnf
rpm -qa | grep mysql

安装 MySQL8.0.28

安装

# 1) 解压源码
tar -zxvf mysql-boost-8.0.28.tar.gz
cd mysql-boost-8.0.28
mkdir build
cd build

# 2)编译
cmake .. -DCMAKE_INSTALL_PREFIX=/home/softare/mysql8.0.28 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DSYSCONFDIR=/etc \
-DWITH_EXTRA_CHARSETS=all \
-DMYSQL_DATADIR=/home/softare/mysql8.0.28/data \
-DWITH_BOOST=/home/tmp/mysql8.0.28/boost \
-DDOWNLOAD_BOOST=1 

# 3)安装
make && make install

修改所属用户

# 修改所属组与用户
chown -R mysql:mysql /home/software/mysql8.0.28
# 修改权限
chmod -R 755 /home/software/mysql8.0.28

初始化

cd /home/software/mysql8.0.28/bin

./mysqld --initialize --user=mysql --datadir=/home/software/mysql8.0.28/data --character-set-server=utf8

【若出现如下问题】

[root@localhost bin]# ./mysqld --initialize --user=mysql --datadir=/home/software/mysql8.0.28/data --character-set-server=utf8
./mysqld: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

【解决如下】

dnf -y remove openssl-devel

dnf install -y compat-openssl11

执行后再去执行初始化操作

安装 ssl

/home/software/mysql8/bin/mysql_ssl_rsa_setup

启动mysql/u

/home/software/mysql8.0.28/bin/mysqld_safe --user=mysql &

用此命令开启后需要使用新的窗口连接数据库

连接mysql

第一步:连接

cd /home/software/mysql8.0.28/bin
./mysql -uroot -p

第二步:修改密码

alter user 'root'@'localhost' identified by "123456";

生产环境中密码千万不要随意设置成这样

设置mysql远程登陆

# 添加远程登陆用户
create user root@'%' identified by '123456';

# 这个服务器用
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Hy**520!';

# 为远程用户分配权限
grant all privileges on *.* to root@'%';

flush privileges;

# 【注】生产环境中千万不要把所有权限都分配给远程登陆用户

# 查看当前用户,host为 % 的用户表示远程登陆用户
select user,host from mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | %         |

在防火墙中开启3306远程访问,这样就能通过navicat等工具连接mysql

# 查看是否开放3306端口
firewall-cmd --list-ports

# 开启防火墙
systemctl start firewalld.service 

# 开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent

# 刷新
firewall-cmd --reload

# 关闭防火墙
systemctl stop firewalld.service 
# 禁止防火墙开机自启
systemctl disable firewalld.service 

设置环境变量

vim /etc/profile

# 添加内容
export PATH=$PATH:/home/software/mysql8.0.28/bin

# 刷新
source /etc/profile

设置开机自启

创建配置文件

vim /usr/lib/systemd/system/mysql8.0.28.service

# 注意:这里可以不用添加.service后缀,添加了也无妨,不影响

添加如下内容

[Unit]
Description=MySQL Server(8.0)
Documentation=main:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
 
[Install]
WantedBy=multi-user.target
 
[Service]
User=mysql
Group=mysql
ExecStart=/home/software/mysql8.0.28/bin/mysqld
LimitNOFILE=5000

设置开机自启

# 开机自启
systemctl enable mysql8.0.28.service	
# 取消开机自启
systemctl disable mysql8.0.28.service		

启动mysql服务

# 启动mysql服务
systemctl start mysql8.0.28.service		
# 重启mysql服务
systemctl restart mysql8.0.28.service	
# 查询mysql状态
systemctl status mysql8.0.28.service		

停止服务

cd /home/software/mysql8/support-files

# 停止
./mysql stop
# 启动
./mysql start
# 重启
./mysql restart

源码安装 nginx1.20.0

创建 nginx 用户组

groupadd nginx
useradd -g nginx nginx -M -s /sbin/nologin

安装 nginx1.20.0

# 1)下载
cd /home/tmp
wget http://nginx.org/download/nginx-1.22.0.tar.gz

# 2) 解压
tar -zxvf nginx-1.22.0.tar.gz 
cd nginx-1.22.0

# 3) 编译
./configure \
--prefix=/home/software/nginx1.22.0 \
--user=nginx \
--group=nginx \
--with-pcre \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-http_auth_request_module \
--with-mail \
--with-mail_ssl_module \
--with-stream_ssl_module

# 4) 安装
make && make install

设置 nginx 启动

方式一:设置开机自启

vim /usr/lib/systemd/system/nginx.service

配置如下内容,保存并退出

[Unit]
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/home/software/nginx1.22.0/sbin/nginx
ExecReload=/home/software/nginx1.22.0/sbin/nginx -s reload
ExecStop=/home/software/nginx/sbin/nginx1.22.0 -s quit

[Install]
WantedBy=multi-user.target

设置开机自启

# 设置开机自启
systemctl enable  nginx.service

# 留意留意如下命令
# 启动nginx
systemctl start nginx.service
# 禁止开机自启
systemctl disable  nginx.service
# 查看nginx状态
systemctl status nginx.service

方式二 nginx 启动

# 启动
/home/software/nginx1.22.0/sbin/nginx  
# 停止
/home/software/nginx1.22.0/sbin/nginx -s stop
# 重启
/home/software/nginx1.22.0/sbin/nginx -s reload  

源码安装PHP8.1.8

卸载自带的PHP

# 检查是否有自带的PHP
rpm -qa|grep php

# 卸载PHP
rpm -e php-gd-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64
rpm -e php-common-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64

# 再次查看
rpm -qa|grep php

创建用户

groupadd www
useradd -g www www -M -s /sbin/nologin

安装PHP

# 1) 下载并解压
cd /home/tmp
https://www.php.net/distributions/php-8.1.8.tar.gz
tar -zxvf php-8.1.8.tar.gz
cd  php-8.1.8

# 2)编译
./configure --prefix=/home/software/php8.1.8 \
--with-config-file-path=/home/software/php8.1.8/etc \
--with-fpm-user=www  \
--with-fpm-group=www \
--enable-mbstring  \
--enable-ftp  \
--enable-gd   \
--enable-gd-jis-conv \
--enable-mysqlnd \
--enable-pdo   \
--enable-sockets   \
--enable-fpm   \
--enable-xml  \
--enable-soap  \
--enable-pcntl   \
--enable-cli   \
--with-openssl  \
--with-mysqli=mysqlnd   \
--with-pdo-mysql=mysqlnd   \
--with-pear   \
--with-zlib  \
--with-iconv  \
--with-curl  \
--with-jpeg \
--enable-sockets

# 3)安装
make && make install

配置PHP

cp php.ini-production /home/software/php8.1.8/etc/php.ini
cp /home/software/php8.1.8/etc/php-fpm.conf.default /home/software/php8.1.8/etc/php-fpm.conf
cp /home/software/php8.1.8/etc/php-fpm.d/www.conf.default /home/software/php8.1.8/etc/php-fpm.d/www.conf

修改配置

# 编辑php-fpm.conf配置文件
vim /home/software/php8.1.8/etc/php-fpm.conf
# 去掉如下配置前的#号并保存退出
pid = /run/php-fpm.pid

设置开机自启

# 新增配置文件
vim /usr/lib/systemd/system/php-fpm8.1.8.service

# 添加如下内容保存并退出
[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target

[Service]
Type=simple
PIDFile=/run/php-fpm.pid
ExecStart=/home/software/php8.1.7/sbin/php-fpm --nodaemonize --fpm-config /home/software/php8.1.7/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -SIGINT $MAINPID

[Install]
WantedBy=multi-user.target

设置环境变量

vim /etc/profile

export PATH=$PATH:/home/software/php8.1.8/bin

source /etc/profile

Nginx 解析 PHP

第一步:编辑nginx.conf配置文件

cd /home/software/nginx/conf
cp nginx.conf nginx.conf.bak

vim nginx.conf

第二步:打开解析PHP的注释

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

第三步:修改路径

location ~ \.php$ {
   root           /home/www;
   fastcgi_pass   127.0.0.1:9000;
   fastcgi_index  index.php;
   fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
   include        fastcgi_params;
}

第四步:修改nginx web目录

location / {
   root   /home/www;
   index  index.php index.html index.htm;
}

第五步:重启nginx并测试php

mkdir /home/www
vim /home/www/index.php

<?php
phpinfo();

关于 RockyLinux8 问题

1) 源码安装 MySQL 问题

最开始我使用的 mysql8.0.20 进行源码安装,解决了依赖包的问题后,当编译工作进行到 50% 左右时,突然报错,此时的心情啊!!!

按照以往的经验来看,当通过 configure 后,进行 make 时,每次一都是成功编译并进行后续的安装,而在 rockylinux9 上,缺少很多相关依赖包,而且有些包已经安装了,但是软件却找不到。如 openssl 已经安装了,而 mysql8.0.20 却找不到,一直提示没有安装 openssl

2) 依赖包

导致一些软件安装失败的原因都是因为缺少相关依赖,但为什么安装了没有作用,及一些正常的所需要使用的依赖包没有提供 install 安装,这些原因就不知道了。

我是看着 RockyLinux9 发布稳定版本后才去下载使用的。相比于最开始发布的 RockyLinux8 ,9 明显却没有那么好使了。

使用 RockyLinux9 坑我挺惨的,以前的源码安装 LNMP 笔记在 RockyLinux9 上并不好使,我折腾了 3 个晚上,加一整天,终于把环境搭建好了。现在分享出来,仅作参考,学习交流。

请登录后再评论