一、前言
在实际开发中,为了更高效、更简便地部署项目,自动化部署是必不可少的一个环节。本文将讲解如何使用PHP和Nginx实现自动化部署。
二、环境准备
在开始搭建自动化部署环境前,我们需要确保本地环境中已安装以下工具:
1.PHP
2.Nginx
3.Composer
三、创建项目
在开始部署之前,我们需要创建一个项目。在终端中执行以下命令来创建一个 Laravel 项目:
composer create-project --prefer-dist laravel/laravel my-project
其中 `my-project` 是我们项目的名称。
四、部署步骤
1.配置 Nginx
接下来,我们需要配置 Nginx。在 Nginx 的配置文件中添加如下代码:
server {
listen 80;
server_name example.com;
root /var/www/my-project/public;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
}
这个配置文件告诉 Nginx 如何处理请求。特别要注意到 `root` 参数是我们项目的 public 目录。
2.安装部署脚本
接下来,我们需要安装我们的自动化部署脚本,通过如下命令安装:
composer require deployer/deployer
3.编写部署脚本
在项目根目录下创建一个 deploy.php 文件,这将是我们的自动化部署脚本。在文档末尾附上了一个简易版的代码,其中的注释会给您代码中的每个部分都进行讲解。
4.执行部署脚本
在完成了配置之后,我们可以通过以下命令执行自动化部署脚本:
php deploy.php production
其中的 `production` 参数是我们需要部署到的环境名称。
五、总结
通过以上步骤,我们已经成功地实现了一份自动化部署 PHP 项目的脚本。如果您在使用过程中遇到任何问题,可以去 [Deployer](https://deployer.org/docs/) 去查找文档,获取支持。
附:deploy.php代码码
deploy.php
namespace Deployer;
require 'recipe/common.php';
// Project name
set('application', 'my_project');
// Project repository
set('repository', 'git@example.com:username/repository.git');
// [Optional] Allocate tty for git clone. Default value is false.
set('git_tty', true);
// Shared files/dirs between deploys
set('shared_files', []);
set('shared_dirs', []);
// Writable dirs by web server
set('writable_dirs', []);
// Hosts
host('project.com')
->set('deploy_path', '~/{{application}}');
// Tasks
task('build', function () {
run('cd {{release_path}} && build');
});
task('deploy', [
'deploy:prepare',
'deploy:lock',
'deploy:release',
'deploy:update_code',
'deploy:shared',
'deploy:writable',
'deploy:vendors',
'deploy:clear_paths',
'deploy:symlink',
'deploy:unlock',
'cleanup',
])->desc('Deploy your project');
// [Optional] If deploy fails automatically unlock.
after('deploy:failed', 'deploy:unlock');