麒麟ARM服务器运维

前言

政务云部署环境因为没有公网,所以部署起来会相对麻烦。

本文是基于互联网区域操作的。

服务器信息

系统名称

1
cat /etc/.productinfo

比如银河麒麟系统V10

Kylin Linux Advanced Server
release V10 (SP2) /(Sword)-aarch64-Build09/20210524

查看服务器架构

1
uname -m
  • 如果输出是 x86_64,则表示服务器是 x86 架构。
  • 如果输出是 aarch64,则表示服务器是 ARM 架构(ARM 64位)。
  • 如果输出是 armv7l,则表示服务器是 ARM 架构(ARM 32位)。

磁盘分区处理

https://www.psvmc.cn/article/2020-08-05-centos-disk-lvm.html

时间同步

查看时间

1
date

修改时间

1
date -s "2025-03-06 14:09:00"

同步系统时间到硬件时钟

1
hwclock --systohc

查看硬件时钟

1
hwclock

因为没有时间服务器可用,所以没有使用时间同步服务。

DNS配置

互联网区虚机添加外网 dns

临时生效

查看DNS配置

1
cat /etc/resolv.conf

编辑配置

1
vi /etc/resolv.conf

配置如下

1
2
nameserver 223.5.5.5
nameserver 223.6.6.6

注意:

1、resolv.conf 文件中只保留上面的配置,其他的 IP 全部删除

2、虚机重启后需要重新配置 resolv.conf 文件

校验解析

1
2
3
4
ping scapi.xhkjedu.com
nslookup scapi.xhkjedu.com
nslookup scapi.xhkjedu.com 223.5.5.5
dig scapi.xhkjedu.com

校验服务

1
2
telnet scapi.xhkjedu.com 443
curl https://scapi.xhkjedu.com/status/info

退出telnet

1
quit

永久生效

根据你的发行版,编辑相应的网络接口配置文件

例如 /etc/sysconfig/network-scripts/ifcfg-eth0 (适用于 Red Hat 系列)或 /etc/network/interfaces (适用于 Debian 系列)。

这里是Red Hat 系列的

先查看网卡名

1
ifconfig

我这里使用的是网卡是enp3s0

编辑对应的文件

1
vi /etc/sysconfig/network-scripts/ifcfg-enp3s0

配置 DNS
在配置文件中添加或修改 DNS 配置,例如:

1
2
DNS1=223.5.5.5
DNS2=223.6.6.6

重启网络服务

1
systemctl restart network

制作本地 yum 源

下载iso镜像

1
scp root@10.184.70.65:/home/Kylin-Server-10-SP2-Release-Build09-20210524-arm64.iso /home

密码是服务器的初始密码

挂载镜像

1
2
cd /home
mount Kylin-Server-10-SP2-Release-Build09-20210524-arm64.iso /mnt/

备份数据源

1
2
3
4
5
cd /etc/yum.repos.d/
ls
mkdir test
mv *.repo test
ls

配置本地源

1
vi local.repo

内容如下

1
2
3
4
5
[local]
name = local
baseurl = file:///mnt
gpgcheck = 0
enabled = 1

查看源

1
2
yum repolist all
yum repoinfo local

清除缓存,建立本地源

1
2
yum -y clean all
yum makecache

安装Nginx

1
yum list nginx*

发现没有提供Nginx,我们只能自己下载。

安装

本地下载Nginx后上传

1
https://nginx.org/download/nginx-1.22.0.tar.gz

安装依赖

1
yum install -y pcre pcre-devel zlib zlib-devel gcc-c++ openssl openssl-devel

解压

1
2
tar -zxvf nginx-1.22.0.tar.gz
cd nginx-1.22.0

编译安装

1
2
3
4
5
6
7
8
9
10
11
./configure \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-poll_module --with-threads --with-file-aio \
--with-http_v2_module --with-http_realip_module \
--with-stream --with-stream_ssl_module --with-stream_realip_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--with-http_stub_status_module

make && make install

查找安装路径

1
whereis nginx

查看配置信息

1
2
cd  /usr/local/nginx/sbin
./nginx -t

添加软连接

1
sudo ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx

查看Nginx信息

1
nginx -V

这时就可以这样检测了

1
nginx -t

注册服务

在 Linux 上,将 Nginx 配置为一个服务以便它可以作为系统服务启动、停止和管理,通常需要创建一个 systemd 服务文件。

以下是如何为编译安装的 Nginx 创建一个 systemd 服务文件的步骤:

1. 创建 Nginx 服务文件

/etc/systemd/system/ 目录下创建一个新的服务文件,例如 nginx.service

1
sudo vi /etc/systemd/system/nginx.service

2. 编辑服务文件内容

将以下内容粘贴到 nginx.service 文件中。

注意,根据你的 Nginx 安装路径调整 ExecStartExecReload 的路径。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

3. 启用并启动 Nginx 服务

保存并关闭文件后,使用以下命令重新加载 systemd 配置,启动 Nginx 服务,并设置开机自启动:

1
2
3
sudo systemctl daemon-reload
sudo systemctl start nginx
sudo systemctl enable nginx

4. 检查服务状态

你可以使用以下命令检查 Nginx 服务的状态:

1
sudo systemctl status nginx

5. 常用操作

启动服务

1
sudo systemctl start nginx

停止服务

1
sudo systemctl stop nginx

重启服务

1
sudo systemctl restart nginx

重新加载配置

1
sudo systemctl reload nginx

查看服务日志

1
sudo journalctl -u nginx

添加配置

1
cd /usr/local/nginx/conf

修改根配置

1
vi nginx.conf

http内,server同级添加

1
include /etc/nginx/conf.d/*.conf;

创建目录

1
mkdir -p /etc/nginx/conf.d/

添加配置

1
2
cd /etc/nginx/conf.d/
vi _localhost_80.conf

内容

1
2
3
4
5
6
server {  
listen 80;
server_name localhost;
index index.html;
root /data/wwwjarapi/schoolfile/static;
}

重启Nginx

1
systemctl restart nginx

查看是否生效

1
lsof -i:80

访问测试

1
2
3
curl http://127.0.0.1/test.txt
curl http://172.26.69.13/test.txt
curl http://localhost/test.txt

毕昇JDK(ARM)

https://www.openeuler.org/zh/other/projects/bishengjdk/

下载

https://mirrors.huaweicloud.com/kunpeng/archive/compiler/bisheng_jdk/bisheng-jdk-8u422-linux-aarch64.tar.gz

解压

1
2
sudo mkdir /usr/local/jdk/
sudo tar zxvf bisheng-jdk-8u422-linux-aarch64.tar.gz -C /usr/local/jdk/

打开文件

1
sudo vi /etc/profile

添加

1
2
3
4
export JAVA_HOME=/usr/local/jdk/bisheng-jdk1.8.0_422
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=$JAVA_HOME/jre

生效

1
source /etc/profile

测试

1
java -version

Redis

安装

下载

https://www.redis.net.cn/download/

这里使用的5.0.4版本

1
tar zxvf redis-5.0.4.tar.gz

安装

1
2
3
4
cd redis-5.0.4/
sudo make install
cd utils/
sudo ./install_server.sh

端口号是6379,默认的配置文件路径为

/etc/redis/6379.conf

这里修改为

/etc/redis.conf

这是我的配置

image-20250305174622885

系统服务位于/etc/init.d/redis_6379,可以更名为/etc/inti.d/reids.

1
sudo mv /etc/init.d/redis_6379 /etc/init.d/redis

启动

1
service redis start

设置开机自启

1
chkconfig redis on

查看运行状态

1
ps -ef | grep redis

允许远程连接

yum方式安装的redis配置文件通常在/etc/redis.conf中,打开配置文件找到

1
vi /etc/redis.conf

注释bind 127.0.0.1 就可以远程访问 如下

1
bind 127.0.0.1

改为

1
# bind 127.0.0.1

Redis3.2之后还要修改protected-mode 默认的yes改为no

第80行:

1
protected-mode no

重启

1
service redis restart

设置连接密码

yum方式安装的redis配置文件通常在/etc/redis.conf中,打开配置文件找到

1
vim /etc/redis.conf

找到 480行

1
#requirepass foobared

去掉行前的注释,并修改密码为所需的密码,保存文件

1
requirepass xhkjeduQAZwsx

重启redis

1
service redis restart

带密码连接

1
2
3
redis-cli -h 127.0.0.1 -p 6379 -a xhkjeduQAZwsx
set psvmc 123
get psvmc

RabbitMQ

组件 安装地址
openssl http://www.openssl.org/source/openssl-1.0.1s.tar.gz
erlang http://erlang.org/download/otp_src_20.3.tar.gz
unixODBC http://www.unixodbc.org/unixODBC-2.3.7.tar.gz
rabbitMQ https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.8/rabbitmq-server-generic-unix-3.7.8.tar.xz

openssl

1
2
3
4
cd ~
tar -zvxf openssl-1.0.1s.tar.gz
cd openssl-1.0.1s
./config --prefix=/usr/local/openssl

修改文件

1
vi Makefile

使用/搜索CFLAG 添加如下图所示,其实就是添加-fPIC

image-20250305180849774

构建

1
make && make install

安装unixODBC

1
2
3
4
5
6
cd ~
tar -xvf unixODBC-2.3.7.tar.gz
cd unixODBC-2.3.7
./configure --prefix=/usr/local/unixODBC-2.3.7 --includedir=/usr/include --libdir=/usr/lib -bindir=/usr/bin --sysconfdir=/etc
# 编译和安装
make && make install

安装erlang

安装依赖

1
yum install -y ncurses ncurses-devel

安装erlang

1
2
3
4
5
cd ~
tar -xvf otp_src_20.3.tar.gz
cd otp_src_20.3
./configure --prefix=/usr/local/erlang --with-ssl=/usr/local/openssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe --without-javac
make && make install

设置环境变量

1
vim /etc/profile

添加如下内容:

1
export PATH=$PATH:/usr/local/erlang/bin

修改完毕后,使该配置文件生效

1
source /etc/profile

运行

安装完成后测试erlang是否能正常运行,终端输入erl

1
erl

安装rabbitmq

1
2
3
cd ~
tar -xvf rabbitmq-server-generic-unix-3.7.8.tar.xz -C /usr/local/
cd /usr/local/rabbitmq_server-3.7.8

修改环境变量

1
vim /etc/profile

在文件末尾添加

1
export PATH=$PATH:/usr/local/rabbitmq_server-3.7.8/sbin

将该软件的地址添加到环境变量中,source该文件使得配置生效

1
source /etc/profile

运行rabbitmq

启动rabbitmq,-detached代表后台守护进程方式启动。

1
rabbitmq-server –detached

但是用这种方式启动,你关闭中断或者ctrl+c 后程序就stop了。

所以运行命令用这个:

1
nohup rabbitmq-server &

查看启动

1
2
lsof -i:5672
lsof -i:15672

停止

1
rabbitmqctl stop

添加服务

1
vi /etc/systemd/system/rabbitmq-server.service

在打开的文件中输入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[Unit]
Description=RabbitMQ Messaging Server
Documentation=https://www.rabbitmq.com/
After=network.target

[Service]
Type=notify
User=rabbitmq
Group=rabbitmq
ExecStart=/usr/local/rabbitmq_server-3.7.8/sbin/rabbitmq-server
ExecStop=/usr/local/rabbitmq_server-3.7.8/sbin/rabbitmqctl stop
Restart=always
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

添加用户

1
2
groupadd rabbitmq
useradd -g rabbitmq rabbitmq

设置目录归属

1
chown -R root:root /usr/local/rabbitmq_server-3.7.8

重新加载配置,让 Systemd 识别新的服务。

1
systemctl daemon-reload

设置服务开机自启

1
systemctl enable rabbitmq-server

启动服务

1
sudo systemctl start rabbitmq-server

查看服务状态

1
sudo systemctl status rabbitmq-server

如果启动的时候找不到erl:未找到命令

1
vi /usr/local/rabbitmq_server-3.7.8/sbin/rabbitmq-server

添加

1
export PATH=$PATH:/usr/local/erlang/bin

安装Web管理界面插件

依次执行下列指令:

1
2
3
4
5
6
7
8
# 开启rabbitmq: 
rabbitmqctl start_app

# 开启管理插件:
rabbitmq-plugins enable rabbitmq_management

# 查看插件集合:
rabbitmq-plugins list

查看启动

1
lsof -i:15672

配置web远程登录用户

这里我们以创建个rabbitmq帐号,密码123456为例,创建一个账号并支持远程ip访问。

创建账号

1
rabbitmqctl add_user psvmc 123456

设置用户角色

1
rabbitmqctl set_user_tags psvmc administrator

设置用户权限

1
rabbitmqctl set_permissions -p "/" psvmc ".*" ".*" ".*"

设置完成后可以查看当前用户和角色

1
rabbitmqctl list_users

查看firewall的状态

1
firewall-cmd --state

开放5672和15672端口:

1
2
3
4
5
firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --reload

firewall-cmd --zone=public --add-port=15672/tcp --permanent
firewall-cmd --reload

就可以通过http://ip:15672访问管理页面

添加用户后要设置权限

image-20241108121233904

远程测试

1
nc -zv 110.110.110.110 5672

用户管理

所有用户

1
rabbitmqctl list_users

查看用户权限

1
rabbitmqctl list_permissions

查看指定用户权限

1
rabbitmqctl list_user_permissions psvmc

删除用户

1
rabbitmqctl delete_user guest

Tomcat8

下载安装

https://archive.apache.org/dist/tomcat/tomcat-8/

这里使用8.5.99版本

https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.99/bin/

搜索apache-tomcat-8.5.99.tar.gz

下载

https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.99/bin/apache-tomcat-8.5.99.tar.gz

查看Java环境变量

1
2
3
echo $JAVA_HOME
echo $JRE_HOME
java -version

创建目录

1
2
mkdir -p /data/tools
tar zxvf apache-tomcat-8.5.99.tar.gz -C /data/tools

启动

1
2
cd /data/tools/apache-tomcat-8.5.99/bin/
./startup.sh

注册为服务

创建配置

1
vi /etc/init.d/tomcat8.sh

配置如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/bin/sh
# chkconfig: 2345 85 15
# description:auto_run

#Tomcat根位置
TOMCAT_ROOT=/data/tools/apache-tomcat-8.5.99/

# 手动加载 /etc/profile
. /etc/profile

javahome() {
echo "Show JAVA_HOME"
echo $JAVA_HOME
}

#开始方法
start() {
cd $TOMCAT_ROOT
./bin/startup.sh
}

#结束方法
stop() {
cd $TOMCAT_ROOT
./bin/shutdown.sh
}

case "$1" in
javahome)
javahome
;;
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Userage: $0 {start|stop|restart}"
exit 1
esac

注意

/etc/profile 文件通常在用户登录时由用户会话(如 bash 会话)读取并执行。

init.d 脚本是在系统启动时由 init 进程(或 systemd)执行的,它们运行在系统级别,而不是用户会话级别。

所以init.d 中的脚本读取不到 /etc/profile 文件中的环境变量。

我们可以使用. /etc/profile进行手动加载。

设置权限

1
chmod +x /etc/init.d/tomcat8.sh

首先,添加为系统服务

1
chkconfig --add tomcat8.sh

开机自启动

1
chkconfig tomcat8.sh on

查看

1
chkconfig --list

启动

1
service tomcat8.sh start

停用

1
service tomcat8.sh stop

查看启动情况

1
lsof -i:8080

FFmpeg

下载地址

https://johnvansickle.com/ffmpeg/

ARM版本

https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-arm64-static.tar.xz

解压

1
2
mkdir -p /data/tools
tar -Jxvf ffmpeg-release-arm64-static.tar.xz -C /data/tools

打开文件

1
sudo vi /etc/profile

添加

1
2
export FFMPEG_HOME=/data/tools/ffmpeg-7.0.2-arm64-static
export PATH=$FFMPEG_HOME:$PATH

生效

1
source /etc/profile

测试

1
ffmpeg -version

wkhtmltopdf

下载

https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.centos7.aarch64.rpm

安装wkhtmltopdf

安装openssl

1
rpm -ivh compat-openssl10-1.0.2o-3.el8.aarch64.rpm

安装依赖

1
2
3
yum install -y libXrender libjpeg xorg-x11-fonts-75dpi xorg-x11-fonts-Type1
yum install -y urw-fonts libXext openssl-devel
yum install -y libpng15

安装wkhtmltopdf

1
rpm -ivh wkhtmltox-0.12.6-1.centos7.aarch64.rpm

查看是否成功

1
wkhtmltopdf -V

程序的路径为

/usr/local/bin/wkhtmltopdf

libpng15

libpng15自带的源中没有,这里手动安装

1
2
3
4
5
tar -zxvf ./libpng-1.5.15.tar.gz
cd libpng-1.5.15
./configure --prefix=/usr/local/libpng
make && make install
ln -s /usr/local/libpng/lib/libpng15.so.15 /usr/lib/libpng15.so.15

继续安装 libpng12-1.2.50-10.el7.aarch64.rpm

1
rpm -U --replacepkgs libpng12-1.2.50-10.el7.aarch64.rpm

查看是否成功

1
wkhtmltopdf -V

添加字体

此时测试发现还存在很多空白展示不正确,需要将windows中的msyh.ttc、msyhbd.ttc、msyhl.ttc复制到linux服务器/usr/share/fonts/msyh,如果没有则mkdir创建目录

1
2
3
4
5
cd C:\Windows\Fonts

copy msyh.ttc %USERPROFILE%\Downloads
copy msyhbd.ttc %USERPROFILE%\Downloads
copy msyhl.ttc %USERPROFILE%\Downloads

创建目录

1
mkdir /usr/share/fonts/msyh

上传到Linux中/usr/share/fonts/msyh

设置

1
2
3
4
5
6
yum install -y fontconfig mkfontscale
cd /usr/share/fonts/msyh
mkfontscale
mkfontdir
fc-cache -fv
source /etc/profile

执行:

1
fc-list :lang=zh

可以看到已经安装的中文字体。

测试

1
wkhtmltopdf D:\html\test.html D:\html\test.pdf