在 CentOS 上优化 Laravel,一般从 系统层、PHP、数据库、Laravel 本身、缓存、队列、Web 服务器 几个方面入手。下面给你一套比较完整、实战可用的优化方案(适用于 CentOS 7 / 8 / Stream)。
getenforce
setenforce 0
永久关闭:
vi /etc/selinux/config
SELINUX=disabled
生产环境视安全需求决定,不建议盲目关闭。
ulimit -n
修改:
vi /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
yum install epel-release -y
yum install yum-utils -y
yum install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
yum module enable php:remi-8.2 -y
yum install php php-cli php-fpm php-mysql php-mbstring php-xml php-curl php-zip php-redis php-opcache -y
vi /etc/php-fpm.d/www.conf
关键参数(示例 4 核 8G):
pm = dynamic
pm.max_children = 80
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 30
重启:
systemctl restart php-fpm
vi /etc/php.d/10-opcache.ini
推荐配置:
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=20000
opcache.validate_timestamps=0
opcache.revalidate_freq=0
worker_processes auto;
worker_connections 10240;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
gzip on;
gzip_comp_level 5;
gzip_min_length 1k;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan event:cache
⚠️ 注意:
route:cache不支持闭包路由- 每次部署后都要重新执行
APP_DEBUG=false
composer install --optimize-autoloader --no-dev
innodb_buffer_pool_size = 2G
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2
max_connections = 300
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
使用 连接池(Swoole / Octane 场景)
CACHE_DRIVER=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis
Redis 安装:
yum install redis -y
systemctl enable redis
systemctl start redis
php artisan queue:work --daemon
使用 systemd 守护队列:
vi /etc/systemd/system/laravel-queue.service
[Unit]
Description=Laravel Queue Worker
[Service]
ExecStart=/usr/bin/php /var/www/laravel/artisan queue:work --sleep=3 --tries=3
Restart=always
[Install]
WantedBy=multi-user.target
适合 高并发 API / 高访问量项目
composer require laravel/octane
php artisan octane:install
使用 Swoole:
yum install php-swoole
启动:
php artisan octane:start --workers=8
LOG_CHANNEL=syslog
或使用:
php artisan log:clear
| 问题 | 解决 |
|---|---|
| 权限问题 | chown -R nginx:nginx storage bootstrap/cache |
| 访问慢 | 开启 opcache |
| 500 错误 | 查看 /var/log/nginx/error.log |
| 队列不执行 | 检查 systemd / supervisor |
✅ CentOS 8 / Stream
✅ Nginx + PHP 8.2 FPM
✅ Redis
✅ Opcache
✅ Laravel 路由 & 配置缓存
✅ 队列 + systemd
✅ MySQL 调优
如果你愿意,可以告诉我:
我可以给你一套 针对你项目的精确优化方案。