一、前期准备工作
-
1、在自己的服务器或者虚拟机上创建一个空间(本案例使用
ubuntu
的阿里云服务器)mkvirtualenv [空间名称]
**查看全部的空间**
workon
**进入某一个空间**
workon 空间名称 - 2、把代码传到服务器上
-
3、运行项目看看会正常吗
python manage.py runserver
-
4、关闭
Debug
模式(在项目的settings.py
文件下)DEBUG = False
-
5、修改允许所有的地方都可以访问
**settings.py文件下**
ALLOWED_HOSTS = ['*'] -
6、自己实现一个
404.html
和500.html
模板,放在django
能识别的templates
文件夹中就可以了如果用
pycharm
创建的项目最外面就有templates
目录 -
7、运行命令试跑下
python manage.py runserver 0.0.0.0:8000
8、本地浏览器访问
二、使用nginx + uwsgi socket
的方式来部署Django
也许你会疑惑,根据上面的方式就能直接运行项目了,为什么还要搞一个
nginx + uwsgi socket
,其实上面仅仅是一个测试环境,不能用于真实的项目部署上
三、安装工具
-
1、 安装
nginx
服务器sudo apt-get install nginx
-
2、 安装
uwsgi
(属于python
包)sudo pip install uwsgi
四、测试刚刚安装的nginx
和uswgi
是否成功
-
1、启动
nginx
和停止nginx
命令sudo service nginx start # 启动nginx
sudo service nginx stop # 关闭nginx
sudo /etc/init.d/nginx restart #重启 2、直接输入网址看看是否出现
nginx
的欢迎页面-
3、在刚刚的项目中创建一个
test.py
文件测试uswgi
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return ["Hello World"] -
4、运行命令
uwsgi --http :8000 --wsgi-file test.py
uwsgi --http :端口号 --wsgi-file 文件名 5、浏览器输入网址访问成功显示
hello word
表示安装成功-
6、使用
uwsgi
测试自己上传的项目uwsgi --http :8000 --module 项目名称.wsgi
五、补充说明
-
1、端口号被占用的处理方式
lsof -i :9000 # 查看9000号端口
(djangodemo)root@iZ941w016mwZ:/home/djangodemo/test02# lsof -i :9000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 21572 root 7u IPv4 2549884 0t0 TCP *:9000 (LISTEN)
nginx 21573 nobody 7u IPv4 2549884 0t0 TCP *:9000 (LISTEN)
nginx 21574 nobody 7u IPv4 2549884 0t0 TCP *:9000 (LISTEN)
nginx 21575 nobody 7u IPv4 2549884 0t0 TCP *:9000 (LISTEN)
nginx 21576 nobody 7u IPv4 2549884 0t0 TCP *:9000 (LISTEN)
# 杀死进程释放端口
sudo kill -9 21572 21573 21574 21575 21576 -
2、查看某一个程序的进程
ps aux | grep 程序名称(nginx/mysql)
六、部署项目
- 1、下载uwsgi_param直接放到项目中就可以
-
2、在项目目录下创建一个
项目名称_nginx.conf
的配置文件
# 配置uwsgi的访问的
upstream django {
# server unix:///path/to/your/mysite/mysite.sock; # for a file socket
server 127.0.0.1:8001; # for a web port socket (we'll use this first)
}
# 配置nginx的请求
server {
# the port your site will be served on
listen 8000; # 端口好
# the domain name it will serve for
server_name 1**.**.156.230; # 域名或者ip地址
charset utf-8;
# max upload size
client_max_body_size 75M; # adjust to taste
# 媒体的存放路径
location /media {
alias /home/djangodemo/test02/media; # 你项目中的媒体存放路径(在本项目中创建一个media,使用pwd查看当前的位置)
}
location /static {
alias /home/djangodemo/test02/static; # 你项目中静态文件的存放路径
}
# Finally, send all non-media requests to the Django server.
location / {
uwsgi_pass django;
include /home/djangodemo/test02/uwsgi_params; # 上一步你存放的uwsgi_params路径
}
} -
3、收集全部的静态文件
-
1、在
setting.py
中配置STATIC_ROOT = os.path.join(BASE_DIR, "static/")
-
2、运行命令会自动在项目下创建一个
static
文件python manage.py collectstatic
-
-
4、创建一个软连接将第二步生成的
项目名称_nginx.conf
文件映射到nginx
配置文件中sudo ln -s 当前目录/项目名称_nginx.conf /etc/nginx/conf.d/
#本人的
#sudo ln -s /home/djangodemo/test02/test02_nginx.conf /etc/nginx/conf.d -
5、重启
nginx
sudo /etc/init.d/nginx restart
-
6、重启
uwsgi
(还是测试刚刚创建的软连接)uwsgi --socket :8001 --wsgi-file test.py
7、在浏览器访问
8000
端口看看可以显示hello word
(不行重复4-6步骤)-
8、启动刚刚那个项目
uwsgi --socket :8001 --module test02.wsgi
# 指定静态文件路径
uwsgi --http 0.0.0.0:8000 --module test02.wsgi --static-map=/stat=static