操作系统是ubuntu
更新源
1 | apt-get update |
安装 Nginx 和 uWSGI
1 | apt-get install nginx uwsgi uwsgi-plugin-python |
安装 Python 相关环境
1 | apt-get install python-dev python-virtualenv python-pip |
这里如果安装不成功,可以分开安装,试过一次,分开安装才成功,原因目前以我的水平还发现不了,很遗憾。
安装 MySQL
1 | apt-get install mysql-server mysql-client libmysqld-dev |
安装 MySQL 的过程中需要输入密码
安装 PHP
1 | apt-get install php5-cli php5-cgi php5-fpm php5-mcrypt php5-mysql |
配置 Django 及多站点支持
这里假设我的网站目录为 /www ,每个用户有自己一个独立的文件夹(这里使用两个用户名作为示例,分别为 test1 和 test2 )
前面的操作步骤为简单起见,只新建一个站点,文件夹名称为 test1
建立目录
1 2 3 4 | mkdir /www mkdir /www/test1 mkdir /www/test1/media mkdir /www/test1/static |
这里建立的 media 和 static 目录分别用来存放该 Django 项目的 media 和 static 文件。
用 virtualenv 创建虚拟环境并新建测试项目
1 2 3 4 5 | cd /www/test1 virtualenv env source env /bin/activate pip install Django django-admin.py startproject django_test |
这里在 /www/test1/env 目录下新建了一个虚拟环境并激活,安装了 Django 并新建了一个项目,名称为 django_test 。
1 2 3 4 5 | 注: 创建并进入环境:mkvirtualenv env1 退出环境:deactivate 进入已存在的环境或者切换环境:workon env1或者env2 删除环境: rmvirtualenv env1 |
配置 Nginx
在 Nginx 的 sites-available 下创建一个新的配置文件
1 | vim /etc/nginx/sites-available/test1 |
文件内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | server { listen 80; server_name test1.yourdomain.com; access_log /var/log/nginx/test1 .access.log; error_log /var/log/nginx/test1 .error.log; location / { uwsgi_pass unix: ///tmp/test1 .sock; include uwsgi_params; } location /media/ { alias /www/test1/media/ ; } location /static/ { alias /www/test1/static/ ; } } |
接下来将 sites-available 文件夹中刚才添加的文件 ln 到 sites-enabled 文件夹中
1 | ln -s /etc/nginx/sites-available/test1 /etc/nginx/sites-enabled/ |
配置 uWSGI
接下来是配置 uWSGI,同样在 uWSGI 的目录下创建一个新的配置文件
1 | vim /etc/uwsgi/apps-available/test1 .ini |
文件内容如下
1 2 3 4 5 6 7 8 9 10 11 | [uwsgi] vhost = true plugins = python socket = /tmp/test1 .sock master = true enable -threads = true processes = 4 wsgi- file = /www/test1/django_test/django_test/wsgi .py virtualenv = /www/test1/env chdir = /www/test1/django_test touch -reload = /www/test1/django_test/reload |
注意:文件内容中的 django_test 为刚才创建的 Django 的项目名称
然后将 apps-available 中的配置文件 ln 到 apps-enabled 文件夹中
1 | ln -s /etc/uwsgi/apps-available/test1 .ini /etc/uwsgi/apps-enabled/ |
重启 Nginx 和 uWSGI
1 2 | service uwsgi restart service nginx restart |
接下来访问你在上面绑定的 server_name 域名就可以看见 It worked! 的界面了。
注意:每次更新代码后需要执行 service uwsgi restart 修改方能生效,或者通过上面配置的 touch-reload 文件来检测改动更新代码。
DJANGO应用部署
首先进入/www/test1/django_test目录,然后创建django app。
1 2 | cd /www/test1/django_test django-admin.py startapp appname |
这样在django_test目录下就会有一个appname目录。
就可以编辑里面的views.py文件。同时编辑一下/django_test下的urls.py文件,然后用自己定义的URL和视图方法,就可以正常访问自己的应用了。