部署前置准备
开始安装前,请提前准备以下内容,缺一不可:
- CentOS 7.x 服务器
- 系统内核建议 >= 4.x, 5.x 以获得更好的性能, 查看内核版本
- 查看内核版本
uname -a
- 腾讯问卷私有化部署安装包,联系腾讯问卷团队提供
- 腾讯问卷私有化部署 License,联系腾讯问卷团队提供
系统初始化
SELinux Off
查看当前 SELinux 状态 getenforce,修改 etc/selinux/config 为对应内容为 SELINUX=disabled
系统调参
# Elasticsearch 部署时需要, 其它可跳过
grep -q "vm.max_map_count=300000" /etc/sysctl.conf || echo "vm.max_map_count=300000" >> /etc/sysctl.conf
# 优先使用 ram
grep -q "vm.swappiness=1" /etc/sysctl.conf || echo "vm.swappiness=1" >> /etc/sysctl.conf
# reload
sysctl -p
系统时钟同步(参考)
# 推荐使用 chronyd, 如果没有就使用 ntpd
yum install -y chrony
# 服务自启动
systemctl start chronyd
systemctl enable chronyd
systemctl status chronyd
# 关键防火墙
systemctl stop firewalld
systemctl disable firewalld
# OR 放行 NTP
firewall-cmd --add-service=ntp --permanent
firewall-cmd --reload
# 配置 chrony
# 修改 /etc/chrony.conf
# 如果企业有自己的 NTP 服务器, 优先使用企业的
server 企业-NTP-IP-1 iburst
server 企业-NTP-IP-2 iburst
# OR 腾讯云 NTP
server ntp.tencent.com iburst
server ntp1.tencent.com iburst
# OR 国际 NTP CN
server 0.cn.pool.ntp.org iburst
server 1.cn.pool.ntp.org iburst
# 保存并重启
systemctl restart chronyd
systemctl status chronyd
# 时区
timedatectl
# 设置为 Asia/Shanghai
timedatectl set-timezone "Asia/Shanghai"
# 命令参考
# 手动同步系统时钟
chronyc -a makestep
# 查看时间同步源
chronyc sources -v
升级 Linux Kernel (按需)
# 尽量升级到 5.x LTS 内核获得更好的性能
rpm -ivh kernel-5.xxx.rpm
# 查看新内核是否在 0
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/grub2/grub.cfg
# 启动序号 0 内核
grub2-set-default 0
reboot
评估磁盘性能(参考)
# 测试顺序写入(SSD 和 HDD)
fio --name=seq-write --rw=write --bs=1M --size=2G --numjobs=1 --iodepth=1 --runtime=60 --time_based --directory=/path/to/disk
# 测试顺序读取(SSD 和 HDD)
fio --name=seq-read --rw=read --bs=1M --size=2G --numjobs=1 --iodepth=1 --runtime=60 --time_based --directory=/path/to/disk
# 测试随机写入
fio --name=rand-write --rw=randwrite --bs=4k --size=2G --numjobs=1 --iodepth=32 --runtime=60 --time_based --directory=/path/to/disk
# 测试随机读取
fio --name=rand-read --rw=randread --bs=4k --size=2G --numjobs=1 --iodepth=32 --runtime=60 --time_based --directory=/path/to/disk
# fstab example
UUID=37b936a6-4a81-4ca7-a5a3-5a3519495348 /data xfs defaults,noatime 0 2
其它
# 容器化需要, 如果有就装
yum install -y libseccomp
# 系统调参 TODO - 部分参考 init-system-job.yml
# 检查 TODO
安装 Docker
浏览 Docker 官方文档 https://docs.docker.com/engine/install/ ,根据实际情况安装 Docker 与 docker-compose-plugin
具体支持的 Docker 版本请浏览 支持的平台
# 推荐使用 Tencent Docker CE 源
yum-config-manager --add-repo https://mirrors.tencent.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's#download.docker.com#mirrors.tencent.com/docker-ce#' /etc/yum.repos.d/docker-ce.repo
# 如果部署在 KylinOS V10 这种系统环境
echo "8" > /etc/yum/vars/centos_version
sed -i 's/$releasever/$centos_version/g' /etc/yum.repos.d/docker-ce.repo
# 安装 Docker CE
yum makecache
yum install -y docker-ce
# 开机自动启动
systemctl enable docker
# 启动
systemctl start docker
# 查看状态
systemctl status docker
# 按需配置 /etc/docker/daemon.json
{
"data-root": "/data/docker-root/",
"log-opts": {
"max-size": "10m"
}
}
确认 Docker 安装成功
执行 docker version,正常情况下会有如下输出:
Client: Docker Engine - Community
Version: 23.0.1
API version: 1.42
Go version: go1.19.5
Git commit: a5ee5b1
Built: Thu Feb 9 19:49:07 2023
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 23.0.4
API version: 1.42 (minimum version 1.12)
Go version: go1.19.8
Git commit: cbce331
Built: Fri Apr 14 10:32:03 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.16
GitCommit: 31aa4358a36870b21a992d3ad2bef29e1d693bec
runc:
Version: 1.1.4
GitCommit: v1.1.4-0-g5fd4c4d
docker-init:
Version: 0.19.0
GitCommit: de40ad0
确认 docker-compose-plugin 安装成功
执行 docker compose version ,正常情况下会有如下输出:
Docker Compose version v2.16.0
caution
注意: 不是 docker-compose version,而是 docker compose version
获取安装包
腾讯问卷安装包,联系腾讯问卷团队提供
解压安装包
将安装包放置 /data/ 目录,执行以下命令进行解压(注意文件名需要修改为实际文件名)
/data 目录不是必须的,可以根据实际情况修改,但需要注意后续的操作需要切换到安装包根目录
tar xf tencent-survey-v24.03-amd64.tar.gz
切换工作目录
如无额外说明,所有操作均需要切换工作目录为安装包根目录,实际目录根据实际情况修改
cd /data/tencent-survey-v24.03-amd64
# 正常情况下会有如下输出:
# -rwxr-xr-x 1 root root 730 Sep 11 17:06 app.sh
# drwxr-xr-x 2 root root 4096 Sep 11 17:06 check
# drwxr-xr-x 2 root root 4096 Sep 11 17:06 crontab
# -rw-r--r-- 1 root root 851 Sep 11 17:06 docker-compose-certsgen.yaml
# -rw-r--r-- 1 root root 732 Sep 20 17:22 docker-compose-dev.yaml
# -rw-r--r-- 1 root root 5317 Sep 21 10:52 docker-compose-paas.yaml
# -rw-r--r-- 1 root root 4347 Sep 21 17:25 docker-compose.yaml
# -rw-r--r-- 1 root root 5263272448 Sep 11 17:07 docker-images.tar
# drwxr-xr-x 10 root root 4096 Sep 20 17:23 etc
# -rwxr-xr-x 1 root root 1806 Sep 11 17:52 install.sh
# -rw-r--r-- 1 root root 0 Sep 11 17:06 LICENSE.txt
# -rwxr-xr-x 1 root root 765 Sep 11 17:06 paas.sh
# -rw-r--r-- 1 root root 169 Sep 11 17:06 README.md
# drwxrwxrwx 5 root root 4096 Sep 12 10:26 var
# -rw-r--r-- 1 root root 13 Sep 11 17:06 VERSION
导入 Docker 镜像
安装包解压后,内含用于导入的 Docker Image,执行以下命令导入镜像:
docker load < docker-images.tar
导入完成后,使用以下命令检测是否导入成功
docker images
# REPOSITORY TAG IMAGE ID CREATED SIZE
# cdchub.tencentcloudcr.com/ur-selfhosted/frontend v24.03-amd64 ef0c68c41eaf 4 days ago 232MB
# cdchub.tencentcloudcr.com/ur-selfhosted/server v24.03-amd64-lic 6c87730c7d3a 4 days ago 602MB
# cdchub.tencentcloudcr.com/ur-selfhosted/server-legacy v24.03-amd64-lic 3127966b3246 4 days ago 1.2GB
# cdchub.tencentcloudcr.com/public/elasticsearch-kona 6.8.23-ik-amd64 2f8ce500755b 5 months ago 1.08GB
# cdchub.tencentcloudcr.com/public/mysql 8.0-oracle-amd64 2a04bf34fdf0 10 months ago 535MB
# cdchub.tencentcloudcr.com/public/redis 6-amd64 4608773ab2db 11 months ago 113MB
导入成功后即可进入下一步骤