Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何仅通过命令行在虚拟机中启动并运行服务器?_Python_Linux_Server_Virtual Machine - Fatal编程技术网

Python 如何仅通过命令行在虚拟机中启动并运行服务器?

Python 如何仅通过命令行在虚拟机中启动并运行服务器?,python,linux,server,virtual-machine,Python,Linux,Server,Virtual Machine,我用Flask用Python编写了一个服务器应用程序,现在我想让它在我设置的虚拟机上运行。因此,我非常希望在两个方面得到指导 如何设置服务器,使其永久运行,并且其他计算机可以访问它?计算机可以在同一个网络中,所以我不必担心域名或其他问题。我只是在寻找多个设备能够访问它。我目前可以在本地机器上运行服务器,一切正常 我远程安装了虚拟linux机器,所以我使用SSH连接到它,并从命令行执行所有操作,但对于如何从命令行执行上述操作,我有点不知所措 非常感谢您的指导/帮助!我所做的网络搜索并没有为我指明正

我用Flask用Python编写了一个服务器应用程序,现在我想让它在我设置的虚拟机上运行。因此,我非常希望在两个方面得到指导

  • 如何设置服务器,使其永久运行,并且其他计算机可以访问它?计算机可以在同一个网络中,所以我不必担心域名或其他问题。我只是在寻找多个设备能够访问它。我目前可以在本地机器上运行服务器,一切正常

  • 我远程安装了虚拟linux机器,所以我使用SSH连接到它,并从命令行执行所有操作,但对于如何从命令行执行上述操作,我有点不知所措


  • 非常感谢您的指导/帮助!我所做的网络搜索并没有为我指明正确的方向。如果我的术语有任何错误,我深表歉意(如果有,请随时更正,以便我学习!)。谢谢大家!

    在Ubuntu上使用systemd,
    /etc/systemd/system
    ,进行简单的设置(但对于生产设置可能并不理想)

    我有时会为我正在原型化的Python Flask应用程序这样做。首先,将应用程序代码放入
    /opt/my app
    。我通常只是
    cd/opt
    git clone
    那里的回购。然后,创建一个名为
    /etc/systemd/system/my app.service
    的文件。在该文件中,添加以下内容:

    [Unit]
    Description=My App daemon
    After=network.target postgresql.service 
    Wants=postgresql.service 
    
    [Service]
    EnvironmentFile=/etc/sysconfig/my-app
    WorkingDirectory=/opt/my-app/ # <- this is where your app lives
    User=root
    Group=root
    Type=simple
    ExecStart=/usr/bin/python server.py # <- this starts your app
    Restart=always
    RestartSec=5s
    
    [Install]
    WantedBy=multi-user.target
    
    然后你可以做:

    service my-app start
    service my-app stop
    service my-app restart
    
    然后,您可以点击服务器IP和端口上运行的应用程序(就像运行
    python app.py
    python server.py
    一样)。要检查守护进程的日志,如果它似乎不起作用,您可以运行:

    journalctl -u my-app -e 
    

    在生产中,我不确定这是否是最好的设置,也许最好研究一下ngnix之类的东西。但我一直都在为原型做这项工作,这非常棒。

    谢谢你,迈克!快速跟进问题。如果我有另一个应用程序在AWS Lambda上运行,有没有办法将其与我刚刚安装的运行服务器连接起来?例如,如果我想从AWS Lambda调用一些方法,或者在我的Flask文件中创建一个数据库,这可行吗?
    journalctl -u my-app -e