超详细的RockyLinux8.5源码安装LNMP,值得收藏!

作者: 温新

分类: 【Linux】

阅读: 4315

时间: 2021-11-27 14:31:17

作者:温新

时间:2021-11-27

我喜欢源码搭建环境,虽然源码安装很花费时间,但是那种感觉很好。

RockyLinux8.5可用于生产环境了,尽情享受吧。这应该是最详细的了。

准备工作

安装软件

dnf install -y wget vim lrzsz

关闭防火墙

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

安装依赖

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

dnf - install gd gd-devel gettext-devel libjpeg* libtool* libxml2-devel libxml* libXaw-devel pcre-devel perl php-common php-gd sqlite-devel unzip libzip-devel
 oniguruma
dnf -y install gcc gcc-c++ cmake make openssl-devel

源码安装Nginx

创建用户与组

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

安装Nginx

cd /usr/local/src
tar -zxvf nginx-1.20.2.tar.gz 
cd nginx-1.20.2

# 编译
./configure \
--prefix=/usr/local/nginx \
--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

# 安装
make && make install

启动Nginx

方式一:设置开机自启

配置自启服务

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

保存配置并退出

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

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -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

方式二

# 启动
/usr/local/nginx/sbin/nginx				
# 停止
/usr/local/nginx/sbin/nginx -s stop		
# 重启
/usr/local/nginx/sbin/nginx	-s reload   

配置虚拟主机

创建服务目录

mkdir /www

备份nginx.conf文件

cd /usr/local/nginx/conf
cp ./nginx.conf ./nginx.conf.bak

源码安装MySQL8.0.20

卸载自带的mariadb数据库

# 查看是否自带数据
rpm -qa|grep mariadb   
# 载自带数据库
dnf -y remove mariadb* boost-*

检查是否存在mysql用户与组

# 检查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配置文件是否存在
rm -rf /etc/my.cnf
rpm -qa | grep mysql

安装MySQL依赖

cd /usr/local/src

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

安装MySQL8.0.20

cd /usr/local/src

# 解压
tar -zxvf mysql-boost-8.0.20.tar.gz
cd mysql-boost-8.0.20
mkdir build
cd build

# 编译与安装
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql8020 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DSYSCONFDIR=/etc \
-DWITH_EXTRA_CHARSETS=all \
-DMYSQL_DATADIR=/usr/local/mysql8020/data \
-DWITH_BOOST=/usr/local/src/mysql-8.0.20/boost \
-DDOWNLOAD_BOOST=1 

修改目录权限

# 修改所属组与用户
chown -R mysql:mysql /usr/local/mysql8020/
# 修改权限
chmod -R 755 /usr/local/mysql8020/

初始化mysql

cd /usr/local/mysql8020/bin/

# 初始化
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql8020/data --character-set-server=utf8

# 安装ssl
/usr/local/mysql8020/bin/mysql_ssl_rsa_setup

# 启动mysql
/usr/local/mysql8020/bin/mysqld_safe --user=mysql &

登录mysql

使用新的窗口进行登录

一:连接mysql

cd /usr/local/mysql8020/bin/

./mysql -uroot -p

输入 初始化mysql生成的密码

二:修改密码

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

三:创建远程登录用户

# 创建远程登录用户
create user root@'%' identified by '123456'
# 修改密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
# 分配权限
grant all privileges on *.* to root@'%';

flush privileges;

select user,host from mysql.user;

四:防火墙中开放3306端口

退出myslq

# 查看是否开放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:/usr/local/mysql8020/bin

# 刷新
source /etc/profile

设置环境变量

配置自启服务

vim /usr/lib/systemd/system/mysql8020.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=/usr/local/mysql/bin/mysqld8
LimitNOFILE=5000

设置开始自启

# 加入开机自启
systemctl enable mysql8020.service 

# 了解相关命令
# 禁止开机自启
systemctl disable mysql8020.service
# 启动mysql
systemctl start mysql8020.service 
# 关闭mysql
systemctl stop mysql8020.service 
# 查看状态
systemctl status mysql8020.service 

安装PHP8.1.0

卸载自带的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 

创建PHP用户

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

安装oniguruma依赖

# 下载并解压
cd /usr/local/src
wget https://github.com/kkos/oniguruma/archive/v6.9.4.tar.gz -O oniguruma-6.9.4.tar.gz
tar -zxf oniguruma-6.9.4.tar.gz
cd oniguruma-6.9.4

# 安装
./autogen.sh && ./configure --prefix=/usr
make && make install

源码安装PHP8.1.0

# 下载并解压
cd /usr/local/src
https://www.php.net/distributions/php-8.1.0.tar.gz
tar -zxvf php-8.1.0.tar.gz
cd  php-8.1.0/

# 编译与安装
./configure --prefix=/usr/local/php810 \
--with-config-file-path=/usr/local/php810/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  \
--enable-sockets

make && make install

拷贝配置文件

cp php.ini-production /usr/local/php810/etc/php.ini
cp /usr/local/php810/etc/php-fpm.conf.default /usr/local/php810/etc/php-fpm.conf
cp /usr/local/php810/etc/php-fpm.d/www.conf.default /usr/local/php810/etc/php-fpm.d/www.conf

修改配置文件

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

设置开机自启

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

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

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

[Install]
WantedBy=multi-user.target

设置开启自启及相关命令

# 加入开机自启动
systemctl enable php-fpm810.service

# 相关命令
# 启动
systemctl start php-fpm810.service
# 重启
systemctl restart php-fpm810.service
# 停止
systemctl stop php-fpm810.service
# 查看状态
systemctl status php-fpm810.service

手动关闭

# 关闭php-fpm服务
sudo kill -INT `cat /usr/local/php810/var/run/php-fpm.pid`
 
#启动
/usr/local/php810/sbin/php-fpm

设置环境变量

vim /etc/profile

export PATH=$PATH:/usr/local/php810/bin

source /etc/profile

配置Nginx解析PHP

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

cd /usr/local/nginx/conf

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           /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   /www;
    index  index.php index.html index.htm;
}

第五步:重启nginx并测试php

mkdir /www
vim /www/index.php

<?php
phpinfo();

浏览器访问就可以看到了

配置虚拟主机

该步骤我就不再操作了,把以前的笔记粘贴过来的

第一步:创建vhosts目录

cd /usr/local/nginx/conf/
mkdir vhosts

第二步:nginx.conf引入

include vhosts/*.conf;

第三步:配置基于端口的主机

cd /www

# 创建demo01 demo02目录
mkdir demo01 demo02

# 在demo01、demo02目录下分别创建index.php,内容如下:
# demo01/index.php
echo 'demo01,基于端口的虚拟主机';

# demo02/index.php
echo 'demo02 基于域名的虚拟主机';

第四步:配置

cd /usr/local/nginx/conf/vhosts
vim 8866.conf

# 添加如下内容
server {
    listen        8866;
    root   "/www/demo01";
    location / {
        index index.php index.html;
        autoindex  off;
    }
    location ~ \.php(.*)$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param  PATH_INFO  $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
        include        fastcgi_params;
    }
}

另外一个也是一样的,就不配置了,自己去配置

第五步:配置win10下hosts文件

# windows中的hosts文件
192.168.157.129	aabb.com

安装Composer

第一步:安装

cd /usr/local/src

php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" 
php composer-setup.php 
mv composer.phar /usr/local/bin/composer 

第二步:添加用于composer的用户

useradd ziruchu
# 设置密码
passwd ziruchu
12345

第三步:设置composer用户权限

# 将sudoers文件的权限修改成可编辑
chmod -v u+w /etc/sudoers
# 使用vim编辑sudoers文件
vim /etc/sudoers
# 内容如下
# 在sudoes文件中添加如下的内容
# 找到
root       ALL=(ALL)           ALL

# 然后添加
ziruchu     ALL=(ALL)       ALL
# 如需新用户使用sudo时不用输密码,把最后一个ALL改为NOPASSWD:ALL即可。

chmod -v u-w /etc/sudoers

第四步:修改目录权限

# 修改www目录所属组与所属用户为www
chown -R www:www /www

# 修改www目录权限
chmod -R 775 /www

# 把新增的用户加入www组
 usermod -G www ziruchu

第五步:配置国内镜像

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/  

源码安装Swoole

安装

cd /usr/local/src

https://github.com/swoole/swoole-src/archive/refs/tags/v4.8.2.tar.gz
tar -zxvf swoole-src-4.8.2.tar.gz 
cd swoole-src-4.8.2/
/usr/local/php810/bin/phpize

./configure \
--with-php-config=/usr/local/php810/bin/php-config \
--enable-openssl \
--enable-http2 \
--enable-sockets

make && make install

添加扩展

vim /usr/local/php810//etc/php.ini 
# php.ini文件中添加如下扩展并保存退出
extension=swoole.so

重启php

systemctl restart php-fpm810.service 

# 检查扩展
php -m | grep swoole

源码安装Redis

安装

cd /usr/local/src

# 下载与解压
wget https://download.redis.io/releases/redis-6.2.6.tar.gz
tar -zxvf redis-6.2.6.tar.gz
cd redis-6.2.6/

# 安装
make
make install PREFIX=/usr/local/redis626

创建配置目录

mkdir -p /usr/local/redis626/etc
cp ./redis.conf /usr/local/redis626/etc/

PHP安装redis扩展

pecl install redis

# 修改配置文件并保存退出
vim /usr/local/php810/etc/php.ini
extension=redis.so

# 检查
php -m | grep redis
# 重启php
systemctl restart php-fpm810.service

完整的LNMP搭建完毕,开始PHP之旅吧。

我是温新

每天进步一点点,就一点点

请登录后再评论