php+nginx实现自动化部署脚本(简单版)

一、前言

在实际开发中,为了更高效、更简便地部署项目,自动化部署是必不可少的一个环节。本文将讲解如何使用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');

后端开发标签