从 virtualenv 中启动 wsgi 应用程序作为 Linux 系统服务

2024-02-09

我目前正在 virtualenv 中开发一个 Bottle 应用程序。我打算使用 bjoern WSGI 服务器来提供它(但这可能并不重要)。我还打算使用 lighty 或 nginx 反向代理来为应用程序提供服务。无论如何,应用程序可以作为系统服务从其自己的 virtualenv 中运行吗?如果是这样,人们会怎么做呢?


根据我的经验,我建议你可以使用主管 http://supervisord.org/将您的 Web 服务器作为守护程序服务运行。虽然你可以在/etc/init.d 中编写一些Linux 服务脚本,但是正确地执行它们确实很困难。这是一个nginx 的 init.d 脚本示例 http://wiki.nginx.org/Nginx-init-ubuntu在 Ubuntu 中将其作为服务运行。你不想写一篇,是吗?

要使用 Supervisord 运行依赖于 virtualenv 作为守护进程服务的 python 服务器,这是我在生产环境中使用的配置。

[program:web01]
command=/home/victorlin/tg2env/bin/paster serve production.ini ;
process_name=%(program_name)s ;
directory=/home/victorlin/ ;
user=victorlin ;
priority=999 ;
redirect_stderr=true ;
stdout_logfile=/home/victorlin/logs/web01_out.txt ;
stderr_logfile=/home/victorlin/logs/web01_err.txt ;
environment=PYTHON_EGG_CACHE=/home/victorlin/.python-eggs ;

您可以使用 /path/to/virtualenv/bin/python 在命令字段中运行您自己的 python 脚本。并且,要在启动时运行supervisord,您可以在 root 帐户中编写如下所示的 crontab:

@reboot /usr/local/bin/supervisord -c /home/root/supervisord.conf 

当然,如果你没有低于1024的端口号可以打开,你可以在非特权帐户中编写这个启动crontab。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 virtualenv 中启动 wsgi 应用程序作为 Linux 系统服务 的相关文章

  • 加载数据infile,Windows和Linux的区别

    我有一个需要导入到 MySQL 表的文件 这是我的命令 LOAD DATA LOCAL INFILE C test csv INTO TABLE logs fields terminated by LINES terminated BY n
  • Pandas/Google BigQuery:架构不匹配导致上传失败

    我的谷歌表中的架构如下所示 price datetime DATETIME symbol STRING bid open FLOAT bid high FLOAT bid low FLOAT bid close FLOAT ask open
  • 处理 Python 行为测试框架中的异常

    我一直在考虑从鼻子转向行为测试 摩卡 柴等已经宠坏了我 到目前为止一切都很好 但除了以下之外 我似乎无法找出任何测试异常的方法 then It throws a KeyError exception def step impl contex
  • 用枢轴点拟合曲线 Python

    我有下面的图 我想用 2 条线来拟合它 使用 python 我设法适应上半部分 def func x a b x np array x return a x b popt pcov curve fit func up x up y 我想用另
  • 使用 Python 从文本中删除非英语单词

    我正在 python 上进行数据清理练习 我正在清理的文本包含我想删除的意大利语单词 我一直在网上搜索是否可以使用像 nltk 这样的工具包在 Python 上执行此操作 例如给出一些文本 Io andiamo to the beach w
  • 如何在数组中存储包含双引号的命令参数?

    我有一个 Bash 脚本 它生成 存储和修改数组中的值 这些值稍后用作命令的参数 对于 MCVE 我想到了任意命令bash c echo 0 0 echo 1 1 这解释了我的问题 我将用两个参数调用我的命令 option1 without
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • 如何有效截断文件头?

    大家都知道truncate file size 函数 通过截断文件尾部将文件大小更改为给定大小 但是如何做同样的事情 只截断文件的尾部和头部呢 通常 您必须重写整个文件 最简单的方法是跳过前几个字节 将其他所有内容复制到临时文件中 并在完成
  • datetime.datetime.now() 返回旧值

    我正在通过匹配日期查找 python 中的数据存储条目 我想要的是每天选择 今天 的条目 但由于某种原因 当我将代码上传到 gae 服务器时 它只能工作一天 第二天它仍然返回相同的值 例如当我上传代码并在 07 01 2014 执行它时 它
  • 为什么 PyYAML 花费这么多时间来解析 YAML 文件?

    我正在解析一个大约 6500 行的 YAML 文件 格式如下 foo1 bar1 blah name john age 123 metadata whatever1 whatever whatever2 whatever stuff thi
  • Python 2:SMTPServerDisconnected:连接意外关闭

    我在用 Python 发送电子邮件时遇到一个小问题 me my email address you recipient s email address me email protected cdn cgi l email protectio
  • Python beautifulsoup 仅限 1 级文本

    我看过其他 beautifulsoup 得到相同级别类型的问题 看来我的有点不同 这是网站 我正试图拿到右边那张桌子 请注意表的第一行如何展开为该数据的详细细分 我不想要那个数据 我只想要最顶层的数据 您还可以看到其他行也可以展开 但在本例
  • Python3 在 DirectX 游戏中移动鼠标

    我正在尝试构建一个在 DirectX 游戏中执行一些操作的脚本 除了移动鼠标之外 我一切都正常 是否有任何可用的模块可以移动鼠标 适用于 Windows python 3 Thanks I used pynput https pypi or
  • 从 NumPy ndarray 中选择行

    我只想从 a 中选择某些行NumPy http en wikipedia org wiki NumPy基于第二列中的值的数组 例如 此测试数组的第二列包含从 1 到 10 的整数 gt gt gt test numpy array nump
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • 如何在 pygtk 中创建新信号

    我创建了一个 python 对象 但我想在它上面发送信号 我让它继承自 gobject GObject 但似乎没有任何方法可以在我的对象上创建新信号 您还可以在类定义中定义信号 class MyGObjectClass gobject GO
  • 无法使用 wget 在 CentOS 机器上安装 oracle jdk

    我想在CentOS上安装oracle java jdk 8 我无法安装 java jdk 因为当我尝试使用命令安装 java jdk 时 root ADARSH PROD1 wget no cookies no check certific
  • Django-tables2 列总计

    我正在尝试使用此总结列中的所有值文档 https github com bradleyayers django tables2 blob master docs pages column headers and footers rst 但页
  • 如何应用一个函数 n 次? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 假设我有一个函数 它接受一个参数并返回相同类型的结果 def increment x return x 1 如何制作高阶函数repeat可以
  • Pandas 每周计算重复值

    我有一个Dataframe包含按周分组的日期和 ID df date id 2022 02 07 1 3 5 4 2022 02 14 2 1 3 2022 02 21 9 10 1 2022 05 16 我想计算每周有多少 id 与上周重

随机推荐

  • 如何使用具有自动完成和建议功能的 UISearchBar 搜索位置?

    我正在开发一个应用程序 用户可以在其中搜索兴趣点 选择搜索结果 然后 MKMapView 将以结果坐标为中心 我的问题是如何实现自动完成 我研究过MKLocalSearch and MKLocalSearchRequest 这似乎是 App
  • .NET MAUI 边框和框架之间的区别

    NET MAUI 中的边框和框架之间的功能区别是什么 边界的总结文档 https learn microsoft com en us dotnet maui user interface controls border is NET 多平台
  • GDB:如何在调试期间检查当前行号

    使用 GDB 调试时如何检查当前停止的行号 我本以为这是显而易见的 也许确实如此 但我没有在GDB 备忘单 http darkdust net files GDB 20Cheat 20Sheet pdf 一些挖掘揭示了以下方法 frame
  • 查找函数调用的源代码行

    我构建了一个自定义日志记录实用程序 它显示日志消息和日期时间 我想在调用该函数的源代码中添加行号 有没有办法确定特定 javascript 函数被触发的 HTML 源代码的哪一行 编写了一个日志库 log4javascript http l
  • 如何防止ngInfiniteScroll在初次触发后被多次触发?

    我正在使用 ngInfiniteScroll 在我的网站上启用无限滚动 它部分地按预期工作 一旦我滚动到页面底部 它就会调用我希望它调用的方法来显示更多帖子 除了它在触发一次后不断调用帖子而没有结束 有谁知道这可能是什么原因造成的 这就是我
  • 我应该更新我的 npm 版本还是使用 node.js 提供的版本?

    我有一个使用 node js 14 16 0 的项目 我和我的团队成员都使用该版本 我使用 npm 6 14 11 我的团队成员使用 npm 7 x x 这会导致 package lock json 不同 这lockFileVersion我
  • 为什么我的 xcode 构建总是转到 iPad 模拟器而不是 iPhone 模拟器?

    我刚刚安装了 Apple 的最新 SDK 因此我可以开始学习 iPhone iPad 应用程序开发 然而 我遇到了一个愚蠢的问题 我的所有构建都在 iPad 模拟器而不是 iPhone 模拟器中运行 而且我不知道如何更改它 目前 iPhon
  • Excel 中用于 CSV 导入的相对路径

    我有一个 Excel 工作簿 可以自动更新 CSV 文件中的工作表 这些从硬编码文件夹 c temp premiumreports name of CSV file csv 中提取数据 此方法迫使我每次都将所有内容放入 c temp pre
  • 来自 ngFor angular2 的拼接元素

    我正在从后端请求位置列表并将其用于ngFor但是我想删除第一个数组元素 说我要删除Id 0所以在我看来不会这样li元素 这是我正在渲染并想要删除的列表数组StoreHouse Id 0 StoreLocation StoreHouse Id
  • ckeditor 不读取媒体嵌入代码

    我使用 ckeditor 的媒体嵌入插件 它工作正常 代码正确保存在数据库和 youtube soundcloud 等中 页面上播放器显示正常 但是 当用户进入他可以编辑信息的管理页面时 内部和带有标签的文本不会显示 因此当用户单击 保存
  • 指向零长度数组的指针的属性

    Consider int main auto a new int 0 delete a So there s no memory leak 在复制初始化和删除之间 是否允许读取指针a 1 此外 该语言是否允许编译器设置a to nullpt
  • 如何在 Azure API 管理中导入 swagger

    我看到一些文章和视频 其中导入了 Swagger 但随着新的 UI 更改 我无法找到导入 Swagger 的位置 在视频参考中 它显示在 WADL 或 Swagger 选项中 现在我看不到 Swagger 选项 这个选项被删除了吗 您可以使
  • 通过 MSBuild 构建 Visual Studio 2015 C++ 项目 (v140) 失败 - 找不到 v140

    我并排安装了 Visual Studio 2013 和 2015 我刚刚将组合解决方案 C C C CLI 升级到 2015 并将 Platform Toolset 设置为 v140 Visual Studio 中的构建工作正常 但无法从
  • 查询 XML 而忽略名称空间?

    我试图在忽略命名空间的同时查询 XML 因为结果集有多个命名空间 我已经到达 DataSets 节点 但我不知道如何获取多个 DataSourceName CommandType CommandText 理想情况下我想要 DataSetNa
  • 通过OData读取数据:如何通过curl/RCurl指定身份验证方案?

    我想通过 HTTPS 读取一些数据OData http www odata org 连接和数据源需要Basic认证方案 我很熟悉平常的curl http curl haxx se RCurl http cran r project org
  • 无法使用项目列表(数组)读取自定义事实

    我创建了自定义事实 gt etc ansible facts d hdfs fact 当我使用以下命令运行剧本时 debug var ansible local hdfs run once true 我如预期得到以下答案 PLAY all
  • 管理 Google 地图 API 密钥

    我的应用程序使用大量 MapView 屏幕 我正在尝试找出如何管理调试环境和生产环境之间的 API 密钥 显然 无法更改 Eclipse 中的调试应用程序密钥 因此我必须在该环境中使用调试映射 API 密钥 相反 如果没有生产应用程序密钥
  • AS3 处理任意大文件

    我正在尝试读取 AS3 中的一个非常大的文件 但我遇到了运行时崩溃的问题 我目前正在使用文件流 http help adobe com en US Flex 4 0 langref flash filesystem FileStream h
  • NHibernate.LazyInitializationException

    我们一直偶尔会出现这个问题 但现在我每次都可以重现它 我正在增加自定义论坛上的查看计数器 这会导致错误 NHibernate LazyInitializationException 未能延迟初始化集合 没有会话或会话被关闭 此错误发生在对象
  • 从 virtualenv 中启动 wsgi 应用程序作为 Linux 系统服务

    我目前正在 virtualenv 中开发一个 Bottle 应用程序 我打算使用 bjoern WSGI 服务器来提供它 但这可能并不重要 我还打算使用 lighty 或 nginx 反向代理来为应用程序提供服务 无论如何 应用程序可以作为