欧拉部署nginx

1.下载nginx

下载地址:https://nginx.org/en/download.html

选择稳定版本 下的镜像文件进行下载
在这里插入图片描述

2.解压Nginx包

cd /root/nginx
tar -zxvf nginx-1.26.0.tar.gz
cd nginx-1.26.0

3.安装nginx相关依赖

yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

4.生成 Makefile 可编译文件

./configure --with-http_ssl_module --with-http_stub_status_module

参数说明:

  • –prefix=PATH:指定 nginx 的安装目录(默认/usr/local/nginx)
  • –conf-path=PATH:指定 nginx.conf 配置文件路径
  • –user=NAME:nginx 工作进程的用户
  • –with-pcre:开启 PCRE 正则表达式的支持
  • with-http-realip_module:允许改变客户端请求头中客户端 IP 地址
  • –with-file-aio:启用 File AIO
  • –add-module=PATH:添加第三方外部模块

5.编译和安装

# 编译
make
# 安装
make install

默认的安装路径为:/usr/local/nginx

6.启动

cd /usr/local/nginx/sbin
# 启动
./nginx
# 查看进程
ps -ef | grep nginx
# 停止
/usr/local/nginx/sbin/nginx -s stop
# 重启
/usr/local/nginx/sbin/nginx -s restart

7.配置

非https配置

worker_processes  1;
events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    #gzip  on;
    
    upstream reverseProxyServer{
        ip_hash;
        #负载均衡应用服务器A: 权重为10,10s内连接请求失败2次,nginx在10s内认为server是不可用的,将不在发送请求给这台服务器
        server xxx.xxx.xx.xxx:9090 weight=10 max_fails=2 fail_timeout=10s; 
        #负载均衡应用服务器B: 代理服务器权重为5,10s内连接请求失败2次,nginx在10s内认为server是不可用的,将不在发送请求给这台服务器
        server xxx.xxx.xx.xxx:9090 weight=5 fail_timeout=10s max_fails=2;
    }
  
  upstream reverseGrafanaServer{
        ip_hash;
        server xxx.xxx.xx.xxx:3000 weight=10 max_fails=2 fail_timeout=10s;
        server xxx.xxx.xx.xxx:3000 weight=8 max_fails=2 fail_timeout=10s;
    }
  
    server {
        listen       80;
        server_name  xxx.com;
        proxy_redirect off;
        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_connect_timeout 30s;
        proxy_read_timeout 30s;
        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        location /{
            proxy_pass http://reverseProxyServer/;
        }
        location /grafana/{
            proxy_buffering on;
            proxy_buffer_size 4k;
            proxy_buffers 8 4M;
            proxy_busy_buffers_size 4M;
            proxy_pass http://reverseGrafanaServer/;
        }
    }
}

https配置

http {
  ...
  server {
        listen 80;
        server_name xxx.com;
        #将请求转成https
        rewrite ^(.*)$ https://$host$1 permanent;
    }
  
    server {
        listen       443 ssl;
        server_name  xxx.com;
        proxy_redirect off;
        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_connect_timeout 30s;
        proxy_read_timeout 30s;
        #charset koi8-r;
    
        #ssl证书的pem文件路径
        ssl_certificate  /usr/local/nginx/cert/server.crt;
        #ssl证书的key文件路径
        ssl_certificate_key /usr/local/nginx/cert/server.key;
            ....
    }
}

FAQ:遇到问题总结

问题1:nginx: [emerg] unknown directive “ssl”

解决方法
1.nginx生成 Makefile可编译文件时没有开启ssl,请参考步骤4
2.旧版本配置ssl和新版本不一致
server{
listen 443;
xxx
ssl on;
#ssl证书的pem文件路径
ssl_certificate /usr/local/nginx/cert/server.crt;
#ssl证书的key文件路径
ssl_certificate_key /usr/local/nginx/cert/server.key;
}
应改为
server{
listen 443 ssl;
xxx
#ssl证书的pem文件路径
ssl_certificate /usr/local/nginx/cert/server.crt;
#ssl证书的key文件路径
ssl_certificate_key /usr/local/nginx/cert/server.key;
}

问题2:curl: (60) SSL certificate problem: self signed certificate

解决方法:curl命令向服务器发送https请求, curl https的时候需要加上-k参数

问题3:nginx配了证书显示站点连接不安全

解决方法:我手里有crt和key证书,因为我用crt证书使用openssl命令生成pem证书配置上去的原因
解决方法直接配置crt和key证书就行

<think>好的,我现在需要回答用户关于如何将Python开发的API接口部署欧拉系统上的问题。首先,我得确认欧拉系统指的是哪个系统。通常“欧拉系统”可能指的是华为的openEuler操作系统,这是一个基于Linux的企业级服务器操作系统。所以假设用户指的是openEuler。 接下来,我需要考虑用户可能的需求。用户开发了一个Python API接口,现在需要部署到openEuler上。可能需要步骤包括环境准备、依赖安装部署方式等。 第一步,环境准备。确保openEuler系统已经正确安装,并且网络配置正常。需要安装Python环境,可能包括Python解释器、pip包管理工具等。openEuler可能默认安装了Python3,但版本可能不是最新的,需要检查是否需要升级或安装特定版本。 第二步,安装项目依赖。用户的项目可能依赖第三方库,比如Flask、Django、FastAPI等。需要指导用户使用requirements.txt文件,并通过pip安装依赖。这里需要注意openEuler的包管理可能与其它Linux发行版不同,可能需要使用dnf或yum来安装系统依赖,比如Python开发包、gcc编译器(如果有些依赖需要编译)。 第三步,部署方式选择。Python API的常见部署方式有几种:直接运行(开发模式)、使用WSGI服务器如Gunicorn、uWSGI,或者通过容器化部署如Docker。用户可能对生产环境部署感兴趣,因此需要介绍这些方法。 第四步,配置Web服务器。如果使用Gunicorn等WSGI服务器,可能需要结合Nginx或Apache作为反向代理,处理静态文件、SSL等。需要说明如何配置Nginx的反向代理设置。 第五步,进程管理和自启动。部署到生产环境后,需要确保服务在系统重启后自动启动,可以使用systemd创建服务单元文件,管理进程的启动、停止、重启。 第六步,安全性考虑。比如配置防火墙规则,使用非root用户运行服务,设置SSL证书等。 第七步,测试。部署完成后,如何测试API接口是否正常运行,使用curl或Postman发送请求验证。 可能遇到的问题:openEuler特有的包管理、权限问题、依赖库的兼容性等。需要提醒用户注意这些点,并给出常见解决方案。 现在需要将这些步骤结构化,用清晰的中文逐步说明,确保用户能够按照步骤操作。同时,按照系统级指令,正确使用LaTeX格式的行内公式和独立公式,但在这个问题中可能数学公式较少,不过如果有涉及代码或命令的地方,可能需要使用代码块,但用户没有特别要求,所以按照常规技术文档格式处理。</think>将Python开发的API接口部署欧拉系统(openEuler)需遵循以下步骤,确保生产环境稳定可靠: --- ### 一、环境准备 1. **更新系统** ```bash sudo dnf update -y ``` 2. **安装Python环境** openEuler默认可能已安装Python3,若需指定版本(如Python 3.9): ```bash sudo dnf install python39 python39-pip ``` 3. **安装开发工具** 部分Python依赖需要编译工具: ```bash sudo dnf install gcc make openssl-devel bzip2-devel libffi-devel ``` --- ### 二、部署API项目 1. **上传代码到服务器** 使用`scp`或`git clone`将代码上传至目标目录,例如: ```bash git clone <你的仓库地址> /opt/myapi ``` 2. **安装项目依赖** 在项目根目录执行: ```bash pip3 install -r requirements.txt ``` --- ### 三、选择部署方式(以Gunicorn + Nginx为例) 1. **安装Gunicorn** ```bash pip3 install gunicorn ``` 2. **启动API服务** 假设入口文件为`app.py`,应用对象为`app`: ```bash gunicorn -w 4 -b 0.0.0.0:5000 app:app ``` - `-w 4`:启动4个工作进程 - `-b`:绑定IP和端口 3. **配置Nginx反向代理** 安装Nginx: ```bash sudo dnf install nginx ``` 编辑配置文件`/etc/nginx/conf.d/myapi.conf`: ```nginx server { listen 80; server_name your_domain.com; location / { proxy_pass http://127.0.0.1:5000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` 4. **重启Nginx** ```bash sudo systemctl restart nginx ``` --- ### 四、配置进程守护与自启动 1. **创建Systemd服务文件** 新建`/etc/systemd/system/myapi.service`: ```ini [Unit] Description=Gunicorn instance for my API After=network.target [Service] User=www-data Group=www-data WorkingDirectory=/opt/myapi ExecStart=/usr/local/bin/gunicorn -w 4 -b 0.0.0.0:5000 app:app Restart=always [Install] WantedBy=multi-user.target ``` 2. **启用并启动服务** ```bash sudo systemctl daemon-reload sudo systemctl start myapi sudo systemctl enable myapi ``` --- ### 五、安全优化 1. **防火墙配置** ```bash sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload ``` 2. **使用非root用户运行** 创建专用用户: ```bash sudo useradd --system --no-create-home www-data ``` 3. **配置HTTPS(可选)** 使用Certbot申请免费证书: ```bash sudo dnf install certbot python3-certbot-nginx sudo certbot --nginx ``` --- ### 六、验证部署 1. **检查服务状态** ```bash sudo systemctl status myapi # 查看API服务状态 curl http://localhost:5000 # 直接测试Gunicorn curl http://your_domain.com # 测试Nginx代理 ``` --- ### 常见问题 1. **依赖缺失错误** 若出现类似`ModuleNotFoundError`,检查是否遗漏系统库或Python包。 2. **端口冲突** 确保端口`5000`或`80`未被占用,可通过`netstat -tuln`查看。 3. **权限问题** 若使用非root用户运行,确保项目目录权限正确: ```bash sudo chown -R www-data:www-data /opt/myapi ``` --- 按照上述步骤操作,即可将Python API稳定部署到openEuler系统。若需更高可用性,可结合Docker容器化或Kubernetes集群部署
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值