在 Debian 上优化 Laravel,可以从 系统层、PHP 层、Laravel 层、Web 服务层、缓存与队列 几个维度来做。下面给你一套比较实用、可落地的优化方案。
sudo apt update && sudo apt upgrade -y
编辑 /etc/sysctl.conf:
net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
vm.swappiness = 10
生效:
sudo sysctl -p
编辑 /etc/security/limits.conf:
* soft nofile 65535
* hard nofile 65535
sudo apt install php8.2-fpm php8.2-cli php8.2-mysql php8.2-redis php8.2-opcache php8.2-mbstring php8.2-xml php8.2-curl -y
编辑 /etc/php/8.2/fpm/php.ini:
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 60
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.revalidate_freq=60
opcache.validate_timestamps=0 ; 生产环境
编辑 /etc/php/8.2/fpm/pool.d/www.conf:
pm = dynamic
pm.max_children = 120
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 40
sudo apt install nginx -y
server {
listen 80;
server_name example.com;
root /var/www/laravel/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
}
gzip on;
gzip_types text/css application/javascript application/json;
}
APP_ENV=production
APP_DEBUG=false
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan optimize
部署后每次改代码都要重新执行
lazy collections 处理大数据sudo apt install redis-server -y
.env:
CACHE_DRIVER=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis
with() 避免 N+1paginate() / chunk()php artisan queue:work --daemon
sudo apt install supervisor -y
/etc/supervisor/conf.d/laravel.conf:
[program:laravel-queue]
command=php /var/www/laravel/artisan queue:work --tries=3
autostart=true
autorestart=true
user=www-data
htop, netdatalaravel.log, nginx error.logab -n 1000 -c 100 http://example.com/
Nginx + PHP-FPM + Redis + MySQL
|
Laravel
|
Supervisor(Queue)
如果你愿意,我可以:
你可以告诉我你的服务器配置和使用场景。