1. 银河麒麟V10内网部署PHP环境前的准备工作第一次在银河麒麟V10上部署PHP环境时我踩了不少坑。特别是内网环境下没有外网连接所有操作都要依赖本地镜像源这让整个过程变得更具挑战性。不过经过几次实践后我总结出了一套稳定可靠的部署流程现在分享给大家。首先要明确的是银河麒麟V10是基于Linux的操作系统它有两种CPU架构版本x86和ARM。在开始之前你必须确认服务器的CPU架构下载对应版本的官方镜像文件。这个步骤非常重要因为不同架构的软件包是不兼容的。我曾经因为用错了镜像版本导致后续安装过程出现各种奇怪的依赖问题浪费了大半天时间。在内网环境中官方镜像将成为你唯一的软件源。这里要特别强调千万不要使用非官方的软件源即使某些依赖包在官方源中找不到也不要随意从第三方下载。我见过太多因为使用非官方源导致系统崩溃的案例了。如果确实缺少某些关键依赖建议直接联系麒麟的技术支持获取帮助。2. 挂载镜像并配置本地软件源2.1 镜像挂载操作拿到正确的ISO镜像文件后我们需要将它挂载到系统中。这个过程和CentOS类似但有些细节需要注意。首先创建一个挂载点目录mkdir -p /mnt/kylin-iso然后使用mount命令挂载镜像文件。假设你的镜像文件放在/mnt/iso/kylin-v10.iso执行mount -t iso9660 /mnt/iso/kylin-v10.iso /mnt/kylin-iso挂载成功后你可以通过df -h命令检查是否挂载成功。如果看到/mnt/kylin-iso的挂载信息说明操作成功了。2.2 配置本地yum源接下来我们需要将这个挂载的镜像配置为系统的软件源。编辑或创建yum源配置文件vi /etc/yum.repos.d/kylin-local.repo添加以下内容[kylin-local] nameKylin Local Repository baseurlfile:///mnt/kylin-iso enabled1 gpgcheck0保存后清除yum缓存并重建yum clean all yum makecache这个步骤很关键我遇到过因为缓存问题导致yum找不到软件包的情况。如果一切正常你现在应该可以使用yum命令从本地镜像安装软件了。3. 安装PHP编译依赖环境3.1 基础依赖安装PHP编译需要大量的开发库支持。在内网环境下我们需要一次性安装所有必要的依赖避免反复操作。执行以下命令yum install -y gcc gcc-c make automake \ libxml2 libxml2-devel openssl openssl-devel \ libcurl libcurl-devel libpng libpng-devel \ freetype freetype-devel libxslt libxslt-devel \ bzip2 bzip2-devel libjpeg-turbo-devel \ sqlite-devel oniguruma-devel这个命令会安装PHP编译所需的所有基础开发库。在实际操作中我发现银河麒麟V10的官方源可能缺少某些包这时需要联系技术支持获取对应的RPM包。我曾经因为缺少oniguruma-devel这个包导致mbstring扩展无法编译耽误了不少时间。3.2 其他可选依赖根据你的具体需求可能还需要安装一些额外的依赖。例如如果你计划使用MySQL数据库还需要安装yum install -y mysql-devel对于PostgreSQL支持yum install -y postgresql-devel这些依赖最好在编译PHP前就安装好因为PHP的configure脚本会根据系统已安装的库来决定哪些扩展可以被编译。4. 编译安装PHP4.1 准备PHP源码在内网环境下你需要提前从PHP官网下载好源码包然后上传到服务器。建议使用PHP 7.2或更高版本因为它们有更好的安全性和性能。将源码包放到/usr/local/src目录下cp php-7.4.33.tar.gz /usr/local/src/ cd /usr/local/src tar -zxvf php-7.4.33.tar.gz cd php-7.4.33解压后进入源码目录我们就可以开始配置编译选项了。4.2 配置编译选项PHP的编译配置非常灵活你可以根据需要启用或禁用各种功能。下面是一个比较全面的配置示例./configure --prefix/usr/local/php7.4 \ --with-config-file-path/usr/local/php7.4/etc \ --enable-fpm \ --with-fpm-userwww \ --with-fpm-groupwww \ --with-mysqlimysqlnd \ --with-pdo-mysqlmysqlnd \ --with-iconv \ --with-freetype \ --with-jpeg \ --with-png \ --with-zlib \ --with-libxml \ --enable-xml \ --enable-bcmath \ --enable-shmop \ --enable-sysvsem \ --enable-mbregex \ --enable-mbstring \ --enable-ftp \ --with-gd \ --with-openssl \ --with-mhash \ --enable-pcntl \ --enable-sockets \ --with-curl \ --enable-zip \ --enable-soap \ --with-gettext \ --enable-opcache \ --enable-intl这个配置启用了大多数常用的PHP扩展。如果你不需要某些功能可以去掉对应的选项。配置过程可能会持续几分钟期间会检查系统环境和依赖关系。如果出现任何错误通常是因为缺少某个开发库需要根据错误提示安装对应的-devel包。4.3 编译和安装配置成功后就可以开始编译了。这个过程可能会比较耗时取决于服务器的性能make -j4 make install-j4参数表示使用4个线程并行编译可以加快速度。根据你的CPU核心数调整这个数字。编译完成后PHP会被安装到/usr/local/php7.4目录下。5. 配置PHP和php-fpm5.1 基础配置安装完成后我们需要复制配置文件到正确的位置cp php.ini-production /usr/local/php7.4/etc/php.ini cp /usr/local/php7.4/etc/php-fpm.conf.default /usr/local/php7.4/etc/php-fpm.conf cp /usr/local/php7.4/etc/php-fpm.d/www.conf.default /usr/local/php7.4/etc/php-fpm.d/www.conf然后编辑php.ini文件根据需要进行调整。常见的修改包括设置时区date.timezone Asia/Shanghai调整内存限制memory_limit 128M调整上传文件大小限制upload_max_filesize 20M5.2 php-fpm配置php-fpm的配置主要在www.conf文件中。需要确保以下设置正确user www group www listen 127.0.0.1:9000 pm dynamic pm.max_children 50 pm.start_servers 5 pm.min_spare_servers 2 pm.max_spare_servers 8这些值需要根据你的服务器配置和应用需求进行调整。特别是pm.max_children它决定了php-fpm能同时处理的最大请求数。5.3 创建运行用户PHP-FPM需要以特定用户身份运行。我们之前配置中使用的是www用户现在需要创建它groupadd www useradd -g www www这个用户应该有足够的权限访问你的网站文件但又不应该有过高的系统权限这是安全性的重要考虑。6. 启动服务和验证安装6.1 启动php-fpm服务现在可以启动php-fpm服务了/usr/local/php7.4/sbin/php-fpm为了确保php-fpm能在系统启动时自动运行我们可以创建一个systemd服务文件vi /usr/lib/systemd/system/php-fpm.service添加以下内容[Unit] DescriptionThe PHP FastCGI Process Manager Aftersyslog.target network.target [Service] Typesimple PIDFile/usr/local/php7.4/var/run/php-fpm.pid ExecStart/usr/local/php7.4/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php7.4/etc/php-fpm.conf ExecReload/bin/kill -USR2 $MAINPID [Install] WantedBymulti-user.target然后启用并启动服务systemctl enable php-fpm systemctl start php-fpm6.2 验证安装创建一个测试PHP文件来验证安装是否成功echo ?php phpinfo(); ? /var/www/html/info.php后通过浏览器访问这个文件或者使用命令行curl http://localhost/info.php如果看到PHP的配置信息页面说明安装成功了。记得在生产环境中删除这个测试文件因为它会暴露服务器的配置信息。7. 常见问题排查在实际部署过程中可能会遇到各种问题。这里分享几个我遇到过的典型问题及解决方法。7.1 依赖缺失问题最常见的问题是编译时提示缺少某个库。例如如果看到libxml2 not found错误说明需要安装libxml2-devel包。在内网环境下你需要确保所有依赖包都来自官方镜像源。如果确实缺少某个关键包可以尝试以下步骤在挂载的镜像中搜索是否有对应的RPM包联系麒麟技术支持获取官方提供的额外软件包绝对不要从非官方源下载安装包7.2 php-fpm启动失败如果php-fpm启动失败首先检查错误日志tail -f /usr/local/php7.4/var/log/php-fpm.log常见的问题包括配置文件语法错误指定的运行用户不存在端口被占用权限问题7.3 性能调优PHP-FPM的性能调优是一个持续的过程。你可以通过以下方式监控和优化调整pm.max_children等进程管理参数启用opcache加速定期检查慢日志slowlog找出性能瓶颈8. 安全加固建议内网环境虽然相对安全但仍然需要采取适当的安全措施。8.1 文件权限设置确保网站文件和PHP运行权限正确网站目录所有者应该是实际的用户而不是www用户目录权限通常设置为755文件权限通常设置为644上传目录不应该有执行权限8.2 PHP安全配置在php.ini中有几个关键的安全设置disable_functions exec,passthru,shell_exec,systemexpose_php Offallow_url_fopen Offdisplay_errors Off (生产环境)log_errors On8.3 定期更新即使在内网环境中也应该定期检查是否有安全更新。可以通过以下方式定期获取官方的安全更新镜像关注PHP和银河麒麟的安全公告制定定期更新计划在内网环境中部署PHP服务确实比有外网连接的环境更具挑战性但只要按照正确的步骤操作使用官方提供的资源完全可以搭建出稳定可靠的PHP运行环境。最重要的是保持耐心遇到问题时仔细检查每个步骤确保所有操作都符合内网安全规范。