在Ubuntu上实现Laravel项目的自动化部署可以通过多种方式来完成,以下是一个基本的步骤指南,使用Git进行版本控制,并结合一些常用的自动化工具如Jenkins、GitLab CI/CD或GitHub Actions。
在Ubuntu服务器上安装必要的软件:
sudo apt update
sudo apt install git nginx php-fpm mysql-server
配置Nginx以指向你的Laravel项目目录。假设你的项目目录是/var/www/laravel_project:
sudo nano /etc/nginx/sites-available/laravel_project
添加以下内容:
server {
listen 80;
server_name your_domain.com;
root /var/www/laravel_project/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/laravel_project /etc/nginx/sites-enabled
sudo nginx -t
sudo systemctl restart nginx
创建数据库并配置Laravel的.env文件:
sudo mysql -u root -p
在MySQL shell中:
CREATE DATABASE laravel_project;
CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON laravel_project.* TO 'laravel_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
编辑.env文件:
cd /var/www/laravel_project
nano .env
修改以下内容:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_project
DB_USERNAME=laravel_user
DB_PASSWORD=password
在服务器上初始化Git仓库:
cd /var/www
git init
git add .
git commit -m "Initial commit"
这里以Jenkins为例:
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt update
sudo apt install jenkins
启动并启用Jenkins服务:
sudo systemctl start jenkins
sudo systemctl enable jenkins
访问http://your_server_ip:8080,按照提示完成Jenkins的初始配置。
在Jenkins中创建一个新的Freestyle project,配置如下:
H/5 * * * *表示每5分钟检查一次)cd /var/www/laravel_project
git pull origin master
composer install --no-interaction --prefer-dist --optimize-autoloader
php artisan migrate --force
php artisan config:cache
php artisan route:cache
php artisan view:cache
sudo systemctl restart php7.4-fpm
sudo systemctl restart nginx
以上步骤提供了一个基本的自动化部署流程。你可以根据具体需求调整和扩展,例如添加更多的构建步骤、测试脚本、通知机制等。使用GitLab CI/CD或GitHub Actions也可以实现类似的自动化部署流程,具体配置方法可以参考相应的文档。