在ConoHa的VPS上运行多个Django应用程序
首先/首先(hajime ni)
玩《宠物棒球2020》真好玩!
以前,我在Django中创建了栄冠ナイン数据库。由于应用程序的特性,可以在Django的开发服务器上运行,但现在我将其放置在ConoHa的VPS上。Heroku很快就达到了记录数的上限。
之前,我用Django创建了栄冠ナイン数据库。基于应用的特性,可以在Django的开发服务器上运行,但现在我将其放在了ConoHa的VPS上。Heroku很快达到了记录数的上限。
栄冠九数据库,但没有考虑栄冠九的循环播放。当考虑到这一点时,我曾考虑过再准备一个VPS,但即使是最便宜的计划资源都有剩余,所以我想在一个VPS内放入两个Django应用程序,这样不就好了吗?但意外的是,我遇到了一些困难。
英幹數據庫 ku)
ConoHa的虚拟私人服务器是什么?
公式
这次的环境
※截至2020年9月24日
-
- メモリ 512MB/CPU 1Core
-
- Djangoテンプレート
CentOS 7.7
Apache 2.4.6
Python 3.6.8
mod_wsgi
在ConoHa的VPS上运行Django应用
首先,将代码存储在/home/django/中。
如果使用Django模板,则只需将源代码放置在/home/django/下,并通过更改/etc/httpd/conf/httpd.conf文件中的以下内容来使用它。
# ファイルの一番下
WSGIScriptAlias / /home/django/sample/sample/wsgi.py
WSGIPythonPath /home/django/sample
<Directory /usr/lib64/python3.6/site-packages/django/contrib/admin/static>
Require all granted
</Directory>
<Directory /home/django/sample/sample>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
# /home/django/sample/sample/wsgi.pyの部分を自分のアプリのwsgi.pyへのパスに変更する
WSGIScriptAlias / /home/django/eikan-database/config/wsgi.py
# 同様に自分のアプリのフォルダに変更する
WSGIPythonPath /home/django/eikan-database
# 変更なし
<Directory /usr/lib64/python3.6/site-packages/django/contrib/admin/static>
Require all granted
</Directory>
# wsgi.pyが入っているフォルダのパスに変更する
<Directory /home/django/eikan-database/config>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
通过更改设置,你可以很容易地使用Django应用程序来进行样本编写。
在ConoHa的VPS上运行多个Django应用程序
绊倒点
ConoHa的VPS的Django模板使用Apache + mod_wsgi来运行。
当在此环境中尝试运行多个Django应用程序时,通过搜索很快找到了使用冒号(:)连接WSGIPythonPath的方法,但是这种方法无法实现。
观察WSGIDaemonProcess可以发现,默认情况下是设置为%{GLOBAL},如果安装了两个以上的Django应用程序,那么运行时它们会被放在同一个进程中,因此仅仅更改WSGIPythonPath并不会使进程被覆盖,无法同时运行多个Django应用程序。
通过将WSGIDaemonProcess和WSGIProcessGroup进行分离,可以在mod_wsgi环境下运行多个Django应用程序。
如果是目录类型的情况
同样地,将另一个应用程序存储在/home/django/中。
这次作为eikan-database和eikan-database-2进行了命名。
*样本原本是已经存在的东西
/home/django
├── eikan-database
├── eikan-database-2
└── sample
同时,这个例子中将Power Pro 2016的栄冠ナイン第三轮使用的应用程序标记为/201603,
将Power Pro 2020的栄冠ナイン第一轮使用的应用程序标记为/202001。大致就是这样。
-
- https://endb.shimay.uno/201603
- https://endb.shimay.uno/202001
将/etc/httpd/conf/httpd.conf文件的内容更改如下:
# WSGIDaemonProcessのすぐ後ろは任意の名前でおk
# python-pathはそれぞれのアプリのフォルダを指定する
WSGIDaemonProcess endb201603 python-path=/home/django/eikan-database
WSGIDaemonProcess endb202001 python-path=/home/django/eikan-database-2
# WSGIDaemonProcessで指定した名前を指定する
# WSGIProcessGroup %{ENV:PROCESS_GROUP}とすると、プロセスグループ名は、指定された環境変数の値に設定されます。
SetENV PROCESS_GROUP endb201603
WSGIProcessGroup %{ENV:PROCESS_GROUP}
# このアプリのルートディレクトリを/201603とする
WSGIScriptAlias /201603 /home/django/eikan-database/config/wsgi.py
<Directory /home/django/eikan-database/config>
<Files wsgi.py>
Order deny,allow
Allow from all
Require all granted
</Files>
</Directory>
# このアプリのルートディレクトリを/202001とする
WSGIScriptAlias /202001 /home/django/eikan-database-2/config/wsgi.py
<Directory /home/django/eikan-database-2/config>
<Files wsgi.py>
SetENV PROCESS_GROUP endb202001
Order deny,allow
Allow from all
Require all granted
</Files>
</Directory>
这样做的话即使一直重复循环也能轻松增加数量吧。
将html文件放在/var/www/html中,通过添加类似于https://endb.shimay.uno/的链接,可以轻松切换。
对于子域名类型,也许可以这样进行流程划分处理吗?(未验证)
终结
最开始就使用Nginx + uWSGI是否会更快呢…?
或者在应用程序端考虑用户切换和循环玩法的设计呢…?
使用Docker…?
不使用VPS而是在本地开发服务器上运行…?
请参考
-
- https://mowa-net.jp/wiki/Django
-
- WSGIDaemonProcess
-
- WSGIProcessGroup
- WSGIScriptAlias
時候的問候。
也許只有我和一小部份玩家會這樣做。
這回是同一個應用程式。
儘管需要進行一些額外的設定,例如資料庫設定、安裝使用的套件、以及設定https等等…
這只是一個我自己使用的草率網頁。