nixop使用pythonflas配置Nginx代理传递

2024-09-30 16:31:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我不熟悉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服务的启动和运行?请帮忙。在


Tags: pysrcwebconfiglocalhosthttpflaskmain
1条回答
网友
1楼 · 发布于 2024-09-30 16:31:38

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

相关问题 更多 >