首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Rockylinux9-10安装nginx+php+mariadb保姆级教程

Rockylinux9-10安装nginx+php+mariadb保姆级教程

作者头像
爱技术的小黄鸭
发布2026-05-10 09:11:24
发布2026-05-10 09:11:24
470
举报
文章被收录于专栏:IT小圈IT小圈

前述

博主之前一直使用军哥的LNMP脚本部署环境,但从去年开始(也就是25年)发现,总是装不上mariadb和PHP,论坛也看到类似的求助,但军哥好像不维护了,原因未知……

最后博主决定自己部署安装,也是源码安装的,博主声明,下文所有操作均为实际操作总结得出,如遇到问题欢迎交流。

系统要求

  • Rockylinux9.x 或 10.x
  • 最小化安装

依赖处理

更新系统

代码语言:javascript
复制
dnf update -y

启用EPEL仓库和PowerTools/CRB仓库

代码语言:javascript
复制
dnf install epel-release -y
dnf config-manager --set-enabled crb

安装依赖

代码语言:javascript
复制
dnf install -y vim wget tar gzip make cmake gcc gcc-c++ \
  autoconf automake libtool pkgconfig \
  openssl-devel pcre2-devel zlib-devel \
  libxml2-devel libxslt-devel gd-devel \
  libwebp-devel libjpeg-turbo-devel libpng-devel \
  freetype-devel sqlite-devel oniguruma-devel \
  bzip2-devel readline-devel libicu-devel \
  ncurses-devel libedit-devel libzip-devel \
  curl-devel libevent-devel \
  systemd-devel pam-devel libsodium libsodium-devel php-pear php-devel

创建用户以及必要目录

创建安装目录

代码语言:javascript
复制
mkdir -p /usr/local/{php,mariadb,nginx}

创建nginx用户和mariadb用户

代码语言:javascript
复制
useradd -r -s /sbin/nologin nginx
useradd -r -s /sbin/nologin mysql

安装Mariadb

下载并解压Mariadb,这里以12.1.2为例

代码语言:javascript
复制
wget https://dlm.mariadb.com/4509471/MariaDB/mariadb-12.1.2/source/mariadb-12.1.2.tar.gz && \
tar xvf mariadb-12.1.2.tar.gz && cd mariadb-12.1.2

配置编译参数

代码语言:javascript
复制
cd mariadb-11.8.5
cmake . \
  -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb \
  -DMYSQL_DATADIR=/usr/local/mariadb/data \
  -DSYSCONFDIR=/etc \
  -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
  -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
  -DWITH_READLINE=1 \
  -DWITH_SSL=system \
  -DWITH_ZLIB=system \
  -DWITH_LIBWRAP=0 \
  -DDEFAULT_CHARSET=utf8mb4 \
  -DDEFAULT_COLLATION=utf8mb4_general_ci \
  -DMYSQL_UNIX_ADDR=/tmp/mysql.sock

编译安装

代码语言:javascript
复制
make -j$(nproc) && make install

初始化数据库

代码语言:javascript
复制
/usr/local/mariadb/scripts/mysql_install_db \
  --user=mysql \
  --basedir=/usr/local/mariadb \
  --datadir=/usr/local/mariadb/data

目录权限配置

代码语言:javascript
复制
chown -R mysql:mysql /usr/local/mariadb/data
chmod 750 /usr/local/mariadb/data

创建 my.conf 配置文件

代码语言:javascript
复制
tee /etc/my.cnf > /dev/null << 'EOF'
[client]
port = 3306
socket = /tmp/mysql.sock

[mysqld]
port = 3306
socket = /tmp/mysql.sock
basedir = /usr/local/mariadb
datadir = /usr/local/mariadb/data
pid-file = /usr/local/mariadb/data/mysql.pid
log-error = /usr/local/mariadb/data/mysql-error.log

character-set-server = utf8mb4
collation-server = utf8mb4_general_ci

[mysql]
default-character-set = utf8mb4
EOF

创建 mariadb systemd服务

代码语言:javascript
复制
cat support-files/mariadb.service > /etc/systemd/system/mariadb.service

启动 mariadb

代码语言:javascript
复制
systemctl daemon-reload && systemctl start mariadb && systemctl status mariadb

加入开机启动

代码语言:javascript
复制
systemctl enable mariadb

设置 root 用户密码

代码语言:javascript
复制
/usr/local/mariadb/bin/mysqladmin -u root password 'your_password_here'

安装Nginx

下载Nginx并解压,这里以1.26.3为例

代码语言:javascript
复制
wget https://nginx.org/download/nginx-1.26.3.tar.gz
tar xvf nginx-1.26.3.tar.gz && cd nginx-1.26.3

编译配置

代码语言:javascript
复制
./configure \
  --prefix=/usr/local/nginx \
  --user=nginx \
  --group=nginx \
  --with-http_ssl_module \
  --with-http_v2_module \
  --with-http_v3_module \
  --with-http_realip_module \
  --with-http_stub_status_module \
  --with-http_gzip_static_module \
  --with-http_sub_module \
  --with-pcre \
  --with-stream \
  --with-stream_ssl_module

编译安装

代码语言:javascript
复制
make -j$(nproc) && make install

创建 Nginx的systemctl 服务

代码语言:javascript
复制
tee /etc/systemd/system/nginx.service > /dev/null << 'EOF'
[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

nginx 主配置文件

代码语言:javascript
复制
tee /usr/local/nginx/conf/nginx.conf > /dev/null << 'EOF'
user nginx nginx;
worker_processes auto;
error_log /usr/local/nginx/logs/error.log;
pid /usr/local/nginx/logs/nginx.pid;

events {
  worker_connections 1024;
  use epoll;
}

http {
  include mime.types;
  default_type application/octet-stream;
  
  log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';
  
  access_log /usr/local/nginx/logs/access.log main;
  
  sendfile on;
  tcp_nopush on;
  tcp_nodelay on;
  keepalive_timeout 65;
  types_hash_max_size 2048;
  
  gzip on;
  gzip_min_length 1k;
  gzip_comp_level 2;
  gzip_types text/plain text/css application/json application/javascript text/xml;
  
  include /usr/local/nginx/conf/vhost/*.conf;
}
EOF

创建虚拟主机目录

代码语言:javascript
复制
mkdir -p /usr/local/nginx/conf/vhost

启动Nginx服务

代码语言:javascript
复制
systemctl daemon-reload && systemctl start nginx && systemctl status nginx

加入开机启动

代码语言:javascript
复制
systemctl enable nginx

firewall放行http https

代码语言:javascript
复制
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload && firewall-cmd --list-all

如果需要放行指定端口

代码语言:javascript
复制
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp

安装PHP

下载PHP并解压,这里以8.5.1为例

代码语言:javascript
复制
wget https://www.php.net/distributions/php-8.5.1.tar.gz && tar xvf php-8.5.1.tar.gz && cd php-8.5.1

编译配置

代码语言:javascript
复制
./configure \
  --prefix=/usr/local/php \
  --with-config-file-path=/usr/local/php/etc \
  --with-config-file-scan-dir=/usr/local/php/etc/php.d \
  --enable-fpm \
  --with-fpm-user=nginx \
  --with-fpm-group=nginx \
  --enable-mysqlnd \
  --with-mysqli=mysqlnd \
  --with-pdo-mysql=mysqlnd \
  --with-iconv \
  --with-zlib \
  --enable-xml \
  --enable-bcmath \
  --enable-shmop \
  --enable-sysvsem \
  --enable-mbregex \
  --enable-mbstring \
  --enable-ftp \
  --enable-gd \
  --with-webp \
  --with-jpeg \
  --with-freetype \
  --enable-soap \
  --enable-pcntl \
  --enable-sockets \
  --with-openssl \
  --enable-intl \
  --with-curl \
  --with-zip \
  --with-bz2 \
  --with-gettext \
  --with-mhash \
  --with-pear \
  --enable-zts=no \
  --disable-rpath \
  --with-sodium \
  --with-libxml

编译安装

代码语言:javascript
复制
make -j$(nproc) && make install

复制并修改配置文件

代码语言:javascript
复制
cp php.ini-production /usr/local/php/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

sed -i 's/;pid = run\/php-fpm.pid/pid = run\/php-fpm.pid/' /usr/local/php/etc/php-fpm.conf
sed -i 's/listen = 127.0.0.1:9000/listen = 127.0.0.1:9000/' /usr/local/php/etc/php-fpm.d/www.conf
sed -i 's/;listen.owner = nobody/listen.owner = nginx/' /usr/local/php/etc/php-fpm.d/www.conf
sed -i 's/;listen.group = nobody/listen.group = nginx/' /usr/local/php/etc/php-fpm.d/www.conf
sed -i 's/user = nobody/user = nginx/' /usr/local/php/etc/php-fpm.d/www.conf
sed -i 's/group = nobody/group = nginx/' /usr/local/php/etc/php-fpm.d/www.conf

创建 system 服务 php-fpm

代码语言:javascript
复制
tee /etc/systemd/system/php-fpm.service > /dev/null << 'EOF'
[Unit]
Description=PHP FastCGI Process Manager
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/php/var/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

创建运行目录

代码语言:javascript
复制
mkdir -p /usr/local/php/var/run
chown -R nginx:nginx /usr/local/php/var

启动服务

代码语言:javascript
复制
systemctl daemon-reload && systemctl start php-fpm && systemctl status php-fpm

创建测试页面

代码语言:javascript
复制
tee /usr/local/nginx/conf/vhost/80.conf > /dev/null << 'EOF'
server {
  listen 80;
  server_name localhost;
  
  root /usr/local/nginx/html;
  index index.php index.html;
  
  location / {
      try_files $uri $uri/ =404;
  }
  
  location ~ \.php$ {
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
  }
  
  location ~ /\.ht {
      deny all;
  }
}
EOF

重启Nginx服务

代码语言:javascript
复制
systemctl restart nginx

创建 php info 页面

代码语言:javascript
复制
tee /usr/local/nginx/html/index.php > /dev/null << 'EOF'
<?php
phpinfo();
?>
EOF

加入环境变量

代码语言:javascript
复制
echo 'export PATH=/usr/local/php/bin:/usr/local/php/sbin:/usr/local/mariadb/bin:/usr/local/nginx/sbin:$PATH' >> /etc/profile
source /etc/profile

声明

上述内容为博主实操验证所得,由于环境不同,人工操作易出错等原因,博主不保证100%成功,如遇到异常错误失败等情况,请核对操作是否有误,如实在找不到原因的可以提问腾讯元宝豆包kimi等智能助手,当然了,也欢迎和博主交流。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前述
  • 系统要求
  • 依赖处理
  • 创建用户以及必要目录
  • 安装Mariadb
  • 安装Nginx
  • 安装PHP
  • 声明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档