NixOps - 使用 Python Flask 配置 Nginx 代理通行证



我是Nix的新手,并试图实现一个通过Nginxproxy_pass传递Python Flask Web服务的服务。这就是我到目前为止尝试过的。

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 Flask 服务。当我执行nixops deploy -d DEPLOYMENT_NAME时,如何使此 Web 服务启动并运行?请帮忙。

我认为您混淆了软件包和服务。包是生成的静态输出,而服务管理包的运行时激活。我认为您的配置当前尝试描述在构建时运行的 python 应用程序,没有任何服务在运行时激活它。这与您想要的几乎相反!特别是与 nixops 一样,您可能在与构建服务不同的环境中运行服务。通过查看nginx
包和nginx服务的nix表达式,您应该能够了解我的意思 - 特别是services.systemd.nginx部分.从这里你可以看到nginx服务管理nginx的运行。我想你会想为你的python应用程序编写类似的表达式。您还可以查看是否有专门针对基于 python 的 NixOS 服务的表达式可以用作基础,但 nginx 表达式也应该是一个足够的指南。

最新更新