2017-06-19 11 views
1

我是Nix的新手,試圖通過Nginx proxy_pass實現通過Python Flask Web服務的服務。這是我到目前爲止所嘗試的。NixOps - 使用Python Flask配置Nginx代理服務器通行證

with import <nixpkgs> {}; 


    let 
     buildInputs = [ 
      nginx 
      python35Packages.python 
      python35Packages.flask 
      python35Packages.pyyaml 
     ]; 

     installPhase = '' 
      mkdir -p $out/pynix 
      cp -rv src config.yml $out/pynix 
      cd $out/pynix && nohup python src/main.py &> log.txt 
     ''; 


    in { 
     network.description = "Local machine"; 

     webserver = { 
      deployment = { 
       targetEnv = "virtualbox"; 
       virtualbox.memorySize = 1024; 
      }; 

      services = { 
       nginx = { 
        enable = true; 
        config = ''; 
         http { 
          include   ${nginx}/conf/mime.types; 
          server_name  localhost; 

          location/{ 
           proxy_pass http://localhost:5000; 
          } 
         } 
        ''; 
       }; 
      }; 
     }; 
    } 

src/main.py在端口5000上運行一個Python瓶服務如何才能達到這個Web服務了,當我做nixops deploy -d DEPLOYMENT_NAME運行?請幫忙。

回答

2

我想你已經混淆了一個包和一個服務。該包是構建的靜態輸出,而服務管理包的運行時激活。我認爲你的配置目前試圖描述一個在構建時運行的python應用程序,沒有任何服務可以在運行時激活它。這幾乎與你想要的相反!特別是與nixops一樣,您可能會在不同的環境中爲您的服務運行您的服務。
您應該能夠通過查看nginx package和nginx service - (特別是services.systemd.nginx)的nix表達式來了解我的意思。從這裏您可以看到nginx 服務管理nginx 程序包的運行。我想你會想爲你的Python應用程序編寫類似的表達式。你也可以看看是否有專門用於基於Python的NixOS服務的表達式,你可以用它作爲基礎,但是nginx表達式也應該是一個充分的指導。

相關問題