服务器环境搭建
前提
- 持续集成服务器在私有网络中的 IP 地址为
192.168.1.247
- 下文中的所有组件将部署于同一台服务器,实际应用中可将 Git 服务器、Jenkins 服务器、Nexus Repository Manager OSS 服务器、Consul 服务器分离并以集群方式部署
- 服务器操作系统:CentOS 7
- 下文的 Shell 脚本中
#
提示符代表以root
用户身份操作,$
提示符代表以dxsuite
用户身份操作
软件版本说明
项目工程运行软件:
项目 | 版本 | 说明 |
---|---|---|
Java SE Development Kit | 1.8.221 | Java 开发工具包 |
ImageMagick | 7.0.8-66 | 图像处理 |
YASM | 1.3.0 | 汇编编译器,FFmpeg 依赖 |
FFmpeg | 4.2.1 | 音频/视频处理 |
持续集成工具:
项目 | 版本 | 说明 |
---|---|---|
Git | 2.9.5 | 软件配置管理(SCM: Software Configuration Management) |
Maven | 3.5.4 | 软件项目管理工具,制品库(Artifact Repository) |
Gitolite | 3.6.11 | Git 代码库权限管理 |
Nexus Repository Manager OSS | 3.18.1 | 制品库管理 |
Consul | 1.6.1 | 服务自动发现与服务治理 |
Jenkins | 2.176.3 | 持续集成 |
可选软件:
项目 | 版本 | 说明 |
---|---|---|
NVM | 0.33.11 | Node.js 版本管理工具 |
Node.js | 12.10.0 | Node.js 运行时环境,用于执行自动化脚本 |
准备工作
更新包系统软件包:
# yum update -y
安装用于编译源代码的开发工具包:
# yum groupinstall -y 'Development Tools'
# yum install -y zlib-devel
编辑 /etc/hosts
,为当前服务器添加主机名 nexus.cloud.dxsuite.cn
、ci.cloud.dxsuite.cn
和 consul.cloud.dxsuite.cn
:
127.0.0.1 localhost nexus.cloud.dxsuite.cn ci.cloud.dxsuite.cn consul.cloud.dxsuite.cn
::1 localhost nexus.cloud.dxsuite.cn ci.cloud.dxsuite.cn consul.cloud.dxsuite.cn
新建用户 dxsuite:
# adduser -p Pas5w0rd -U dxsuite
生成 SSH 密钥,设置文件名为“dxsuite”,不设置密码:
# su dxsuite
$ ssh-keygen -t rsa -C "dxsuite"
Enter file in which to save the key (/home/dxsuite/.ssh/id_rsa): /home/dxsuite/.ssh/dxsuite
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
安装 Java SE Development Kit
首先,从下载页面下载 Java SE Development Kit 的 Linux x64 版本的 tar 文件。
将下载的压缩包解压并移动到 /opt/
下:
# tar -xf jdk-8u221-linux-x64.tar.gz
# mv ./jdk1.8.0_221 /opt/jdk1.8.0_221
# alternatives --install /usr/bin/java java /opt/jdk1.8.0_221/bin/java 2
若已安装其他版本 Java(或系统已自带 Open JDK 等 Java)执行以下命令并选择刚刚安装的版本:
# alternatives --config java
安装 JDK 工具:
# alternatives --install /usr/bin/jar jar /opt/jdk1.8.0_221/bin/jar 2
# alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_221/bin/javac 2
# alternatives --set jar /opt/jdk1.8.0_221/bin/jar
# alternatives --set javac /opt/jdk1.8.0_221/bin/javac
将以下内容添加到文件 ~/.bashrc
中:
export JAVA_HOME=/opt/jdk1.8.0_221
export JRE_HOME=/opt/jdk1.8.0_221/jre
export PATH=$PATH:/opt/jdk1.8.0_221/bin:/opt/jdk1.8.0_221/jre/bin
安装 ImageMagick
下载并安装 ImageMagick:
# wget https://imagemagick.org/download/linux/CentOS/x86_64/ImageMagick-7.0.8-66.x86_64.rpm
# wget https://imagemagick.org/download/linux/CentOS/x86_64/ImageMagick-libs-7.0.8-66.x86_64.rpm
# yum install -y ImageMagick-7.0.8-66.x86_64.rpm ImageMagick-libs-7.0.8-66.x86_64.rpm
安装 FFmpeg
下载并安装汇编编译器 YASM:
# wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
# tar -xf yasm-1.3.0.tar.gz
# cd yasm-1.3.0
# ./configure
# make && make install
下载并安装 FFmpeg:
# wget https://ffmpeg.org/releases/ffmpeg-4.2.1.tar.bz2
# tar -xf ffmpeg-4.2.1.tar.bz2
# cd ffmpeg-4.2.1
# ./configure
# make && make install
官方下载页面地址:http://ffmpeg.org/download.html
安装 Git
Git 的编译依赖 perl 的 ExtUtils,若尚未安装则需要先执行以下命令:
# yum install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
下载 Git 源代码并编译安装:
# wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz
# tar -xf git-2.9.5
# cd git-2.9.5
# ./configure
# make && make install
官方下载页面地址:https://git-scm.com/download/linux
安装 Apache Maven
# yum install -y maven
安装 Gitolite
克隆 Gitolite 代码库并将 Gitolite 安装到 ~/.gitolite 下:
$ git clone git://github.com/sitaramc/gitolite
$ mkdir -p ~/.gitolite/{bin,logs}
$ gitolite/install -to ~/.gitolite/bin
项目的 GitHub 主页:https://github.com/sitaramc/gitolite
初始化 Gitolite:
$ ~/.gitolite/bin/gitolite setup -pk ~/.ssh/dxsuite.pub
完成初始化后,Gitolite 会生成 /home/dxsuite/repositories 路径,初始包含两个库,testing 和 gitolite-admin。
其中,testing 为测试库,可删除;gitolite-admin 用于管理其他库的访问控制权限。
Gitolite 通过将用户的公钥信息添加到 ~/.ssh/authorized_keys 中从而实现用户可以免密码访问代码库。为阻止这些用户通过 SSH 免密码登录到服务器,Gitolite 将禁用 dxsuite 用户的 SSH 远程登录。因此,若需要以 dxsuite 身份执行一些操作,则需要通过其他用户(如 root)登录到系统再切换到 dxsuite 用户。在实际的部署中也可以通过专门的用户(如 git)管理代码库。
安装 Nexus Repository Manager OSS
从下载页面下载 NEXUS REPOSITORY MANAGER OSS 3.X - UNIX
,并将其解压。
得到以下目录结构:
📁 nexus-3.18.1-01
📁 etc
📃 nexus-default.properties 应用配置文件
...
📁 bin
📃 nexus Nexu 启动脚本
📃 nexus.vmoptions Java 虚拟机配置文件
...
通过 nexus-default.properties 的 application-port 设置 Nexus 服务端口号:
application-port=8910
通过 nexus.vmoptions 设置 Java 虚拟机启动参数:
-Xms1536m
-Xmx1536m
-XX:MaxDirectMemorySize=1536m
启动 Nexus Repository Manager OSS:
$ nexus-3.18.1-01/bin/nexus start
通过以下命令停止 Nexus Repository Manager OSS:
$ nexus-3.18.1-01/bin/nexus stop
安装 Consul
下载 Linux / 64bit 版本的可执行文件的压缩包,解压并将可执行文件移动到 /usr/local/bin/ 下:
# wget https://releases.hashicorp.com/consul/1.6.1/consul_1.6.1_linux_amd64.zip
# unzip consul_1.6.1_linux_amd64.zip
# mv consul /usr/local/bin/
安装 Jenkins
从下载页面下载 LTS 版本的 WAR 文件(Generic Java package (.war))。
启动 Jenkins 服务:
$ java -Dfile.encoding=UTF-8 \
-XX:PermSize=256m -XX:MaxPermSize=512m -Xms256m -Xmx512m \
-Djava.io.tmpdir=/var/dxsuite/jenkins/temp \
-jar ./jenkins.war --httpPort=8920 > /var/dxsuite/jenkins/jenkins.log &
可选:安装 Node.js
首先安装 Node.js 版本管理工具:
$ git clone https://github.com/nvm-sh/nvm.git ~/.nvm
$ cd ~/.nvm
$ git checkout v0.34.0
$ . nvm.sh
将以下内容加入到 ~/.bashrc 中:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
安装 Node.js:
$ nvm install v12.10.0