在Ubuntu下實現ThinkPHP的分布式部署,可以采用以下步驟:
確保你已經在多臺服務器上安裝了PHP、Nginx或Apache、MySQL等必要的軟件。
使用Nginx或HAProxy作為負載均衡器,將請求分發到多個應用服務器。
安裝Nginx:
sudo apt update
sudo apt install nginx
配置Nginx:
編輯Nginx配置文件(通常位于/etc/nginx/nginx.conf
或/etc/nginx/sites-available/default
),添加負載均衡配置:
http {
upstream thinkphp_servers {
server 192.168.1.1:80; # 第一臺服務器
server 192.168.1.2:80; # 第二臺服務器
server 192.168.1.3:80; # 第三臺服務器
}
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://thinkphp_servers;
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;
}
}
}
重啟Nginx:
sudo systemctl restart nginx
在每臺應用服務器上部署ThinkPHP項目。
上傳項目: 將你的ThinkPHP項目上傳到每臺服務器的相同目錄下。
配置數據庫:
確保每臺服務器上的數據庫配置文件(通常是config/database.php
)指向同一個數據庫。
安裝依賴: 在每臺服務器上運行以下命令安裝PHP依賴:
composer install
為了確保配置文件的一致性,可以使用Ansible、Rsync等工具進行文件同步。
安裝Ansible:
sudo apt update
sudo apt install ansible
創建Ansible項目:
創建一個Ansible項目目錄,并在其中創建inventory
文件和playbook
文件。
inventory
文件示例:
[thinkphp_servers]
192.168.1.1
192.168.1.2
192.168.1.3
playbook
文件示例(deploy.yml
):
---
- hosts: thinkphp_servers
become: yes
tasks:
- name: Copy project files
copy:
src: /path/to/local/project
dest: /var/www/html
owner: www-data
group: www-data
mode: '0755'
運行Ansible Playbook:
ansible-playbook -i inventory deploy.yml
在每臺應用服務器上啟動PHP-FPM或Apache服務。
安裝PHP-FPM:
sudo apt install php-fpm
配置PHP-FPM:
編輯PHP-FPM配置文件(通常位于/etc/php/7.4/fpm/pool.d/www.conf
),確保監聽端口正確。
啟動PHP-FPM:
sudo systemctl start php7.4-fpm
sudo systemctl enable php7.4-fpm
安裝Apache:
sudo apt install apache2
配置Apache:
編輯Apache配置文件(通常位于/etc/apache2/sites-available/000-default.conf
),添加虛擬主機配置:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
啟動Apache:
sudo systemctl start apache2
sudo systemctl enable apache2
訪問你的域名,確保請求被正確分發到不同的應用服務器,并且應用正常運行。
通過以上步驟,你可以在Ubuntu下實現ThinkPHP的分布式部署。