有一段时间我参与使用Python创建一个项目,所以有些挖掘我发现Django是最合适的框架,再次搜索如何运行Django应用程序开始开发,我在youtube&amp上关注一些教程;我找到了以下内容:
[注意:我的工作环境是Mac osx 10.10,Ubuntu 14.04]
毕竟我必须按照教程开始开发,但我有些问题在哪里:
答案 0 :(得分:0)
嗯,您知道如何创建虚拟主机,因此您知道如何为多个站点提供服务。
下面是运行wsgi对象的虚拟主机的模板 - 您将在django项目中找到的模板。
它有我的静态文件夹的别名,我称之为“public”,并链接到实际文件夹“static”。
在settings.py
上# The static alias
STATIC_URL = '/public/'
# The actual static folder
STATIC_ROOT = 'static'
确保apache用户“www-data”对您可能使用的文件夹具有访问权限和写入权限,例如上传文件的“媒体”。
<VirtualHost *:80>
WSGIDaemonProcess yourproject display-name=%{GROUP}
WSGIProcessGroup yourproject
DocumentRoot /var/www/public_html/youproject/src/
ServerName youproject.com
ErrorLog ${APACHE_LOG_DIR}/youproject.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/youproject_access.log combined
WSGIScriptAlias / /var/www/public_html/youproject/src/project/wsgi.py
<Directory "/var/www/public_html/youproject/src/project/">
<Files wsgi.py>
Allow from all
Order deny,allow
</Files>
</Directory>
Alias /public /var/www/public_html/youproject/src/static
<Directory /var/www/public_html/youproject/src/static>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
你可以运行上面的django项目,但如果你想在服务器上有不同的包,你可能要考虑在每个项目上运行virtualenv并将该env传递给wsgi。
这样您就可以为每个项目使用独立的包。
文件夹结构示例:
-env (virtualenv)
-src (django files)
---- project
----- ----- settings
----- ----- ----- production.py
----- ----- ----- development.py
----- ----- ----- default.py
----- ----- wsgi.py
----- ----- urls.py
---- apps (Your apps)
---- static
---- media
---- manage.py
django wsgi.py
import os
import sys
import site
# Setting python paths
project_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
git_path = os.path.dirname(project_path)
# Adding the site-packages of the chosen virtualenv to work with
virtual_env_path = os.path.join(git_path, 'env')
virtual_env_lib_path = os.path.join(virtual_env_path, 'lib', 'python2.7', 'site-packages')
# Adding the site-packages of the chosen virtualenv to work with
site.addsitedir(virtual_env_path)
# Adding directories to PYTHON PATH
sys.path.append(project_path)
sys.path.append(os.path.join(project_path, 'project'))
# Choosing which settings the project will use - production / development
# from project.config import server
# os.environ.setdefault("DJANGO_SETTINGS_MODULE", server.DJANGO_SETTINGS)
# Lets just select the production settings for now
os.environ.setdefault("DJANGO_SETTINGS_MODULE", 'project.settings.production')
# Activating virtual env
activate_env = os.path.expanduser(os.path.join(virtual_env_path, 'bin', 'activate_this.py'))
execfile(activate_env, dict(__file__=activate_env))
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
如果您在上面检查,则会有一个注释部分来选择settings.py文件。
我经常运行2个文件 - 生产和开发,所以你可能也想考虑它。