OpenCloudOS Server 9 安装 Nginx 1.31、PHP 8.5、MariaDB 13.02
更新所有软件
Nginx
安装基本编译环境
dnf install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel wget
libzstd-devel # libzip
bzip2-devel libffi-devel sqlite-devel readline-devel # python 依赖
nasm # libjpeg-turbo
ncurses-devel libaio-devel boost-devel systemd-devel git # MariaDB
编译python
默认已安装python3.11
wget https://www.python.org/ftp/python/3.15.1/Python-3.15.1.tar.xz
tar -xf Python-3.15.1.tar.xz
cd Python-3.15.1
./configure --enable-optimizations --with-ensurepip=install
make
make altinstall
python3.15 --version # 检查 Python 版本
pip3.15 --version # 检查 pip 版本(若未安装 pip,执行 python3.12 -m ensurepip)
下载源码包
下载 pcre2
下载 zlib
源码包放到 /usr/local/src 下解压
解压三个源码压缩包
编译Nginx
cd nginx-1.31.8
./configure --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --pid-path=/usr/local/nginx/logs/nginx.pid --with-http_ssl_module --with-pcre=../pcre2-10.49 --with-zlib=../zlib-1.3.2
make #编译
make install #安装
如果后面遇到某个功能没有,只要修改 configure 中的参数就行了,重复执行 make make install 即可
配置启动Nginx
/usr/local/nginx/sbin/nginx #启动服务
/usr/local/nginx/sbin/nginx -s reload #重新加载服务
/usr/local/nginx/sbin/nginx -s stop #停止服务
ps -ef | grep nginx #查看服务进程
更改配置
开始设置开启启动项
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecReload=/usr/local/nginx/sbin/nginx -s reload
PrivateTmp=true
[Install]
WantedBy=multi-user.target
启用开机启动服务
最终的启动运行命令
PHP 8
安装基本编译环境
dnf install -y libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel sqlite-devel gmp-devel oniguruma-devel readline-devel libxslt-devel
安装CMake
wget https://github.com/Kitware/CMake/releases/download/v4.4.4/cmake-4.4.4.tar.gz
tar -zxvf cmake-4.4.4.tar.gz
cd cmake-4.4.4
./bootstrap
gmake
ln -s /usr/local/src/cmake-4.4.4/bin/cmake /usr/bin/cmake
cmake --version
安装libzip 必须先安装CMake
下载 libzip
dnf remove libzip
wget https://libzip.org/download/libzip-1.12.1.tar.gz
tar -zxvf libzip-1.12.1.tar.gz
cd libzip-1.12.1
mkdir build
cd build
cmake ..
make
make install
安装完成后,查看是否存在/usr/local/lib64/pkgconfig目录,如果存在,执行如下命令来设置PKG_CONFIG_PATH:
下载源码包
cd /usr/local/src
wget https://www.php.net/distributions/php-8.5.12.tar.gz # 下载
tar -zxvf php-8.5.12.tar.gz # 解压缩
安装 libjpeg
默认已安装2.0
wget https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/3.2.0/libjpeg-turbo-3.2.0.tar.gz
tar -zxvf libjpeg-turbo-3.2.0.tar.gz
cd libjpeg-turbo-3.2.0
mkdir build
cd build
cmake ..
make
make install # 此时,将libjpeg安装到了默认目录:/usr/local/lib
编译安装
cd php-8.5.12
# dnf -y install libvpx-devel libwebp-devel ## webp 图片支持需要 --with-webp
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --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 --enable-bcmath --with-openssl --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pear --with-zlib --with-iconv --with-curl --with-zip --with-gettext --with-webp=/usr/include/webp --with-jpeg=/usr/include --with-freetype=/usr/include/freetype2
make #编译
make install #安装
新增用户
赋予权限
修改配置文件
cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
cd /usr/local/php/etc/php-fpm.d
cp www.conf.default www.conf
find /usr/local/src/php-8.5.12 -name php.ini*
cp /usr/local/src/php-8.5.12/php.ini-production /usr/local/php/etc/php.ini
vim /usr/local/php/etc/php.ini
将 ;cgi.fix_pathinfo=1 改为 cgi.fix_pathinfo=0
将 expose_php = On 改为 expose_php = Off 隐藏版本号
将 [global] 下的 pid = run/php-fpm.pid 启用, 后面 php-fpm.service 中的 PIDFile 必须设成一样的路径,否则会出现找不到php-fpm.pid的情况
将
user = nobody group = nobody
改为
user = www group = www 需要先添加 www 用户和 www 组
初始命令
/usr/local/php/sbin/php-fpm -R # 这里后面带个 -R 表示用root 用户启动
/usr/bin/pkill -9 php-fpm
pstree -p | grep php
设置开机启动项
[Unit]
Description=php-fpm
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/php/var/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm
ExecStop=/usr/bin/pkill -9 php-fpm
PrivateTmp=true
[Install]
WantedBy=multi-user.target
可以使用systemctl命令管理php-fpm:
systemctl start php-fpm.service #启动
systemctl stop php-fpm.service #停止
service php-fpm start
service php-fpm stop
service php-fpm restart
service php-fpm reload
PHP拓展安装
imagick
sudo yum -y install ImageMagick-devel
cd /usr/local/src
tar xvf imagick-3.8.1.tgz
cd imagick-3.8.1
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
php.ini
搭配Nginx运行PHP站点
配置 Nginx
在 http 下添加
client_max_body_size 200M; #配置客户端请求体最大值
client_body_buffer_size 50m; #配置请求体缓存区大小
server_tokens off; # 隐藏响应头中的版本号
gzip on;
gzip_min_length 1k; #不压缩临界值,大于1k的才压缩
gzip_buffers 4 16k;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript text/css application/font-woff; # 需要压缩什么文件就加上文件类型,对于图片还是不要使用gzip压缩,直接在本地修改成其他图片格式效果更好
server {
server_name zodream.cn;
root /data/www/html; # 设置站点根目录
location / {
# root html;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$query_string; # 美化和伪静态需要设置路由重写
}
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;
}
## 配置 xxsqladmin 路径指向phpmyadmin
location ~ ^/xxsqladmin/.*\.php$ {
root /data/shop/phpmyadmin;
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^/xxsqladmin(.+?\.php)(.*)$") {
set $real_script_name $1;
}
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
include fastcgi_params;
}
## 配置 xxsqladmin 资源文件路径指向phpmyadmin
location ~ ^/xxsqladmin.* {
root /data/shop/phpmyadmin;
rewrite ^/xxsqladmin(.*)$ /$1 break;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}
修改完保存文件并重启Nginx服务器
MariaDB
useradd -r -s /sbin/nologin -d /data/mariadb mysql
mkdir -p /data/mariadb
chown -R mysql:mysql /data/mariadb
安装
cd /usr/local/src
wget https://archive.mariadb.org/mariadb-13.0.2/source/mariadb-13.0.2.tar.gz
tar xf mariadb-13.0.2.tar.gz
cd mariadb-13.0.2
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb -DMYSQL_DATADIR=/data/mariadb -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITHOUT_MROONGA_STORAGE_ENGINE=1 -DWITH_DEBUG=0 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_PCRE=system -DWITH_BOOST=system -DWITH_SYSTEMD=yes -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci # 有几个参数可能无效,但加上也没大问题
make -j$(nproc) # 使用所有 CPU 核心进行编译
make install
初始化
cd /usr/local/mariadb
# 初始化数据目录
./scripts/mysql_install_db --datadir=/data/mariadb --user=mysql
# 将安装目录下的 bin 加入环境变量
echo 'export PATH=/usr/local/mariadb/bin:$PATH' > /etc/profile.d/mariadb.sh
source /etc/profile.d/mariadb.sh
cat > /etc/my.cnf <<EOF
[mariadb]
basedir=/usr/local/mariadb
datadir=/data/mariadb
port=3306
socket=/data/mariadb/mariadb.sock
pid-file=/data/mariadb/mariadb.pid
log-error=/data/mariadb/mariadb.log
user=mysql
[client]
socket=/data/mariadb/mariadb.sock
[mariadb]
socket=/data/mariadb/mariadb.sock
EOF
添加开启启动项
[Unit]
Description=MariaDB Database Server
After=network.target
After=syslog.target
[Service]
Type=simple
User=mysql
Group=mysql
# 你的安装路径下的 mariadbd
ExecStart=/usr/local/mariadb/bin/mariadbd --defaults-file=/etc/my.cnf
# 如果启动失败,尝试延长超时时间
TimeoutSec=300
# 确保进程退出后能被 systemd 正确回收
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
验证安装
启动和设置开机启动
设置修改密码
mariadb-secure-installation 默认执行可能出现找不到 /tmp/mariadb.sock 的情况
所以需要使用
但是执行完使用 mariadb -u root 发现还是不需要密码,密码没修改成功。
这是可以使用sql语句修改
mariadb
ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('你的新密码');
FLUSH PRIVILEGES;
使用 Certbot 获取 letsencrypt 证书
如果出现 找不到 nginx
手动更新证书
历史版本
TencentOS Server 3.1 安装 Nginx 1.23、PHP 8.2、MariaDB 10.11
转载请保留原文链接: https://zodream.cn/blog/id/271.html