代码之家  ›  专栏  ›  技术社区  ›  Abhishek Gaur

nginx在ec2上部署flask应用程序时未重定向到gunicorn

  •  -1
  • Abhishek Gaur  · 技术社区  · 2 年前

    gunicorn服务文件:

         [Unit]
         Description=Gunicorn instance for a simple hello world app
         After=network.target
         [Service]
         User=ubuntu
         Group=www-data
         WorkingDirectory=/home/ubuntu/algotrading/oops
         ExecStart=/home/ubuntu/algotrading/venv/bin/gunicorn -b localhost:8000 wsgi:app
         Restart=always
         [Install]
         WantedBy=multi-user.target
    

    /etc/nginx/sites-available/默认文件,添加了代理

              location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                proxy_pass http://127.0.0.1:8000;
                try_files $uri $uri/ =404;
        }
    

    卷曲 http://127.0.0.1:8000/oops/configuration/fetchConfigurations?schema=oops1_v1_sit 工作正常,但http://<public_ip>:8000/oops/configuration/fitchConfigurations?schema=oops1_v1_sit工作不正常

    0 回复  |  直到 2 年前
        1
  •  0
  •   Abhishek Gaur    2 年前

    我可以通过在/etc/nginx/nginix.conf文件中将用户替换为root来解决这个问题。

    还有另一种设置nginx和gunicorn的方法:

    1. gunicorn.service文件(位置:/etc/systemd/system/):

      [Unit]
      Description=Gunicorn instance to serve algotrading
      After=network.target
      
      [Service]
      User=ubuntu
      Group=www-data
      WorkingDirectory=/home/ubuntu/algotrading/oops
      Environment="PATH=/home/ubuntu/algotrading/venv/bin"
      ExecStart=/home/ubuntu/algotrading/venv/bin/gunicorn --workers 3 --bind unix:algotrading.sock -m 007 wsgi:app
      
      Restart=always
      [Install]
      WantedBy=multi-user.target
      
    2. Nginx配置文件(位置:/etc/Nginx/sites-available/):

      server {
        listen 80;
        server_name <Public IP>;
      
        location / {
        include proxy_params;
        proxy_pass http://unix:/home/ubuntu/algotrading/oops/algotrading.sock;
       }
      }
      
    3. 基本命令: 启动Gunicorn服务:

      sudo systemctl daemon-reload
      sudo systemctl start algotrading
      sudo systemctl enable algotrading
      sudo systemctl status algotrading
      

    重新启动nginx: sudo systemctl restart nginx