银河麒麟系统下企业级应用部署实战指南

1. 环境准备:从零搭建银河麒麟部署平台

很多朋友第一次接触银河麒麟系统,可能会觉得有点陌生,毕竟它和我们常用的Windows或者Ubuntu不太一样。但说实话,我在实际的企业项目里用下来,银河麒麟作为国产操作系统的代表,稳定性和安全性真的没得说,特别适合那些对数据安全有高要求、或者正在进行国产化替代的团队。今天我就把自己踩过坑、趟过雷的实战经验,从头到尾给你捋一遍,保证你看完就能上手。

首先,咱们得把“战场”准备好。我强烈建议,如果你是在学习或者测试阶段,先用虚拟机来操作。这样哪怕配置错了,大不了删了重来,不会影响你的物理机。我用的就是VMware Workstation Pro,这个大家应该都很熟悉了。创建一个新的虚拟机时,有几个关键点要注意:系统类型选择“Linux”,版本选“其他Linux 5.x内核 64位”。内存我给到了20GB,因为后续要跑数据库、中间件和应用,内存大点跑起来更顺畅。硬盘空间建议预留100GB以上,毕竟安装包、日志文件加起来也不小。

安装镜像就是官方的 Kylin-Server-10 版本。安装过程基本是图形化界面,跟着提示走就行,但记得在分区那一步,如果你对Linux分区不熟,直接选择“自动配置分区”,系统会帮你搞定。安装完成后,第一件事不是急着装软件,而是配置网络。确保你的虚拟机可以稳定地访问外网,因为后面很多步骤需要下载依赖包。你可以用 ping www.baidu.com 来测试网络是否通畅。

接下来是连接工具。在Windows上操作Linux虚拟机,一个好用的终端工具能极大提升效率。我习惯用 MobaXterm,它集成了SFTP文件传输、多标签、会话管理,比单纯的Putty方便太多了。通过它,你可以用SSH协议连接到你的银河麒麟虚拟机,就像在本地操作一样。

最后,在开始安装各种企业级软件之前,我建议先做一次全面的系统更新。打开终端,输入以下命令:

sudo yum makecache
sudo yum update -y

这个操作会更新系统的软件包列表并升级所有可更新的包,确保系统环境是最新的,能避免很多因版本老旧导致的兼容性问题。做完这些,一个干净、稳定、网络畅通的银河麒麟基础环境就准备好了,咱们可以放心地往上面“添砖加瓦”了。

2. 核心运行环境部署:JDK与Tomcat实战

企业级应用离不开Java环境,而Tomcat作为轻量级的Web应用服务器,是很多Java Web项目的首选。在银河麒麟上部署这两样东西,步骤和CentOS、Ubuntu类似,但有些细节需要特别注意。

2.1 JDK 1.8 安装与深度配置

虽然现在Java版本已经很高了,但很多老牌企业应用,特别是那些使用Spring Boot 2.x之前框架的系统,对JDK 1.8(也就是Java 8)的兼容性依然是最好的。所以咱们还是以安装JDK 1.8为例。

首先,你得有个安装包。可以从Oracle官网下载,或者使用OpenJDK。我一般会先在 /opt 目录下创建一个专门的 software 文件夹来存放所有安装包,这样管理起来清晰。

sudo mkdir -p /opt/software
cd /opt/software

通过MobaXterm的SFTP功能,把 jdk-8uXXX-linux-x64.tar.gz 这样的压缩包上传到这个目录。然后解压:

sudo tar -zxvf jdk-8uXXX-linux-x64.tar.gz -C /usr/local/

这里我习惯把JDK解压到 /usr/local/ 下,这是Linux下放置本地安装软件的常规位置。

接下来是配置环境变量,这是关键一步,很多新手会在这里出错。 我们需要编辑 /etc/profile 这个全局配置文件。

sudo vim /etc/profile

在文件的最末尾,添加以下几行。一定要注意,JAVA_HOME的路径必须是你实际解压的路径,一个字母都不能错。

# Java Environment
export JAVA_HOME=/usr/local/jdk1.8.0_XXX  # 请替换为你的实际路径
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

保存退出后,执行 source /etc/profile 让配置立刻生效。然后验证是否安装成功:

java -version

如果看到类似 java version "1.8.0_XXX" 的输出,恭喜你,JDK安装成功了。这里有个小坑:有时候你开了多个终端窗口,只在其中一个 source 了,其他窗口可能还是找不到java命令。所以保险起见,新开一个终端窗口再执行 java -version,如果还能成功,说明环境变量配置是永久生效的。

2.2 Tomcat 8.5 部署与开机自启

有了Java环境,Tomcat的安装就简单多了。同样,把 apache-tomcat-8.5.XX.tar.gz 上传到 /opt/software,然后解压到 /usr/local

sudo tar -zxvf apache-tomcat-8.5.XX.tar.gz -C /usr/local/
cd /usr/local/

为了方便,我通常会给解压后的目录创建一个软链接,这样以后版本升级时,只需要改变软链接的指向,而不需要修改一大堆配置文件。

sudo ln -s apache-tomcat-8.5.XX tomcat

现在,直接运行 /usr/local/tomcat/bin/startup.sh 就能启动Tomcat了。但这样启动,一旦服务器重启,服务就没了。对于企业应用,我们必须配置成系统服务,实现开机自启

银河麒麟(基于CentOS)使用 systemd 来管理服务。我们需要在 /usr/lib/systemd/system/ 目录下创建一个 tomcat.service 文件。

sudo vim /usr/lib/systemd/system/tomcat.service

将下面的配置内容粘贴进去。请务必根据你的实际安装路径,修改 JAVA_HOMECATALINA_HOME 等环境变量的值。

[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target

[Service]
Type=forking
Environment=JAVA_HOME=/usr/local/jdk1.8.0_XXX
Environment=CATALINA_HOME=/usr/local/tomcat
Environment=CATALINA_BASE=/usr/local/tomcat
PIDFile=/usr/local/tomcat/temp/tomcat.pid
ExecStart=/usr/local/tomcat/bin/catalina.sh start
ExecStop=/usr/local/tomcat/bin/catalina.sh stop
ExecReload=/bin/kill -s HUP $MAINPID
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

保存后,执行以下命令来启用并启动服务:

sudo systemctl daemon-reload  # 重载systemd配置
sudo systemctl enable tomcat   # 设置开机自启
sudo systemctl start tomcat    # 启动服务
sudo systemctl status tomcat   # 查看服务状态

如果状态显示 active (running),并且用浏览器访问 http://你的服务器IP:8080 能看到那只著名的“汤姆猫”页面,说明Tomcat服务已经成功运行并注册为系统服务了。以后服务器重启,Tomcat也会自动跟着起来,这才是企业级部署该有的样子。

3. 数据库与缓存部署:MySQL与Redis高可用配置

一个完整的企业应用,数据存储和缓存是灵魂。在银河麒麟上,我们通常选择MySQL作为关系型数据库,Redis作为缓存数据库。它们的安装配置比中间件稍微复杂一点,但只要跟着步骤走,问题不大。

3.1 MySQL 5.7 安装、安全加固与远程访问

为什么选MySQL 5.7?因为它是一个经过长期考验的、非常稳定的版本,在性能、功能和稳定性之间取得了很好的平衡,社区资源也极其丰富。首先,我们需要清理系统可能自带的MariaDB(一个MySQL的分支),避免冲突。

# 检查是否已安装mariadb
rpm -qa | grep mariadb
# 如果存在,则卸载
sudo rpm -e --nodeps mariadb-libs-xxxx

然后,去MySQL官网下载对应版本的RPM包合集(mysql-5.7.XX-1.el7.x86_64.rpm-bundle.tar)。上传到服务器后解压:

tar -xvf mysql-5.7.XX-1.el7.x86_64.rpm-bundle.tar

接着,按顺序安装以下几个核心RPM包。如果遇到依赖错误,可以尝试加上 --nodeps 参数(忽略依赖),但后续可能需要手动安装缺失的依赖库。

sudo rpm -ivh mysql-community-common-5.7.XX-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-libs-5.7.XX-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-client-5.7.XX-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-server-5.7.XX-1.el7.x86_64.rpm

安装完成后,启动MySQL服务并查看初始密码:

sudo systemctl start mysqld
sudo grep 'temporary password' /var/log/mysqld.log

你会看到一行日志,里面包含了为root用户生成的临时密码,像 A temporary password is generated for root@localhost: xxxxxx。用这个密码登录:

mysql -uroot -p

登录后第一件事,必须修改root密码。MySQL 5.7默认有密码强度策略,为了方便测试,我们可以先降低策略(生产环境请谨慎评估)。

-- 设置密码策略为低(0:低,1:中,2:高)
SET GLOBAL validate_password_policy=0;
-- 设置密码最小长度
SET GLOBAL validate_password_length=4;
-- 修改root用户密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';

接下来是关键的安全和可用性配置:允许root用户远程登录(默认只允许localhost),并创建一个专用于应用的数据库用户。

-- 授权root用户可以从任何主机登录(生产环境建议限制IP)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的新密码' WITH GRANT OPTION;
-- 或者,更安全的方式是创建一个新用户
CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongAppPassword123!';
GRANT ALL PRIVILEGES ON `app_db`.* TO 'app_user'@'%';
FLUSH PRIVILEGES;

最后,别忘了开放防火墙的3306端口,并设置MySQL服务开机自启:

sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload
sudo systemctl enable mysqld

3.2 Redis 6.x 编译安装与系统服务集成

Redis通常推荐编译安装,这样可以获得最佳性能,并且能使用最新的稳定版本。首先安装编译工具和依赖:

sudo yum install -y gcc gcc-c++ make

然后下载Redis源码并解压,我习惯放到 /usr/local/src 目录下:

cd /usr/local/src
sudo wget http://download.redis.io/releases/redis-6.2.6.tar.gz
sudo tar -zxvf redis-6.2.6.tar.gz
cd redis-6.2.6

编译安装非常简单,就两步:

sudo make
sudo make install

make install 默认会把 redis-serverredis-cli 等可执行文件安装到 /usr/local/bin/ 目录下。接下来是配置文件的定制,这直接关系到Redis的安全和性能。先复制一份默认配置文件:

sudo mkdir /etc/redis
sudo cp redis.conf /etc/redis/6379.conf
sudo vim /etc/redis/6379.conf

在配置文件中,有几个参数我每次部署必改:

  1. 绑定IP与保护模式:为了让其他服务器能访问,需要注释掉 bind 127.0.0.1 这一行,或者改为 bind 0.0.0.0。同时,将 protected-mode 设置为 no(如果设置了密码,可以保持yes)。
  2. 设置访问密码:找到 # requirepass foobared 这一行,去掉注释,把 foobared 改成你的强密码。这是最基本的安全措施。
  3. 后台运行:确保 daemonize 设置为 yes
  4. 数据持久化:根据业务需求配置RDB或AOF。例如,取消 save 900 1 等行的注释,启用RDB快照。

配置好后,我们可以用指定配置文件的方式启动Redis测试一下:redis-server /etc/redis/6379.conf。但为了管理方便,我们同样要把它做成systemd服务。 创建服务文件 /usr/lib/systemd/system/redis.service

[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /etc/redis/6379.conf
ExecStop=/usr/local/bin/redis-cli -p 6379 shutdown
Restart=always
User=redis
Group=redis

[Install]
WantedBy=multi-user.target

注意,我们创建了一个专门的 redis 用户和用户组来运行Redis服务,这样更安全:

sudo groupadd redis
sudo useradd -r -g redis redis
sudo chown -R redis:redis /var/lib/redis  # 假设数据目录在这里
sudo chown -R redis:redis /var/log/redis  # 假设日志目录在这里

最后,启用服务、开放防火墙端口:

sudo systemctl daemon-reload
sudo systemctl enable redis
sudo systemctl start redis
sudo firewall-cmd --zone=public --add-port=6379/tcp --permanent
sudo firewall-cmd --reload

现在,你的MySQL和Redis都已经作为稳固的系统服务在运行了,为上层应用提供了可靠的数据支撑。

4. 应用部署与负载均衡实战

环境都搭好了,现在终于轮到“主角”——我们的企业应用上场了。这里我以一个常见的Spring Boot项目(打包成WAR)为例,演示如何部署到Tomcat,并通过Nginx实现负载均衡和动静分离,这才是应对高并发的标准操作。

4.1 双Tomcat节点与应用部署

单点部署风险太高,一旦Tomcat挂了,整个服务就不可用。所以,至少部署两个Tomcat实例,形成双节点,是入门级的高可用方案。我们在之前安装的Tomcat(称为tomcat-01)基础上,再复制一份。

cd /usr/local
sudo cp -r tomcat tomcat-02

复制之后,必须修改tomcat-02的端口号,否则会和tomcat-01冲突。编辑 tomcat-02/conf/server.xml

<!-- 将Server端口从8005改为8006 -->
<Server port="8006" shutdown="SHUTDOWN">
<!-- 将HTTP连接器端口从8080改为8081 -->
<Connector port="8081" protocol="HTTP/1.1" ... />
<!-- 将AJP连接器端口从8009改为8010 -->
<Connector port="8010" protocol="AJP/1.3" ... />

接下来,分别将你的应用WAR包(比如 myapp.war)放到两个Tomcat的 webapps/ 目录下。Tomcat会自动解压。你需要根据你的应用,修改其配置文件(通常是 WEB-INF/classes/ 下的 application.propertiesapplication.yml),正确指向刚才安装的MySQL和Redis的地址、端口、用户名和密码。

然后,为两个Tomcat实例分别创建systemd服务文件,比如 tomcat-01.servicetomcat-02.service,步骤和之前一样,只是 CATALINA_HOME 等路径要指向各自的目录。启动并启用这两个服务。

sudo systemctl start tomcat-01
sudo systemctl start tomcat-02
sudo systemctl enable tomcat-01
sudo systemctl enable tomcat-02

systemctl status 检查状态,并用浏览器分别访问 http://你的IP:8080/myapphttp://你的IP:8081/myapp,确保两个应用都能独立正常访问。这样,两个完全相同的应用实例就准备就绪了。

4.2 Nginx配置:反向代理、负载均衡与动静分离

Nginx在这里扮演着“交通指挥官”的角色。它对外提供一个统一的入口(比如80端口),将用户的请求按照一定规则分发给后端的两个Tomcat,并且可以直接处理静态文件,减轻Tomcat的压力。

首先安装Nginx。银河麒麟的yum源里通常就有:

sudo yum install -y nginx

安装完成后,主要的配置文件是 /etc/nginx/nginx.conf。不过,更好的做法是在 /etc/nginx/conf.d/ 目录下为我们的应用创建一个独立的配置文件,比如 myapp.conf,这样管理起来更清晰。

sudo vim /etc/nginx/conf.d/myapp.conf

配置文件内容如下,我加了详细的注释:

# 定义上游服务器组,名为 tomcat_cluster
upstream tomcat_cluster {
    # 配置两个Tomcat节点,weight代表权重,数字越大分配的请求越多
    server 127.0.0.1:8080 weight=1;
    server 127.0.0.1:8081 weight=1;
    # 可以添加更多参数,如 max_fails(失败次数)、fail_timeout(超时时间)
}

server {
    listen 80; # Nginx监听的端口
    server_name your-domain.com www.your-domain.com; # 你的域名,没有就写服务器IP

    # 静态资源处理:Nginx直接处理图片、CSS、JS等,效率远高于Tomcat
    location ~ .*\.(gif|jpg|jpeg|png|css|js|ico|html|txt)$ {
        # 假设你的前端静态文件放在 /usr/share/nginx/html/ 下
        root /usr/share/nginx/html;
        # 设置浏览器缓存时间,减轻服务器压力
        expires 30d;
        # 尝试直接访问文件,找不到再尝试目录,最后返回404
        try_files $uri $uri/ =404;
    }

    # 动态API请求:转发到后端的Tomcat集群
    location /api/ { # 假设你的后端API都以 /api 开头
        # 将请求代理到上游服务器组
        proxy_pass http://tomcat_cluster;
        # 以下是一系列重要的代理头设置,确保后端能获取到真实客户端信息
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        # 设置连接超时时间
        proxy_connect_timeout 30s;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;
    }

    # 对于根路径或首页,也转发到Tomcat(或者如果你的首页是静态的,可以指向root)
    location / {
        proxy_pass http://tomcat_cluster;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

这个配置实现了:

  1. 负载均衡:用户请求到达Nginx后,会被轮询(默认方式,配合weight权重)分发到后端的8080和8081端口。
  2. 动静分离:所有图片、样式表、脚本等静态文件请求,都由Nginx直接从硬盘读取并返回,速度极快。只有 /api/ 这样的动态请求才会交给Tomcat处理。
  3. 反向代理:对外隐藏了后端Tomcat的真实端口和地址,提升了安全性。

配置完成后,检查语法是否正确,然后启动Nginx:

sudo nginx -t  # 测试配置文件语法
sudo systemctl start nginx
sudo systemctl enable nginx
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload

现在,你只需要访问 http://你的服务器IP 或你的域名,所有的流量都会经过Nginx这个智能网关,被妥善地分发和处理。你可以通过查看Nginx的访问日志(/var/log/nginx/access.log)和两个Tomcat的日志,来观察请求是如何被分配的。在实际使用中,你还可以通过调整 weight 参数,给性能更好的服务器分配更多请求,或者配置 ip_hash 来实现会话保持,让同一用户的请求总是落到同一台Tomcat上。这套组合拳下来,一个具备基本高可用和性能扩展能力的企业级应用部署架构,就在银河麒麟上稳稳地跑起来了。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值