🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用,熟悉DICOM医学影像及DICOM协议,业余时间自学JavaScript,Vue,qt,python等,具备多种混合语言开发能力。撰写博客分享知识,致力于帮助编程爱好者共同进步。欢迎关注、交流及合作,提供技术支持与解决方案。
技术合作请加本人wx(注明来自csdn):xt20160813
麒麟系统安装 Nginx 作为非 Web 程序的完整指南
一、背景与优势
麒麟操作系统是国产 Linux 发行版,支持龙芯、飞腾等国产硬件,广泛用于政府、企业和教育领域。Nginx 是一个高性能服务器,不仅限于 Web 服务,还可作为反向代理、负载均衡器、TCP/UDP 代理或邮件代理等非 Web 程序。非 Web 场景包括:
- 反向代理:为 API、数据库等提供统一入口。
- 负载均衡:分发流量到多个节点。
- TCP/UDP 代理:支持 MySQL、RabbitMQ 等协议。
- 邮件代理:处理 IMAP/POP3/SMTP。
优势:
- 高并发处理能力,单实例支持数万连接。
- 模块化配置,适配多种协议。
- 在麒麟系统上运行稳定,兼容国产硬件。
- 通过
systemd
集成,便于管理。
麒麟操作系统(Kylin OS)通常基于 Debian/Ubuntu 或 CentOS/RHEL 体系,因此包管理器和部分操作命令会因系统基础而异。本指南将明确区分 Debian/Ubuntu 系麒麟系统 和 CentOS/RHEL 系麒麟系统 的命令差异,详细介绍在麒麟系统上安装 Nginx 并配置其作为非 Web 程序(如 TCP 代理或负载均衡器)的完整流程。内容涵盖安装、配置、调试、优化及常见问题解决方案,结合历史对话中的上下文(如服务管理和 Fitten Code 集成),并针对两种系统类型提供准确的命令。
本文以 TCP 代理 MySQL 和 HTTP 负载均衡 为例,展示配置流程,并区分 Debian/Ubuntu 和 CentOS/RHEL 系命令。
二、准备工作
开始前,请确保:
- 系统环境:麒麟操作系统(V10 或以上,桌面版/服务器版)。
确认版本(如 Kylin V10 SP1)及体系(Debian/Ubuntu 或 CentOS/RHEL)。lsb_release -a
- 权限:使用
sudo
或 root 用户。 - 网络:系统可访问软件源。
- 后端服务:准备后端服务,如 MySQL(IP: 192.168.1.100, 端口: 3306)。
- 确认包管理器:
- Debian/Ubuntu 系:使用
apt
。 - CentOS/RHEL 系:使用
yum
或dnf
。
- Debian/Ubuntu 系:使用
三、安装 Nginx
Nginx在麒麟系统的离线安装可参考这位大佬的文章,写的很详细:https://blog.csdn.net/qq_40850482/article/details/146223871
麒麟系统支持包管理器或源码安装 Nginx。以下区分两种体系,提供详细步骤。
3.1 使用包管理器安装(推荐)
Debian/Ubuntu 系麒麟系统
-
更新软件源:
sudo apt update
若默认源较慢,可配置国内镜像(如清华源):
sudo vi /etc/apt/sources.list # 示例:添加清华源 deb https://mirrors.tuna.tsinghua.edu.cn/kylin/kylin main restricted universe multiverse sudo apt update
-
安装 Nginx:
sudo apt install nginx -y
自动安装依赖(如
libpcre3
、zlib1g
)。 -
验证安装:
nginx -v
示例输出:
nginx version: nginx/1.18.0
-
检查服务:
sudo systemctl status nginx
确认状态为
active (running)
。
CentOS/RHEL 系麒麟系统
-
更新软件源:
sudo yum update
或使用
dnf
(较新版本):sudo dnf update
配置国内镜像(如阿里源):
sudo vi /etc/yum.repos.d/kylin.repo # 示例:添加阿里源 [kylin] name=Kylin baseurl=https://mirrors.aliyun.com/kylin/$releasever/$basearch/ enabled=1 gpgcheck=0 sudo yum update
-
安装 Nginx:
sudo yum install nginx -y
或:
sudo dnf install nginx -y
-
验证安装:
nginx -v
-
检查服务:
sudo systemctl status nginx
3.2 源码编译安装(可选)
若需要特定模块(如 stream
模块),可源码安装,适用于两种体系。
-
安装依赖:
- Debian/Ubuntu 系:
sudo apt install build-essential libpcre3-dev zlib1g-dev libssl-dev -y
- CentOS/RHEL 系:
或:sudo yum install gcc make pcre-devel zlib-devel openssl-devel -y
sudo dnf install gcc make pcre-devel zlib-devel openssl-devel -y
- Debian/Ubuntu 系:
-
下载源码:
wget http://nginx.org/download/nginx-1.24.0.tar.gz tar -zxvf nginx-1.24.0.tar.gz cd nginx-1.24.0
-
配置编译:
启用stream
模块:./configure --prefix=/usr/local/nginx \ --with-stream \ --with-http_ssl_module \ --with-pcre
-
编译安装:
make && sudo make install
-
创建 systemd 服务:
编辑/etc/systemd/system/nginx.service
:[Unit] Description=Nginx - High Performance Server After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s quit PrivateTmp=true [Install] WantedBy=multi-user.target
-
启用服务:
sudo systemctl daemon-reload sudo systemctl start nginx sudo systemctl enable nginx
注意:源码安装需手动维护,生产环境推荐包管理器。
四、配置 Nginx 作为非 Web 程序
以下以 TCP 代理 MySQL 和 HTTP 负载均衡 为例,配置步骤在两种体系下通用。
4.1 TCP 代理(MySQL 数据库)
Nginx 的 stream
模块支持 TCP/UDP 代理。
-
确认 stream 模块:
nginx -V 2>&1 | grep stream
应包含
--with-stream
。若无,需源码编译。 -
编辑配置文件:
- 默认路径:
- Debian/Ubuntu 系:
/etc/nginx/nginx.conf
- CentOS/RHEL 系:
/etc/nginx/nginx.conf
- Debian/Ubuntu 系:
sudo vi /etc/nginx/nginx.conf
添加:
stream { upstream mysql_backend { server 192.168.1.100:3306; } server { listen 3306; proxy_pass mysql_backend; proxy_timeout 10s; proxy_connect_timeout 5s; } }
说明:
upstream
:定义后端。server
:监听并转发。proxy_timeout
:超时设置。
- 默认路径:
-
验证配置:
sudo nginx -t
-
重启 Nginx:
sudo systemctl restart nginx
-
测试代理:
mysql -h 127.0.0.1 -P 3306 -u root -p
4.2 HTTP 负载均衡(API 服务)
-
编辑配置文件:
在http
块添加:sudo vi /etc/nginx/nginx.conf
http { upstream api_backend { server 192.168.1.101:8080; server 192.168.1.102:8080; least_conn; } server { listen 80; server_name api.example.com; location / { proxy_pass http://api_backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } }
-
验证并重启:
sudo nginx -t sudo systemctl restart nginx
-
测试:
curl http://api.example.com
4.3 配置管理建议
- 模块化:
- Debian/Ubuntu 系:存放于
/etc/nginx/conf.d/
或/etc/nginx/sites-available/
。 - CentOS/RHEL 系:存放于
/etc/nginx/conf.d/
。
sudo vi /etc/nginx/conf.d/mysql_proxy.conf
- Debian/Ubuntu 系:存放于
- 备份:
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
五、常用操作命令
命令在两种体系下通用:
- 启动:
sudo systemctl start nginx
- 停止:
sudo systemctl stop nginx
- 重启:
sudo systemctl restart nginx
- 平滑重载:
sudo nginx -s reload
- 状态:
sudo systemctl status nginx
- 日志:
- 访问日志:
/var/log/nginx/access.log
- 错误日志:
/var/log/nginx/error.log
tail -f /var/log/nginx/error.log
- 访问日志:
- 开机自启:
sudo systemctl enable nginx
六、调试与监控
6.1 日志分析
- 错误日志:
tail -n 50 /var/log/nginx/error.log
- 访问日志:
tail -n 50 /var/log/nginx/access.log
6.2 性能监控
- 安装工具:
- Debian/Ubuntu 系:
sudo apt install htop -y
- CentOS/RHEL 系:
sudo yum install htop -y
htop
- Debian/Ubuntu 系:
- 检查连接:
ss -tuln | grep :3306
6.3 结合 Fitten Code
参考历史对话,使用 Fitten Code 生成配置:
# 输入:@Fitten 生成 Nginx TCP 代理配置
stream {
upstream backend {
server 192.168.1.100:3306;
}
server {
listen 3306;
proxy_pass backend;
}
}
七、常见问题与解决方案
问题 | 解决方案 |
---|---|
启动失败 | 检查语法:sudo nginx -t ;查看日志:tail /var/log/nginx/error.log ;确认端口:netstat -tuln | grep 3306 。 |
无 stream 模块 | 重新编译启用 --with-stream 。 |
后端超时 | 测试后端:telnet 192.168.1.100 3306 ;增加 proxy_timeout 。 |
日志过大 | 配置轮转: - Debian/Ubuntu 系: sudo vi /etc/logrotate.d/nginx - CentOS/RHEL 系: sudo vi /etc/logrotate.d/nginx /var/log/nginx/*.log { daily; rotate 7; } 。 |
权限问题 | 确保 www-data (Debian/Ubuntu)或 nginx (CentOS/RHEL)用户有权限:sudo chown www-data:www-data /var/log/nginx (Debian/Ubuntu)sudo chown nginx:nginx /var/log/nginx (CentOS/RHEL)。 |
八、优化与扩展
8.1 性能优化
- 进程数:
worker_processes auto;
- 连接数:
events { worker_connections 1024; }
8.2 安全性
- 防火墙:
- Debian/Ubuntu 系:
sudo ufw allow 3306/tcp sudo ufw enable
- CentOS/RHEL 系:
sudo firewall-cmd --add-port=3306/tcp --permanent sudo firewall-cmd --reload
- Debian/Ubuntu 系:
- SSL:
server { listen 3306 ssl; ssl_certificate /etc/nginx/ssl/cert.pem; ssl_certificate_key /etc/nginx/ssl/key.pem; proxy_pass mysql_backend; }
8.3 高可用
- 健康检查:
upstream mysql_backend { server 192.168 nis:3306 max_fails=3 fail_timeout=30s; }
九、总结
本指南针对麒麟系统的 Debian/Ubuntu 和 CentOS/RHEL 系,详细介绍了安装和配置 Nginx 作为非 Web 程序的流程。核心步骤:
- 使用
apt
(Debian/Ubuntu)或yum
/dnf
(CentOS/RHEL)安装。 - 配置
stream
或http
模块。 - 通过
systemctl
管理服务。 - 优化性能和安全性。
建议:
- 根据系统类型选择正确包管理器。
- 使用 Fitten Code 提升配置效率。
- 定期检查日志和后端状态。
参考资料
- 麒麟操作系统:https://www.kylinos.cn/
- Nginx 文档:https://nginx.org/en/docs/