问题背景
公司初创技术团队,没有任何基础设施的情况下,需要搭建一系列 code 管理以及自动化部署等工具 …. 所以
引发了下面一系列的部署过程,历时两天,中间也是碰到各种问题,但最终把基本工具全部搭建成功,耶~,下面带大家一起看下此次搭建过程。
资源
服务器一台,CentOS 的,公司就给了一台配置较低的服务器当临时服务器,没办法了,就这么搞吧。
思考:如果我用传统的 yum 来安装,肯定会被我装乱七八糟,还不方便自己管理维护,左右为难的情况下我选择了 Dokcer,可能有些小伙伴问 Docker 是啥怎么用,不要慌这里有传送门:Linux docker-compose 实战、[进阶篇]docker 编排 PHP 开发坏境
测试环境搭建
为了快速搭建一套 PHP 测试环境我决定用 laradock 了,虽然文件很多,但是里面封装的东西也是比较全的,后期开发不知道会用到什么技术,就决定先用这个,随时可以启动用得到的服务。
laradock 官方文档给的介绍也很全面,我这里采用的方式是部署多套项目方式目录结构如下:
+ laradock
+ project-1
+ project-2
开始使用:
- git clone https://github.com/laradock/l…
-
cp env-example .env
env 里面的配置可以修改的,可以根据自己情况进行调整
-
docker-compose up -d nginx php-fpm mysql redis
后面可以加上你要启动的程序,像 rabbitmq、mongo 等等,需要的时候追加在尾部就可以启动,首次启动时间有点长
-
docker-compose exec –user=laradock workspace bash
像 laravel 等项目肯定少不了 composer,执行这个命令进入工作区,就可以执行 composer 了
-
docker-compose exec nginx nginx -s reload
肯定有人会问我更改了 nginx 配置是不是每次都要进入 nginx 容器去重启,或者把整个容器都重启了呀,不用的,执行这个命令就可以重启 nginx 了。nginx 站点配置文件在哪里呢:./laradock/nginx/sites/
先运行下试试吧。
GitLab
现在运行环境已经搭建好了,我代码应该怎么存放呢,其实有很多的选择,要根据自己的实际情况出发,如:GitHub、码云、GitLab 等等,我选择的是 GitLab,刚开始没有发现 laradock 其实提供了 GitLab 服务。。只能自己折腾了, 其实很简单。
docker \
run -d \
-p 443:443 \
-p 8080:80 \
-p 222:22 \
--name gitlab \
--restart always \
-v /home/gitlab/config:/etc/gitlab \
-v /home/gitlab/logs:/var/log/gitlab \
-v /home/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce
#参数解释:#-d:让容器后台运行
#-p:暴露端口,把容器的 443 端口指向到宿主机 443 端口,宿主机 8080-> 容器 80,宿主机 222-> 容器 22
#宿主机端口可以根据自己的情况自己定制
#-name 给你的容器起个名,只要不和现有的重复就可以
#--restart 当容器退出时 docker 是否重启
#-v 这就是挂载磁盘了,把宿主机的目录挂载到容器中,这么做哪怕是容器坏了我的内容也不会丢失。#宿主机 /home/gitlab/config 目录挂载到容器中 /etc/gitlab 目录,宿主机目录根据自己情况定
#gitlab/gitlab-ce 这个就是要启动的镜像,如果镜像不存在,docker 会自动下载最新版
容器启动成功之后会有一段时间来启动 GitLab,看到启动成功立马访问是访问不到的,稍微等一下就可以了,配置文件都在你指定的宿主机目录下可以修改,需要修改的内容如下:
gitlab_rails['gitlab_ssh_host'] = '宿主机 IP'# 宿主机的 IP 地址
gitlab_rails['gitlab_shell_ssh_port'] = 222# 暴露给宿主机的 ssh 端口
external_url '域名'# 分配给 gitlab 的域名,可以用 nginx 做反向代理到 8080 端口
Jenkins
实现自动化部署有很多种方式如:webhook、Jenkins、Travis CI 等等,我的选择是 Jenkins,因为之前部署用过所以这里依旧用了这个,laradock 依旧提供了 Jenkins 服务,又是因为没发现自己搭建了一个。。。看来下次要先多看看在动手了。
docker run -d \
--name myjenkins \
-p 8181:8080 \
-p 50000:50000 \
-v /home/jenkins/:/var/jenkins_home \
jenkins/jenkins
#参数解释
#-d:让容器后台运行
#-p:暴露端口,宿主机 8181-> 容器 8080,宿主机 50000-> 容器 50000
#-v 这就是挂载磁盘了,把宿主机的目录挂载到容器中,这么做哪怕是容器坏了我的内容也不会丢失。#宿主机 /home/jenkins/ 目录挂载到容器中 /var/jenkins_home 目录,宿主机目录根据自己情况定
是不是也很简单~。~,但是 Jenkins 安装成功后会有一个初始化密码,怎么查看初始化密码呢,有两种方式:
# 第一种方式
docker logs < 你的容器名字 > #这样就可以查看容器输出的内容
#第二种方式
cat /home/jenkins/secrets/initialAdminPassword# 这里好的 /home/jenkins 需要替换成你挂载的目录
jenkins 配置
初始化
输入你上面获取到的初始化密码,下一步我选择的是推荐安装,后面自己需要的自己可以再去插件库安装。
插件安装
初始化成功之后前往系统设置 -> 插件管理安装几个必要插件:
Publish Over SSH
GitLab Plugin #因为是使用的 Gitlab 所以要安装这个
NodeJS Plugin #我们前端使用的 Vue 所以要用到 node
开始征程
一、基础配置
安装完插件之后需要配置一些基础内容如 jdk、node、ssh 等
- ssh 安装
进入:Manage Jenkins-> Configure System
点击高级:
点击 Test Configuration 测试是否连接成功
- jdk、git
进入:Manage Jenkins-> Global Tool Configuration
我这里 jdk、git 采用自动安装,jdk 安装时候需要一个账号,去注册下就可以
- nodejs 安装
]
二、创建工程
- 新建一个工程
- 选择自由风格
三、配置工程
设置最多保留几个版本构建
使用 git 源码工具,输入 git 地址、添加 git 用户
if [-f "test.tar.gz"];then
rm testv.tar.gz
fi
tar -zcvf test.tar.gz ./*
这里为什么要把项目打包呢,因为下面要配置的 ssh 不支持文件夹传输,所以需要先将内容进行打包然后去服务器进行解包
全部保存好就可以去构建了。耶~
谢谢观赏
长时间没写文章了,这个篇幅较长,谢谢耐心观看,希望对您有所帮助,也希望大家提供下不同的意见,找到更有效的方式来完成,谢谢!