OpenCloudOS Server 9 安装 Nginx 1.31、PHP 8.5、MariaDB 13.02

Fork Me On Github
zodream 其他技术 1小时前

OpenCloudOS Server 9 安装 Nginx 1.31、PHP 8.5、MariaDB 13.02

更新所有软件

     
dnf update -y



make -j$(nproc) # 使用所有 CPU 核心进行编译
12345

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
123456

编译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)
1234567891011121314

下载源码包

下载 pcre2

下载 zlib

源码包放到 /usr/local/src 下解压

  
cd /usr/local/src #进入src文件夹
wget https://nginx.org/download/nginx-1.31.8.tar.gz #下载nginx源码包
12

解压三个源码压缩包

   
tar -zxvf pcre2-10.49.tar.gz # 解压缩
tar -zxvf zlib-1.3.2.tar.gz
tar -zxvf nginx-1.31.8.tar.gz
123

编译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        #安装
123456

如果后面遇到某个功能没有,只要修改 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                         #查看服务进程
1234

更改配置

 
vi /usr/local/nginx/conf/nginx.conf # 这是站点配置文件
1

开始设置开启启动项

  
vi /usr/lib/systemd/system/nginx.service
12
txt
             
[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
12345678910111213

启用开机启动服务

 
systemctl enable nginx.service
1

最终的启动运行命令

     
service nginx start
service nginx stop
service nginx restart
service nginx reload
12345

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
1

安装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
123456789

安装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
123456789

安装完成后,查看是否存在/usr/local/lib64/pkgconfig目录,如果存在,执行如下命令来设置PKG_CONFIG_PATH:

  
export PKG_CONFIG_PATH="/usr/local/lib64/pkgconfig/"
12

下载源码包

   
cd /usr/local/src
wget https://www.php.net/distributions/php-8.5.12.tar.gz  # 下载
tar -zxvf php-8.5.12.tar.gz   # 解压缩
123

安装 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
123456789

编译安装

          
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        #安装
12345678910

新增用户

       
cat /etc/passwd

# useradd -s /sbin/nologin -M www

groupadd www

useradd -g www www -s /sbin/nologin
1234567

赋予权限

 
chown -R www:www /run/php-fpm
1

修改配置文件

            
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
123456789101112

将 ;cgi.fix_pathinfo=1 改为 cgi.fix_pathinfo=0

将 expose_php = On 改为 expose_php = Off 隐藏版本号

 
vim /usr/local/php/etc/php-fpm.conf
1

将 [global] 下的 pid = run/php-fpm.pid 启用, 后面 php-fpm.service 中的 PIDFile 必须设成一样的路径,否则会出现找不到php-fpm.pid的情况

 
vim /usr/local/php/etc/php-fpm.d/www.conf
1

将 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
123

设置开机启动项

 
vi /usr/lib/systemd/system/php-fpm.service
1
txt
             
[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
12345678910111213
 
systemctl enable php-fpm.service
1

可以使用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
1234567

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
1234567891011

php.ini

 
extension=imagick.so
1

搭配Nginx运行PHP站点

配置 Nginx

  
vi /usr/local/nginx/conf/nginx.conf
12

在 http 下添加

txt
         
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压缩,直接在本地修改成其他图片格式效果更好
123456789
conf
                                             
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;
    }

}
123456789101112131415161718192021222324252627282930313233343536373839404142434445

修改完保存文件并重启Nginx服务器

MariaDB

    
useradd -r -s /sbin/nologin -d /data/mariadb mysql

mkdir -p /data/mariadb
chown -R mysql:mysql /data/mariadb
1234

安装

               
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
123456789101112131415

初始化

                           
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
123456789101112131415161718192021222324252627

添加开启启动项

 
vi /etc/systemd/system/mariadb.service
1
                      
[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
12345678910111213141516171819202122

验证安装

       
systemctl daemon-reload

systemctl enable --now mariadb


systemctl status mariadb # 验证状态
1234567

启动和设置开机启动

   
systemctl start mariadb  # 开启服务

systemctl enable mariadb  # 设置为开机自启动服务
123

设置修改密码

mariadb-secure-installation 默认执行可能出现找不到 /tmp/mariadb.sock 的情况

所以需要使用

 
mariadb-secure-installation --socket=/data/mariadb/mariadb.sock
1

但是执行完使用 mariadb -u root 发现还是不需要密码,密码没修改成功。

这是可以使用sql语句修改

    
mariadb

ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('你的新密码');
FLUSH PRIVILEGES;
1234

使用 Certbot 获取 letsencrypt 证书

   
dnf install certbot python3-certbot-nginx

certbot --nginx
123

如果出现 找不到 nginx

  
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
ln -s /usr/local/nginx/conf/ /etc/nginx
12

手动更新证书

 
certbot renew
1

历史版本

TencentOS Server 3.1 安装 Nginx 1.23、PHP 8.2、MariaDB 10.11

CentOs 7 安装apche php mysql

点击查看全文
0 1 0