下面是 Ubuntu 14.04+Django 1.7.1+Nginx+uWSGI 部署教程的完整攻略:
1. 安装必要的软件
在开始部署之前,需要确保你的服务器安装了以下的软件:
- Nginx:一个高性能的 Web 服务器,可以作为 Web 应用的反向代理服务器
- Python 和 pip:Python 是我们使用 django 的必备环境,pip 是 Python 的包管理器,可以方便的安装 Python 库
- Virtualenv:虚拟环境管理工具,用于隔离不同项目的 Python 环境
- uWSGI:一个高性能的 WSGI 服务器,用于将 Python 的 Web 应用连接到 Nginx
可以使用以下命令来安装这些软件:
sudo apt-get update
sudo apt-get install nginx python-pip python-dev \
build-essential libssl-dev libffi-dev \
virtualenv uwsgi uwsgi-plugin-python
2. 创建 Python 虚拟环境
为了保证安装的 Python 库不冲突,我们需要创建一个 Python 虚拟环境。在虚拟环境中,我们可以安装多个 Python 库,并且不会影响到系统 Python 环境。
首先,创建一个新项目的文件夹:
mkdir myproject
cd myproject
创建一个新的 Python 虚拟环境:
virtualenv myprojectenv
然后,激活虚拟环境:
source myprojectenv/bin/activate
这时候,你会看到命令行前面添加了一个 (myprojectenv)
,表示虚拟环境已经激活。
3. 安装 Django
在虚拟环境中,使用 pip 来安装 Django:
pip install django==1.7.1
安装完成后,使用以下命令来验证 Django 是否安装成功:
django-admin --version
4. 创建 Django 项目
使用 Django 命令创建一个新的项目:
django-admin startproject myproject .
上面的命令创建了一个名为 myproject
的 Django 项目,.
表示创建一个新的项目文件夹。
此时,你可以运行以下命令来启动 Django 开发服务器:
python manage.py runserver
在浏览器中访问 http://127.0.0.1:8000/,如果可以看到 Django 的欢迎页面,表示 Django 项目已经成功创建。
5. 配置 uWSGI
在项目根目录中,创建一个新的 uwsgi 配置文件:
[uwsgi]
project = myproject
base = /home/myuser
chdir = %(base)/%(project)
home = %(base)/Envs/%(project)
module = %(project).wsgi:application
master = true
processes = 5
socket = %(base)/%(project)/%(project).sock
chmod-socket = 664
vacuum = true
上面的配置文件定义了以下参数:
project
: 项目名称base
: 项目所在的目录chdir
: 项目所在的目录home
: Python 环境所在的目录module
: 项目的 WSGI 文件master
: 是否使用主进程processes
: 启动的进程数socket
: 连接到 Nginx 的 socket 文件chmod-socket
: 设定 socket 文件的权限vacuum
: 退出时清除所有子进程
保存文件后,使用以下命令启动 uWSGI 服务器:
uwsgi --ini myproject_uwsgi.ini
6. 配置 Nginx
创建一个新的 Nginx 配置文件:
upstream django-server {
server unix:///home/myuser/myproject/myproject.sock;
}
server {
listen 80;
server_name myproject.com;
location / {
uwsgi_pass django-server;
include /etc/nginx/uwsgi_params;
}
location /static/ {
alias /home/myuser/myproject/static/;
}
}
上面的配置文件定义了以下参数:
upstream django-server
: 定义连接到 Django 的 socket 文件地址server
: 定义 Nginx 服务器以及访问的域名location /
: 定义访问网站的根目录,转发到 uWSGI 服务器uwsgi_pass django-server;
: 将请求转发到名为django-server
的 socket 地址include /etc/nginx/uwsgi_params;
: 包含 uWSGI 的参数配置文件location /static/
: 定义静态文件的访问地址alias /home/myuser/myproject/static/;
: 定义静态文件所在的文件夹
保存文件后,将这个文件链接到 Nginx 的 sites-enabled
文件夹中,并重启 Nginx 服务器:
sudo ln -s /etc/nginx/sites-available/myproject.conf /etc/nginx/sites-enabled/
sudo service nginx restart
示例 1: 部署 Django Blog
这里提供一个部署 Django Blog 的示例。假设你已经按照上面的步骤,创建了一个名为 myblog
的 Django 项目,现在需要将它部署到服务器上。
- 定义 uwsgi 配置文件:在项目根目录创建一个名为
myblog_uwsgi.ini
的文件,然后写入以下配置信息:
```ini
[uwsgi]
project = myblog
base = /home/myuser
chdir = %(base)/%(project)
home = %(base)/Envs/%(project)
module = %(project).wsgi:application
master = true
processes = 5
socket = %(base)/%(project)/%(project).sock
chmod-socket = 664
vacuum = true
```
- 启动 uWSGI 服务器:在项目根目录执行以下命令:
bash
uwsgi --ini myblog_uwsgi.ini
- 配置 Nginx:创建一个名为
myblog.conf
的 Nginx 配置文件,并写入以下内容:
```conf
upstream myblog-server {
server unix:///home/myuser/myblog/myblog.sock;
}
server {
listen 80;
server_name myblog.com;
location / {
uwsgi_pass myblog-server;
include /etc/nginx/uwsgi_params;
}
location /static/ {
alias /home/myuser/myblog/static/;
}
}
```
- 将配置文件链接到
sites-enabled
目录,并重启 Nginx 服务器:
bash
sudo ln -s /etc/nginx/sites-available/myblog.conf /etc/nginx/sites-enabled/
sudo service nginx restart
- 访问网站:在浏览器中输入
http://myblog.com
,看到 Django Blog 应用页面,表示网站已经部署成功。
示例 2: 部署 Django 音乐播放器
这里提供一个部署 Django 音乐播放器的示例。假设你已经按照上面的步骤,创建了一个名为 mymusic
的 Django 项目,现在需要将它部署到服务器上。
- 定义 uwsgi 配置文件:在项目根目录创建一个名为
mymusic_uwsgi.ini
的文件,然后写入以下配置信息:
```ini
[uwsgi]
project = mymusic
base = /home/myuser
chdir = %(base)/%(project)
home = %(base)/Envs/%(project)
module = %(project).wsgi:application
master = true
processes = 5
socket = %(base)/%(project)/%(project).sock
chmod-socket = 664
vacuum = true
```
- 启动 uWSGI 服务器:在项目根目录执行以下命令:
bash
uwsgi --ini mymusic_uwsgi.ini
- 配置 Nginx:创建一个名为
mymusic.conf
的 Nginx 配置文件,并写入以下内容:
```conf
upstream mymusic-server {
server unix:///home/myuser/mymusic/mymusic.sock;
}
server {
listen 80;
server_name mymusic.com;
location / {
uwsgi_pass mymusic-server;
include /etc/nginx/uwsgi_params;
}
location /static/ {
alias /home/myuser/mymusic/static/;
}
}
```
- 将配置文件链接到
sites-enabled
目录,并重启 Nginx 服务器:
bash
sudo ln -s /etc/nginx/sites-available/mymusic.conf /etc/nginx/sites-enabled/
sudo service nginx restart
- 访问网站:在浏览器中输入
http://mymusic.com
,看到 Django 音乐播放器应用页面,表示网站已经部署成功。
以上就是 Ubuntu 14.04+Django 1.7.1+Nginx+uWSGI 部署教程的完整攻略,包含了两个例子的详细操作说明。如果你遇到了问题,可以参考这份攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程 - Python技术站