Kylin进阶教程

2026年8月27日星期四·#部署文档Linux/信创/运维·2282 字 11 分钟·
-浏览量
·
简介

基于银河麒麟Server V10的运维环境实战

导读

本文根据银河麒麟Server V10运维真实环境配置教程,内容涵盖Docker、Mariadb 主备、Harbor、GlusterFS、Tomcat、Haproxy、rsyslog、Ansible、PostgreSQL

一、server1 系统环境配置#

1、修改主机名#

Terminal window
hostnamectl set-hostname server1.kylin.com
bash

2、创建多级目录并查看#

Terminal window
mkdir -p ~/kylin/docs/note
find ~/kylin -type d

3、复制文件并改名#

Terminal window
cp /etc/passwd ~/passwd_backup

4、查看文件权限并修改为 640#

Terminal window
ls -l /root/passwd_backup
chmod 640 /root/passwd_backup

5、配置 YUM 仓库源#

Terminal window
cd /etc/yum.repos.d/
mv kylin_x86_64.repo kylin_x86_64.repo.bak
vim local.repo
[local]
name=Local Kylin Repo
baseurl=http://192.168.122.1:58000/kylinsrv
enabled=1
gpgcheck=0
Terminal window
yum clean all
yum makecache

6、安装配置 vsftpd#

Terminal window
yum install -y vsftpd
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_root=/data/ftp/
local_enable=YES
write_enable=YES
listen=YES
listen_ipv6=NO
# 受限用户 chroot
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES
# 双份日志
xferlog_enable=YES
xferlog_file=/var/log/xferlog
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log

创建 ftp 用户并限制主目录:

Terminal window
useradd -s /sbin/nologin -d /home/kylinftp kylinftp
passwd kylinftp
touch /etc/vsftpd/chroot_list

将 /etc/pam.d/vsftpd 中的 auth required pam_shells.so 一行注释掉,避免 nologin 用户无法登录。

Terminal window
systemctl enable --now vsftpd
systemctl restart vsftpd

7、配置 chrony 时间服务器#

Terminal window
yum install -y chrony
vim /etc/chrony.conf
server 192.168.122.1 iburst
allow 172.16.0.0/16
Terminal window
systemctl restart chronyd
chronyc sources

8、配置 DNS 正向解析#

Terminal window
yum install -y bind
sed -i '/listen-on port 53/s/127.0.0.1/any/' /etc/named.conf
sed -i '/allow-query/s/localhost/any/' /etc/named.conf
cat >> /etc/named.rfc1912.zones <<EOF
zone "kylin.com" IN {
type master;
file "kylin.com.zone";
};
EOF
Terminal window
cat > /var/named/kylin.com.zone << 'EOF'
$TTL 1D
@ IN SOA server1.kylin.com. rname.invalid. (
2025010101 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS server1.kylin.com.
server1 A 172.16.50.231
server2 A 172.16.50.232
EOF
chown named:named /var/named/kylin.com.zone
systemctl enable --now named
systemctl restart named
nslookup server1.kylin.com 127.0.0.1
nslookup server2.kylin.com 127.0.0.1

9、配置 NFS 网络共享#

Terminal window
yum install -y nfs-utils
mkdir -p /nfsdata/KY01 /nfsdata/KY02
cat > /etc/exports <<EOF
/nfsdata/KY01 172.16.50.0/24(rw,sync,no_root_squash)
/nfsdata/KY02 server2.kylin.com(ro,sync,no_root_squash)
EOF
systemctl enable --now rpcbind nfs-server
exportfs -r
showmount -e localhost

二、server1 Docker 容器集群管理#

1、二进制方式部署 Docker 20.10.9#

Terminal window
cd /opt/software/
tar xf docker-20.10.9.tgz
cp docker/* /usr/bin/
mkdir -p /etc/docker
vim /etc/docker/daemon.json
{
"data-root": "/var/lib/docker",
"storage-driver": "overlay2"
}
Terminal window
cat > /usr/lib/systemd/system/docker.service <<'EOF'
[Unit]
Description=Docker Application Container Engine
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now docker
docker version

2、导入镜像并创建容器#

Terminal window
docker load -i /opt/software/kylin-10-sp3.tar.xz
docker images
docker run -itd --name kylin-1 --cpus=1 -m 2g kylin:laster /bin/bash
docker run -itd --name kylin-2 --cpus=1 -m 2g kylin:laster /bin/bash
docker ps

3、容器内安装配置 Mariadb#

将安装包拷入容器并进入容器安装:

Terminal window
docker cp /opt/software/mariadb-*.tar.gz kylin-1:/tmp/
docker cp /opt/software/mariadb-*.tar.gz kylin-2:/tmp/
docker exec -it kylin-1 bash

容器内(kylin-1、kylin-2 均执行):

Terminal window
useradd -M -s /sbin/nologin mysql
mkdir -p /opt/mariadb /data/mysql /var/log/mysql
tar xf /tmp/mariadb-*.tar.gz -C /opt/mariadb --strip-components=1
chown -R mysql:mysql /data/mysql /var/log/mysql
/opt/mariadb/bin/mysqld --initialize-insecure --user=mysql --datadir=/data/mysql
/opt/mariadb/bin/mysqld_safe --user=mysql --datadir=/data/mysql &

登录并设置 root 密码、开放网段授权:

/opt/mariadb/bin/mysql -uroot
ALTER USER 'root'@'localhost' IDENTIFIED BY 'you_passwd';
CREATE USER 'root'@'%' IDENTIFIED BY 'you_passwd';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.16.%' IDENTIFIED BY 'you_passwd';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.17.%' IDENTIFIED BY 'you_passwd';
FLUSH PRIVILEGES;

4、Mariadb 互为主备#

修改 /etc/my.cnf 配置(kylin-1 上):

[mysqld]
server-id = 1
log-bin = mysql-bin
binlog_format = row
auto_increment_increment = 2
auto_increment_offset = 1

kylin-2 上 server-id = 2、auto_increment_offset = 2。

重启两容器数据库:

Terminal window
/opt/mariadb/bin/mysqladmin -uroot -pyou_passwd shutdown
/opt/mariadb/bin/mysqld_safe --user=mysql --datadir=/data/mysql &

两容器均创建备份用户:

/opt/mariadb/bin/mysql -uroot -pyou_passwd
CREATE USER 'backup'@'%' IDENTIFIED BY 'you_passwd';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'backup'@'%';
FLUSH PRIVILEGES;

kylin-1 上指向 kylin-2:

CHANGE MASTER TO MASTER_HOST='kylin-2', MASTER_USER='backup', MASTER_PASSWORD='you_passwd', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=4;
START SLAVE;

kylin-2 上指向 kylin-1:

CHANGE MASTER TO MASTER_HOST='kylin-1', MASTER_USER='backup', MASTER_PASSWORD='you_passwd', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=4;
START SLAVE;

验证:

SHOW SLAVE STATUS\G;

5、创建数据库与表#

/opt/mariadb/bin/mysql -uroot -pyou_passwd
CREATE DATABASE kylin_db1;
USE kylin_db1;
CREATE TABLE student_info (
Id INT PRIMARY KEY AUTO_INCREMENT,
Name VARCHAR(20) NOT NULL,
Birthday DATE NOT NULL,
Gender ENUM('male','female','x') NOT NULL DEFAULT 'x',
Password VARCHAR(100) NOT NULL
);
INSERT INTO student_info (Name, Birthday, Gender, Password) VALUES
('tom', '1990-04-12', 'male', PASSWORD('you_passwd')),
('harry', '1993-07-05', 'female', PASSWORD('you_passwd')),
('barry', '1992-02-23', 'male', PASSWORD('you_passwd'));
SELECT * FROM student_info;

三、server1 Harbor 镜像仓库#

1、docker-compose 离线安装 Harbor#

Terminal window
cp /opt/software/docker-compose /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose version
cd /opt/software/
tar zxf harbor-offline-installer-*.gz
cd harbor
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
hostname: 172.16.50.231
http:
port: 8000
harbor_admin_password: you_passwd
database:
password: you_passwd
data_volume: /data/harbor
Terminal window
./install.sh
docker-compose ps

2、API 创建用户、项目并添加成员#

Terminal window
curl -u "admin:you_passwd" -X POST \
"http://172.16.50.231:8000/api/v2.0/users" \
-H "Content-Type: application/json" \
-d '{"username":"kylin","email":"kylin@yourdomain.com","password":"you_passwd","realname":"Kylin User","comment":"User created via API"}'
curl -u "admin:you_passwd" -X POST \
"http://172.16.50.231:8000/api/v2.0/projects" \
-H "Content-Type: application/json" \
-d '{"project_name":"kylin_web","metadata":{"public":"false"}}'
curl -u "admin:you_passwd" -X GET \
"http://172.16.50.231:8000/api/v2.0/users?username=kylin"
curl -u "admin:you_passwd" -X POST \
"http://172.16.50.231:8000/api/v2.0/projects/kylin_web/members" \
-H "Content-Type: application/json" \
-d '{"role_id": 4, "member_user": {"username": "kylin", "user_id": 5}}'

3、上传镜像到 Harbor#

Terminal window
docker login 172.16.50.231:8000 -u kylin -p you_passwd
docker tag kylin:laster 172.16.50.231:8000/kylin_web/kylin:laster
docker push 172.16.50.231:8000/kylin_web/kylin:laster

四、GlusterFS 存储集群(两台主机执行)#

Terminal window
yum install -y glusterfs-server
systemctl enable --now glusterd

1、格式化磁盘并挂载(两台)#

Terminal window
mkfs.xfs /dev/vdb
mkfs.xfs /dev/vdc
mkdir -p /data/storage/bricks01 /data/storage/bricks02
mkdir -p /data/storage/bricks01/safe_pool /data/storage/bricks02/data_pool
echo "/dev/vdb /data/storage/bricks01 xfs defaults 0 0" >> /etc/fstab
echo "/dev/vdc /data/storage/bricks02 xfs defaults 0 0" >> /etc/fstab
mount -a
df -h

2、添加信任存储节点#

Terminal window
gluster peer probe server2.kylin.com
gluster peer status

3、创建复制卷 gv_safe#

Terminal window
gluster volume create gv_safe replica 2 \
server1.kylin.com:/data/storage/bricks01/safe_pool \
server2.kylin.com:/data/storage/bricks01/safe_pool

4、创建分布式卷 gv_data#

Terminal window
gluster volume create gv_data \
server1.kylin.com:/data/storage/bricks02/data_pool \
server2.kylin.com:/data/storage/bricks02/data_pool

5、启动卷并设置访问控制#

Terminal window
gluster volume start gv_safe
gluster volume start gv_data
gluster volume set gv_safe auth.allow 172.16.50.0/24
gluster volume info

五、server1 Java 应用环境配置#

1、部署 Java 与 Tomcat#

Terminal window
mkdir -p /opt/java /opt/tomcat1 /opt/tomcat2
tar xf /opt/software/java-23.tar.gz -C /opt/java --strip-components=1
tar xf /opt/software/apache-tomcat-10.1.94.tar.gz -C /opt/tomcat1 --strip-components=1
cp -r /opt/tomcat1/* /opt/tomcat2/

2、创建 tomcat 用户#

Terminal window
groupadd -g 1080 tomcat
useradd -u 1080 -g tomcat -s /sbin/nologin -M tomcat
chown -R tomcat:tomcat /opt/java /opt/tomcat1 /opt/tomcat2

3、配置 Java 环境变量#

Terminal window
cat >> /home/tomcat/.bash_profile <<EOF
export JAVA_HOME=/opt/java
export CLASSPATH=/opt/java/lib
export PATH=$PATH:/opt/java/bin
EOF

4、配置两套 Tomcat 端口#

Terminal window
sed -i 's/port="8080"/port="8081"/' /opt/tomcat1/conf/server.xml
sed -i 's/port="8005"/port="8006"/' /opt/tomcat1/conf/server.xml
sed -i 's/port="8009"/port="8010"/' /opt/tomcat1/conf/server.xml
sed -i 's/port="8080"/port="8082"/' /opt/tomcat2/conf/server.xml
sed -i 's/port="8005"/port="8007"/' /opt/tomcat2/conf/server.xml
sed -i 's/port="8009"/port="8011"/' /opt/tomcat2/conf/server.xml

5、配置默认首页#

Terminal window
echo "helloJava_ps_1" > /opt/tomcat1/webapps/ROOT/index.jsp
echo "helloJava_ps_2" > /opt/tomcat2/webapps/ROOT/index.jsp

6、tomcat.service 统一管理两套实例#

Terminal window
cat > /etc/systemd/system/tomcat.service <<'EOF'
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment=JAVA_HOME=/opt/java
ExecStart=/bin/bash -c '/opt/tomcat1/bin/startup.sh && /opt/tomcat2/bin/startup.sh'
ExecStop=/bin/bash -c '/opt/tomcat1/bin/shutdown.sh && /opt/tomcat2/bin/shutdown.sh'
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now tomcat
systemctl start tomcat
systemctl stop tomcat

验证:

Terminal window
curl http://172.16.50.231:8081/
curl http://172.16.50.231:8082/

六、server1 配置负载均衡 Haproxy#

Terminal window
rpm -ivh /opt/software/haproxy-*.rpm
vim /etc/haproxy/haproxy.cfg
global
maxconn 4096
defaults
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http_front
bind *:8088
default_backend java_servers
backend java_servers
balance roundrobin
server tomcat1 127.0.0.1:8081 check
server tomcat2 127.0.0.1:8082 check
listen stats
bind *:8009
mode http
stats enable
stats uri /haproxy?stats
Terminal window
systemctl enable --now haproxy
systemctl restart haproxy
curl http://172.16.50.231:8088/
curl "http://172.16.50.231:8009/haproxy?stats"

七、server1 日志管理#

1、Tomcat 日志统一存放并修改前缀#

Terminal window
mkdir -p /var/log/tomcat/logs
chown tomcat:tomcat /var/log/tomcat/logs
sed -i 's|CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out|CATALINA_OUT=/var/log/tomcat/logs/tomcat_1-catalina.out|' /opt/tomcat1/bin/catalina.sh
sed -i 's|^1catalina.org.apache.juli.AsyncFileHandler.prefix=catalina.|1catalina.org.apache.juli.AsyncFileHandler.prefix=tomcat_1-catalina.|' /opt/tomcat1/conf/logging.properties
sed -i 's|CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out|CATALINA_OUT=/var/log/tomcat/logs/tomcat_2-catalina.out|' /opt/tomcat2/bin/catalina.sh
sed -i 's|^1catalina.org.apache.juli.AsyncFileHandler.prefix=catalina.|1catalina.org.apache.juli.AsyncFileHandler.prefix=tomcat_2-catalina.|' /opt/tomcat2/conf/logging.properties
systemctl restart tomcat
ls /var/log/tomcat/logs/

2、rsyslog 发送日志到 server2#

Terminal window
cat > /etc/rsyslog.d/10-forwards.conf <<EOF
*.* @@172.16.50.232:514
EOF
systemctl restart rsyslog

八、server2 系统环境配置#

1、修改主机名#

Terminal window
hostnamectl set-hostname server2.kylin.com
bash

2、配置 YUM 源(ftp)#

Terminal window
cat > /etc/yum.repos.d/ftp.repo <<EOF
[ftp]
name=Server1 FTP Repo
baseurl=ftp://server1.kylin.com
enabled=1
gpgcheck=0
EOF
yum clean all
yum makecache

3、用户组管理与密码策略#

Terminal window
groupadd devgroup
useradd -G devgroup dev1
useradd -G devgroup dev2
passwd dev1
cat > /etc/sudoers.d/devgroup <<EOF
%devgroup ALL=(ALL) NOPASSWD: ALL
EOF
chage -M 90 -W 7 -m 2 dev1
chage -l dev1

4、目录 SGID 特殊权限#

Terminal window
mkdir /opt/project
chown root:devgroup /opt/project
chmod 2775 /opt/project

5、创建 pk.sh 监控脚本#

cat > /opt/pk.sh <<'EOF'
#!/bin/bash
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed 's/.*, *\([0-9.]*\)%* id.*/\1/' | awk '{print 100-$1}')
MEM_TOTAL=$(free -m | awk '/^Mem:/{print $2}')
MEM_USED=$(free -m | awk '/^Mem:/{print $3}')
MEM_PERCENT=$(awk -v u="$MEM_USED" -v t="$MEM_TOTAL" 'BEGIN{printf "%.1f", u/t*100}')
echo "CPU Usage: ${CPU_USAGE}%"
echo "Memory Usage: ${MEM_USED}/${MEM_TOTAL}MB(${MEM_PERCENT}%)"
EOF
chmod 750 /opt/pk.sh
/opt/pk.sh | tee /var/log/monitor.log

6、创建 info.sh 参数脚本#

cat > /opt/info.sh <<'EOF'
#!/bin/bash
if [ "$1" = "kylin" ] || [ "$1" = "ITAI" ]; then
echo "$1"
else
echo "Error 99" >&2
fi
EOF
chmod 750 /opt/info.sh
/opt/info.sh kylin
/opt/info.sh ITAI
/opt/info.sh xx

7、配置 chrony 时间同步#

Terminal window
yum install -y chrony
sed -i '/^pool /d' /etc/chrony.conf
echo "server server1.kylin.com iburst" >> /etc/chrony.conf
systemctl restart chronyd
chronyc sources

8、指定 DNS 服务器#

Terminal window
echo "nameserver 172.16.50.231" > /etc/resolv.conf
nslookup server1.kylin.com
nslookup server2.kylin.com

9、网络共享#

Terminal window
yum install -y nfs-utils autofs
mkdir -p /nfs/net_public /nfsdata/net_dir

KY01 使用 autofs 挂载:

Terminal window
cat >> /etc/auto.master <<EOF
/nfs/net_public /etc/auto.misc --timeout=60
EOF
cat >> /etc/auto.misc <<EOF
KY01 -fstype=nfs,rw server1.kylin.com:/nfsdata/KY01
EOF
systemctl enable --now autofs
systemctl restart autofs
ls /nfs/net_public/KY01
df -h

KY02 开机自动挂载:

Terminal window
echo "server1.kylin.com:/nfsdata/KY02 /nfsdata/net_dir nfs ro,_netdev 0 0" >> /etc/fstab
mount -a
df -h

九、server2 Ansible 自动化部署 nginx#

1、安装 ansible 并配置清单#

Terminal window
rpm -ivh /opt/software/ansible-*.rpm
mkdir -p /etc/ansible
cat > /etc/ansible/hosts <<EOF
[web]
server1.kylin.com
EOF
ssh-keygen -t rsa -N ""
ssh-copy-id root@server1.kylin.com

2、创建 nginx role#

Terminal window
mkdir -p /etc/ansible/roles/nginx/{tasks,templates,files}
cp /opt/software/nginx.conf /etc/ansible/roles/nginx/files/
cp /opt/software/nginx.j2 /etc/ansible/roles/nginx/templates/
cp /opt/software/nginx-*.rpm /etc/ansible/roles/nginx/files/nginx.rpm
Terminal window
cat > /etc/ansible/roles/nginx/tasks/main.yml <<'EOF'
---
- name: 拷贝 nginx 软件包
copy: src=nginx.rpm dest=/opt/software/nginx.rpm
- name: 安装 nginx
yum: name=/opt/software/nginx.rpm state=present
- name: 渲染 nginx 配置模板
template: src=nginx.j2 dest=/etc/nginx/nginx.conf
notify: restart nginx
- name: 启动 nginx
service: name=nginx state=started enabled=yes
EOF
Terminal window
cat > /etc/ansible/roles/nginx/handlers/main.yml <<'EOF'
---
- name: restart nginx
service: name=nginx state=restarted
EOF

3、编写 playbook 并执行#

Terminal window
cat > /etc/ansible/nginx.yml <<'EOF'
---
- hosts: web
roles:
- nginx
EOF
ansible-playbook /etc/ansible/nginx.yml
ansible web -m ping
curl http://server1.kylin.com/

十、server2 PostgreSQL 数据库运维#

1、安装初始化 postgresql#

Terminal window
rpm -ivh /opt/software/postgresql-server-*.rpm
/usr/bin/postgresql-setup --initdb
systemctl enable --now postgresql
Terminal window
vim /var/lib/pgsql/data/postgresql.conf
listen_addresses = '*'
port = 5432
Terminal window
cat >> /var/lib/pgsql/data/pg_hba.conf <<EOF
host all all 172.16.50.0/24 md5
EOF
systemctl restart postgresql

设置 postgres 口令:

Terminal window
su - postgres -c "psql -c \"ALTER USER postgres WITH PASSWORD 'you_passwd';\""

2、创建数据库并导入#

Terminal window
su - postgres -c "createdb company_db"
su - postgres -c "psql company_db < /opt/software/company_db.sql"

3、数据库操作(按顺序执行)#

查询每部门员工数量、平均薪资、最高薪资,按平均薪资降序:

Terminal window
su - postgres -c "psql company_db -c \"SELECT d.department_name, COUNT(e.employee_id) AS emp_count, AVG(e.salary) AS avg_salary, MAX(e.salary) AS max_salary FROM employees e JOIN departments d ON e.department_id = d.department_id GROUP BY d.department_name ORDER BY avg_salary DESC;\"" > /data/result_1.log

查询参与“ERP系统升级”项目的员工信息:

Terminal window
su - postgres -c "psql company_db -c \"SELECT e.employee_name, d.department_name, p.role, p.work_hours FROM employees e JOIN departments d ON e.department_id = d.department_id JOIN project_members p ON e.employee_id = p.employee_id JOIN projects pr ON p.project_id = pr.project_id WHERE pr.project_name = 'ERP系统升级';\"" > /data/result_2.log

查询薪资高于部门平均薪资的员工:

Terminal window
su - postgres -c "psql company_db -c \"SELECT e.employee_name, d.department_name, e.salary, a.avg_salary FROM employees e JOIN departments d ON e.department_id = d.department_id JOIN (SELECT department_id, AVG(salary) AS avg_salary FROM employees GROUP BY department_id) a ON e.department_id = a.department_id WHERE e.salary > a.avg_salary;\"" > /data/result_3.log

技术部(部门 ID 为 1)薪资低于 12000 的员工加薪 10%,最高不超过 13000:

Terminal window
su - postgres -c "psql company_db -c \"UPDATE employees SET salary = LEAST(salary * 1.1, 13000) WHERE department_id = 1 AND salary < 12000;\""

表名/字段名以 company_db.sql 实际结构为准,如不一致按实际结构调整 SQL。

4、挂载 gv_safe 并进行完整备份#

Terminal window
yum install -y glusterfs-client
mkdir -p /mnt/backup
echo "server1.kylin.com:/gv_safe /mnt/backup glusterfs defaults,_netdev 0 0" >> /etc/fstab
mount -a
df -h
su - postgres -c "pg_dump company_db" > /mnt/backup/db_backup.sql
ls -l /mnt/backup/

5、配置 crontab 定期备份#

mkdir -p /data/backup /data/script
cat > /data/script/backup.sh <<'EOF'
#!/bin/bash
su - postgres -c "pg_dump company_db" > /data/backup/db_backup_$(date +%F).sql
EOF
chmod +x /data/script/backup.sh
cat > /data/script/store.sh <<'EOF'
#!/bin/bash
tar czf /mnt/backup/db_backup_$(date +%F).tar.gz -C /data/backup db_backup_*.sql
EOF
chmod +x /data/script/store.sh
crontab -e
55 23 * * 0 bash /data/script/backup.sh
0 23 25 * * bash /data/script/store.sh
Terminal window
crontab -l

十一、server2 rsyslog 日志服务器#

Terminal window
vim /etc/rsyslog.conf

取消以下注释:

$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514

创建日志收集模板:

Terminal window
cat > /etc/rsyslog.d/20-logs-template.conf <<'EOF'
$template logs,"/var/log/remote/%HOSTNAME%/%programname%.log"
*.* ?logs
EOF
systemctl restart rsyslog

验证:

Terminal window
ss -tunlp | grep 514
ls /var/log/remote/
ls /var/log/remote/server1/
Kylin进阶教程
https://www.hellorx.site/posts/projects/projects-itai-kylin-20250001/
作者
RanXian
发布于
2026-08-27
许可协议
CC BY-NC-SA 4.0

评论区

公告
友链互换友链

正在招募技术类博客友链,要求原创、稳定更新。点击了解更多。

查看详情
音乐音乐功能提示

音乐功能第一首歌曲源出现一定问题暂时无法播放,跳过第一首歌曲即可

维护服务器升级

每周末凌晨 2:00-4:00 进行服务器维护,期间站点可能短暂无法访问。

欢迎关于我的介绍

欢迎来到我的博客,我是深耕云计算、网络安全和人工智能技术开发。热爱技术、持续学习,欢迎同好交流探讨,也欢迎大佬互换友链。

查看详情
音乐
封面

音乐

暂未播放

0:00
0:00
暂无歌词
标签
# 运维5# Linux4# 大学3# 信创3# 竞赛1# 组织1# 基础1# AI1# DeepSeek Harness1# 具身智能1# IsaacLab1# 强化学习1# Robotics1
目录
工具

隐私政策

更新日期: 2026 年 7 月 15 日
生效日期: 2026 年 7 月 15 日

适用范围#

本政策适用于 RanXian 的博客(以下简称“本站”)。本站是个人博客,用于发布和分享内容;不提供账户注册、支付、定位或广告投放服务。访问本站、发表文章评论或在留言板留言前,请阅读本政策。

信息收集与使用#

本站只在提供内容、评论和留言功能,以及维护站点安全所需的范围内处理信息。

  • 访问与统计信息:访问页面时,统计服务可能处理访问时间、页面地址、来源页、浏览器和设备相关信息,用于了解内容访问情况、排查故障和改进站点。
  • 评论信息:使用文章评论功能时,Waline 可能处理您主动提交的昵称、邮箱、站点链接和评论内容;还可能处理 IP 地址等必要信息,用于防止垃圾评论、滥用和维护服务安全。评论内容、昵称和站点链接(如填写)可能公开展示在文章下方;邮箱不会公开展示。
  • 留言信息:留言板使用 Waline /guestbook/ 频道。Waline 可能处理您主动提交的昵称、可选邮箱、站点链接、留言内容和图片,以及浏览器、操作系统、IP 地址等必要的反滥用信息。默认情况下,留言图片以内嵌数据随留言提交;如站点维护者配置了远程图片上传接口,图片会先发送至该接口并在留言中保存返回的图片地址。留言内容、昵称、图片和站点链接(如填写)可能公开展示;邮箱和 IP 地址不会在留言板公开展示。
  • AI 对话信息:使用 AI 搜索时,本站会处理您提交的问题以及最近 6 条对话历史,用于检索博客内容并生成回答。问题和对话历史会发送至 ModelScope,或在第三方接口不可用时由 Cloudflare Workers AI 处理。请勿在 AI 对话中提交密码、Token、身份证件、联系方式或其他敏感信息。

请不要在评论或留言中提交身份证件、银行卡、住址、密码或其他不必要的敏感个人信息。

第三方服务#

为实现本站功能,以下第三方会在各自服务范围内处理相关数据:

  • Umami:用于匿名化的网站访问统计和出站链接点击统计,帮助我了解本站的使用情况。
  • Waline:用于文章评论、留言板及访问量统计。服务会按照其自身规则处理您在评论或留言时提交的信息及必要的反滥用信息。
  • Cloudflare:为本站提供静态资源分发、AI Worker、Vectorize 和相关基础设施。留言板不使用项目 Worker 或 KV 存储。
  • ModelScope:为 AI 搜索提供文本向量和对话模型服务,会处理您提交的问题及发送给模型的最近对话历史。
  • Cloudflare Workers AI:在未配置第三方 AI 接口时提供文本向量和对话模型服务,并处理相同的 AI 请求数据。
  • unpkg:用于加载 Waline 的前端脚本、样式和表情资源;请求这些资源时,您的浏览器会与该服务建立连接。

第三方服务可能有独立的隐私政策和数据保存规则。请在使用相关功能前查阅其规则;本站无法控制其独立的数据处理活动。

本站主要使用浏览器本地存储(Local Storage 或 Session Storage)保存使用偏好,例如主题颜色、明暗模式、文章列表视图和音乐播放设置。留言板会在本地保存匿名资料、未发送草稿和登录状态,以便恢复输入与会话;管理员登录状态仅保存在当前会话。AI 搜索的会话标题和完整对话也会保存在当前浏览器的 Local Storage 中,最长保存 7 天;您可以在 AI 面板中使用“清空全部会话”立即删除这些数据。

本站不主动设置用于广告定向的第一方 Cookie。评论、统计或资源服务可能按照其自身规则使用 Cookie 或类似技术。您可以通过浏览器设置查看、删除或限制 Cookie 和本地存储;清除后,部分偏好或互动状态可能会恢复为默认值,评论功能也可能受到影响。

信息公开、保存与安全#

评论和留言属于公开互动内容,提交后可能被搜索引擎收录、被他人引用或在缓存中短暂保留。请谨慎决定发布内容。除非您提出删除请求、内容违反规则或法律法规另有要求,公开内容会持续保留以维持讨论上下文。

本站会采取合理措施保护数据安全,包括使用 HTTPS、输入校验、内容转义和访问频率限制。但互联网传输和第三方服务均无法保证绝对安全,请理解并自行承担公开发布信息的相应风险。

你的权利#

你可以通过 2639840766@qq.com 联系我,申请查询、更正或删除由本站直接保存的评论、留言或相关公开内容。为保护他人权益,请在请求中提供足以定位内容的信息,并说明你与该内容的关系;必要时可能需要进行合理核验。

对于由 Waline、Umami、Cloudflare 或 unpkg 独立处理的数据,你也可以直接向对应服务提供方行使相关权利。删除公开评论或留言后,第三方缓存、搜索引擎索引或他人转载的副本可能无法立即同步删除。

未成年人条款#

未满 14 周岁的未成年人应在监护人同意和指导下使用本站的评论、留言等互动功能。监护人如发现未成年人未经同意提交了个人信息,可通过上述联系方式与我联系,我会在合理范围内协助处理。

政策更新与联系#

我可能因本站功能或适用规则变化更新本政策,更新后的版本将在本站公布并标明日期。继续使用相关功能即表示你已阅读并理解更新后的政策。

如对本政策或数据处理有疑问,请联系 2639840766@qq.com。

用户协议

更新日期: 2026 年 5 月 19 日
生效日期: 2026 年 5 月 19 日

适用范围#

本协议适用于你访问 RanXian 的博客,以及使用文章评论、留言板等互动功能的行为。继续浏览本站或提交评论、留言,即表示你已阅读、理解并同意遵守本协议及本站的隐私政策。

评论及留言规则#

请在交流中保持友善、理性和尊重。你不得利用本站发布、传播或实施以下行为:

  • 发布任何违反中华人民共和国法律法规的内容。
  • 发布任何侵犯他人合法权益的内容,包括但不限于隐私、名誉、肖像、著作权、商标权和其他知识产权。
  • 恶意攻击、辱骂、骚扰、威胁、歧视其他用户或任何第三方。
  • 发布垃圾广告、恶意推广、刷屏、灌水,或与讨论主题明显无关的重复内容。
  • 利用本站进行网络诈骗、钓鱼、传播恶意软件,或发布可能危害网络和信息安全的内容。
  • 绕越或试图绕越本站的审核、限流、封禁等管理措施。
  • 冒充他人、伪造身份,或收集、公开他人的个人信息。

内容与访问管理#

你应对自己发布的评论和留言负责,并保证拥有发布该等内容所需的合法权利。论坛管理员有权在不另行通知的情况下删除违规内容、限制或封禁违规账号,或限制其继续使用本站互动功能。

如发现涉嫌违法犯罪、严重侵权或危及本站安全的内容,本站可保留相关记录,并在法律法规要求或必要时向有关部门提供协助。对管理措施有疑问时,可通过文末联系方式说明情况;本站会结合实际情况处理,但不承诺恢复已删除内容或访问权限。

知识产权与内容授权#

本站原创文章、页面设计和其他受保护内容的权利归作者或权利人所有。未经授权,请勿复制、转载、镜像或用于商业用途;法律法规允许的合理使用除外。

你发布评论或留言时,授予本站为展示、存储、备份、审核、删除和维护互动功能所必需的非独占、免费的使用许可。该许可不改变你对原创内容依法享有的权利。

免责声明#

本站内容仅用于个人记录、学习交流和一般信息参考,不构成任何专业意见、承诺或担保。你应结合自身情况独立判断,并对据此采取的行动负责。

评论、留言和外部链接中的内容由其发布者或运营者负责,不代表本站立场。本站会在合理范围内处理明显违规内容,但不保证所有内容均及时发现,也不对第三方网站的可用性、内容、安全性或隐私实践承担责任。

因网络故障、不可抗力、第三方服务异常、维护升级或超出合理控制范围的原因导致本站暂时无法访问、内容延迟或数据丢失的,本站会尽力恢复,但不承担由此产生的间接损失。

未成年人条款#

未满 14 周岁的未成年人应在监护人同意和指导下使用评论、留言等互动功能。监护人应协助未成年人理解本协议,并对其使用行为进行必要的引导。

其他条款#

我可以根据本站功能、管理需要或法律法规变化更新本协议,更新后的版本将在本站公布并标明日期。继续使用本站即视为接受更新后的协议。

本协议的订立、执行和解释适用中华人民共和国法律。因本协议或使用本站产生争议时,双方应先友好协商;协商不成的,依法向有管辖权的人民法院解决。

如对本协议或内容管理有疑问,请联系 2639840766@qq.com。