一套基础自动化部署搭建过程

标签: php jenkins nginx docker gitlab | 发表时间:2019-07-11 10:52 | 作者:LoyaltyLu
出处:https://segmentfault.com/blogs

问题背景

公司初创技术团队,没有任何基础设施的情况下,需要搭建一系列code管理以及自动化部署等工具....所以
引发了下面一系列的部署过程,历时两天,中间也是碰到各种问题,但最终把基本工具全部搭建成功,耶~,下面带大家一起看下此次搭建过程。

资源

服务器一台,CentOS的,公司就给了一台配置较低的服务器当临时服务器,没办法了,就这么搞吧。

思考:如果我用传统的yum来安装,肯定会被我装乱七八糟,还不方便自己管理维护,左右为难的情况下我选择了Dokcer,可能有些小伙伴问Docker是啥怎么用,不要慌这里有传送门: Linux docker-compose 实战[进阶篇]docker编排PHP开发坏境

测试环境搭建

图片描述


为了快速搭建一套PHP测试环境我决定用 laradock了,虽然文件很多,但是里面封装的东西也是比较全的,后期开发不知道会用到什么技术,就决定先用这个,随时可以启动用得到的服务。
laradock官方文档给的介绍也很全面,我这里采用的方式是部署多套项目方式目录结构如下:

  + laradock
+ project-1
+ project-2

开始使用:

  1. git clone https://github.com/laradock/l...
  2. cp env-example .env

    env 里面的配置可以修改的,可以根据自己情况进行调整
  3. docker-compose up -d nginx php-fpm mysql redis

    后面可以加上你要启动的程序,像rabbitmq、mongo等等,需要的时候追加在尾部就可以启动,首次启动时间有点长
  4. docker-compose exec --user=laradock workspace bash

    像laravel等项目肯定少不了composer,执行这个命令进入工作区,就可以执行composer了
  5. 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配置

初始化

clipboard.png

输入你上面获取到的初始化密码,下一步我选择的是推荐安装,后面自己需要的自己可以再去插件库安装。

插件安装

初始化成功之后前往系统设置->插件管理安装几个必要插件:

  Publish Over SSH

GitLab Plugin #因为是使用的Gitlab所以要安装这个

NodeJS Plugin #我们前端使用的Vue所以要用到node

开始征程

一、基础配置

安装完插件之后需要配置一些基础内容如jdk、node、ssh等

  • ssh安装

进入:Manage Jenkins-> Configure System

clipboard.png

点击高级:

clipboard.png

点击Test Configuration测试是否连接成功


  • jdk、git

进入:Manage Jenkins-> Global Tool Configuration

clipboard.png

我这里jdk、git采用自动安装,jdk安装时候需要一个账号,去注册下就可以
  • nodejs安装

clipboard.png
]

二、创建工程

clipboard.png

  1. 新建一个工程
  2. 选择自由风格

三、配置工程

clipboard.png

设置最多保留几个版本构建

clipboard.png

使用git源码工具,输入git地址、添加git用户

clipboard.png

  if [ -f "test.tar.gz" ];then
rm testv.tar.gz
fi
tar -zcvf test.tar.gz ./*
这里为什么要把项目打包呢,因为下面要配置的ssh不支持文件夹传输,所以需要先将内容进行打包然后去服务器进行解包

clipboard.png

全部保存好就可以去构建了。耶~

谢谢观赏

长时间没写文章了,这个篇幅较长,谢谢耐心观看,希望对您有所帮助,也希望大家提供下不同的意见,找到更有效的方式来完成,谢谢!

相关 [基础 自动化] 推荐:

一套基础自动化部署搭建过程

- - SegmentFault 最新的文章
公司初创技术团队,没有任何基础设施的情况下,需要搭建一系列code管理以及自动化部署等工具....所以. 引发了下面一系列的部署过程,历时两天,中间也是碰到各种问题,但最终把基本工具全部搭建成功,耶~,下面带大家一起看下此次搭建过程. 服务器一台,CentOS的,公司就给了一台配置较低的服务器当临时服务器,没办法了,就这么搞吧.

HTTP基础

- - ITeye博客
HTTP的结构主要包括下面几个要点:. HTTP的版本主要有1.0,1.1 和更高版本.    1.1 及以上版本允许在一个TCP连接上传送多个HTTP协议,1.0能 .    1.1 及以上版本多个请求和响应可以重叠,1.0不能.    1.1 增加了很多的请求头和响应头.     一个请求行,若干小心头,以及实体内容,其中的一些消息头和实体内容是可选的,消息头和实体内容需要空行隔开.

Git基础

- Wolf - 潘魏增
上个月末在公司内部作了一次《Git基础》的主题分享. 这里把分享内容公布出来,希望对一些朋友有用. 如果之前没有接触过Git,wikipedia上面已经有非常好的介绍. pdf格式:http://panweizeng.com/download/git-basics-meituan.pdf. keynote格式:http://panweizeng.com/download/git-basics-meituan.key.

JavaScript 基础

- - CSDN博客推荐文章
JavaScript可以出现在HTML的任意地方,甚至在之前插入也不成问题,使用标签. 不过要在框架网页中插入的话,就一定要在之前插入,否则不会运行. JavaScript对数据类型要求不严格,一般来说,声明变量的时候不需要声明类型,而且就算声明了类型,在使用过程中也可以给变量赋予其他类型的值,声明变量使用var关键字.

CSS基础

- - CSDN博客Web前端推荐文章
1、引入CSS的四种方式. 行内样式、内嵌样式、链接样式、导入样式. 基本选择器:标签选择器,ID选择器,类选择器,通用选择器. 通用选择器:*{css代码}. 通用选择器作用:对整个网页中所有HTML标签进行样式定义. 常见用法:定义*{margin:0;padding:0}通用样式,并置于CSS文件最顶端,用于对HTML内所有的标签进行重置以保证页面能兼容多种浏览器.

iPhone App自动化测试

- BeerBubble - Taobao QA Team
         无线客户端的发展很快,特别针对是android和ios两款无线操作系统的客户端应用,相应的测试工具也应运而生,这里主要给大家介绍一些针对iPhone App的自动化测试工具.          首先,我们把这些测试框架分为三大类:接口测试工具、注入式UI测试工具、录放式UI测试工具.

Android Robotium自动化测试

- - CSDN博客移动开发推荐文章
1、官方网站下载测试工程demo. 从 http://code.google.com/p/robotium/downloads/detail?name=ExampleTestProject_v3.6.zip 下载官方的Android测试工程demo. 解压后的文件NotePad、NotePadTest、readme.txt.

Android UiAutomator 自动化测试

- - 操作系统 - ITeye博客
一、一个BUG引发的问题.     如果研发过程中有一个BUG:“不断的切换手机语言出现花屏现象”. 我想,最好的方式应该是自动化测试.     那么,自动化测试可以完成哪些任务呢.     简单的说,那些重复性的测试工作,都可以交给自动化完成:.         1、设置手机的语言.         2、添加、删除、收藏联系人.

Robotium 自动化测试

- - CSDN博客推荐文章
Robotium 自动化测试. Android Studio环境下,在所要测试的Module的build.gradle文件下添加,. Robotium即是对Instrumentation框架方法的封装,所以使用之前需要继承测试类,重写构造器,setUp()和tearDown()方法. 其中继承的是ActivityInstrumentationTestCase2测试类.

友情的基础

- okici - 比特客栈的文艺复兴
央视对百度的炮轰持续数日后突然停歇,让人揣测百度公关是不是已经与央视签好了互不侵犯协议. 有网友把cntv.baidu.com与baidu.cntv.cn两个域名翻出来奉为定情信物,只可惜它们都是过时的信号. “百度台”与其域名已经存在很久,是Google没叫板之前两家公司的蜜月记忆,早就流失于骂战的口水中.