在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
或数据库客户端验证缓存和会话共享是否正常。参考来源: