2017-06-19 16 views
1

私はNixを初めて使い、Python Flask WebサービスをNginx proxy_passに渡すサービスを実装しようとしています。これはこれまで私が試したことです。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私はnixops deploy -d DEPLOYMENT_NAMEを行うときに、私はこのWebサービス稼働を実現するにはどうすればよいのポート5000で実行されているPythonのフラスコサービスですか?助けてください。

答えて

2

あなたはパッケージとサービスを混乱させると思います。パッケージはビルドの静的出力ですが、サービスはパッケージの実行時アクティベーションを管理します。私はあなたの設定は、現在、実行時にそれをアクティブにするサービスなしでビルド時に実行されるPythonアプリケーションを記述しようとしていると思います。これはあなたが望むものとはかなり反対です!特にnixopsの場合と同様に、別の環境でサービスが実行されている可能性があります。
nginxのnix式とnginx service - の具体的なセクションservices.systemd.nginxを見れば、私の考え方を知ることができます。ここから、nginx サービスが、nginx パッケージの実行を管理していることがわかります。私はあなたのPythonアプリケーションのための同様の表現を書いてほしいと思います。また、ベースとして使用できるPythonベースのNixOSサービス用の式があるかどうかを確認できますが、nginx式も十分なガイドでなければなりません。