Lxn-Chan!

(~ ̄▽ ̄)→))* ̄▽ ̄*)o

ITP平台搭建全流程,内部资料,请使用Token登录后查看。后面烂尾了,有缘会写完。
这写的可都是官方文档不见得会告诉你的技巧。

宏观规划

本文更新日期:2022年9月19日

系统(软件)版本

  • 操作系统:CentOS 7 Minimal
  • JDK:8u333

本文(除特殊说明外)所有操作均基于CentOS。

系统初始化准备

  1. CentOS7在GUI下安装时务必注意启用网络
  2. 安装必需的组件(无论是否用得上均建议先安装再说)
    1
    2
    yum install -y curl wget vim unzip net-tools \
    lrzsz yum-utils epel-release
  3. 刷新存储库、重建库缓存及升级软件包
    1
    yum clean all&&yum makecache&&yum update
  4. 必要的重启,确保系统无挂起操作

设备使用情况

以下情况为不需要部署集群/生产环境的情况,集群所需的虚拟机是另外计算的,实际实验环境可以适当减少硬件需要的配置。

至少三台虚拟机:

  • 【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
  • 查看端口监听状态
    1
    netstat -nltp | grep 端口号
  • 重置网络状态(重启网卡)
    1
    systemctl restart network

默认监听端口及端口开放情况

此处记录默认状态下各应用的端口监听情况,常见端口(如sshd)不再列出。

应用端口监听备注
MySQL
[mysqld]
3306
Tomcat8080包括Sonarqube和Jenkins
GitLab80
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
2
3
4
5
6
# set java environment
JAVA_HOME=/usr/local/jdk1.8.0_333
JRE_HOME=/usr/local/jdk1.8.0_333/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

随后应用环境变量:

1
source /etc/profile

执行java -version查看是否正确执行:

1
2
3
java version "1.8.0_333"
Java(TM) SE Runtime Environment (build 1.8.0_333-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.333-b02, mixed mode)

MySQL

安装

  1. 下载Yum Repo
    1
    wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
  2. 添加Yum Repo
    1
    yum localinstall mysql-community-release-el7-5.noarch.rpm
  3. 从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

开启远程访问

项目需要,生产环境中不应执行这一小节

  1. 登录到MySQL:
    1
    mysql -uroot -p<密码>
  2. 切换到mysql表
    1
    use mysql;
  3. 授予远程访问权限
    1
    grant all privileges on *.* to 'root'@'%' identified by '<密码>';
  4. 强制刷新权限表
    1
    flush privileges;

退出后在远程测试一下即可。

修改配置文件

修改/etc/my.cnf文件,在[mysqld]节点下添加如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
[mysqld]
# 开启计划任务
event_scheduler = on
# 空闲连接超时时间 默认值是8小时(60*60*8=28800)
wait_timeout=2880000
interactive_timeout =2880000
# 最大数据包
max_allowed_packet=10M
# 全文检索
ft_min_word_len=1
# 区分大小写设置
lower_case_table_names=1

保存退出后重启mysqld即可。

MySQL存储引擎

查看当前版本提供什么引擎:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)

查看当前的存储引擎:

1
2
3
4
5
6
7
8
9
mysql> show variables like '%storage_engine%';
+----------------------------+--------+
| Variable_name | Value |
+----------------------------+--------+
| default_storage_engine | InnoDB |
| default_tmp_storage_engine | InnoDB |
| storage_engine | InnoDB |
+----------------------------+--------+
3 rows in set (0.00 sec)

如果上面三行都不是InnoDB则(出于性能考虑)建议改成InnoDB,修改配置文件/etc/my.cnf,在[mysqld]下面添加一行:

1
default-storage-engine = INNODB

然后重启mysqld再用上面的命令查一下是否生效。

内存调优

  1. innodb_buffer_pool_size:参数值设置得尽可能大一点,这个参数主要作用是缓存innodb表的索引,数据,插入数据时的缓冲。默认值:128M,专用 mysql 服务器应该设置为操作系统内存的70%-80%最佳。设置方法:/etc/my.cnf文件[mysqld]下面加入 innodb_buffer_pool_size参数即可:
    1
    2
    [mysqld] 
    innodb_buffer_pool_size = 256M
  2. query_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
2
3
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

需要添加的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<Connector port="8080" address="localhost"
maxThreads="250"
maxHttpHeaderSize="8192"
emptySessionPath="true"
protocol="HTTP/1.1"
enableLookups="false"
redirectPort="8443"
acceptCount="100"
connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="UTF-8"
useBodyEncodingForURI="true"
compression="500"
compressableMimeType="text/html,text/xml,text/plain,application/octet-stream"
/>

打开/usr/local/tomcat8/bin/catalina.sh并添加如下参数以调优内存使用:

1
2
3
4
JAVA_HOME=/usr/local/jdk1.8.0_202
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8
-server -Xms1024m -Xmx2048m
-XX:NewSize=512m -XX:MaxNewSize=512m -XX:+DisableExplicitGC"

防火墙例外

1
2
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload

启动

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
2
3
4
5
6
7
8
cat > /etc/yum.repos.d/MongoDB.repo <<EOF
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
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
2
3
4
# Download RPM
wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/6.0/x86_64/RPMS/mongodb-org-server-6.0.1-1.el7.x86_64.rpm
# Install
rpm -ivh mongodb-org-server-6.0.1-1.el7.x86_64.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
2
# mongodb env
export PATH=$PATH:/usr/local/mongodb/bin

使配置文件生效:

1
source /etc/profile

创建数据目录

这一步不是必须的,如果需要更改数据目录,数据目录最好在一块相对容量较大的硬盘上且(出于性能考虑)最好由MongoDB独占。

  1. 创建数据目录
    1
    mkdir -p /data/mongodb/data /data/mongodb/logs
  2. 修改权限
    1
    chown -R mongod:mongod /data/mongodb/data /data/mongodb/logs
  3. 创建文件
    1
    2
    touch /data/mongodb/logs/logs.log
    touch /data/mongodb/mongod.pid

修改配置文件

如果是通过软件源安装的MongoDB,则配置文件位置为:/etc/mongod.conf

如果是通过二进制包安装的则默认没有配置文件,将如下内容填入配置文件即可,默认情况下配置文件不限制位置,但通常创建在/usr/local/mongodb/mongodb.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
systemLog:
destination: file
logAppend: true
# 修改该值,改成之前创建的目录(非必须)
path: /var/log/mongodb/mongod.log
storage:
# 修改该值,改成之前创建的目录(非必须)
dbPath: /var/lib/mongo
journal:
enabled: true
processManagement:
fork: true
# 如果是从二进制文件安装的还需要修改这个,改成上面touch的文件
pidFilePath: /var/run/mongodb/mongod.pid
timeZoneInfo: /usr/share/zoneinfo
net:
port: 27017
# bindIP修改成0.0.0.0,监听所有端口
bindIp: 0.0.0.0
# 验证先关掉(如果配置文件没有就不用管)
#security:
# authorization: enabled

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
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=mongodb
After=network.target

[Service]
User=root
Type=forking
ExecStart=/usr/local/mongodb/bin/mongod --quiet --config /usr/local/mongodb/mongodb.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target

自己安装的话也别忘了先关掉主进程再启动服务:

1
mongod --shutdown --config /usr/local/mongodb/mongodb.conf

创建验证用户

直接使用mongo命令连接数据库,创建测试用户,记得修改pwd

1
2
> use admin
> db.createUser({user:"root",pwd:"adminpwd",roles:[{role:"root",db:"admin"}]})

返回Successfully added user则为创建成功。

回到刚才的配置文件,将authorization: enabled行的验证打开,随后重启mongod服务,然后进数据库(Navicat)测试一下即可。

也可以在命令行进数据库测试:

1
mongo -u root -p adminpwd --authenticationDatabase admin

若使用Navicat进入数据库,连接应选择Standalone,主机和端口号根据实际填写,验证选Password,数据库填admin,用户名和密码根据实际填写。

防火墙放通

mongo默认监听端口为27017

1
2
firewall-cmd --zone=public --add-port=27017/tcp --permanent
firewall-cmd --reload

创建普通用户

使用mongo命令连接数据库:

1
2
3
4
> use admin
switched to db admin
> db.auth('root','1')
1

最后一行有返回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
2
3
# nodejs env
export NODE_HOME=/opt/node11
export PATH=$NODE_HOME/bin:$PATH

应用环境变量:

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/

  1. 首先新增JDK,不勾选自动安装,别名输入jdk1.8.0_333,JAVA_HOME输入/usr/local/jdk1.8.0_333
  2. 新增Maven,不勾选自动安装,别名输入apache-maven-3.8.4,MAVEN_HOME输入/usr/local/apache-maven-3.8.4
  3. 点击保存即可。

打开http://本机IP:8080/jenkins/credentials/store/system/domain/_/

  1. 左侧添加凭据,用户名和密码输入Gitlab所在服务器SSH的用户名和密码,ID输入gitlab-root
  2. 左侧添加凭据,类型选择“Secret text”,Secret填入刚才Sonarqube里面创建的Token,ID输入Sonarqube
  3. 其他参数不要动,保存退出即可。

插件安装与配置

  1. 打开http://本机IP:8080/jenkins/pluginManager/available
  2. 搜索SonarQube Scanner,然后勾选下方插件,最后点“Download now and install after restart”完成安装。
  3. 打开http://本机IP:8080/jenkins/configureTools/,新增SonarQube Scanner,Name随便填写,勾选自动安装,保存即可。
  4. 打开http://本机IP:8080/jenkins/configure,点击Add Sonarqube,Name随便填,ServerURL填刚才安装的Sonarqube地址(例如http://192.168.138.136:9000/sonar),“Server authentication token”选择刚才创建的Token。
  5. 保存即可。

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. 数据库相关,地址、端口、数据库名和数据库账户密码请根据实际情况更改。
    1
    2
    3
    jdbc.url=jdbc:mysql://127.0.0.1/portal?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true
    jdbc.username=root
    jdbc.password=1
  2. 静态资源位置,地址端口请根据实际情况更改。
    1
    resource.host=http://192.168.138.133:18087
  3. 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
  4. Domain,填本机IP即可。
    1
    domain=http://192.168.138.133
  5. Jenkins设置,根据实际情况填写
    1
    2
    3
    4
    jenkins.server.url=http://192.168.138.136:8080/jenkins
    jenkins.server.username=admin
    jenkins.server.passwd=p:PYE8R9yafhD-z
    jenkins.job.credentialsId=gitlab-root
  6. Sonarqube,根据实际情况填写
    1
    2
    3
    sonar.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
2
3
4
5
mongo.db=portal
mongo.host=127.0.0.1
mongo.port=27017
mongo.user=root
mongo.pwd=1

创建资源文件夹

首先在/home目录下新建ITP文件夹,然后将share.tar.gz解压到ITP下,并查看文件树是否为如下结构。

1
2
3
4
5
6
7
8
9
10
11
/home
└── ITP
├── share
│   ├── ftp
│   ├── identity
│   ├── mnt
│   ├── resource
│   │   └── ...
│   └── upload
│   └── ...
└── share.tar.gz

最后删掉share.tar.gz(或移入备份文件夹)即可。

部署(ITP)前端

ITP.zip导入/opt目录:

1
unzip ITP.zip

然后删掉ITP.zip,导入即完成。


不写了,本文烂尾

换新版本了,本文之后会拆成其他小的项目。

 简单说两句



联系站长 | 服务状态 | 友情链接

备案号:辽ICP备19013963号

萌ICP备 20219421 号

中国互联网违法和不良信息举报中心

架构版本号:8.1.5 | 本站已全面支持IPv6

正在载入运行数据(1/2)请稍后...
正在载入运行数据(2/2)请稍后...

Copyright 2024 LingXuanNing, All rights reserved.