麒麟V10离线部署指南:rpm一键搭建nginx+php+mariadb全栈环境
1. 麒麟V10离线环境部署全栈服务的必要性在不少企业级应用场景中服务器往往运行在内网环境无法直接连接互联网进行软件安装。这时候就需要通过离线方式部署必要的服务环境。麒麟V10作为国产操作系统的代表在政务、金融等领域应用广泛。本文将详细介绍如何在麒麟V10系统上通过rpm包一键搭建nginxphpmariadb的全栈环境。我曾经在一个银行项目中遇到过类似情况客户要求所有服务器必须完全隔离外网但又要部署一套完整的Web应用环境。当时就是通过离线rpm包的方式完成了环境搭建整个过程虽然有些曲折但最终效果很稳定。下面就把我的经验分享给大家。离线部署最大的挑战在于解决软件依赖关系。与在线安装不同离线安装需要手动处理所有依赖包。这就要求我们在准备阶段就要考虑周全把可能需要的依赖都打包下载好。另外由于无法实时获取更新建议选择稳定版本的软件包进行部署。2. 准备工作获取所需rpm安装包2.1 在有网络环境下准备rpm包如果你有一台可以联网的麒麟V10系统最简单的办法就是使用yum的下载功能获取所需rpm包。具体操作如下# 创建存放rpm包的目录 mkdir -p /home/rpm_packages # 下载nginx及其依赖包 yum install --downloadonly --downloaddir/home/rpm_packages/nginx nginx # 下载php及相关扩展 yum install --downloadonly --downloaddir/home/rpm_packages/php php php-fpm php-common php-mysqlnd php-gd php-mbstring # 下载mariadb yum install --downloadonly --downloaddir/home/rpm_packages/mariadb mariadb mariadb-server这里有几个注意事项php-fpm是必须安装的它是nginx和php之间的桥梁php-mysqlnd是php连接mariadb的驱动php-gd和php-mbstring是很多Web应用需要的基础扩展2.2 从官方镜像站下载rpm包如果没有可用的联网环境可以直接从镜像站下载所需rpm包。麒麟官方提供了完整的rpm包仓库麒麟V10 SP1: https://update.cs2c.com.cn/NS/V10/V10SP1/os/adv/lic/base/aarch64/Packages/麒麟V10 SP2/SP3的地址类似只需替换版本号即可此外还可以从以下公共镜像站获取兼容的rpm包阿里云镜像站https://developer.aliyun.com/mirror/清华大学镜像站https://mirrors.tuna.tsinghua.edu.cn/下载时要注意系统架构aarch64或x86_64以及麒麟系统的具体版本避免兼容性问题。建议先下载主包再根据安装时的报错信息补充下载缺失的依赖包。3. 安装nginx服务3.1 强制安装nginx及其依赖将下载好的nginx rpm包拷贝到目标服务器的某个目录比如/home/rpm_packages/nginx然后执行cd /home/rpm_packages/nginx rpm -ivh --force *.rpm使用--force参数是为了强制安装所有包即使有些包已经安装过或者版本不一致。这在离线环境中很常见因为我们无法实时解决依赖关系。安装完成后可以通过以下命令验证nginx是否安装成功nginx -v3.2 配置nginx服务管理麒麟V10使用systemd管理服务相关操作命令如下# 设置开机自启 systemctl enable nginx # 启动服务 systemctl start nginx # 查看服务状态 systemctl status nginx # 重新加载配置 systemctl reload nginx # 重启服务 systemctl restart nginx如果遇到端口冲突问题默认80端口可能被占用可以修改/etc/nginx/nginx.conf中的监听端口。修改配置后记得reload使更改生效。我曾经遇到过nginx启动失败的情况后来发现是SELinux导致的。临时解决方案是执行setenforce 0但这会降低系统安全性。更好的做法是配置SELinux策略允许nginx访问所需资源。4. 安装和配置PHP环境4.1 安装PHP及常用扩展将php的rpm包拷贝到服务器比如/home/rpm_packages/php目录然后执行cd /home/rpm_packages/php rpm -ivh --force *.rpm特别注意php-fpm必须安装它是nginx和php之间的桥梁。安装完成后验证php -v php-fpm -v4.2 配置php-fpmphp-fpm的配置文件通常位于/etc/php-fpm.conf和/etc/php-fpm.d/www.conf。主要需要关注以下参数listen 127.0.0.1:9000 user nginx group nginx pm dynamic pm.max_children 50 pm.start_servers 5 pm.min_spare_servers 5 pm.max_spare_servers 35配置完成后启动php-fpm服务systemctl enable php-fpm systemctl start php-fpm4.3 测试PHP解析创建一个测试文件/usr/share/nginx/html/info.php内容为?php phpinfo(); ?然后在浏览器中访问http://服务器IP/info.php应该能看到PHP信息页面。如果看到的是源码而不是解析后的页面说明nginx和php-fpm的连接没有配置正确。5. 安装和配置MariaDB数据库5.1 安装MariaDB将mariadb的rpm包拷贝到服务器比如/home/rpm_packages/mariadb目录然后执行cd /home/rpm_packages/mariadb rpm -ivh --force *.rpm安装完成后初始化MariaDBsystemctl enable mariadb systemctl start mariadb5.2 安全配置MariaDBMariaDB安装后默认root密码为空需要立即设置mysql_secure_installation按照提示设置root密码并移除测试数据库和匿名用户等不安全配置。也可以手动设置密码mysql -uroot use mysql; SET passwordPASSWORD(你的密码); FLUSH PRIVILEGES; exit5.3 创建应用数据库为你的应用创建专用数据库和用户mysql -uroot -p CREATE DATABASE app_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER app_userlocalhost IDENTIFIED BY 密码; GRANT ALL PRIVILEGES ON app_db.* TO app_userlocalhost; FLUSH PRIVILEGES; exit6. 项目部署与nginx配置6.1 部署项目文件建议将项目文件放在专门的目录比如/wwwmkdir -p /www chown -R nginx:nginx /www将你的PHP项目文件上传到/www目录下。注意检查文件权限nginx用户需要有读取权限。6.2 配置nginx虚拟主机编辑/etc/nginx/nginx.conf或/etc/nginx/conf.d/default.conf配置类似如下server { listen 80; server_name yourdomain.com; root /www/public; index index.php index.html index.htm; location / { 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; } location ~ /\.ht { deny all; } }6.3 优化PHP配置根据项目需求调整/etc/php.ini中的参数upload_max_filesize 20M post_max_size 22M memory_limit 128M max_execution_time 120 date.timezone Asia/Shanghai修改配置后需要重启php-fpm使更改生效systemctl restart php-fpm7. 常见问题排查7.1 nginx报错处理如果看到类似警告nginx: [warn] could not build optimal types_hash...可以编辑nginx.conf在http块中添加types_hash_max_size 4096; types_hash_bucket_size 128;7.2 PHP文件下载而不是执行这通常是因为nginx没有正确将PHP文件传递给php-fpm处理。检查nginx配置中是否正确配置了PHP处理locationphp-fpm服务是否正常运行SELinux是否阻止了nginx与php-fpm的通信7.3 数据库连接问题如果PHP无法连接MariaDB检查MariaDB是否只允许本地连接防火墙是否阻止了连接PHP是否安装了正确的mysql驱动php-mysqlnd可以先用命令行测试数据库连接mysql -u用户名 -p密码 -h主机 数据库名7.4 性能调优建议对于生产环境建议调整以下参数nginx:worker_processes auto; worker_connections 1024; keepalive_timeout 65; gzip on;php-fpm:pm dynamic pm.max_children 100 pm.start_servers 20 pm.min_spare_servers 10 pm.max_spare_servers 30mariadb:innodb_buffer_pool_size 1G innodb_log_file_size 256M query_cache_size 64M这些值需要根据服务器实际内存大小进行调整。建议先在测试环境验证效果再应用到生产环境。