nginx+uwsgi在阿里云Ubuntu上部署django项目

nginx+uwsgi在阿里云Ubuntu上部署django项目

主要参考:https://www.django.cn/article/show-22.html

主要记录一下容易忘记的操作和一些遇到的错误,这些东西搞了整整一晚上,与上面提到的参考相同的操作就不再写了。

在纯净的Ubuntu系统上安装依赖包

  1. 更新操作系统和安装依赖包

  2. 安装Python3和PIP3

  3. 分别建立放虚拟环境和项目的文件夹

  4. 安装virtualenv
    虚拟环境 这一部分操作不太熟悉,记录一下

#指定Python版本,并创建一个叫pyweb的虚拟环境
sudo virtualenv -p /usr/bin/python3 pyweb
#进入虚拟环境
source /data/env/pyweb/bin/activate
#退出虚拟环境
deactivate
  1. 上传项目并安装依赖
    用Xftp把项目上传,并按安装Django和Restframework
#安装django
pip3 install Django==1.11.8
#安装restframework
pip3 install djangorestframework

安装uwsgi

sudo pip3 install uwsgi

现在系统中安装一遍,再进入虚拟环境安装一次
安装成功之后,我们进入项目根目录/data/wwwroot/my_blog/新建一个 my_blog.xml文件,在里面输入代码:


    <uwsgi>
    	<socket>127.0.0.1:8000</socket>
    	<chidr>/data/wwwroot/my_blog/</chidr> <!-- 项目路径 -->
    	<module>my_blog.wsgi</module>
    	<processes>4</processes> <!-- 进程数 --> 
    	<daemonize>uwsgi.log</daemonize> <!-- 日志文件 -->
    </uwsgi>

安装Nginx

/usr/local 目录执行下面命令下载nginx源码:

wget http://nginx.org/download/nginx-1.13.7.tar.gz

然后解压它:

tar -zxvf nginx-1.13.7.tar.gz

cd 进入解压后的nginx-1.13.7文件夹,依次执行以下命令:

sudo ./configure 
sudo make 
sudo make install

进入/usr/local/nginx/conf/目录,改写nginx.conf文件:

events {
	worker_connections 1024;
}
http {
	include		mime.types;
	default_type application/octet-stream;
	sendfile    on;
	server {
		listen 80;
		server_name xxxxxxx;
		charset utf-8;
		location / {
			include uwsgi_params;
			uwsgi_pass 127.0.0.1:8000;
			uwsgi_param UWSGI_SCRIPT my_blog.wsgi;
			uwsgi_param UWSGI-CHDIR /data/wwwroot/my_blog/;
			
		}
		location /static/ {
		alias /data/wwwroot/my_blog/static/;
		}
	}
}

在/usr/local/nginx/sbin/目录下操作nginx

#检查配置文件
./nginx -t
#运行nginx
./nginx
#重新载入nginx配置
./nginx -s reload
#关闭nginx
./nginx -s quit

运行nginx之前必须启动uwsgi,否则就会发生502错误

cd /data/wwwroot/mysite/
uwsgi -x mysite.xml

遇到的问题即解决

  • 502 Bad Gateway
    502错误的发生查资料都说是php的原因,可是我的项目并没有用到php,后来发现,因为uwsgi用的是8000端口,所以我在runserver时会提示8000端口被占用,所以我就杀掉了所有的8000端口程序sudo fuser -k 8000/tcp,这样就会把uwsgi的进程杀掉,所以再访问就会出现502错误。解决方法是用别的端口来runserver,python3 manage.py runserver 8001

  • 400 Bad Request
    这个发生的原因是django项目里的setting文件没有设置对,项目同名文件里的setting文件要把调试模式关掉,并写上ALLOWED_HOSTS

DEBUG = False

ALLOWED_HOSTS = ['xx.xx.xx.xx','www.xxxxx.com',]
  • 另一个很傻的错误
    我的项目主页上是没有网页的,要在后面在 / 一个目录才有,这个直到我回到我Ubuntu虚拟机里打开了一遍才想起来,这样输入域名/xxx,就可以在外网访问我的Django项目啦。
Zo2
发布了20 篇原创文章 · 获赞 7 · 访问量 2306

猜你喜欢

转载自blog.csdn.net/weixin_43914692/article/details/86558660
今日推荐