Laravel在Ubuntu上如何实现自动化部署
导读:在Ubuntu上实现Laravel项目的自动化部署可以通过多种方式来完成,其中一种常见的方法是使用Git进行版本控制,并结合CI/CD工具(如Jenkins、GitLab CI/CD、GitHub Actions等)来实现自动化部署。以下是...
在Ubuntu上实现Laravel项目的自动化部署可以通过多种方式来完成,其中一种常见的方法是使用Git进行版本控制,并结合CI/CD工具(如Jenkins、GitLab CI/CD、GitHub Actions等)来实现自动化部署。以下是一个基本的步骤指南:
1. 安装必要的软件
首先,确保你的Ubuntu系统上安装了以下软件:
- Git
- PHP
- Composer
- Nginx 或 Apache
- MySQL 或 PostgreSQL
- Supervisor(可选,用于管理队列进程)
sudo apt update
sudo apt install git php php-cli php-fpm composer nginx mysql-server supervisor
2. 配置Nginx
创建一个新的Nginx配置文件来托管你的Laravel应用。
sudo nano /etc/nginx/sites-available/yourdomain.com
添加以下内容:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
root /var/www/yourdomain.com/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;
}
location ~ /\.ht {
deny all;
}
}
启用配置:
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
3. 配置数据库
登录到MySQL并创建一个新的数据库和用户:
sudo mysql -u root -p
在MySQL shell中:
CREATE DATABASE yourdatabase;
CREATE USER 'youruser'@'localhost' IDENTIFIED BY 'yourpassword';
GRANT ALL PRIVILEGES ON yourdatabase.* TO 'youruser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
4. 配置Laravel
将你的Laravel项目克隆到服务器上:
cd /var/www
git clone https://github.com/yourusername/your-laravel-project.git yourdomain.com
cd yourdomain.com
composer install --no-dev --optimize-autoloader
php artisan key:generate
php artisan migrate
php artisan config:cache
5. 设置文件权限
确保Laravel的storage和bootstrap/cache目录是可写的:
sudo chown -R www-data:www-data /var/www/yourdomain.com
sudo chmod -R 755 /var/www/yourdomain.com
sudo chmod -R 777 /var/www/yourdomain.com/storage
sudo chmod -R 777 /var/www/yourdomain.com/bootstrap/cache
6. 配置Supervisor(可选)
如果你使用Laravel的队列功能,可以配置Supervisor来管理队列进程:
sudo nano /etc/supervisor/conf.d/laravel-worker.conf
添加以下内容:
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/yourdomain.com/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=www-data
numprocs=8
redirect_stderr=true
stdout_logfile=/var/log/supervisor/%(program_name)s.log
更新Supervisor配置并启动进程:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker:*
7. 设置CI/CD自动化部署
以GitHub Actions为例,创建一个.github/workflows/deploy.yml文件:
name: Deploy to Production
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Install dependencies
run: |
sudo apt update
sudo apt install -y git php php-cli php-fpm composer nginx mysql-server supervisor
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install -y php7.4 php7.4-fpm php7.4-mysql
sudo apt install -y nginx
sudo apt install -y mysql-server
sudo apt install -y supervisor
- name: Configure Nginx
run: |
sudo nano /etc/nginx/sites-available/yourdomain.com
# 添加Nginx配置内容
- name: Deploy Laravel
run: |
cd /var/www
git clone https://github.com/yourusername/your-laravel-project.git yourdomain.com
cd yourdomain.com
composer install --no-dev --optimize-autoloader
php artisan key:generate
php artisan migrate
php artisan config:cache
sudo chown -R www-data:www-data /var/www/yourdomain.com
sudo chmod -R 755 /var/www/yourdomain.com
sudo chmod -R 777 /var/www/yourdomain.com/storage
sudo chmod -R 777 /var/www/yourdomain.com/bootstrap/cache
- name: Restart Nginx
run: sudo systemctl restart nginx
- name: Restart Supervisor
run: sudo supervisorctl restart laravel-worker:*
这样,每次你向main分支推送代码时,GitHub Actions都会自动执行部署流程。
总结
以上步骤提供了一个基本的自动化部署流程,你可以根据自己的需求进行调整和扩展。使用CI/CD工具可以大大简化部署过程,并确保每次部署的一致性和可靠性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Laravel在Ubuntu上如何实现自动化部署
本文地址: https://pptw.com/jishu/775692.html
