使用nginx + uwsgi socket的方式来部署Django项目
一、前期准备工作1、在自己的服务器或者虚拟机上创建一个空间(本案例使用ubuntu的阿里云服务器)mkvirtualenv [空间名称]**查看全部的空间**workon**进入某一个空间**workon 空间名称2、把代码传到服务器上3、运行项目看看会正常吗python manage.py runserver4、关闭Debug模式(在项目的settings.py文件下)DEBUG
一、前期准备工作
-
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)
六、部署项目
-
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
七、查看博主更多文章
更多推荐
所有评论(0)