河南中电高科计算机技术有限公司
2020.5.9
适用于java微服务技术栈。
适用于鲲鹏服务器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架构有较好的支持,因此建议,在技术条件允许的情况下,尽可能选用较新版本的软件安装。
# 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
# 操作成功
# 配置鲲鹏镜像站,可以简化软件安装步骤,加快部署速度。
华为云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
# 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 FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
.bz2
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
.bz
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知
.tar.bz
解压:tar jxvf FileName.tar.bz
压缩:未知
.Z
解压:uncompress FileName.Z
压缩:compress FileName
.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
.zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
.rar
解压:rar x FileName.rar
压缩:rar a FileName.rar DirName
解压
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
unrar e file.rar //解压rar
unzip file.zip //解压zip
总结
.tar 用 tar –xvf 解压
.gz 用 gzip -d或者gunzip 解压
.tar.gz和.tgz 用 tar –xzf 解压
.bz2 用 bzip2 -d或者用bunzip2 解压
.tar.bz2用tar –xjf 解压
.Z 用 uncompress 解压
.tar.Z 用tar –xZf 解压
.rar 用 unrar e解压
.zip 用 unzip 解压
# 添加管理员账户,并设置密码,设置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文件
# 安装依赖项
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
su
# 切换到root
# 执行命令 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 CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:
export PATH=$JAVA_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)
# 显示正常,操作成功
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
# 正常
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
<!--设置maven本地仓库地址,根据具体情况决定-->
<localRepository>/data/mavenRepository</localRepository>
<!--设置阿里云等maven镜像站,根据具体情况决定-->
<!--阿里云镜像-->
<mirror>
<id>alimaven</id>
<mirrorOf>public</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>public</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public/</url>
<!-- <url>https://maven.aliyun.com/nexus/content/groups/public</url> -->
</mirror>
<mirror>
<id>custom-mirror</id>
<mirrorOf>central</mirrorOf>
<!-- <url>http://maven.aliyun.com/nexus/content/groups/public/</url> -->
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
<!--中央仓库2-->
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>repo2 maven</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>
<!--JBOSS镜像-->
<mirror>
<id>jboss-public-repository-group</id>
<mirrorOf>public</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public/</url>
</mirror>
<!--设置maven插件镜像等,根据具体情况决定-->
<profile>
<id>aliyunRepo</id>
<repositories>
<repository>
<id>jcenter</id>
<name>阿里云代理的jcenter库</name>
<url>https://maven.aliyun.com/repository/jcenter</url>
<layout>default</layout>
<snapshotPolicy>always</snapshotPolicy>
</repository>
<repository>
<id>spring</id>
<name>阿里云代理的spring库</name>
<url>https://maven.aliyun.com/repository/spring</url>
<layout>default</layout>
<snapshotPolicy>always</snapshotPolicy>
</repository>
<repository>
<id>spring-plugin</id>
<name>阿里云代理的spring-plugin库</name>
<url>https://maven.aliyun.com/repository/spring-plugin</url>
<layout>default</layout>
<snapshotPolicy>always</snapshotPolicy>
</repository>
</repositories>
</profile>
#保存退出
# 设置maven本地仓库目录权限,供所有用户使用
chmod -R 666 /data/mavenRepository
# 安装clang,配置鲲鹏yum源之后,安装速度很快
yum install -y clang
yum install jsoncpp -y
yum install -y cmake-3.9.2-1.el7.aarch64
# 设置见分步骤安装
# 依赖项
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需编译安装
# 安装依赖包
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
# 查看gcc版本
gcc -v
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
# 连接正常
# 操作成功
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
# 执行正常
# 任务成功
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
# 显示正常
# 任务成功
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
# 保存退出
# 重载系统服务
systemctl daemon-reload
# 启动redis服务
systemctl start redis
# 设置开机自启动
systemctl enable redis
# 客户端连接测试
redis-cli
# 连接后,执行
set kunpeng OK
get kunpeng
exit
# 运行正常,操作成功
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
# 操作成功
参阅: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
# 创建文件系统(以xfs为例,根据实际需求创建文件系统)
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
# 安装依赖包
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
# 复制粘贴以下内容:
[mysqld_safe]
log-error=/data/mysql/log/mysql.log
pid-file=/data/mysql/run/mysqld.pid
[mysqldump]
quick
[mysql]
no-auto-rehash
default-character-set=utf8mb4
[client]
default-character-set=utf8mb4
socket=/data/mysql/run/mysql.sock
port=3306
[mysqld]
basedir=/usr/local/mysql
socket=/data/mysql/run/mysql.sock
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
# 更多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
# 初始化数据库
mysqld --defaults-file=/etc/my.cnf --initialize
# 该步骤中倒数第2行中有初始密码,请注意保存
# 如果需要重新初始化数据库,需要将 mysql 数据目录下的数据全部清空
# rm -rf /data/mysql/data
# mkdir /data/mysql/data
# 重新设置权限
# chown -R mysql:mysql /data/mysql
# 然后可以重新初始化数据库,注意复制保存初始密码
# mysqld --defaults-file=/etc/my.cnf --initialize
# 启动数据库
# 修改文件权限
chmod 777 /usr/local/mysql/support-files/mysql.server
# 启动MySQL
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身份执行
# 第一次启动可能失败,提示:
# The server quit without updating PID file (/data/mysql/data/cehckp.pid).[FAILED]
# 查阅/data/mysql/log/mysql.log,发现是mysqld提前运行,占用了3306端口
# 退出mysql用户,返回root
exit
# kill mysqld进程
pkill mysqld
# 重新启动mysql
service mysql start
# 启动成功
# 初次登录数据库
/usr/local/mysql/bin/mysql -uroot -p -S /data/mysql/run/mysql.sock
# 或
mysql -uroot -p -S /data/mysql/run/mysql.sock
# 输入安装时候生成的随机密码
-- 登录数据库以后,修改root密码
mysql>use mysql;
-- 修改密码
mysql>alter user 'root'@'localhost' identified by "newpasswd";
-- 创建全域root用户(允许root从其他服务器访问)
mysql>create user 'root'@'%' identified by 'newpasswd';
-- 进行授权
mysql>grant all privileges on *.* to 'root'@'%';
mysql>flush privileges;
-- 可选操作
-- 创建新用户
mysql>create user 'dbuser'@'%' identified with mysql_native_password by 'passwd';
-- 授权
mysql>grant all privileges on *.* to 'dbuser'@'%';
mysql>flush privileges;
-- 查看执行结果
mysql>select user,host,plugin from user;
-- 执行exit退出数据库
mysql>exit
# 正常登录mysql
mysql -u root -p
# 输入密码,正常登录
# 卸载mysql方法
# 停止mysql
# service mysql stop
# 卸载数据库RPM包
# rpm -e mysql-8.0.17-1.el7.aarch64
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
# 复制初始密码
# 输入密码解锁,然后按提示操作
# 操作成功
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
# 操作成功
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
因安装过程需要打补丁及分步骤设置,建议分步骤安装。
参阅鲲鹏社区文档:
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
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 相关的文件
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
# 操作成功