栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

ubuntu部署django2.2详细教程(django+nginx+uwsgi)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ubuntu部署django2.2详细教程(django+nginx+uwsgi)

目录

服务器环境

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

安装Python3和PIP3

建立virtualenv环境

安装django2.2

安装uwsgi

安装nginx


服务器环境

服务器:腾讯云 ubuntu18.04

django2.2

python3.6

更新操作系统和安装依赖包
#更新操作系统软件库
sudo apt-get update
sudo apt-get upgrade
 
#安装上传rz、下载sz工具
sudo apt-get install lrzsz
 
#安装gcc g++的依赖库
sudo apt-get install build-essential
sudo apt-get install libtool
 
#安装 pcre依赖库
sudo apt-get install libpcre3 libpcre3-dev
 
#安装 pcre依赖库
sudo apt-get install zlib1g-dev
 
#安装 ssl依赖库
sudo apt-get install openssl

安装Python3和PIP3
sudo apt install python3
sudo apt install python3-pip

建立virtualenv环境
#放虚拟环境的
sudo mkdir -p /data/env
 
#放项目的
sudo mkdir -p /data/wwwroot

#安装virtualenv
sudo pip3 install virtualenv

#查看python3路径,比如我的是“/usr/bin/python”
which python

#指定Python版本,创建名为pyweb的虚拟环境
sudo virtualenv -p /usr/bin/python pyweb

#启动虚拟环境
source /data/env/pyweb/bin/activate

至此,需要注意的是下面的命令在哪里运行。。

django:虚拟环境中安装

nginx:服务器环境中安装

uwsgi:最好是虚拟环境和服务器环境都装一下。

所以要开两个ssh命令行窗口,一个进入到虚拟环境里面,一个是服务器环境。推荐用mobaxterm进行ssh连接。

下面开始具体的安装步骤。

安装django2.2
#安装django2.2
pip3 install django==2.2

#如果有导出的安装包列表,则如下方式安装
sudo pip3 install -r requirements.txt
#进入下面路径,创建mysite文件夹
cd /data/wwwroot/
sudo mkdir mysite
cd mysite
#下载django例子代码,用于验证目前环境是否有错误
sudo wget https://www.django.cn/media/upfile/mysite_20180730000348_536.zip
sudo unzip mysite_20180730000348_536.zip

#确认目前目录结构是下面这样,即项目文件夹mysite在wwwrooot下:
ubuntu@VM-16-2-ubuntu:/data/wwwroot/mysite$ ls
blog  db.sqlite3  manage.py  mysite   templates  uwsgi.log
ubuntu@VM-16-2-ubuntu:/data/wwwroot/mysite$ pwd
/data/wwwroot/mysite

#启动django工程
python3 manage.py runserver 0.0.0.0:8080
# 0.0.0.0代表通过公网IP访问网站  8080端口,需要在服务器控制台中添加

问题1:报错。
setting.py中添加如下设置
ALLOWED_HOSTS = "*"

问题2:没有反应。
检查了下防火墙的状态,使用如下命令
firewall-cmd --zone=public --list-ports
如果是下面这样,表示没有运行防火墙。我的运行结果是空白的换行。那就不用管了。
FirewallD is not running

#清除预设表 (filter) 中的所有规则链中的规则。我是运行这个解决的。
iptables -F 

再次启动django工程,出现访问出现小火箭,OK了。

安装uwsgi
#安装uwsgi
sudo pip3 install uwsgi

新建uwsgi的配置文件mysite.xml
(需要注意的是mysite.xml是和django工程的manage.py同目录)
sudo vi /data/wwwroot/mysite/mysite.xml

下面内容贴入mysite.xml。

要留意里面的项目路径和.wsgi那里填写方法,你找到wsgi.py这个文件所在的目录,然后填写目录名+.wsgi即可。

    
   127.0.0.1:8997 
   /data/wwwroot/mysite/            
   mysite.wsgi 
   4      
   uwsgi.log

安装nginx
#/usr/local 目录执行下面命令下载nginx源码:
wget http://nginx.org/download/nginx-1.13.7.tar.gz

#进入文件夹
cd nginx-1.13.7
sudo ./configure
sudo make
sudo make install
#这样就安装好了,没有success等字样。
#nginx一般默认安装好的路径为/usr/local/nginx

#进入/usr/local/nginx/conf/目录,然后备份一下nginx.conf文件,以防意外。
cd /usr/local/nginx/conf/
sudo cp nginx.conf nginx.conf.bak

然后打开nginx.conf文件,把里面的内容全部删除,输入下面代码:

这里把8997端口也打开吧。我没有试过是否关闭了也能访问,可能因为是内部端口,所以关闭或许没有影响。

events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    server {
        listen       80;
        server_name  www.django.cn;
        charset utf-8;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:8997;
           uwsgi_param UWSGI_script mysite.wsgi;
           uwsgi_param UWSGI_CHDIR /data/wwwroot/mysite/; #项目路径
            
        }
        location /static/ {
        alias /data/wwwroot/mysite/static/; #静态资源路径
        }
    }
}

需要留意的是,下图长方形里我标记的代码要和UWSGI配置文件mysite.xml一致,否则会出错。

 至于静态资源路径,自己settings.py里怎么设置,你就按那个设置就好。

 

进入/usr/local/nginx/sbin/目录
cd /usr/local/nginx/sbin/

执行下面命令先检查配置文件是否有错:
sudo ./nginx -t

没有错就执行以下命令:
sudo ./nginx
终端没有任何提示就证明nginx启动成功。

之后进入网站项目目录
cd /data/wwwroot/mysite/

执行下面命令(虚拟环境下):
sudo uwsgi -x mysite.xml

以上步骤都没有出错的话。
进入/usr/local/nginx/sbin/目录
cd /usr/local/nginx/sbin/
执行:
sudo ./nginx -s reload

至此,理论上应该是可以通过公网IP访问django了。

如果访问失败,查看log

sudo cat /data/wwwroot/mysite/uwsgi.log

sudo cat /usr/local/nginx/logs/error.log

参考:

ubutu搭建django

django启动成功后,公网ip无法访问解决

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/348465.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号