华为云鲲鹏服务器部署文档-修正版-CentOS+java微服务开发

华为云鲲鹏服务器部署文档

河南中电高科计算机技术有限公司

http://www.ceht.com.cn

2020.5.12

适用于java微服务开发运行基础软件环境部署,实测通过。

CentOS 7.6 64bit ISO

适用于鲲鹏服务器arm架构的CentOS 7.6.1810完整镜像下载地址:
http://mirrors.karan.org/altarch/7/isos/aarch64/CentOS-7-aarch64-Everything-1810.iso

华为云鲲鹏镜像站

华为云鲲鹏镜像站地址:

https://mirrors.huaweicloud.com/kunpeng

华为鲲鹏ARM镜像站地址:

http://arm.cloud-onlinelab.cn/

鲲鹏镜像站yum源:

https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/

部署中应首先配置鲲鹏镜像站yum源和epel源,然后进行软件安装,简化操作。实际测试中发现,较新版本的软件对ARM架构有较好的支持,因此建议,在技术条件允许的情况下,尽可能选用较新版本的软件安装。

利用华为云鲲鹏镜像站进行快速部署

配置鲲鹏镜像站yum源

# root登录系统
yum update -y # 配置yum源之前更新命令
yum upgrade -y # 配置yum源之前升级命令

# 进入“/etc/yum.repos.d”目录
cd /etc/yum.repos.d

# 创建打开rpm.repo文件
vim rpm.repo
# 在rpm.repo文件中添加如下内容:
[rpm]
name=rpm
baseurl=https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/
gpgcheck=0
enabled=1
# baseurl指定的路径为镜像站的地址

Esc
:wq
# 保存并退出rpm.repo文件

# 这一步骤是mysql安装提示:
echo -e "[kunpeng]\nname=CentOS-kunpeng - Base - mirrors.huaweicloud.com\nbaseurl=https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/\ngpgcheck=0\nenabled=1" > /etc/yum.repos.d/CentOS-Base-kunpeng.repo

# 生效网络源
yum clean all
yum makecache
yum list

# 验证,以junit为例,在镜像站的地址为:
# https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/others/junit-4.12-1.el7.aarch64.rpm

# 配置好yum源后,可以直接执行yum安装
yum install junit
# 操作成功
# 配置鲲鹏镜像站,可以简化软件安装步骤,加快部署速度。

配置华为云ARM版epel源(可选)

华为云EPEL的仓库地址为:https://mirrors.huaweicloud.com/epel/

1、备份配置文件:

cp -a /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup

2、修改epel.repo文件,取消baseurl开头的行的注释,并增加mirrorlist开头的行的注释。将文件中的http://download.fedoraproject.org/pub替换成https://mirrors.huaweicloud.com,可以参考如下命令:

sed -i "s/#baseurl/baseurl/g" /etc/yum.repos.d/epel.repo
sed -i "s/metalink/#metalink/g" /etc/yum.repos.d/epel.repo
sed -i "s@http://download.fedoraproject.org/pub@https://mirrors.huaweicloud.com@g" /etc/yum.repos.d/epel.repo

3、执行yum update --skip-broken更新。

EPEL文档地址:https://fedoraproject.org/wiki/EPEL/zh-cn

CentOS 7.6 64bit基础操作

# root登录
# 实际测试中发现,较新版本的软件对ARM架构有较好的支持,因此建议尽可能选用较新版本的软件安装。
yum update -y # 配置yum源之前更新命令
# 配置鲲鹏镜像站yum源之后,应使用下面命令更新系统:
yum update -y --skip-broken
# 更新系统成功

yum upgrade -y # 配置yum源之前升级命令
# 配置鲲鹏镜像站yum源之后,应使用下面命令升级系统:
yum upgrade -y --skip-broken

# 安装基本软件
yum install -y zip gzip bzip2 lbzip2
# 安装解压缩命令

yum install -y lrzsz
# 安装rz、sz上传下载命令

# 设置vim
vim /etc/vimrc
# 增加:
set ts=4
set expandtab
set nu
# 设置tab键为4个空格,显示行号

# 安装命令补全功能,tab键命令提示
yum install -y epel-release bash-completion

其他操作(可选)

# 中文设置
# 查看当前语种
echo $LANG
en_US.UTF-8 # 系统默认en_US.UTF-8
# 设置中文语言
LANG=zh_CN.UTF-8
vim /etc/locale.conf
# 永久设置中文语言,内容为:
LANG=zh_CN.UTF-8

# 查看是否有中文字体
fc-list
# 查看中文字体:
fc-list :lang=zh
# 安装基本字体
yum install -y fontconfig ttmkfdir mkfontscale
yum install cjkuni-ukai-fonts -y # 楷体
yum install google-noto-sans-simplified-chinese-fonts -y # google简体
ls /usr/share/fonts # 字体文件位置

# 更多字体可以上传字体文件并设置
# 打开Win10字体目录C:\Windows\Fonts\微软雅黑,复制字体文件出来
# rz上传到/root,然后复制到/usr/share/fonts/
cp ms*.ttc /usr/share/fonts/
# 建立字体索引信息,更新字体缓存
cd /usr/share/fonts/
mkfontscale
mkfontdir
fc-cache
# 查看中文字体是否安装成功:
fc-list :lang=zh

# zip与unzip操作
zip hellogo.zip hello.go # 把hello.go文件打包成hellogo.zip
zip hello.zip hello.go hello # 把hello.go和hello两个文件打包成hello.zip

# -r表示递归查找文件,下面命令把当前目录所有文件打包压缩成myfile.zip
zip -r myfile.zip ./*
zip -r test2.zip test2/*

zip -m myfile.zip ./rpm_info.txt
# 向压缩文件中myfile.zip中添加rpm_info.txt文件
zip -d myfile.zip smart.txt
# 删除压缩文件中smart.txt文件

unzip myfile.zip # 解压缩到当前目录
# 解压缩到指定目录
unzip -o -d /home/sunny myfile.zip
# 把myfile.zip文件解压到 /home/sunny/,如果目录不存在则自动创建
# -o:不提示的情况下覆盖文件;
# -d:-d /home/sunny 指明将文件解压缩到/home/sunny目录下。

# 把当前目录下所有文件打包
tar -cvzf code.tar.gz ./*
tar -cvzf jpg.tar.gz *.jpg
# 将目录里所有jpg文件打包成jpg.tar后,将其用gzip压缩,生成一个gzip压缩包,命名为jpg.tar.gz
tar -xzvf file.tar.gz # 解压tar.gz

# 常用tar解压命令
# tar –xvf file.tar //解压 tar包
# tar -xzvf file.tar.gz //解压tar.gz
# tar -xjvf file.tar.bz2 //解压 tar.bz2
# tar –xZvf file.tar.Z //解压tar.Z

添加管理员账户

# 添加管理员账户,并设置密码,设置sudo权限
adduser ceht
passwd ceht

chmod -v u+w /etc/sudoers
vim /etc/sudoers
# 在 root 下面增加内容
root    ALL=(ALL)   ALL
ceht    ALL=(ALL)   ALL

chmod -v u-w /etc/sudoers
# 保护sudoers文件

配置python环境(可选)

# 安装依赖项
yum install -y openssl-devel curl nss libcurl
# 安装pip需要先安装epel-release包,前面步骤已经安装
# yum install -y epel-release
# 安装python3.6.8
yum install -y python36
# 安装openssl-devel
yum install -y libffi-devel python-devel openssl-devel

# 安装pip
yum install -y python-pip
# 升级pip
pip install --upgrade pip

pip install requests
# 安装wheel
pip install wheel
# 安装pyinstaller
pip install pyinstaller
# 防止ssl出错
pip install --upgrade backports.ssl_match_hostname
# 防止six相关错误
pip install six --user -U

替换OpenJDK为原版JDK

该步骤是否必要,请根据具体项目实际情况决定

# 执行命令 rpm -qa | grep java
# 查找到相关文件
[root@cehc-kp ~]# rpm -qa | grep java
java-1.8.0-openjdk-headless-1.8.0.252.b09-2.el7_8.aarch64
java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.aarch64
python-javapackages-3.4.1-11.el7.noarch
java-1.8.0-openjdk-devel-1.8.0.252.b09-2.el7_8.aarch64
javapackages-tools-3.4.1-11.el7.noarch
tzdata-java-2020a-1.el7.noarch
# 删除全部,noarch文件可以不用删除

# 逐个删除
rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.252.b09-2.el7_8.aarch64
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.aarch64
rpm -e --nodeps java-1.8.0-openjdk-devel-1.8.0.252.b09-2.el7_8.aarch64

# 再次检查
java -version
bash: java: command not found
# 确认删除完毕

mkdir /home/soft
# 去Oracle官网下载jdk-8u251-linux-arm64-vfp-hflt.tar.gz
cd /home/soft
rz
# 上传jdk-8u251-linux-arm64-vfp-hflt.tar.gz

cd /usr/local
tar -zxvf /home/soft/jdk-8u251-linux-arm64-vfp-hflt.tar.gz
# tar命令自动创建/usr/local/jdk1.8.0_251目录

vim /etc/profile
# 修改配置文件
export JAVA_HOME=/usr/local/jdk1.8.0_251
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

source /etc/profile
# 执行source /etc/profile命令让配置生效

java -version
java version "1.8.0_251"
Java(TM) SE Runtime Environment (build 1.8.0_251-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode)
# 显示正常,操作成功

安装maven

使用yum快速安装

yum install -y apache-maven-3.6.1-1.el7.aarch64
mvn -v
# 版本是3.6.1

分步骤安装

cd /home/soft
# 从华为云鲲鹏镜像站下载
wget https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/bigdata/apache-maven-3.6.1-1.el7.aarch64.rpm

yum install -y apache-maven-3.6.1-1.el7.aarch64.rpm
# 或
rpm -ivh apache-maven-3.6.1-1.el7.aarch64.rpm
# 验证安装
mvn -v

# 编辑配置文件
vim /etc/profile
# 在文末增加如下内容
M2_HOME=/usr/local/maven
MAVEN_HOME=/usr/local/maven
PATH=$MAVEN_HOME/bin:$PATH
export M2_HOME MAVEN_HOME PATH
# 使环境变量配置生效
source /etc/profile

echo $MAVEN_HOME
mvn -v

# 设置settings.xml
vim /usr/local/maven/conf/settings.xml

<localRepository>/data/mavenRepositorylocalRepository>



<mirror>
    <id>alimavenid>
    <mirrorOf>publicmirrorOf>
    <name>aliyun mavenname>
    <url>http://maven.aliyun.com/nexus/content/groups/public/url>
mirror>
<mirror>
    <id>nexus-aliyunid>
    <mirrorOf>publicmirrorOf>
    <name>aliyun mavenname>
    <url>https://maven.aliyun.com/repository/public/url>
    
mirror>
<mirror>
    <id>custom-mirrorid>
    <mirrorOf>centralmirrorOf>
    
    <url>https://maven.aliyun.com/repository/centralurl>
mirror>

<mirror>
    <id>repo2id>
    <mirrorOf>centralmirrorOf>
    <name>repo2 mavenname>
    <url>http://repo2.maven.org/maven2/url>
mirror>

<mirror>
    <id>jboss-public-repository-groupid>
    <mirrorOf>publicmirrorOf>
    <name>JBoss Public Repository Groupname>
    <url>http://repository.jboss.org/nexus/content/groups/public/url>
mirror>


<profile>
    <id>aliyunRepoid>
    <repositories>
        <repository>
            <id>jcenterid>
            <name>阿里云代理的jcenter库name>
            <url>https://maven.aliyun.com/repository/jcenterurl>
            <layout>defaultlayout>
            <snapshotPolicy>alwayssnapshotPolicy>
        repository>

        <repository>
            <id>springid>
            <name>阿里云代理的spring库name>
            <url>https://maven.aliyun.com/repository/springurl>
            <layout>defaultlayout>
            <snapshotPolicy>alwayssnapshotPolicy>
        repository>

        <repository>
            <id>spring-pluginid>
            <name>阿里云代理的spring-plugin库name>
            <url>https://maven.aliyun.com/repository/spring-pluginurl>
            <layout>defaultlayout>
            <snapshotPolicy>alwayssnapshotPolicy>
        repository>
    repositories>
profile>
#保存退出

mkdir -p /data/mavenRepository
# 设置maven本地仓库目录权限,供所有用户使用
chmod -R 666 /data/mavenRepository
# 参数-R表示递归修改子目录权限,666权限表示所有用户可读可写

安装clang(可选)

# 安装clang,配置鲲鹏yum源之后,安装速度很快
yum install -y clang

安装cmake

使用yum快速安装

yum install jsoncpp -y
yum install -y cmake-3.9.2-1.el7.aarch64
cmake --version

分步骤安装

# 依赖项
yum install jsoncpp -y

cd /home/soft
wget https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/others/cmake-3.9.2-1.el7.aarch64.rpm

yum install -y cmake-3.9.2-1.el7.aarch64.rpm
# 或
rpm -ivh cmake-3.9.2-1.el7.aarch64.rpm
# 安装后的cmake在:/usr/local/bin/cmake

vim /etc/profile
# 修改配置文件
export LOCAL_BIN=/usr/local/bin
export PATH=$LOCAL_BIN:$PATH

# 保存退出,使配置生效
source /etc/profile
# 验证cmake安装:
cmake --version
# 操作成功

编译安装gcc

vue.js的运行需求gcc应升级到4.9.0以上

# 较新版本的gcc需编译安装

# 安装依赖包
yum install -y bison* ncurses*

# 升级gcc到9.3.0
cd /home/soft
# 从清华大学开源镜像站下载源码
wget https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-9.3.0/gcc-9.3.0.tar.gz

cd /usr/local/src
# 解压缩
tar -xvf /home/soft/gcc-9.3.0.tar.gz
cd gcc-9.3.0
# 检查gcc的依赖包是否已下载和安装
./contrib/download_prerequisites

# 可选操作,在gcc-9.3.0目录
# 实测发现与上一步操作效果相同,不需要重复执行
# wget https://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2
# wget https://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2
# wget https://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz
# wget https://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2

# 编译gcc
cd /usr/local/src/gcc-9.3.0
mkdir gcc-build-9.3.0
cd gcc-build-9.3.0

../configure --enable-checking=release --enable-language=c,c++ --disable-multilib --prefix=/usr

# 可通过下述命令查询CPU核数:
cat /proc/cpuinfo| grep "processor"| wc -l
# “-j”参数可利用多核CPU加快编译速度,如果使用的是4核CPU,此处为“-j 4”。
make -j 4
# 这一步骤操作比较耗时,耐心等待

# 执行安装
make install

# 确定“libstdc++.so”是在“/usr/lib64”目录下
cd /usr/lib64
ll |grep libstdc++.so
# 确定软链接存在
ll |grep libstdc++.so.6.0.28

# 更新软链接
cd /usr/lib64
# 删除或备份原来的软链接
mv libstdc++.so.6 libstdc++.so.6.old
# 将默认库的软链接指向最新动态库:
ln -s libstdc++.so.6.0.28 libstdc++.so.6

#执行命令查看最新GLIBCXX_3.4.28
strings /lib64/libstdc++.so.6 | grep GLIBC

# 查看gcc版本
gcc --version
g++ --version

安装node.js

使用yum快速安装

yum install -y node
# 鲲鹏镜像站node版本:node-v10.16.0-1.el7.aarch64
node -v
npm -v
npm install -g yarn
# 其他细节内容参考分步骤安装

分步骤安装

cd /home/soft
# 下载node.js的arm安装包
wget https://nodejs.org/dist/v12.16.3/node-v12.16.3-linux-arm64.tar.xz

# 华为云鲲鹏镜像站提供node-v10.16.0安装包,可简便安装
wget https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/others/node-v10.16.0-1.el7.aarch64.rpm

# 执行安装命令
tar -xvf node-v12.16.3-linux-arm64.tar.xz
mkdir /opt/node
mv node-v12.16.3-linux-arm64/* /opt/node
rm -rf node-v12.16.3-linux-arm64

# 配置node 环境变量
vim /etc/profile
# 添加环境变量:
export NODE_HOME=/opt/node
export PATH=$PATH:$NODE_HOME/bin
export NODE_PATH=$PATH:$NODE_HOME/lib/node_modules

# 保存退出,使配置生效
source /etc/profile
# 验证node安装:
node -v
npm -v
# 显示正常,安装成功

# npm镜像配置
npm config set registry https://registry.npm.taobao.org
npm config get registry
# 显示正常
# 安装yarn
npm install -g yarn # 该命令实测需要root操作
yarn --version
# 显示正常

# 安装淘宝node镜像
npm install -g cnpm --registry=https://registry.npm.taobao.org
# 执行正常
# 安装
cnpm install
# 正常

# 安装vue-cli
npm install -g @vue/cli
# 安装
npm install

安装zookeeper

使用yum快速安装

yum install -y zookeeper
service zookeeper start
# 配置见分步骤安装

分步骤安装

cd /home/soft
# 从华为鲲鹏镜像站下载
wget https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/bigdata/zookeeper-3.4.14-1.el7.aarch64_2.rpm

# 安装
yum install -y zookeeper-3.4.14-1.el7.aarch64_2.rpm
# 或
rpm -ivh zookeeper-3.4.14-1.el7.aarch64_2.rpm

# 启动ZooKeeper,安装成功后zookeeper已经安装为自启动的服务
service zookeeper start
# 成功启动,显示安装目录:/opt/zookeeper/zookeeper-3.4.14/

# 常用服务控制命令:
# 启动 zookeeper 服务
systemctl start zookeeper.service
# 设置开机自启动
systemctl enable zookeeper.service
# 停止开机自启动
systemctl disable zookeeper.service
# 查看服务当前状态
systemctl status zookeeper.service
# 重新启动服务
systemctl restart zookeeper.service
# 查看所有已启动的服务
systemctl list-units --type=service

# 关闭ZooKeeper命令:
service zookeeper stop

vim /etc/profile
# 追加内容
export ZOOKEEPER_HOME=/opt/zookeeper/zookeeper-3.4.14/
export PATH=$ZOOKEEPER_HOME/bin:$PATH

# 使生效
source /etc/profile

# 启动zookeeper服务后,测试客户端连接
zkCli.sh
# 默认连接本机zookeeper,启动成功,回车,输入命令:quit,退出

zkServer.sh status
# 显示正常
zkCli.sh -server:127.0.0.1:2181
# 连接正常,操作成功

安装docker

使用yum快速安装

yum install -y yum-utils device-mapper-persistent-data lvm2
yum install -y docker
# 启动docher,开机自动启动
systemctl enable docker
systemctl start docker
docker ps
docker version

分步骤安装

# 安装docker依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
# 命令执行正常

# 配置软件仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 命令执行正常

# 分步骤安装docker-ce
yum install -y containerd.io
# docker依赖项containerd.io安装成功
yum install -y docker-ce docker-ce-cli
# 安装成功

# 启动docher,开机自动启动
systemctl enable docker
systemctl start docker
docker ps
docker version
# 执行正常,显示正常

# docker镜像部署与使用,应充分参考华为云鲲鹏镜像:https://mirrors.huaweicloud.com/

# 暂不安装redis,采用正常安装方式
# docker run --name redis --publish 6379:6379 --restart always -d redis:latest
# 执行正常
# 任务成功

安装docker-compose

使用yum快速安装

yum install -y docker-compose
docker-compose version
# 版本是1.18.0

分步骤编译安装

# 源码编译方式安装docker-compose
# 下载docker-compose源代码
cd /usr/local/src
git clone https://github.com/ubiquiti/docker-compose-aarch64.git

cd /usr/local/src/docker-compose-aarch64

# 配置Dockerfile
vim Dockerfile
# 注释掉RUN [ "cross-build-start" ],即在之前加‘#’
# Enable cross-build for aarch64
COPY ./vendor/qemu-bin /usr/bin/
#RUN [ "cross-build-start" ] #就是这一行

# 之后开始编译构建
cd /usr/local/src/docker-compose-aarch64
docker build . -t docker-compose-aarch64-builder
# 编译安装,第9步骤耗时很长,类似假死,耐心等待,如果出错,反复尝试
# 如果发生故障,可能是网络原因,多次尝试
# 编译过程需要从github拉取资源,所以很慢,也容易出错
# 第9、11、12步骤,每步骤都可能比较耗时,在上午网络畅通时候,也会较快完成
# 主要由国内外间的网速决定

# 编译成功后,运行docker-compose容器
docker run docker-compose-aarch64-builder

# 查找生成的“docker-compose”可执行程序并执行
find / -name "docker-compose-Linux-aarch64"
/var/lib/docker/overlay2/7ae60399cbc9232fa94755eb3ab2efffe582c2954dcc5fb1fc5331abda6ed4cf/diff/build/dockercompose/docker-compose-Linux-aarch64
/var/lib/docker/volumes/fd5278ca2afac60a02d776af8e55df75a98d2ca2616b8d5b922b229a4ceb56dc/_data/docker-compose-Linux-aarch64

# 选择一个可执行文件路径
cd /var/lib/docker/overlay2/7ae60399cbc9232fa94755eb3ab2efffe582c2954dcc5fb1fc5331abda6ed4cf/diff/build/dockercompose
# 执行命令,验证安装
./docker-compose-Linux-aarch64 --version
docker-compose version 1.22.0, build e20d808e
# 操作成功,任务成功

# 以下操作是否需要,根据需要决定
# 建立软链接
ln -s /var/lib/docker/volumes/02f34942336c4cab08e631af44524a51e7d7e87008cd3367fb3f3604a35f8ac7/_data/docker-compose-Linux-aarch64 /usr/bin/docker-compose

docker-compose --version
docker-compose version 1.22.0, build e20d808e
# 显示正常,操作成功

安装redis

使用yum快速安装

yum install -y redis
# 后续配置见分步骤安装

分步骤安装

cd /home/soft
# 从华为鲲鹏镜像站下载安装包
wget https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/bigdata/redis-5.0.5-1.el7.aarch64.rpm

# 安装
yum install -y redis-5.0.5-1.el7.aarch64.rpm
# 或
rpm -ivh redis-5.0.5-1.el7.aarch64.rpm

# 验证安装
redis-server -v
# 命令在/usr/sbin/

redis-cli -v
# 命令在/usr/bin

# 配置redis成为系统服务
find / -name "redis.conf"
# 找到redis.conf路径:/etc/redis.conf
vim /etc/redis.conf
# 将如下配置项注释掉
#bind 127.0.0.1 # 这一行注释掉
# 取消保护模式,此处可选。取消了便不要求使用密码验证了。
protected-mode no
#如下项修改为yes,默认是no
daemonize yes
# 配置日志文件路径
logfile "/usr/local/redis/logs/redis.log" # 根据具体情况决定
# 保存退出

# 创建日志文件路径
mkdir -p /usr/local/redis/logs

find / -name "redis.pid"
# 没找到
# 复制/etc/redis.conf配置文件中的pidfile路径:
/var/run/redis_6379.pid

find / -name "redis-server"
# 找到redis-server所在位置:
/usr/sbin/redis-server

# 创建redis.service
vim /usr/lib/systemd/system/redis.service
# 写入代码:
[Unit]
Description=Redis
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/sbin/redis-server /etc/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID 
ExecStop=/bin/kill -s QUIT $MAINPID 
PrivateTmp=true

[Install]
WantedBy=multi-user.target
Esc
:wq
# 保存退出

# 重载系统服务
systemctl daemon-reload
# 启动redis服务
systemctl start redis
# 设置开机自启动
systemctl enable redis

# 客户端连接测试
redis-cli
# 连接后,执行
set kunpeng OK
get kunpeng
exit
# 运行正常,操作成功

安装gradle(可选)

使用yum快速安装

yum install -y gradle

分步骤安装

cd /home/soft
# 下载
wget https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/others/gradle-5.4.1-1.el7.aarch64.rpm

# 安装
rpm -ivh gradle-5.4.1-1.el7.aarch64.rpm
# 或
yum install -y gradle-5.4.1-1.el7.aarch64.rpm

# 验证安装
gradle -version
# 操作成功

安装mysql 8.0.17

参阅:https://support.huaweicloud.com/instg-kunpengdbs/kunpengmysql8017_03_0001.html

采用华为镜像站RPM方式安装部署

过程中如果发生故障,一定要查看日志,日志中会记录故障的位置和原因,由此可以推测解决问题的方向和方法。这一点非常重要,适用于大多数软件部署。

安装准备

# 停止防火墙
systemctl stop firewalld.service
# 关闭防火墙
systemctl disable firewalld.service

# 修改SELINUX为disabled
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

# 创建mysql组和用户
groupadd mysql
useradd -g mysql mysql
# 设置MySQL用户密码
passwd mysql

# 挂载数据盘,根据实际情况决定

# 在数据盘创建分区(以/dev/sdb为例,根据实际情况创建)
fdisk /dev/sdb
# 创建文件系统(CentOS 7默认是xfs文件系统,性能优于其他ext4等fs)
mkfs.xfs /dev/sdb1

# 挂载数据盘,并规划分区
mkdir /data
mount /dev/sdb1 /data
# 修改系统配置
vim /etc/fstab
# 追加一行
/dev/sdb1    /data    xfs    defaults    1    2
# 数据盘操作根据具体情况决定

# 创建数据目录并授权
mkdir -p /data/mysql
cd /data/mysql
mkdir data tmp run log
chown -R mysql:mysql /data/mysql

# 安装之前先打补丁

# 从链接 https://bbs.huaweicloud.com/forum/thread-43282-1-1.html
# 下载压缩包 rpm-bug.zip 并上传到服务器/home目录下
cd /home/soft
rz
# 上传rpm-bug.zip
# 解压缩
unzip rpm-bug.zip

# 复制补丁文件到系统,覆盖原文件
cd rpm-bug
cp libatomic.so.1 /usr/lib64/
cp libstdc++.so.6.0.24 /lib64/
rm /lib64/libstdc++.so.6
ln -s /lib64/libstdc++.so.6.0.24 /lib64/libstdc++.so.6
cp libaio.so.1.0.1 /usr/lib64/libaio.so.1

安装mysql

# 安装依赖包
yum install -y libaio
yum install -y deltarpm-3.6-3.el7.aarch64
yum install -y numactl

# 安装mysql8.0.17
yum install -y mysql-8.0.17-1.el7.aarch64
# 软件安装目录默认为“/usr/local/mysql”

# 查看安装后的rpm包
rpm -qa | grep mysql

# 修改配置文件
# 编辑my.cnf文件
# 其中文件路径(包括软件安装路径basedir、数据路径datadir等)根据实际情况修改
# 删除老文件,根据实际情况决定
rm -f /etc/my.cnf

# 创建或编辑配置文件:/etc/my.cnf
vim /etc/my.cnf
# 复制粘贴以下内容:

配置文件 /etc/my.cnf

[mysqld_safe]
log-error=/data/mysql/log/mysql.log
pid-file=/data/mysql/run/mysqld.pid
socket=/data/mysql/run/mysql.sock

[mysqldump]
quick
socket=/data/mysql/run/mysql.sock

[mysql]
no-auto-rehash
default-character-set=utf8mb4
socket=/data/mysql/run/mysql.sock

[client]
default-character-set=utf8mb4
socket=/data/mysql/run/mysql.sock
port=3306

[mysqld]
basedir=/usr/local/mysql
socket=/data/mysql/run/mysql.sock
pid-file=/data/mysql/run/mysqld.pid
tmpdir=/data/mysql/tmp
datadir=/data/mysql/data
default_authentication_plugin=mysql_native_password
port=3306
user=mysql

character-set-server=utf8mb4
character-set-client-handshake=FALSE
collation-server=utf8mb4_general_ci
init_connect='SET NAMES utf8mb4'
default-storage-engine=INNODB
# 设置数据库大小写不敏感,根据实际项目需求设置,默认值是0
lower_case_table_names=1

# 最大连接数,默认设置是100
max_connections=800
# SQL数据包发送的大小,如果有BLOB对象建议修改成1G
max_allowed_packet=128M

# MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
# MySQL默认的 wait_timeout 值为8个小时
# interactive_timeout 参数需要同时配置才能生效
interactive_timeout=28800
wait_timeout=28800

[mysqladmin]
socket=/data/mysql/run/mysql.sock
参数说明

lower_case_table_names=1 表示设置数据库大小写不敏感,建议根据实际项目要求设置
mysql 8.0版,大小写敏感的设置很关键,如果数据库安装与初始化时候没有设置,后面运行中更改会造成mysql无法正常登录,发生mysql.sock丢失及PID丢失等问题,造成mysql服务无法启动。更改大小写设置需要卸载mysql并重装才行。

**建议:**操作系统不同导致大小写敏感不一致。我们在开发时,应该按大小写敏感的原则去开发,这样可以使开发的程序兼容不同的操作系统。因此,建议在开发测试环境下把lower_case_table_names的值设为0,便于在开发中就严格控制代码大小写敏感,提高代码的兼容和严谨。部署时候,则遵守项目的技术要求去设置。

参阅:https://blog.csdn.net/fdipzone/article/details/73692929

更多 my.cnf 配置,请查询 mysql 相关资料。

数据库初始化

# 保存退出
# 修改/etc/my.cnf文件的组和用户为mysql:mysql
chown mysql:mysql /etc/my.cnf

# 配置环境变量
vim /etc/profile
# 追加
export PATH=$PATH:/usr/local/mysql/bin
# 使环境变量配置生效
source /etc/profile

# 设置目录权限:
chown -R mysql:mysql /data/mysql
chmod -R 777 /data/mysql/run
# 权限777表示所有用户可读可写可运行

# 初始化数据库,设置数据库大小写不敏感(根据项目要求设置),注意复制保存初始密码
mysqld --defaults-file=/etc/my.cnf --initialize --lower-case-table-names=1
# 如果不需要设置大小写,删除参数 --lower-case-table-names=1 即可,但一定要提前确定好,因为此设置只有安装和初始化时候才能设置,后面运行中更改会出故障,需要卸载重装mysql。

# 此处是华为云鲲鹏镜像站RPM安装的初始化命令,官方原版RPM初始化命令是:
# mysqld --defaults-file=/etc/my.cnf &

查看MySQL官方文档,有记录:
lower_case_table_names can only be configured when initializing the server. Changing the lower_case_table_names setting after the server is initialized is prohibited.
只有在安装和初始化的时候设置 lower_case_table_names=1 才有效

该步骤中倒数第2行中有初始密码,请注意保存,供首次登录数据库使用,类似这样:
[Server] A temporary password is generated for root@localhost: bqHa3koh37.f

数据库重新初始化

有些故障无法排除,如果没有重要数据,可以选择重新初始化数据库。如果需要重新初始化数据库,需要将 mysql 数据目录下的数据全部清空:

rm -rf /data/mysql/data/*
rm -rf /data/mysql/log/*

# 重新设置权限:
chown -R mysql:mysql /data/mysql
chmod -R 777 /data/mysql/run

# 然后可以重新初始化数据库:
mysqld --defaults-file=/etc/my.cnf --initialize --lower-case-table-names=1

启动mysql

# 修改文件权限
chmod 777 /usr/local/mysql/support-files/mysql.server

# 复制并覆盖
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chkconfig mysql on

# 用mysql用户启动数据库
# 切换用户到mysql
su mysql
# 如果第一次启动数据库服务,以root用户启动数据库,则启动时会提示缺少mysql.log文件而导致失败。
# 使用mysql用户启动之后,会在/data/mysql/log目录下生成mysql.log文件,再次使用root用户启动则不会报错。
service mysql start # 使用用户mysql身份执行

# 发生故障,看日志:
cat /data/mysql/log/mysql.log

# 如果第一次启动失败,并提示:
# The server quit without updating PID file (/data/mysql/data/cehckp.pid).[FAILED]
# 查看日志:cat /data/mysql/log/mysql.log,如果发现是mysqld提前运行,占用了3306端口
# 则,退出mysql用户,返回root
# exit
# 杀死 mysqld 进程
# pkill mysqld
# 重新启动mysql
# service mysql start
# 启动成功

# 该环境下,安装后的mysql命令路径为:/usr/local/mysql/bin/mysql
# 该环境下,安装后的mysqld命令路径为:/usr/local/mysql/bin/mysqld
# 初次登录数据库:
mysql -u root -p -S /data/mysql/run/mysql.sock
# 输入安装时候生成的随机密码,登录数据库

发生故障看日志

mysql启动、登录、使用过程中发生故障的时候,一定记得查看日志,由日志记录分析故障原因和解决方法。

这很重要

cat /data/mysql/log/mysql.log

修改配置 mysql 数据库用户密码

-- 登录数据库以后,首先修改root密码,修改密码之前无法进行其他操作
mysql>alter user 'root'@'localhost' identified by 'newpassword';
-- 创建全域root用户(允许root从其他服务器访问)
mysql>create user 'root'@'%' identified by 'newpassword';
-- 进行授权
mysql>grant all privileges on *.* to 'root'@'%';
mysql>flush privileges;

-- 可选操作:创建新用户,并支持从其他服务器登录
mysql>create user 'dbauser'@'%' identified with mysql_native_password by 'password';
-- 授权
mysql>grant all privileges on *.* to 'dbauser'@'%';
mysql>flush privileges;

-- 查看执行结果
mysql>use mysql;
mysql>select user,host,plugin from user;

-- 执行exit退出数据库
mysql>exit
# 正常登录mysql
mysql -u root -p
# 输入密码,正常登录

卸载mysql

注意:这里的操作是为了重装mysql而进行的,数据库中没有任何有意义的数据。

# 停止mysql
service mysqld stop
service mysql stop

# 卸载mysql
rpm -e mysql-8.0.17-1.el7.aarch64

# 查找是否还有mysql
rpm -qa|grep -i mysql
# 有的话,逐个卸载
rpm -ev mysql-8...  --nodeps

# 查看之前安装的MySQL的目录
find / -name mysql
/usr/share/mysql
/usr/lib64/mysql

# 删除重点的目录
rm -rf /usr/share/mysql
rm -rf /usr/lib64/mysql

# 删除数据和日志,实际操作需谨慎,根据具体情况决定,这里是实验环境,为了重装
rm -rf /data/mysql/data/*
rm -rf /data/mysql/log/*

# 删除my.cnf,安装时重建
rm -f /etc/my.cnf

# 确认卸载删除完毕
rpm -qa|grep -i mysql

然后可以重装mysql。

注意:卸载过程中 mysql 用户组和用户也同时被删除,重装时候,需重建 mysql 用户组和用户,并重新配置相应的用户权限。

安装jenkins(可选)

使用yum快速安装

yum install -y jenkins

分步骤安装

cd /home/soft
# 下载
wget https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/others/jenkins-2.164.3-1.1.noarch.rpm
# 安装
yum install -y jenkins-2.164.3-1.1.noarch.rpm
# 或
rpm -ivh jenkins-2.164.3-1.1.noarch.rpm

# 启动Jenkins服务,安装成功后已经是自启动服务
systemctl start jenkins

# 查看Jenkins服务状态
systemctl status jenkins
# 服务启动成功

# 浏览器打开:http://公网IP:8080
# 注意查询jenkins初始密码
cat /var/lib/jenkins/secrets/initialAdminPassword
# 复制初始密码
# 输入密码解锁,然后按提示操作
# 操作成功

安装rabbitmq-server(可选)

使用yum快速安装

yum install -y rabbitmq-server

分步骤安装

cd /home/soft
# 下载
wget https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/others/rabbitmq-server-3.6.10-1.el7.aarch64.rpm

# 安装
yum install -y rabbitmq-server-3.6.10-1.el7.aarch64.rpm
# 或
rpm -ivh rabbitmq-server-3.6.10-1.el7.aarch64.rpm

# 配置环境
vim /etc/profile
# 追加
export PATH=$PATH:/usr/local/rabbitmq/sbin

# 使生效
source /etc/profile

# 启动rabbitmq-server
rabbitmq-server -detached

# 查看服务状态
rabbitmqctl status

# 操作成功

安装fastjson(可选)

使用yum快速安装

yum install -y fastjson

分步骤安装

# 下载
wget https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/others/fastjson-1.2.29-1.el7.aarch64.rpm
# 安装
rpm -ivh fastjson-1.2.29-1.el7.aarch64.rpm

安装nginx

使用yum快速安装

因安装过程需要打补丁及分步骤设置,建议分步骤安装。

分步骤安装

参阅鲲鹏社区文档:

https://support.huaweicloud.com/prtg-kunpengwebs/kunpengnginx_02_0001.html

# 检查安装依赖项
yum install gcc gcc-c++ make libtool zlib zlib-devel pcre pcre-devel perl-devel perl-ExtUtils-Embed perl-WWW-Curl -y

cd /home/soft
# 下载openssl-1.1.1a的rpm包
wget https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/web/openssl-libs-1.1.1a-3.el7.aarch64.rpm
wget https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/web/openssl-1.1.1a-3.el7.aarch64.rpm
wget https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/web/openssl-devel-1.1.1a-3.el7.aarch64.rpm

# 安装
rpm -ivh openssl-libs-1.1.1a-3.el7.aarch64.rpm openssl-1.1.1a-3.el7.aarch64.rpm openssl-devel-1.1.1a-3.el7.aarch64.rpm --force --nodeps

# 编辑“/etc/ld.so.conf”文件
vim /etc/ld.so.conf
# 追加一行代码:
/usr/local/lib/
# 保存并退出ld.so.conf文件

# 执行如下命令,使配置生效
ldconfig -v

echo export PATH=/usr/local/bin:\$PATH >> /etc/profile
# 或编辑配置文件
vim /etc/profile
# 在文末增加如下内容
export PATH=/usr/local/bin:$PATH
# 保存退出

# 使环境变量配置生效
source /etc/profile

# 执行如下命令,确认OpenSSL的版本是否为1.1.1a
openssl version

cd /home/soft
# 下载
wget https://mirrors.huaweicloud.com/kunpeng/yum/el/7/aarch64/Packages/web/nginx-1.14.2-1.el7_4.aarch64.rpm
# 安装
yum install -y nginx-1.14.2-1.el7_4.aarch64.rpm
# 或
rpm -ivh nginx-1.14.2-1.el7_4.aarch64.rpm
# 安装成功

# 启动Nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

# 执行以下命令,设置Nginx随系统自启动:
vim /etc/rc.d/rc.local
# 追加一行命令:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
# 保存、退出
ESC
:wq
# 设置运行权限
chmod +x /etc/rc.d/rc.local
# 说明:该设置方法也适用于CentOS其他程序设置开机自动启动

# 运行命令,可以看到Nginx进程
ps -ef | grep nginx

# 浏览器打开:http://公网IP
# Welcome to nginx!
# 操作成功

nginx配置https功能请参阅鲲鹏社区文档:

https://support.huaweicloud.com/prtg-kunpengwebs/kunpengnginx_02_0013.html

安装配置golang(可选)

# 应提前卸载删除旧版本,否则会出错
# 删除 /usr/bin/ 下面的所有与 go 相关的文件
cd /usr/bin/
rm go*

# 删除低版本的 go
rm -rf /usr/local/go

cd /home/soft
# 下载golang ARMv8安装包
wget https://studygolang.com/dl/golang/go1.14.2.linux-arm64.tar.gz

# 解压缩到/usr/local
tar -C /usr/local -xzf go1.14.2.linux-arm64.tar.gz
# 自动创建/usr/local/go

# 设置环境变量
vim /etc/profile
# 追加以下内容:
GOROOT=/usr/local/go
export GOROOT
GOPATH=$HOME/go
export GOPATH
export PATH=$PATH:$GOROOT/bin
export PATH

# 使生效
source /etc/profile

# 验证安装
go version
echo $GOROOT
echo $GOPATH
# 操作成功

关于编译异常compile: version “go” does not match go tool version “go” 类问题解决:

如果提前已经卸载删除旧版本,就不会出这类错误了。

# 删除 /usr/bin/ 下面的所有与 go 相关的文件
cd /usr/bin/
rm go*

# 删除低版本的 go
rm -rf /usr/local/go

# 下载新的 go 并且解压到 /usr/local/
# 注意鲲鹏服务器需要使用ARMv8版go
tar -C /usr/local -xzf go1.14.2.linux-arm64.tar.gz

# 建立软链
ln -s /usr/local/go/bin/* /usr/bin/

# 测试验证
go version

编译测试

vim hello.go
package main  // 声明 main 包,表明当前是一个可执行程序

// 编译之前先执行:go get github.com/golang/example/stringutil
import (
    "fmt"
 
    "github.com/golang/example/stringutil"
)

func main(){  // main函数,是程序执行的入口
    fmt.Println("Hello World!")  // 在终端打印 Hello World!
    fmt.Println(stringutil.Reverse("!selpmaxe oG ,olleH"))
}
gofmt hello.go
go get github.com/golang/example/stringutil
go build hello.go
./hello

# 操作成功

你可能感兴趣的:(实施与部署,MySQL,操作系统)