python - 如何在本地和真实的 Linode 服务器(或类似服务器)上使用 virtualenv 设置 Python?

标签 python linux virtualenv pycharm linode

在 Windows 上使用 PyCharm 并希望更好地了解如何设置我的本地环境,以便它尽可能干净地转换到我在 Linode(或与此相关的任何其他 Linux 机器)上的服务器。

我为开发工作预留了一个物理驱动器。在我的例子中,这是驱动器 Z:

我通常会为每个项目创建一个目录。一个项目被定义为整个网站。

我目前还选择了一个目录,Z:\virtualenv,我在其中创建虚拟环境。每个项目一个。我想多个项目可以共享同一个 virtualenv,但我不确定这对开发或生产是否明智。

我考虑过让每个项目的 virtualenv 存在于它对应的项目中的想法。这对我很有吸引力,因为那时每个项目都将是单一的。例如,如果我们在谈论 PyCharm 下的 Flask 应用程序:

d    z:\flask_app
d         .git
d         .idea
d         static
d         templates
d         virtualenv
          main.py

那么,根据上述内容,您如何设置生产服务器?

假设有人使用一台机器通过虚拟主机托管多个站点,这就是其中之一:

<VirtualHost *:80>
  ServerAdmin you@example.com

  ServerName   example.com
  ServerAlias  example.com *.example.com
  DocumentRoot /var/www/example/public_html
  ErrorLog     /var/www/example/logs/access.log
  CustomLog    /var/www/example/logs/error.log combined

  <Directory   /var/www/example>
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
  </Directory>
</VirtualHost>

我是否在全局服务器级别设置 virtualenv?我认为这是一个全局性的"is"。它无法以任何其他方式工作。我不认为。

好的,这确实意味着整个文件结构在

z:\flask_app

现在可以通过 FTP 进入

/var/www/example/public_html

网站可以上线了吗?

我知道数据库服务器、数据库、表等需要在生产机器上进行设置才能匹配。我只是专注于 Python,了解 Python 与 virtualenv 从桌面开发环境到外部 Linux 生产环境的转变。

我想我必须在服务器根级别使用 virtualenv 来启用该虚拟环境,对吗?这是我对事情有点模糊的地方。我遇到的大多数教程都广泛介绍了您的本地开发环境,但很少涉及项目到生产服务器的过渡、它们的设置以及与开发设置的持续关系。

我将使用带有 Ubuntu 14.04 LTS 的虚拟机来解决这个问题。

我还考虑过在 VM 上使用 14.04 Desktop 进行开发,以获得匹配的环境并脱离 Windows。

最佳答案

1) 一个 14.04 桌面 VM 只是为了在转移到脚本和服务器命令行之前搞定一切是个好主意。

2) 你可能碰巧喜欢 virtualenvwrapper工具/项目。它几乎完全映射到您当前的工作流程,但有一些方便的便利(它的全部意义)。它本质上将 virtualenvs 的中央文件夹托管到不同的名称(/文件夹)。它最方便的命令是 mkproject(创建同名的新文件夹和 virtualenv)和 workon(激活该名称的项目)。

3) 幸运的是 14.04 还不算太旧,它的包中已经有一个相当新的 virtualenv,python-virtualenv (1.11.4)。我会安装它,然后使用它在您的服务器上创建环境,按照您的建议在其下运行 python 项目。

OK, that does mean that the entire file structure under ... can now be FTP'd into ... and the site is good to go?

不,因为您会尝试在 Windows 机器上传输为 Python 创建的 virtualenv,并希望它能在 Linux/Ubuntu 上的 Python 下运行。

4) 要保留每个项目需要安装的包的托管列表,请将它们列在 requirements.txt 中。 .然后在新的 virtualenv 处于事件状态时,您只需运行 pip install -r requirements.txt 即可为其安装所有需要的包。

5) 为了在一台服务器下运行您的应用程序,我建议运行一个本地 WSGI 服务器,如 Chaussette (可能在 Circus 下)或 uWSGI在本地端口/unix 套接字下托管您的 python WSGI 应用程序;然后配置 Apache 或 Nginx 以反向代理所有需要的动态流量到该服务器(参见 this SO answer 作为示例)。

6) 如果你有可重复引导的东西,一些基本的 bash 脚本知识会有很大帮助:) 如果它变得更复杂,你可以使用像 Salt 这样的托管配置产品。 .

关于python - 如何在本地和真实的 Linode 服务器(或类似服务器)上使用 virtualenv 设置 Python?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24357652/

相关文章:

python/numpy : Using own data structure with np. allclose() ?在哪里寻找要求/它们是什么?

python - SQLAlchemy 将表名更改为有两个下划线

linux - 如何使程序在 SHELL 中的任何地方都可执行

python - 如何从 virtualenv 运行 PyScripter?

python - 如何让uwsgi中的lazy-apps在代码中使用fork()?

python - Flask:如何在应用程序根目录中读取文件?

Python/pip 进程在 virtualenv(Apple M1 芯片)中被杀死

python - 在 virtualenv : `pip install -e .` vs `python setup.py install` 中设置

linux - 使用 gdb 调试动态加载的共享库

linux - 基本的 Linux dmesg 问题