简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français

站内搜索

搜索

活动公告

11-02 12:46
10-23 09:32
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,将及时处理!
10-23 09:31
10-23 09:28
通知:签到时间调整为每日4:00(东八区)
10-23 09:26

Rocky Linux服务器上完整部署PHP运行环境的详细教程与最佳实践指南从基础配置到性能优化全流程解析包含常见问题解决方案

3万

主题

423

科技点

3万

积分

大区版主

木柜子打湿

积分
31916

三倍冰淇淋无人之境【一阶】财Doro小樱(小丑装)立华奏以外的星空【二阶】⑨的冰沙

发表于 2025-9-28 23:00:01 | 显示全部楼层 |阅读模式 [标记阅至此楼]

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1. 引言

Rocky Linux作为CentOS的替代品,已经成为许多企业和开发者的首选服务器操作系统。本文将详细介绍如何在Rocky Linux服务器上完整部署PHP运行环境,从基础配置到性能优化的全流程,并提供常见问题的解决方案。

2. 系统基础配置

2.1 系统更新

在开始部署之前,首先确保系统是最新的:
  1. sudo dnf update -y
  2. sudo dnf upgrade -y
复制代码

2.2 添加EPEL仓库

EPEL(Extra Packages for Enterprise Linux)仓库提供了许多额外的软件包:
  1. sudo dnf install epel-release -y
复制代码

2.3 设置主机名

设置一个合适的主机名有助于识别服务器:
  1. sudo hostnamectl set-hostname your-server-name
复制代码

2.4 配置防火墙

Rocky Linux默认使用firewalld作为防火墙管理工具:
  1. # 启动并启用firewalld
  2. sudo systemctl start firewalld
  3. sudo systemctl enable firewalld
  4. # 检查防火墙状态
  5. sudo firewall-cmd --state
  6. # 开放HTTP和HTTPS端口
  7. sudo firewall-cmd --permanent --add-service=http
  8. sudo firewall-cmd --permanent --add-service=https
  9. # 重新加载防火墙配置
  10. sudo firewall-cmd --reload
复制代码

2.5 禁用SELinux(可选)

SELinux可能会影响某些应用的功能,如果不需要高安全性环境,可以临时禁用:
  1. # 临时禁用
  2. sudo setenforce 0
  3. # 永久禁用(需要重启)
  4. sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
复制代码

3. 安装Web服务器

3.1 安装Nginx

Nginx是一个高性能的Web服务器和反向代理服务器:
  1. # 安装Nginx
  2. sudo dnf install nginx -y
  3. # 启动并设置开机自启
  4. sudo systemctl start nginx
  5. sudo systemctl enable nginx
  6. # 检查Nginx状态
  7. sudo systemctl status nginx
复制代码

3.2 安装Apache(备选)

如果更倾向于使用Apache:
  1. # 安装Apache
  2. sudo dnf install httpd -y
  3. # 启动并设置开机自启
  4. sudo systemctl start httpd
  5. sudo systemctl enable httpd
  6. # 检查Apache状态
  7. sudo systemctl status httpd
复制代码

3.3 基本Web服务器配置

编辑Nginx主配置文件:
  1. sudo nano /etc/nginx/nginx.conf
复制代码

基本配置示例:
  1. user nginx;
  2. worker_processes auto;
  3. error_log /var/log/nginx/error.log;
  4. pid /run/nginx.pid;
  5. events {
  6.     worker_connections 1024;
  7. }
  8. http {
  9.     log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  10.                     '$status $body_bytes_sent "$http_referer" '
  11.                     '"$http_user_agent" "$http_x_forwarded_for"';
  12.     access_log /var/log/nginx/access.log main;
  13.     sendfile on;
  14.     tcp_nopush on;
  15.     tcp_nodelay on;
  16.     keepalive_timeout 65;
  17.     types_hash_max_size 2048;
  18.     include /etc/nginx/mime.types;
  19.     default_type application/octet-stream;
  20.     include /etc/nginx/conf.d/*.conf;
  21. }
复制代码

编辑Apache主配置文件:
  1. sudo nano /etc/httpd/conf/httpd.conf
复制代码

基本配置示例:
  1. ServerRoot "/etc/httpd"
  2. Listen 80
  3. Include conf.modules.d/*.conf
  4. User apache
  5. Group apache
  6. ServerAdmin root@localhost
  7. ServerName your-server-name:80
  8. <Directory />
  9.     AllowOverride none
  10.     Require all denied
  11. </Directory>
  12. DocumentRoot "/var/www/html"
  13. <Directory "/var/www">
  14.     AllowOverride None
  15.     Require all granted
  16. </Directory>
  17. <Directory "/var/www/html">
  18.     Options Indexes FollowSymLinks
  19.     AllowOverride None
  20.     Require all granted
  21. </Directory>
复制代码

4. 安装PHP

4.1 添加REMI仓库

REMI仓库提供了最新版本的PHP:
  1. # 安装REMI仓库
  2. sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm -y
  3. # 启用REMI仓库
  4. sudo dnf config-manager --set-enabled remi
复制代码

4.2 安装PHP及常用扩展

根据需要选择PHP版本,这里以PHP 8.1为例:
  1. # 启用PHP 8.1模块
  2. sudo dnf module enable php:remi-8.1 -y
  3. # 安装PHP及常用扩展
  4. sudo dnf install php php-cli php-common php-fpm php-mysqlnd php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath php-json -y
复制代码

4.3 配置PHP

编辑PHP配置文件:
  1. sudo nano /etc/php.ini
复制代码

推荐配置:
  1. memory_limit = 256M
  2. upload_max_filesize = 64M
  3. post_max_size = 64M
  4. max_execution_time = 300
  5. max_input_time = 300
  6. date.timezone = Asia/Shanghai
复制代码

4.4 配置PHP-FPM

编辑PHP-FPM配置文件:
  1. sudo nano /etc/php-fpm.d/www.conf
复制代码

推荐配置:
  1. [www]
  2. user = nginx
  3. group = nginx
  4. listen = /var/run/php-fpm/php-fpm.sock
  5. listen.owner = nginx
  6. listen.group = nginx
  7. listen.mode = 0660
  8. pm = dynamic
  9. pm.max_children = 50
  10. pm.start_servers = 5
  11. pm.min_spare_servers = 5
  12. pm.max_spare_servers = 35
  13. pm.max_requests = 500
  14. slowlog = /var/log/php-fpm/www-slow.log
  15. php_admin_value[error_log] = /var/log/php-fpm/www-error.log
  16. php_admin_flag[log_errors] = on
  17. php_value[session.save_handler] = files
  18. php_value[session.save_path] = /var/lib/php/session
复制代码

启动并启用PHP-FPM:
  1. sudo systemctl start php-fpm
  2. sudo systemctl enable php-fpm
  3. sudo systemctl status php-fpm
复制代码

5. 配置Web服务器与PHP集成

5.1 Nginx与PHP-FPM集成

创建Nginx站点配置文件:
  1. sudo nano /etc/nginx/conf.d/example.com.conf
复制代码

配置示例:
  1. server {
  2.     listen 80;
  3.     server_name example.com www.example.com;
  4.     root /var/www/html;
  5.     index index.php index.html index.htm;
  6.     location / {
  7.         try_files $uri $uri/ /index.php?$query_string;
  8.     }
  9.     location ~ \.php$ {
  10.         try_files $uri =404;
  11.         fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
  12.         fastcgi_index index.php;
  13.         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  14.         include fastcgi_params;
  15.     }
  16.     location ~ /\.ht {
  17.         deny all;
  18.     }
  19.     # 静态文件缓存
  20.     location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
  21.         expires 1y;
  22.         add_header Cache-Control "public, immutable";
  23.     }
  24. }
复制代码

检查Nginx配置并重启:
  1. sudo nginx -t
  2. sudo systemctl restart nginx
复制代码

5.2 Apache与PHP集成

如果使用Apache,需要安装PHP模块:
  1. sudo dnf install php libapache2-mod-php -y
复制代码

创建Apache站点配置文件:
  1. sudo nano /etc/httpd/conf.d/example.com.conf
复制代码

配置示例:
  1. <VirtualHost *:80>
  2.     ServerName example.com
  3.     ServerAlias www.example.com
  4.     DocumentRoot /var/www/html
  5.     <Directory /var/www/html>
  6.         Options Indexes FollowSymLinks
  7.         AllowOverride All
  8.         Require all granted
  9.     </Directory>
  10.     ErrorLog /var/log/httpd/example.com-error.log
  11.     CustomLog /var/log/httpd/example.com-access.log combined
  12. </VirtualHost>
复制代码

检查Apache配置并重启:
  1. sudo apachectl configtest
  2. sudo systemctl restart httpd
复制代码

6. 安装和配置数据库

6.1 安装MariaDB

MariaDB是MySQL的一个分支,完全兼容MySQL:
  1. # 安装MariaDB服务器
  2. sudo dnf install mariadb-server mariadb -y
  3. # 启动并设置开机自启
  4. sudo systemctl start mariadb
  5. sudo systemctl enable mariadb
  6. # 检查MariaDB状态
  7. sudo systemctl status mariadb
复制代码

6.2 安全配置MariaDB

运行安全配置脚本:
  1. sudo mysql_secure_installation
复制代码

按照提示设置root密码、移除匿名用户、禁止root远程登录等。

6.3 创建数据库和用户

登录MariaDB:
  1. mysql -u root -p
复制代码

创建数据库和用户:
  1. CREATE DATABASE mydatabase;
  2. CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'strong_password';
  3. GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost';
  4. FLUSH PRIVILEGES;
  5. EXIT;
复制代码

6.4 测试数据库连接

创建PHP测试文件:
  1. sudo nano /var/www/html/db-test.php
复制代码

内容如下:
  1. <?php
  2. $servername = "localhost";
  3. $username = "myuser";
  4. $password = "strong_password";
  5. $dbname = "mydatabase";
  6. // 创建连接
  7. $conn = new mysqli($servername, $username, $password, $dbname);
  8. // 检查连接
  9. if ($conn->connect_error) {
  10.     die("连接失败: " . $conn->connect_error);
  11. }
  12. echo "连接成功!";
  13. $conn->close();
  14. ?>
复制代码

访问http://your-server-ip/db-test.php测试数据库连接。

7. 安装额外PHP扩展

根据应用需求,可能需要安装额外的PHP扩展:
  1. # 安装常用扩展
  2. sudo dnf install php-intl php-soap php-ldap php-opcache php-apcu php-memcached php-redis -y
  3. # 安装其他扩展
  4. sudo dnf install php-imagick php-swoole php-xdebug -y
复制代码

安装完成后,重启PHP-FPM:
  1. sudo systemctl restart php-fpm
复制代码

8. 性能优化

8.1 PHP-FPM优化

根据服务器资源调整PHP-FPM配置:
  1. sudo nano /etc/php-fpm.d/www.conf
复制代码

优化参数:
  1. pm = dynamic
  2. pm.max_children = 100  # 根据服务器内存调整
  3. pm.start_servers = 20
  4. pm.min_spare_servers = 10
  5. pm.max_spare_servers = 30
  6. pm.max_requests = 1000
复制代码

8.2 OPcache配置

编辑PHP配置文件以启用和优化OPcache:
  1. sudo nano /etc/php.d/10-opcache.ini
复制代码

推荐配置:
  1. opcache.enable=1
  2. opcache.memory_consumption=128
  3. opcache.interned_strings_buffer=8
  4. opcache.max_accelerated_files=4000
  5. opcache.revalidate_freq=2
  6. opcache.fast_shutdown=1
  7. opcache.enable_file_override=0
  8. opcache.validate_timestamps=1  # 开发环境设为1,生产环境设为0
复制代码

8.3 Nginx优化

编辑Nginx主配置文件进行性能优化:
  1. sudo nano /etc/nginx/nginx.conf
复制代码

优化参数:
  1. worker_processes auto;
  2. worker_rlimit_nofile 100000;
  3. events {
  4.     worker_connections 2048;
  5.     multi_accept on;
  6.     use epoll;
  7. }
  8. http {
  9.     # 基本优化
  10.     sendfile on;
  11.     tcp_nopush on;
  12.     tcp_nodelay on;
  13.     keepalive_timeout 30;
  14.     keepalive_requests 100000;
  15.     reset_timedout_connection on;
  16.     client_body_timeout 10;
  17.     send_timeout 2;
  18.    
  19.     # Gzip压缩
  20.     gzip on;
  21.     gzip_vary on;
  22.     gzip_proxied any;
  23.     gzip_comp_level 6;
  24.     gzip_min_length 1000;
  25.     gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
  26.    
  27.     # 缓存配置
  28.     open_file_cache max=200000 inactive=20s;
  29.     open_file_cache_valid 30s;
  30.     open_file_cache_min_uses 2;
  31.     open_file_cache_errors on;
  32. }
复制代码

8.4 MySQL/MariaDB优化

编辑MySQL/MariaDB配置文件:
  1. sudo nano /etc/my.cnf.d/mariadb-server.cnf
复制代码

在[mariadb]部分添加优化参数:
  1. [mariadb]
  2. # 基本设置
  3. character-set-server = utf8mb4
  4. collation-server = utf8mb4_unicode_ci
  5. default-storage-engine = InnoDB
  6. # 内存优化
  7. innodb_buffer_pool_size = 2G  # 根据服务器内存调整,通常为系统内存的50-70%
  8. innodb_buffer_pool_instances = 4
  9. innodb_log_file_size = 256M
  10. innodb_log_buffer_size = 16M
  11. innodb_flush_log_at_trx_commit = 2
  12. innodb_flush_method = O_DIRECT
  13. innodb_file_per_table = 1
  14. # 连接优化
  15. max_connections = 200
  16. thread_cache_size = 32
  17. table_open_cache = 2000
  18. table_definition_cache = 2000
  19. # 查询缓存
  20. query_cache_type = 1
  21. query_cache_size = 128M
  22. query_cache_limit = 2M
  23. # 其他优化
  24. tmp_table_size = 64M
  25. max_heap_table_size = 64M
  26. sort_buffer_size = 4M
  27. read_buffer_size = 2M
  28. read_rnd_buffer_size = 4M
  29. join_buffer_size = 4M
复制代码

重启MariaDB使配置生效:
  1. sudo systemctl restart mariadb
复制代码

9. 安全配置

9.1 配置SSL/TLS

安装Let’s Encrypt证书:
  1. # 安装Certbot
  2. sudo dnf install certbot python3-certbot-nginx -y
  3. # 获取并安装证书
  4. sudo certbot --nginx -d example.com -d www.example.com
  5. # 设置自动续期
  6. sudo echo "0 0,12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null
复制代码

9.2 配置PHP安全设置

编辑PHP配置文件增强安全性:
  1. sudo nano /etc/php.ini
复制代码

安全配置:
  1. # 禁用危险函数
  2. disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
  3. # 隐藏PHP版本
  4. expose_php = Off
  5. # 限制文件上传
  6. file_uploads = On
  7. upload_tmp_dir = /var/www/tmp
  8. upload_max_filesize = 10M
  9. max_file_uploads = 20
  10. # 会话安全
  11. session.cookie_httponly = 1
  12. session.use_only_cookies = 1
  13. session.cookie_secure = 1  # 仅HTTPS
  14. session.cookie_samesite = Strict
  15. # 其他安全设置
  16. allow_url_fopen = Off
  17. allow_url_include = Off
  18. sql.safe_mode = On
  19. magic_quotes_gpc = Off
  20. register_globals = Off
复制代码

9.3 配置Web服务器安全

在站点配置中添加安全相关设置:
  1. server {
  2.     # 禁止访问隐藏文件
  3.     location ~ /\. {
  4.         deny all;
  5.         access_log off;
  6.         log_not_found off;
  7.     }
  8.     # 禁止访问备份文件
  9.     location ~ ~$ {
  10.         deny all;
  11.         access_log off;
  12.         log_not_found off;
  13.     }
  14.     # 防止点击劫持
  15.     add_header X-Frame-Options "SAMEORIGIN";
  16.     # 防止MIME类型混淆
  17.     add_header X-Content-Type-Options "nosniff";
  18.     # XSS保护
  19.     add_header X-XSS-Protection "1; mode=block";
  20.     # 内容安全策略
  21.     add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https:; img-src 'self' https: data:; style-src 'self' 'unsafe-inline' https:; font-src 'self' https: data:;";
  22.     # 禁止服务器信息泄露
  23.     server_tokens off;
  24.     # 限制请求方法
  25.     if ($request_method !~ ^(GET|HEAD|POST)$ ) {
  26.         return 405;
  27.     }
  28.     # 限制请求大小
  29.     client_max_body_size 10M;
  30. }
复制代码

编辑Apache配置文件增强安全性:
  1. sudo nano /etc/httpd/conf/httpd.conf
复制代码

安全配置:
  1. # 禁用服务器信息泄露
  2. ServerTokens Prod
  3. ServerSignature Off
  4. # 禁用目录列表
  5. Options -Indexes
  6. # 防止点击劫持
  7. Header always append X-Frame-Options "SAMEORIGIN"
  8. # 防止MIME类型混淆
  9. Header always set X-Content-Type-Options "nosniff"
  10. # XSS保护
  11. Header always set X-XSS-Protection "1; mode=block"
  12. # 内容安全策略
  13. Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https:; img-src 'self' https: data:; style-src 'self' 'unsafe-inline' https:; font-src 'self' https: data:;"
  14. # 请求限制
  15. LimitRequestBody 10485760
复制代码

9.4 配置防火墙规则

增强防火墙规则以提高安全性:
  1. # 允许SSH连接
  2. sudo firewall-cmd --permanent --add-service=ssh
  3. # 允许HTTP和HTTPS
  4. sudo firewall-cmd --permanent --add-service=http
  5. sudo firewall-cmd --permanent --add-service=https
  6. # 限制SSH连接尝试
  7. sudo firewall-cmd --permanent --add-rich-rule='rule service name="ssh" limit value="4/m" accept'
  8. # 阻止可疑IP
  9. sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="可疑IP" drop'
  10. # 重新加载防火墙配置
  11. sudo firewall-cmd --reload
复制代码

10. 监控和日志管理

10.1 配置日志轮转

编辑Nginx日志轮转配置:
  1. sudo nano /etc/logrotate.d/nginx
复制代码

配置示例:
  1. /var/log/nginx/*.log {
  2.     daily
  3.     missingok
  4.     rotate 52
  5.     compress
  6.     delaycompress
  7.     notifempty
  8.     create 0640 nginx nginx
  9.     postrotate
  10.         if [ -f /var/run/nginx.pid ]; then
  11.             kill -USR1 `cat /var/run/nginx.pid`
  12.         fi
  13.     endscript
  14. }
复制代码

编辑PHP-FPM日志轮转配置:
  1. sudo nano /etc/logrotate.d/php-fpm
复制代码

配置示例:
  1. /var/log/php-fpm/*log {
  2.     daily
  3.     missingok
  4.     rotate 52
  5.     compress
  6.     delaycompress
  7.     notifempty
  8.     sharedscripts
  9.     postrotate
  10.         /bin/systemctl reload php-fpm.service >/dev/null 2>&1 || true
  11.     endscript
  12. }
复制代码

10.2 安装监控工具

安装和配置监控工具,如Netdata:
  1. # 安装Netdata
  2. sudo dnf install netdata -y
  3. # 启动并设置开机自启
  4. sudo systemctl start netdata
  5. sudo systemctl enable netdata
  6. # 配置Netdata访问控制
  7. sudo nano /etc/netdata/netdata.conf
复制代码

在配置文件中添加:
  1. [web]
  2.     bind to = 0.0.0.0
  3.     allow connections from = localhost IP地址
  4.     default port = 19999
复制代码

重启Netdata:
  1. sudo systemctl restart netdata
复制代码

11. 常见问题解决方案

11.1 PHP文件显示为下载而不是执行

问题:访问PHP文件时,浏览器提示下载而不是执行。

解决方案:

对于Nginx:

1. 检查Nginx配置中是否正确配置了PHP处理部分:
  1. location ~ \.php$ {
  2.     try_files $uri =404;
  3.     fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
  4.     fastcgi_index index.php;
  5.     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  6.     include fastcgi_params;
  7. }
复制代码

1. 确保PHP-FPM正在运行:
  1. sudo systemctl status php-fpm
复制代码

1. 检查PHP-FPM套接字文件是否存在:
  1. ls -la /var/run/php-fpm/php-fpm.sock
复制代码

1. 如果不存在,重启PHP-FPM:
  1. sudo systemctl restart php-fpm
复制代码

对于Apache:

1. 确保已安装PHP模块:
  1. sudo dnf install php libapache2-mod-php -y
复制代码

1. 检查Apache配置中是否正确加载了PHP模块:
  1. LoadModule php_module modules/libphp.so
  2. AddHandler php-script .php
  3. IncludeOptional conf.d/*.conf
复制代码

1. 重启Apache:
  1. sudo systemctl restart httpd
复制代码

11.2 上传文件大小限制问题

问题:无法上传大文件,提示文件大小超过限制。

解决方案:

1. 编辑PHP配置文件:
  1. sudo nano /etc/php.ini
复制代码

1. 修改以下参数:
  1. upload_max_filesize = 64M
  2. post_max_size = 64M
  3. memory_limit = 256M
  4. max_execution_time = 300
  5. max_input_time = 300
复制代码

1. 如果使用Nginx,还需要编辑Nginx配置:
  1. sudo nano /etc/nginx/nginx.conf
复制代码

在http部分添加:
  1. client_max_body_size 64M;
复制代码

1. 重启PHP-FPM和Nginx:
  1. sudo systemctl restart php-fpm
  2. sudo systemctl restart nginx
复制代码

11.3 数据库连接问题

问题:PHP无法连接到MySQL/MariaDB数据库。

解决方案:

1. 检查数据库服务是否正在运行:
  1. sudo systemctl status mariadb
复制代码

1. 如果未运行,启动数据库服务:
  1. sudo systemctl start mariadb
复制代码

1. 检查数据库连接参数是否正确:
  1. <?php
  2. $servername = "localhost";
  3. $username = "your_username";
  4. $password = "your_password";
  5. $dbname = "your_database";
  6. // 创建连接
  7. $conn = new mysqli($servername, $username, $password, $dbname);
  8. // 检查连接
  9. if ($conn->connect_error) {
  10.     die("连接失败: " . $conn->connect_error);
  11. }
  12. echo "连接成功!";
  13. $conn->close();
  14. ?>
复制代码

1. 检查数据库用户权限:
  1. mysql -u root -p
  2. GRANT ALL PRIVILEGES ON your_database.* TO 'your_username'@'localhost';
  3. FLUSH PRIVILEGES;
  4. EXIT;
复制代码

1. 检查防火墙是否允许数据库连接:
  1. sudo firewall-cmd --list-all
复制代码

如果需要远程连接,添加规则:
  1. sudo firewall-cmd --permanent --add-service=mysql
  2. sudo firewall-cmd --reload
复制代码

11.4 权限问题

问题:网站文件权限不正确,导致无法写入或执行。

解决方案:

1. 设置正确的文件所有者和权限:
  1. # 对于Nginx
  2. sudo chown -R nginx:nginx /var/www/html
  3. # 对于Apache
  4. sudo chown -R apache:apache /var/www/html
  5. # 设置目录权限为755,文件权限为644
  6. sudo find /var/www/html -type d -exec chmod 755 {} \;
  7. sudo find /var/www/html -type f -exec chmod 644 {} \;
  8. # 如果需要写入权限,设置特定目录权限为775
  9. sudo chmod 775 /var/www/html/uploads
  10. sudo chmod 775 /var/www/html/cache
复制代码

1. 检查SELinux是否阻止访问:
  1. # 检查SELinux状态
  2. getenforce
  3. # 如果是Enforcing,检查日志
  4. sudo grep AVC /var/log/audit/audit.log
  5. # 临时设置SELinux为Permissive模式
  6. sudo setenforce 0
复制代码

11.5 PHP扩展缺失问题

问题:应用程序提示缺少必要的PHP扩展。

解决方案:

1. 查看已安装的PHP扩展:
  1. php -m
复制代码

1. 安装缺失的扩展:
  1. # 例如安装Redis扩展
  2. sudo dnf install php-redis -y
  3. # 例如安装Imagick扩展
  4. sudo dnf install php-imagick -y
复制代码

1. 如果扩展不在默认仓库中,可以使用PECL安装:
  1. # 安装PECL
  2. sudo dnf install php-pear php-devel -y
  3. # 安装扩展
  4. sudo pecl install 扩展名
  5. # 添加扩展到PHP配置
  6. echo "extension=扩展名.so" | sudo tee /etc/php.d/扩展名.ini
复制代码

1. 重启PHP-FPM:
  1. sudo systemctl restart php-fpm
复制代码

11.6 性能问题

问题:网站响应缓慢,服务器负载高。

解决方案:

1. 检查服务器资源使用情况:
  1. # 查看CPU和内存使用
  2. top
  3. htop
  4. # 查看磁盘使用
  5. df -h
  6. # 查看磁盘I/O
  7. iostat
复制代码

1. 优化PHP-FPM配置:
  1. sudo nano /etc/php-fpm.d/www.conf
复制代码

调整以下参数:
  1. pm = dynamic
  2. pm.max_children = 100
  3. pm.start_servers = 20
  4. pm.min_spare_servers = 10
  5. pm.max_spare_servers = 30
  6. pm.max_requests = 1000
复制代码

1. 启用OPcache:
  1. sudo nano /etc/php.d/10-opcache.ini
复制代码

确保以下参数已设置:
  1. opcache.enable=1
  2. opcache.memory_consumption=128
  3. opcache.interned_strings_buffer=8
  4. opcache.max_accelerated_files=4000
  5. opcache.revalidate_freq=60
复制代码

1. 优化数据库配置:
  1. sudo nano /etc/my.cnf.d/mariadb-server.cnf
复制代码

调整以下参数:
  1. innodb_buffer_pool_size = 2G
  2. innodb_log_file_size = 256M
  3. query_cache_size = 128M
  4. max_connections = 200
复制代码

1. 使用缓存系统:
  1. # 安装Redis
  2. sudo dnf install redis -y
  3. sudo systemctl start redis
  4. sudo systemctl enable redis
  5. # 安装PHP Redis扩展
  6. sudo dnf install php-redis -y
  7. sudo systemctl restart php-fpm
复制代码

1. 实施前端优化:

• 启用浏览器缓存
• 压缩CSS和JavaScript文件
• 使用CDN分发静态资源
• 优化图片大小和格式

12. 总结

本文详细介绍了在Rocky Linux服务器上完整部署PHP运行环境的全过程,从基础系统配置到性能优化,并提供了常见问题的解决方案。通过遵循本指南,您可以建立一个安全、高效、稳定的PHP运行环境,为您的Web应用程序提供坚实的基础。

在实际部署过程中,请根据您的具体需求和应用特点进行适当调整,并定期更新和维护系统以确保安全性和性能。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

频道订阅

频道订阅

加入社群

加入社群

联系我们|TG频道|RSS

Powered by Pixtech

© 2025 Pixtech Team.