jhoncytech / automatic-deployment
通过 Vagrant 实现的自动化部署脚本
README
通过 Vagrant 实现的自动化部署脚本
要求
-
必须在您的电脑上安装 Vagrant。
您可以通过点击以下地址下载 Vagrant:https://www.vagrantup.com/downloads
在 Vagrant 中,确保您已安装 vagrant-disksize 插件,如果没有,请在您的本地电脑上使用以下命令安装它。
#> vagrant plugin install vagrant-disksize
-
必须在您的电脑上安装 Virtualbox。
您可以通过点击以下地址下载 Virtualbox:https://virtualbox.ac.cn/wiki/Downloads
-
在远程服务器上,您需要将 vhosts 的文档根指向 /var/www/current,如下所示
这是因为此脚本在部署期间创建了必要的文件夹
其中最重要的是 current脚本生成如下结构,其中 current 指向
期望的部署脚本在 /var/www/sql/ 文件夹中生成部署版本,文件名为 deploy-version
所有版本都存储在 releases 文件夹中,您可以看到包含 deploy-version 的 html 文件所在的文件夹
同样,所有 .sql 文件都存储在 sql 文件夹中,您可以看到与部署版本对应的数据库版本
最后,您可以看到 scripts-data-access.sh 文件,该文件存储了脚本正常工作所需的所有必要数据。出于安全原因,此文件被加密。
-
可选,如果您想使用 composer 来获取项目,可以安装 composer。
您可以按照官方网站上的说明下载并安装 composer:https://getcomposer.org.cn/download/
描述
此脚本使用 shell 开发,允许您在本地电脑上使用 Vagrant 创建机器的同时将本地环境部署到远程生产环境,同样,脚本还能同时进行“部署和回滚”操作,并在 GitHub 账户中进行提交。
特性
使用此脚本,您可以
- 使用 Vagrant 创建本地环境。
- 通过在本地服务器上使用简单的命令 [deploy] 将您的本地项目部署到远程服务器。
- 通过在远程服务器上使用简单的命令 [undeploy] 回滚到最后一次部署的版本。
- 您可以选择在远程服务器上保留多少次部署。
- 您可以通过在远程服务器上使用简单的 [undeploy] 命令从远程服务器上的部署列表中选择要回滚的版本。
使用的工具、软件和包
- Denian 9
- Vagrant 2.2.14
- Virtualbox 6.1
- Shell 脚本
- PHP
- Composer
- Apache
- MariaDB
如何使用
分步安装。
-
在 GitHub 上创建一个空的私有仓库,用于存储和控制项目部署。
- 此步骤只需进行一次,因为之后不再需要。
- 非常重要,您需要知道每次创建新项目时,仓库也必须也是新的。
-
获取项目。
选择您想要的获取项目的方式
选项 1 - 通过 composer 获取
转到您想要创建项目的位置。
#> cd C:\Users\User\Documents
使用Composer创建项目。
#> composer create-project jhoncytech/automatic-deployment my-web
进入新创建的目录。
#> cd my-web
选项2 - 从GitHub仓库获取
转到您想要创建项目的位置。
#> cd C:\Users\User\Documents
在您的电脑上创建一个目录,整个项目将在该目录下管理。
#> mkdir my-web
进入新创建的目录。
#> cd my-web
从GitHub克隆JhonnyGO的Automated Vagrant Deployment项目。
#> git clone git@github.com:jhonnygo/automated-deployment.git .
-
编辑项目文件 [Vagrantfile]。
该文件位于文件夹
C:\Users\User\Documents\my-web\Vagrantfile
中您必须编辑以下必填参数非常重要
config.vm.hostname = "my-web"
=> 您希望用于本地服务器的名称config.vm.network = "192.168.10.10"
=> 您希望用于本地服务器的私有IPvb.name = "local-my-web"
=> Virtualbox的机器名称
还有更多可选值,您可以根据需要修改它们。
-
编辑文件 [00-shell-script-config.sh]。
该文件位于文件夹
C:\Users\User\Documents\my-web\config\scripts\00-shell-script-config.sh
中您必须编辑以下必填参数非常重要
REMOTE_IP=""
必须是一个公共IP,因为它是远程服务器的IP。LOCAL_IP="192.168.10.10"
必须是一个私有IP,它是Vagrantfile文件中使用的本地服务器IP。GIT_USER_NAME="Jeff Smith"
执行提交的GitHub用户。GIT_USER_EMAIL="jeff.smith@gmail.com"
执行提交的GitHub用户的电子邮件。REPO_GITHUB_HTML=""
将部署的GitHub仓库的SSH格式URL。
注意:如果您未指定某些密码,则密码将自动生成。
-
创建用于与项目仓库一起工作的SSH密钥对。
转到以下SSH项目密钥文件夹: [ssh-keys]
#> cd C:\Users\User\Documents\wy-web\config\ssh-keys #> ssh-keygen -t rsa -b 4096 -C "my-web-local"
- 使用名称:
ssh-key-local-test
- 保持密码为空
上述命令将创建您的SSH密钥对。
重要:如果您已经有了自己的密钥对,您可以将它们复制并粘贴到这个目录中。
- 使用名称:
-
在远程服务器上添加您的本地服务器的公钥 [ssh-key-local-test.pub],以便本地服务器可以与远程服务器通信。
在本地服务器
#> cd C:\Users\User\Documents\wy-web\config\ssh-keys #> cat ssh-key-local-test.pub
在远程服务器
#> nano ~/.ssh/authorized_keys
将您的本地服务器的公钥 [ssh-key-local-test.pub] 复制到文件末尾。
-
将您的本地服务器的公钥 [ssh-key-local-test.pub] 添加到之前创建的GitHub账户。
-
现在,是时候启动项目了。
在远程服务器
#> cd C:\Users\User\Documents\wy-web #> vagrant up
项目可用命令
本地服务器
- 停止项目:
#> vagrant halt
- 启动项目:
#> vagrant up
- 销毁项目:
#> vagrant destroy
- 部署项目:
#> deploy
远程服务器
- 取消部署项目:
#> undeploy
联系人
- Mail: jhonny@jhoncytech.com
- Web: https://jhoncytech.com
---
- Mail: contacto@jhonnygo.com
- Web: https://jhonnygo.com