在Ubuntu上實現ThinkPHP分布式部署可參考以下步驟,核心圍繞負載均衡、共享存儲、緩存等關鍵技術:
安裝Web服務器與PHP
sudo apt update
sudo apt install nginx php-fpm php-mysql php-mbstring php-xml composer
/run/php/php7.4-fpm.sock),確保與Nginx配置一致。部署ThinkPHP項目
/var/www/thinkphp),設置權限:sudo chown -R www-data:www-data /var/www/thinkphp
sudo chmod -R 755 /var/www/thinkphp
.env文件),確保多節點可訪問同一數據庫。/etc/nginx/nginx.conf中添加上游服務器組,將請求分發到多個應用服務器:http {
upstream thinkphp_cluster {
server 192.168.1.101:80; # 應用服務器1
server 192.168.1.102:80; # 應用服務器2
least_conn; # 按最少連接數分配
}
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://thinkphp_cluster;
proxy_set_header Host $host;
}
}
}
重啟Nginx生效:sudo systemctl restart nginx。文件共享(如上傳文件):
sudo apt install nfs-kernel-server
# 在主服務器上導出目錄(/var/www/uploads)
echo "/var/www/uploads 192.168.1.0/24(rw,sync,no_subtree_check)" >> /etc/exports
sudo exportfs -a
sudo systemctl restart nfs-server
# 在其他服務器上掛載
sudo mount -t nfs 192.168.1.1:/var/www/uploads /var/www/uploads
緩存共享(Redis):
sudo apt install redis-server
# 配置redis.conf(bind 0.0.0.0,設置密碼)
sudo redis-cli --cluster create 192.168.1.1:6379 192.168.1.2:6379 192.168.1.3:6379 --cluster-replicas 1
// config/cache.php
'default' => 'redis',
'stores' => [
'redis' => [
'type' => 'redis',
'host' => '192.168.1.1',
'port' => 6379,
'password' => 'yourpassword',
],
],
```。
# /etc/php/7.4/fpm/php.ini
session.save_handler = redis
session.save_path = "tcp://192.168.1.1:6379?auth=yourpassword"
重啟PHP-FPM:sudo systemctl restart php7.4-fpm。容器化部署(可選)
Dockerfile構建ThinkPHP鏡像,通過docker-compose或Kubernetes Deployment部署多實例。監控與日志
安全配置
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com
runtime):location ~* ^/(runtime|vendor) {
deny all;
}
```。
curl或瀏覽器訪問域名,檢查負載均衡是否生效(多IP響應)。redis-cli或數據庫客戶端驗證緩存和會話共享是否正常。參考來源: