[TOC]
Ubuntu下nginx+uwsgi部署Django项目
项目环境
ubuntu 18.04
django 2.1.7
Python 3.6.6
一、安装uwsgi,及配置
- Xshell连接远程服务器,进入虚拟环境,输入命令
pip install uwsgi
或者通过pycharm安装也可以,打开settings选项卡- 在项目目录下创建配置文件 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 专注技术文章,风景美图,学习资源分享。
如果本文对你有帮助,点个赞支持一下作者吧!有任何问题欢迎下方留言。