在 VPS 上托管多个 Django 实例
Hosting multiple Django instances on a VPS
我正从 WordPress 转向定制的 Python 应用程序。
我已经选择 Django 作为我的 Python 框架,目前我唯一的问题是关于托管。我当前的共享托管环境非常适合 WordPress(CloudLinux 上的 WHM),但在 Apache/cPanel 上服务 Django 似乎是碰运气,尽管我还没有在我的新托管公司尝试过。 - 在 cPanel 中启用了 Python。
对我来说,为 20 个网站设置 VPS 到 运行 托管环境的最简单方法是什么?我在 virtualenv 中开发所有内容,但我还没有在生产环境中使用 运行ning Django 的经验。我会假设 venv 不够安全或存在可伸缩性问题?我读过一些关于人们使用 Docker 在 VPS 上设置单独的 Django 实例的事情,但我不确定他们是否编写了自己的管理系统。
据我了解,每个实例 Python/Django 都需要驻留在该虚拟容器中的 uWSGI 和 Nginx?我正在寻找一个简单而强大的解决方案来在 VPS 上托管 20 个 Django 站点 - 是否有开箱即用的解决方案?如果方向正确,我也很乐意开发并建立 VPS。
任何智慧都将不胜感激。
安迪:)
传统方法
- Virtualenv 已经足够好了,可以完美地用于生产环境。您可以在同一个 VM 上为多个项目使用多个 virtualenv。
- 如果您有多个项目的多个数据库引擎。就像,MySQL 对于一个,PostgreSQL 对于另一个这样的东西然后你只需要单独设置每个。
- 安装Nginx,根据项目配置。
- 安装主管来单独管理(restart/start/stop)每个项目。
- 项目需要的任何东西。
这里有一个很大的缺点。因为您不能以简单的方式在数据库引擎上为不同的项目使用不同的版本。因此,强烈建议容器化。
对于简单而可靠的解决方案,
- 使用 Docker(docker-compose) 进行本地和生产部署。
- 使用 Nginx 配置 uWsgi(在 docker 可用)
- 使用 Jenkins 等任何工具创建 CI/CD 管道。
- 使用 Raygun 等任何优秀工具监控您的项目。
就是这样。
我创建了一个 bash 脚本,可以在您的服务器上部署任意数量的网站。它会自动在您的服务器上安装所有依赖项,创建虚拟环境,配置 Gunicorn、Nginx 和 Django 数据库等。查看:
我正从 WordPress 转向定制的 Python 应用程序。
我已经选择 Django 作为我的 Python 框架,目前我唯一的问题是关于托管。我当前的共享托管环境非常适合 WordPress(CloudLinux 上的 WHM),但在 Apache/cPanel 上服务 Django 似乎是碰运气,尽管我还没有在我的新托管公司尝试过。 - 在 cPanel 中启用了 Python。
对我来说,为 20 个网站设置 VPS 到 运行 托管环境的最简单方法是什么?我在 virtualenv 中开发所有内容,但我还没有在生产环境中使用 运行ning Django 的经验。我会假设 venv 不够安全或存在可伸缩性问题?我读过一些关于人们使用 Docker 在 VPS 上设置单独的 Django 实例的事情,但我不确定他们是否编写了自己的管理系统。
据我了解,每个实例 Python/Django 都需要驻留在该虚拟容器中的 uWSGI 和 Nginx?我正在寻找一个简单而强大的解决方案来在 VPS 上托管 20 个 Django 站点 - 是否有开箱即用的解决方案?如果方向正确,我也很乐意开发并建立 VPS。
任何智慧都将不胜感激。
安迪:)
传统方法
- Virtualenv 已经足够好了,可以完美地用于生产环境。您可以在同一个 VM 上为多个项目使用多个 virtualenv。
- 如果您有多个项目的多个数据库引擎。就像,MySQL 对于一个,PostgreSQL 对于另一个这样的东西然后你只需要单独设置每个。
- 安装Nginx,根据项目配置。
- 安装主管来单独管理(restart/start/stop)每个项目。
- 项目需要的任何东西。
这里有一个很大的缺点。因为您不能以简单的方式在数据库引擎上为不同的项目使用不同的版本。因此,强烈建议容器化。
对于简单而可靠的解决方案,
- 使用 Docker(docker-compose) 进行本地和生产部署。
- 使用 Nginx 配置 uWsgi(在 docker 可用)
- 使用 Jenkins 等任何工具创建 CI/CD 管道。
- 使用 Raygun 等任何优秀工具监控您的项目。
就是这样。
我创建了一个 bash 脚本,可以在您的服务器上部署任意数量的网站。它会自动在您的服务器上安装所有依赖项,创建虚拟环境,配置 Gunicorn、Nginx 和 Django 数据库等。查看: