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即可。

<uwsgi>    
   <socket>127.0.0.1:8997</socket><!-- 内部端口,自定义 --> 
   <chdir>/data/wwwroot/mysite/</chdir><!-- 项目路径 -->            
   <module>mysite.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

#进入文件夹
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无法访问解决

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值