Ubuntu下nginx+uwsgi部署Django项目

[TOC]

Ubuntu下nginx+uwsgi部署Django项目


项目环境

ubuntu 18.04
django 2.1.7
Python 3.6.6

一、安装uwsgi,及配置

  • Xshell连接远程服务器,进入虚拟环境,输入命令
pip install uwsgi

或者通过pycharm安装也可以,打开settings选项卡
通过pycharm安装
  • 在项目目录下创建配置文件 wang_blog/uwsgi.ini
# wang_blog/uwsgi.ini
[uwsgi]
# 使用nginx连接时使用,和我一样就行
# socket = 127.0.0.1:8000  
# 项目的绝对路径,在命令行输入pwd查看
chdir = /home/pyvip/wang 
# 直接做web服务器使用,写你自己的服务器ip地址
http = 192.168.159.128:8000 
# 项目名.wsgi
module = lublog.wsgi 
# settings文件所在路径
wsgi-file = /home/pyvip/wang/wang/wsgi.py
# 不用修改
master = true
# 指定启动的工作的进程数
processes = 4
# 指定工作进程中的线程数
threads = 2
#monitor uwsgi status  通过该端口可以监控 uwsgi 的负载情况
stats = 127.0.0.1:9191
# 后台运行,并输出日志
daemonize = /var/log/uwsgi.log
# 设置虚拟环境路径
virtualenv =  /home/pyvip/.virtualenvs/my_blog/

请反复确认路径是否正确,ip地址是否正确!!!
请反复确认路径是否正确,ip地址是否正确!!!
请反复确认路径是否正确,ip地址是否正确!!!

  • 进入项目目录,使用uwsgi命令启动项目
    注:uwsgi.ini一定要在项目目录下
(wang) pyvip@VIP:~$ cd /home/pyvip/wang
(wang) pyvip@VIP:~/wang$ ls
db.sqlite3  manage.py  my_blog  static  templates  uwsgi.ini  wang
(wang) pyvip@VIP:~/wang$ uwsgi --ini uwsgi.ini

看到下面开启了4个进程就成功了,根据配置不同,显示的进程数也不同

(wang) pyvip@VIP:~$ ps aux | grep uwsgi
laowang    483  0.0  0.1  14428  1072 pts/0    S+   12:31   0:00 grep --color=auto uwsgi
laowang  29873  0.3  6.2 189196 59272 ?        S    12:28   0:00 uwsgi --ini uwsgi.ini
laowang  29895  0.0  5.3 262928 50592 ?        Sl   12:28   0:00 uwsgi --ini uwsgi.ini
laowang  29897  0.0  5.3 262928 50592 ?        Sl   12:28   0:00 uwsgi --ini uwsgi.ini
laowang  29899  0.1  6.3 273896 59836 ?        Sl   12:28   0:00 uwsgi --ini uwsgi.ini
laowang  29900  0.0  6.2 273896 59260 ?        Sl   12:28   0:00 uwsgi --ini uwsgi.ini

在浏览器输入ip地址加端口号,启动成功!!!

这个时候是没有图片显示的,如果有就是你浏览器缓存没清除,接下来配置nginx就可以显示图片了

  • uwsgi停止命令sudo pkill -f uwsgi -9

二、安装nginx,及配置

  • xshell 中输入命令
sudo apt-get update
sudo apt-get install nginx
  • 添加配置文件到项目目录下,除了修改注释的内容,其他和我一样就行
# /home/pyvip/wang/mysite_nginx.conf
server {
    listen      80;
    # 写你的IP地址,或者域名 .xxxxx.com 都行;域名解析备案什么的不说了
    server_name 192.168.159.128;
    charset     utf-8;

    location /static {
        # 写你静态文件的目录
        alias /home/pyvip/wang/static;
    }

    location / {
        uwsgi_pass  127.0.0.1:8000;
        include     /etc/nginx/uwsgi_params; 
    }
}
  • /etc/nginx/sites-enabled 目录下创建本文件的连接,使nginx能够使用它:
(wang) pyvip@VIP:~/wang$ sudo ln -s /home/pyvip/wang/mysite_nginx.conf /etc/nginx/sites-enabled/
(wang) pyvip@VIP:~/wang$ ls /etc/nginx/sites-enabled/
default  mysite_nginx.conf
  • 修改uwsgi.ini,启动socket,关闭http
# wang_blog/uwsgi.ini
[uwsgi]
# 使用nginx连接时使用
socket = 127.0.0.1:8000
# 项目的绝对路径,在命令行输入pwd查看
chdir = /home/pyvip/wang
# 直接做web服务器使用
# http = 192.168.159.128:8000
# 项目名.wsgi
module = wang.wsgi
# settings文件所在路径
wsgi-file = /home/pyvip/wang/wang/wsgi.py
# 不用修改
master = true
# 指定启动的工作的进程数
processes = 4
# 指定工作进程中的线程数
threads = 2
# 设置虚拟环境路径
virtualenv =  /home/pyvip/.virtualenvs/my_blog/
  • 修改项目settings文件,和我一样
DEBUG = False

ALLOWED_HOSTS = ['*']

# 这个文件路径原来配置过就不用配置了,或者用我这个,把你的注释掉
STATIC_ROOT = os.path.join(BASE_DIR, 'static') 

  • 在项目文件夹下输入命令python manage.py collectstatic,以保证静态文件都在static下,如果后面图片显示不正确,可能就是没输入此命令
  • 检测nginx配置是否出错,然后重启nginx,如果报错请看文末
(wang) pyvip@VIP:/etc/nginx/sites-enabled$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
(wang) pyvip@VIP:/etc/nginx/sites-enabled$ sudo service nginx restart
(wang) pyvip@VIP:/etc/nginx/sites-enabled$ ps aux | grep nginx
root       3510  0.0  0.0 140628  1532 ?        Ss   09:11   0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data   3511  0.0  0.3 143332  6168 ?        S    09:11   0:00 nginx: worker process
www-data   3512  0.0  0.3 143332  6168 ?        S    09:11   0:00 nginx: worker process
pyvip      3514  0.0  0.0  21536  1004 pts/0    S+   09:11   0:00 grep --color=auto nginx

配置成功,重启成功

三、启动uwsgi,访问域名或ip地址

  • 进入项目目录,命令行输入启动命令
(wang) pyvip@VIP:/etc/nginx/sites-enabled$ cd /home/pyvip/wang/
(wang) pyvip@VIP:~/wang$ uwsgi --ini uwsgi.ini
[uWSGI] getting INI configuration from uwsgi.ini
  • 访问ip
    注:不需要输入端口号
    成功!图片也可以加载了,到此部署就完成了。

写在最后:

  • 作者踩过的坑,nginx报错
(wang) pyvip@VIP:/etc/init.d$ sudo nginx -t
nginx: [emerg] open() "/etc/nginx/sites-enabled/mysite_nginx.conf" failed (2: No such file or directory) in /etc/nginx/nginx.conf:62
nginx: configuration file /etc/nginx/nginx.conf test failed

sudo nginx -t 失败可能是配置出错,确认mysite_nginx.conf配置无问题,再检查 /etc/nginx/sites-enabled/ 下的配置文件和项目目录下的配置文件是否一致,蓝色文件名则说明是一致的。

作者原创,转载请注明出处!我的博客地址 www.bloglu.cn 专注技术文章,风景美图,学习资源分享。
如果本文对你有帮助,点个赞支持一下作者吧!有任何问题欢迎下方留言。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,776评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,527评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,361评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,430评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,511评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,544评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,561评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,315评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,763评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,070评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,235评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,911评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,554评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,173评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,424评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,106评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,103评论 2 352