本文基于力在构建前端自动化部署。部署项目到指定的服务器,建立centeOs服务器上
1.准备软件工具
- xshell 地址:xshell.en.softonic.com/
- xftp 地址:www.netsarang.com/en/xftp-dow…
以上安装 一路next到底 两个工具用于连接和操作安装服务器内软件以及执行命令。
如果对命令熟悉可以忽略xftp xftp一般用于查看文件 上传文件 下载文件 编辑文档等等界面化操作
3.进入xftp界面进行xftp配置 点击新建
4.配置
5.确定后点击连接
6.xshell的步骤同上一模一样不在举例
此时就连接上服务器了。
2.安装docker
- 进入xshell
2.安装docker依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
复制代码
3.添加docker软件源信息
sudo yum-config-manager --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
复制代码
4.安装dockerCE
sudo yum install docker-ce
复制代码
5.docker服务启动与关闭
sudo systemctl enable docker // 设置开机自启
sudo systemctl start docker // 启动docker
sudo systemctl stop docker //关闭docker restart 重启
复制代码
3.安装docker-compose
docker-compose 是用于定义和运行多容器 Docker 应用程序的工具。通过compose进行启动docker内容的镜像或工具,运行定义都在docker-compose.yml的文件中进行管理
compose的下载方法:
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose //执行此步骤升级compose命令 不升级需要进入到compose的目录里执行命令才会生效
docker-compose -v //查看是否安装完毕
复制代码
4.安装Jenkins,nginx,gitlab镜像
docker pull nginx
docker pull jenkins/jenkins:lts
docker pull gitlab/gitlab-ce
复制代码
为了配合compose,以及方便管理以上三个镜像的文件 我们统一把他们建立在/home /docker的文件下
cd home/
mkdir //通过mkdir 建立目录如下
home
docker
+ jenkins
+ jenkins_home
+ nginx
+ gitlab //gitlab 文件存放
+ compose //管理docker-compose.yml 后续会提到
+ webserver //用于项目发布的地方
复制代码
5.配置gitlab
1.通过如下命令来启动安装gitlab
注意的是我们的Gitlab的http服务运行在宿主机的1080端口上,这里我们将Gitlab的配置,日志以及数据目录映射到了宿主机的指定文件夹下,防止我们在重新创建容器后丢失数据。
//我们使用的是yml启动 这个方式就不要用了 如果不是yml方式可以用
docker run --detach \ --publish 10443:443 --publish 1080:80 --publish 1022:22 \ --name gitlab \ --restart always \ --volume /home/docker/gitlab/config:/etc/gitlab \ --volume /home/docker/gitlab/logs:/var/log/gitlab \ --volume /home/docker/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:latest
复制代码
2.访问gitlab
访问地址:http://192.168.181.101:1080/
gitlab的启动时间较慢需要等待 如果进入可能会报502 的错误
3.配置root密码
** 第一次访问如果有重置密码的操作即可在界面上操作完登录即可**
** 如果没有重置密码的界面进入即使登录页面,那么我就要找到gitlab的安装文件**
进入
/home/docker/gitlab/config 进入此目录后
复制代码
找到如下文件右键用文档编辑器打开
找到 password 复制后面的密码 回到gitlab登录界面,将此密码粘贴进去。账号是root
4.创建项目,群组
接下来就是普通的项目创建了,就不在描述了。只提一个问题就是生成的git地址如果出现乱码的现象,记得修改如下文件内容的external_url字段
到此gitlab创建完成
6.在compose下新建文件docker-compose.yml
建议通过本机电脑创建docker-compose.yml文档 如图
建立好后 通过xshell拖拽到compose文件下
docker-compose的编写内容如下,仅供参考
version: '3'
services: # 集合
docker_jenkins:
user: root # 为了避免一些权限问题 在这我使用了root
restart: always # 重启方式
image: jenkins/jenkins:lts # 指定服务所使用的镜像 在这里我选择了 LTS (长期支持)
container_name: jenkins # 容器名称
ports: # 对外暴露的端口定义
- 8081:8080
- 50000:50000
volumes: # 卷挂载路径
- /home/docker/jenkins/jenkins_home/:/var/jenkins_home # 这是我们一开始创建的目录挂载到容器内的jenkins_home目录
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker # 这是为了我们可以在容器内使用docker命令
- /usr/local/bin/docker-compose:/usr/local/bin/docker-compose
docker_nginx:
restart: always
image: nginx
container_name: nginx
ports:
- 80:80
- 433:433
volumes:
- /home/docker/nginx/conf:/etc/nginx
- /home/docker/nginx/logs:/var/log/nginx
- /home/docker/webserver/vue3-demo/dist:/usr/share/nginx/html
docker_gitlab:
restart: always
image: gitlab/gitlab-ce
container_name: gitlab
ports:
- 10443:443
- 1080:80
- 1022:22
volumes: #数据卷的意思 即数据缓存 即使源文件丢失 在右侧的文件会缓存之前的信息
- /home/docker/gitlab/config:/etc/gitlab
- /home/docker/gitlab/logs:/var/log/gitlab
- /home/docker/gitlab/data:/var/opt/gitlab
docker-compose up -d //执行启动
docker-compose stop //停止
复制代码
以上可以看出
Jenkins 配置在8081端口
nginx 配置在80端口
gitlab 配置在 1080端口
7.配置Jenkins
1.进入Jenkins界面:http://192.168.181.194:8081
2.安装插件
选择推荐安装后 开始漫长的等待
3.Manage Plugins
jenkins中Manage Plugins搜索以下插件gitlab
、Publish Over SSH
、nodejs
并安装
安装完成后配置nodejs环境和ssh参数 在首页选择global tool Configuration
>NodeJS
选择自动安装和对应的nodejs版本号,选择成功后点击保存
配置ssh信息,Manage Jenkins
>configure System
填写服务器的相关信息
配置完保存
8.docker内的nginx配置
将容器内的配置文件拷贝到指定目录
docker container cp nginx:/etc/nginx /home/docker/nginx/
cd /home/docker/nginx/
mv nginx conf
复制代码
找到nginx.conf
更改nginx配置
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
server{
listen 80;
root /usr/share/nginx/html;
index index.html index.htm;
}
}
复制代码
配置完成重新执行下
docker-compose stop
docker-compose up -d
复制代码
9.Jenkins和gitlab关联
回到xshell执行
ssh-keygen -t rsa
复制代码
执行完毕后找到id_rsa 如果进入root中没有显示.ssh的目录 通过手写到路径中即可查看
将生成的密钥id_rsa复制粘贴到jenkins中的凭证
配置完保存
登陆gitlab,在gitlab
中配置id_rsa.pub
公钥
将ssh填入 其余项可不填 点击addkey保存
新建项目 选择第一个自由风格项目
配置gitlab信息
配置成功后,还需要到gitlab
中增加对应的钩子。记下上图的webhookURL
(红线框出)和secret token
值,到gitlab中进行配置。
构建环境及配置
remote 是webserver下的项目目录
构建
最后显示成功
然后访问nginx配置的地址 即可看见