ITP平台搭建全流程,内部资料,请使用Token登录后查看。后面烂尾了,有缘会写完。
这写的可都是官方文档不见得会告诉你的技巧。
宏观规划
本文更新日期:2022年9月19日
系统(软件)版本
- 操作系统:CentOS 7 Minimal
- JDK:8u333
本文(除特殊说明外)所有操作均基于CentOS。
系统初始化准备
- CentOS7在GUI下安装时务必注意启用网络
- 安装必需的组件(无论是否用得上均建议先安装再说)
1
2yum install -y curl wget vim unzip net-tools \
lrzsz yum-utils epel-release - 刷新存储库、重建库缓存及升级软件包
1
yum clean all&&yum makecache&&yum update
- 必要的重启,确保系统无挂起操作
设备使用情况
以下情况为不需要部署集群/生产环境的情况,集群所需的虚拟机是另外计算的,实际实验环境可以适当减少硬件需要的配置。
至少三台虚拟机:
- 【A】:JDK、MySQL、Nginx、Tomcat8、MongoDB、Redis、NodeJS(pm2、fis3)、NFS(仅集群部署)、Protal-Web;
- 【B】:GitLab;
- 【C】:JDK、MySQL、Tomcat8、Sonarqube、Jenkins。
性能要求:
- 前端ITP(A):8c/16G/1T
- Gitlab(B):4c/8G/500G
- Sonarqube:2c/4G/500G,
Jenkins:2c/4G/500G。
集群:
- docker-master:60c/128G/2T
- docker-node:60c/200G/2T
实用命令
一些实用命令。
- 修改主机名
1
hostnamectl --static set-hostname <New-hostname>
- 禁用SELINUX
找到/etc/sysconfig/selinux
文件,找到并改成SELINUX=disabled
然后重启即可。 - 添加防火墙例外
- 开启80端口
1
firewall-cmd --zone=public --add-port=80/tcp --permanent
- 开启22-8080端口
1
firewall-cmd --zone=public --add-port=22-8080/tcp --permanent
- 防火墙重载
1
firewall-cmd --reload
- 开启80端口
- 查看端口监听状态
1
netstat -nltp | grep 端口号
- 重置网络状态(重启网卡)
1
systemctl restart network
默认监听端口及端口开放情况
此处记录默认状态下各应用的端口监听情况,常见端口(如sshd
)不再列出。
应用 | 端口监听 | 备注 |
---|---|---|
MySQL [mysqld] | 3306 | — |
Tomcat | 8080 | 包括Sonarqube和Jenkins |
GitLab | 80 | — |
MongoDB [mongod] | 27017 | — |
JDK
首先到Java官网下载JDK包,JDK8版本即可,这里以jdk-8u333-linux-x64
版本为例。
解压JDK到/usr/local
:
1 | tar -zxvf jdk-8u333-linux-x64.tar.gz -C /usr/local/ |
解压后赋予权限:
1 | chown root:root -R /usr/local/jdk1.8.0_333/ |
在/etc/profile
末尾追加如下内容以将JDK加入环境变量,如果JDK版本和我的不一样记得修改版本号:
1 | # set java environment |
随后应用环境变量:
1 | source /etc/profile |
执行java -version
查看是否正确执行:
1 | java version "1.8.0_333" |
MySQL
安装
- 下载Yum Repo
1
wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
- 添加Yum Repo
1
yum localinstall mysql-community-release-el7-5.noarch.rpm
- 从Repo安装MySQL
1
yum install mysql-community-server
SystemD控制命令
注意CentOS7下MySQL安装后不会自动启动以及开机启动,需要执行如下控制命令手动启动和开启开机启动。
- 启动 MySQL Server
1
systemctl start mysqld.service
- 查看 MySQL Server 状态
1
systemctl status mysqld.service
- 关闭 MySQL Server
1
systemctl stop mysqld.service
- 设置 MySQL Server开机自启
1
systemctl enable mysqld.service
执行向导式安装
1 | mysql_secure_installation |
开启远程访问
项目需要,生产环境中不应执行这一小节。
- 登录到MySQL:
1
mysql -uroot -p<密码>
- 切换到mysql表
1
use mysql;
- 授予远程访问权限
1
grant all privileges on *.* to 'root'@'%' identified by '<密码>';
- 强制刷新权限表
1
flush privileges;
退出后在远程测试一下即可。
修改配置文件
修改/etc/my.cnf
文件,在[mysqld]
节点下添加如下内容:
1 | [mysqld] |
保存退出后重启mysqld即可。
MySQL存储引擎
查看当前版本提供什么引擎:
1 | mysql> show engines; |
查看当前的存储引擎:
1 | mysql> show variables like '%storage_engine%'; |
如果上面三行都不是InnoDB则(出于性能考虑)建议改成InnoDB,修改配置文件/etc/my.cnf
,在[mysqld]
下面添加一行:
1 | default-storage-engine = INNODB |
然后重启mysqld再用上面的命令查一下是否生效。
内存调优
innodb_buffer_pool_size
:参数值设置得尽可能大一点,这个参数主要作用是缓存innodb
表的索引,数据,插入数据时的缓冲。默认值:128M
,专用 mysql 服务器应该设置为操作系统内存的70%-80%最佳。设置方法:/etc/my.cnf
文件[mysqld]
下面加入innodb_buffer_pool_size
参数即可:1
2[mysqld]
innodb_buffer_pool_size = 256Mquery_cache_size
:设置 MySQL 的查询缓存query_cache_size
,最少设置15M。1
2
3[mysqld]
query_cache_type=1
query_cache_size=32M
修改好后重启mysqld,然后检查一下是否生效即可。
1 | show variables like '%query_cache%'; |
Tomcat8
安装Tomcat8之前需要先确认JDK已正确安装。
Tomcat8 的 bin 包可以在Tomcat 8 Software Downloads下载到,这里以apache-tomcat-8.5.82
版本为例。
安装
解压 Tomcat 到/usr/local
:
1 | tar -zxvf apache-tomcat-8.5.82.tar.gz -C /usr/local/ |
将/usr/local/
下的文件夹apache-tomcat-8.5.82
改名为tomcat8
,方便后续操作。
修改配置文件
首先打开/usr/local/tomcat8/conf/server.xml
文件,找到如下段,并在后面添加如下段。
1 | <Connector port="8080" protocol="HTTP/1.1" |
需要添加的:
1 | <Connector port="8080" address="localhost" |
打开/usr/local/tomcat8/bin/catalina.sh
并添加如下参数以调优内存使用:
1 | JAVA_HOME=/usr/local/jdk1.8.0_202 |
防火墙例外
1 | firewall-cmd --zone=public --add-port=8080/tcp --permanent |
启动
1 | /usr/local/tomcat8/bin/startup.sh |
开机自启
打开/etc/rc.local
文件,输入如下行
1 | su - root -c '/usr/local/tomcat8/bin/startup.sh' |
如果是第一次使用rc.local
先加x
可执行权限。
MongoDB
从yum源安装
执行如下命令写入yum源文件。
注意,该源可能已失效。
1 | cat > /etc/yum.repos.d/MongoDB.repo <<EOF |
写入源之后直接从yum执行安装即可。
1 | yum -y install mongodb-org |
离线安装(RPM包)
打开MongoDB Community Download,在右边“Avaliable Downloads”中,“Version”选择带“Current”标识(当前版本),“Platform”这里应该选择“RedHat/CentOS 7.0”,“Package”选择“Server”,然后点击下方的“Copy Link”,再复制到shell中执行:
1 | # Download RPM |
离线安装(二进制包)
将下载好的二进制包复制到/root/
,并解压:
1 | tar -zxvf mongodb-linux-x86_64-3.6.3.tgz -C /usr/local/ |
到/usr/local/
把mongodb-linux-x86_64-3.6.3
改成mongodb
,随后编辑环境变量文件/etc/profile
并在最下方追加:
1 | # mongodb env |
使配置文件生效:
1 | source /etc/profile |
创建数据目录
这一步不是必须的,如果需要更改数据目录,数据目录最好在一块相对容量较大的硬盘上且(出于性能考虑)最好由MongoDB独占。
- 创建数据目录
1
mkdir -p /data/mongodb/data /data/mongodb/logs
- 修改权限
1
chown -R mongod:mongod /data/mongodb/data /data/mongodb/logs
- 创建文件
1
2touch /data/mongodb/logs/logs.log
touch /data/mongodb/mongod.pid
修改配置文件
如果是通过软件源安装的MongoDB,则配置文件位置为:/etc/mongod.conf
;
如果是通过二进制包安装的则默认没有配置文件,将如下内容填入配置文件即可,默认情况下配置文件不限制位置,但通常创建在/usr/local/mongodb/mongodb.conf
。
1 | systemLog: |
SystemD控制命令
通过源安装的MongoDB会自动将自己添加到系统启动项中,实际上无需再设置开机自启。
- 启动 MongoDB
1
systemctl start mongod.service
- 查看 MongoDB 状态
1
systemctl status mongod.service
- 关闭 MongoDB
1
systemctl stop mongod.service
- 设置 MongoDB 开机自启
1
systemctl enable mongod.service
如果是从二进制文件安装的则还需要自己手动写一下Service文件,这里放一份示例:
1 | [Unit] |
自己安装的话也别忘了先关掉主进程再启动服务:
1 | mongod --shutdown --config /usr/local/mongodb/mongodb.conf |
创建验证用户
直接使用mongo
命令连接数据库,创建测试用户,记得修改pwd
:
1 | > use admin |
返回Successfully added user
则为创建成功。
回到刚才的配置文件,将authorization: enabled
行的验证打开,随后重启mongod服务,然后进数据库(Navicat)测试一下即可。
也可以在命令行进数据库测试:
1 | mongo -u root -p adminpwd --authenticationDatabase admin |
若使用Navicat进入数据库,连接应选择Standalone
,主机和端口号根据实际填写,验证选Password
,数据库填admin
,用户名和密码根据实际填写。
防火墙放通
mongo默认监听端口为27017
。
1 | firewall-cmd --zone=public --add-port=27017/tcp --permanent |
创建普通用户
使用mongo
命令连接数据库:
1 | > use admin |
最后一行有返回1
则为认证成功(密码也没有错,数据库也没有问题,非常滴美味,非常滴新鲜)。
创建portal数据库(use portal
)和普通用户,注意修改pwd
参数:
1 | db.createUser({user:'portal',pwd:'portalpwd',roles:[{role:'readWrite',db:'portal'}]}) |
一样是有返回Successfully added user
即为成功,可以退出数据库之后在用普通账户登进去检查一下。
MongoDB实用命令
- 查看所有数据库:
show dbs
,注意如果某个表内没有数据不会在这里显示。
Node.js
将下载好的nodejs二进制包文件解压到/opt/
,然后改名node11
:
1 | tar -zxvf node-v11.15.0-linux-x64.tar.gz -C /opt/ |
添加环境变量(/etc/profile
):
1 | # nodejs env |
应用环境变量:
1 | source /etc/profile |
随后执行node -v
有版本号返回即可。
换源
这里以淘宝源为例,此步非必要。
1 | npm config set registry https://registry.npm.taobao.org |
安装pm2
1 | npm install pm2@latest -g |
安装fis3
1 | npm install fis3 -g |
Gitlab 8.17.4
因Gitlab要求开放的端口比较多因此建议单独部署在一台虚拟机上。
注意Gitlab的初始密码有效期只有24小时,因此当不确定当日是否能完成部署时不要部署。
这一部分已经迁移到Gitlab 安装与配置。
Sonarqube
SonarQube是一个开源的代码质量管理系统,安装前请先确保MySQL已经正确安装。
这一部分已经迁移到在 CentOS 上安装 Sonarqube 6.7.7,请到该文章中查看。
Jenkins
安装过程参见本站文章CentOS 搭建 Jenkins,这里仅额外说一些注意事项。
配置
打开http://本机IP:8080/jenkins/configureTools/
。
- 首先新增JDK,不勾选自动安装,别名输入
jdk1.8.0_333
,JAVA_HOME输入/usr/local/jdk1.8.0_333
。 - 新增Maven,不勾选自动安装,别名输入
apache-maven-3.8.4
,MAVEN_HOME输入/usr/local/apache-maven-3.8.4
。 - 点击保存即可。
打开http://本机IP:8080/jenkins/credentials/store/system/domain/_/
。
- 左侧添加凭据,用户名和密码输入Gitlab所在服务器SSH的用户名和密码,ID输入
gitlab-root
。 - 左侧添加凭据,类型选择“Secret text”,Secret填入刚才Sonarqube里面创建的Token,ID输入
Sonarqube
。 - 其他参数不要动,保存退出即可。
插件安装与配置
- 打开
http://本机IP:8080/jenkins/pluginManager/available
。 - 搜索
SonarQube Scanner
,然后勾选下方插件,最后点“Download now and install after restart”完成安装。 - 打开
http://本机IP:8080/jenkins/configureTools/
,新增SonarQube Scanner,Name随便填写,勾选自动安装,保存即可。 - 打开
http://本机IP:8080/jenkins/configure
,点击Add Sonarqube,Name随便填,ServerURL填刚才安装的Sonarqube地址(例如http://192.168.138.136:9000/sonar
),“Server authentication token”选择刚才创建的Token。 - 保存即可。
Redis
安装了EPEL源之后可以直接从源安装Redis:
1 | yum install -y redis |
当然如果要编译安装也可以,之后可能会单独出一篇文章吧。
修改密码
打开配置文件/etc/redis.conf
,找到如下行取消注释,将后面参数改了然后重启redis即可。
1 | requirepass foobared |
重启Redis(注意:只有从源安装的才能用systemctl
控制,自行编译的版本请自行添加systemd服务或手动重启)
1 | systemctl restart redis |
重启后看一下是否有Redis实例在跑:
1 | netstat -anp |grep 6379 |
如果返回有进程在跑就是可以了。
后端(portal-web)配置
解压文件
首先关掉Tomcat
1 | /usr/local/tomcat8/bin/shutdown.sh |
将portal-web.zip
复制到/usr/local/tomcat8/webapps
,解压:
1 | unzip portal-web.zip |
最后删掉portal-web.zip
,一定要删掉。
导入数据库
在Navicat中连接到数据库,右键“新建数据库”,编码方式选择utf8mb4
,排序规则保持默认(留空)。
随后右键新建的portal
数据库,选择“运行SQL文件”,编码默认,点“开始”后开始导入,当出现[SQL] Finished successfully
且无其他报错时即为导入完成。
config.properties
配置文件路径:
1 | /usr/local/tomcat8/webapps/portal-web/WEB-INF/classes/config/config.properties |
需要修改的项如下
- 数据库相关,地址、端口、数据库名和数据库账户密码请根据实际情况更改。
1
2
3jdbc.url=jdbc:mysql://127.0.0.1/portal?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true
jdbc.username=root
jdbc.password=1 - 静态资源位置,地址端口请根据实际情况更改。
1
resource.host=http://192.168.138.133:18087
- GitlabAPI地址,URL地址填写Gitlab部署机的IP地址,Token写前面部署时获取到的。
1
2
3## Gitlab API Configuration
gitlab.api.url=http://192.168.138.134
gitlab.api.token=xwWE__viXev3p1cGN_Q8 - Domain,填本机IP即可。
1
domain=http://192.168.138.133
- Jenkins设置,根据实际情况填写
1
2
3
4jenkins.server.url=http://192.168.138.136:8080/jenkins
jenkins.server.username=admin
jenkins.server.passwd=p:PYE8R9yafhD-z
jenkins.job.credentialsId=gitlab-root - Sonarqube,根据实际情况填写
1
2
3sonar.server.url=http://192.168.138.136:9000/sonar
sonar.server.username=admin
sonar.server.passwd=admin
mongodb.properties
主要是MongoDB的一些配置项,配置文件路径:
1 | /usr/local/tomcat8/webapps/portal-web/WEB-INF/classes/config/mongodb.properties |
需要修改的参数如下
1 | mongo.db=portal |
创建资源文件夹
首先在/home
目录下新建ITP
文件夹,然后将share.tar.gz
解压到ITP下,并查看文件树是否为如下结构。
1 | /home |
最后删掉share.tar.gz
(或移入备份文件夹)即可。
部署(ITP)前端
将ITP.zip
导入/opt
目录:
1 | unzip ITP.zip |
然后删掉ITP.zip
,导入即完成。
不写了,本文烂尾
换新版本了,本文之后会拆成其他小的项目。