在Debian上使用Laravel實現負載均衡,通常需要以下幾個步驟:
首先,確保你的Debian系統上已經安裝了Nginx和PHP-FPM。你可以使用以下命令來安裝它們:
sudo apt update
sudo apt install nginx php-fpm
你需要為每個Laravel實例配置一個Nginx服務器塊。假設你有兩個Laravel實例,分別運行在不同的端口上(例如8000和8001)。
為每個實例創建一個Nginx配置文件:
sudo nano /etc/nginx/sites-available/laravel-app1
在文件中添加以下內容:
server {
listen 80;
server_name example.com;
root /var/www/laravel-app1/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 根據你的PHP版本調整
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
重復上述步驟,為第二個實例創建另一個配置文件:
sudo nano /etc/nginx/sites-available/laravel-app2
內容類似,只需更改root
和fastcgi_pass
的路徑。
使用ln
命令將配置文件鏈接到sites-enabled
目錄:
sudo ln -s /etc/nginx/sites-available/laravel-app1 /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/laravel-app2 /etc/nginx/sites-enabled/
測試Nginx配置是否正確:
sudo nginx -t
如果沒有錯誤,重新加載Nginx:
sudo systemctl reload nginx
你可以使用Nginx的upstream
模塊來配置負載均衡。編輯Nginx的主配置文件:
sudo nano /etc/nginx/nginx.conf
在http
塊中添加以下內容:
upstream laravel_app {
server 127.0.0.1:8000;
server 127.0.0.1:8001;
}
然后,在每個服務器塊中使用upstream
:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://laravel_app;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 根據你的PHP版本調整
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
確保你的Laravel應用在指定的端口上運行。你可以使用supervisor
或systemd
來管理多個PHP-FPM進程。
安裝Supervisor:
sudo apt install supervisor
創建一個新的Supervisor配置文件:
sudo nano /etc/supervisor/conf.d/laravel-app1.conf
添加以下內容:
[program:laravel-app1]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/laravel-app1/artisan serve --port=8000
autostart=true
autorestart=true
user=www-data
numprocs=1
redirect_stderr=true
stdout_logfile=/var/log/laravel-app1.log
重復上述步驟,為第二個實例創建另一個配置文件:
sudo nano /etc/supervisor/conf.d/laravel-app2.conf
內容類似,只需更改端口號和日志文件路徑。
更新Supervisor配置并啟動進程:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-app1
sudo supervisorctl start laravel-app2
現在,你應該能夠通過訪問example.com
來訪問你的Laravel應用,并且請求會被負載均衡到兩個不同的實例上。
通過這些步驟,你可以在Debian上使用Nginx和PHP-FPM實現Laravel應用的負載均衡。