python3.6 django部署_Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统

Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统

这个是写好的Django程序在本地机运行的情况,一个查询接口。

准备工作

1.首先购买一台阿里云的ECS服务器,选择Ubuntu16.04操作系统(我使用的是学生机 10/月)

2.注册一个码云账号,因为github私有项目是收费的,而码云是免费的。

3.准备一个Django项目,在本地机运行没有问题。

在这个例子中,我们将在阿里云服务器上部署Django编写好的饿了么高校外卖商家查询API接口,部署成功后可以通过IP地址或者域名访问。(数据库我使用的是阿里云的RDS Mysql,大家也可以直接在阿里云ECS服务器上安装数据库本地访问)

用Pycharm把写好的项目上传到码云私有项目中

需要在pycharm的设置里安装gitee插件,重启后可使用

可以看到已经成功上传至码云,注意是私有项目!

阿里云服务器端的配置

使用SSH远程工具登录阿里云服务器

因为Ubuntu16.04自带的是Python2.7版本,而我的项目使用Python3.6开发,所以需要将版本替换为python3,执行如下命令即可完美替换。

//执行以下命令来安装python3.6

sudo apt-get install software-properties-common

sudo add-apt-repository ppa:jonathonf/python-3.6

sudo apt-get update

sudo apt-get install python3.6

//执行以下命令来修改默认python版本

cd /usr/bin

rm python

ln -s python3.6m python

//执行以下命令来升级pip版本

wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate

sudo python get-pip.py

//执行以下命令来验证是否成功安装python3.6和pip

python

pip

一路执行到这里,在命令行中输入python和pip,查看是否为python3.6并且能够用pip安装。如果没问题接着看下面,如果pip有问题重装再执行一遍,不会出问题的。

接下来安装服务器必备的工具

//如果想把数据库直接放在服务器本地上,执行以下安装mysql命令

$ sudo apt install mysql-server mysql-client

$ sudo apt-get install libmysqld-dev

//安装支持包

$ apt-get install libpython3.6-dev

//安装git

$ apt install git

$ apt-get install libpython3.6-dev

//在系统级python中安装uwsgi,virtualenv

$ pip install uwsgi

$ pip install virtualenv

$ pip install virtualwrapper

//修改环境变量,直接使用mkvirtualenv创建一个虚拟环境

$ vi ~/.bashrc

把下面两行添加到末尾,按下ESC输入冒号wq保存。

export WORKON_HONE=$HOME/.virtualenvs

source /usr/local/bin/virtualenvwrapper.sh

激活刚刚添加的变量

$ source ~/.bashrc

创建一个名字叫django的虚拟环境,成功后自动激活,直接pip安装所需包

$ mkvirtualenv django

(django) $ pip install XXX

到此准备工作已经完成,接下来就是把django项目从gitee上拉取下来。

$ cd/srv

$ mkdir ele

$ cd ele

$ git init

$ git remote add origin [这里写你的项目地址.git]

$ git pull origin master

后面会提示你输入gitee的账号密码

用uwsgi测试运行是否正常

//执行以下命令,ele.wsgi可以自定义命名

$uwsgi --http :8000 --module ele.wsgi --virtualenv /root/.virtualenvs/django

可以看到使用服务器IP能成功访问到接口了

如果能访问可以接着往下走

配置Nginx和uwsgi

在项目目录下新建一个xxx.wsgi.ini,我这里新建的是ele.wsgi.ini

$ touch ele.wsgi.ini

$ vi ele.wsgi.ini

xx.wsgi.ini配置如下:

[uwsgi]

chdir = /srv/ele

module = ele.wsgi

home = /root/.virtualenvs/django

socket = /srv/ele/ele.sock

chmod-socket = 666

接下来配置nginx

//安装nginx

$ apt install nginx

//开启nginx服务

$ service nginx start

//写nginx配置

$ touch /etc/nginx/conf.d/ele.conf

$ vi /etc/nginx/conf.d/ele.conf

ele.conf配置如下(尽量手写不然容易出错)

upstream ele{

server unix:///srv/ele/ele.sock;

}

server{

listen 80;

server_name (这里写阿里云服务器的地址);

charset utf-8;

client_max_body_size 75M;

location /{

uwsgi_pass ele;

include /etc/nginx/uwsgi_params;

}

}

写完以后命令行输入以下命令

$ nginx -t

$ service nginx configtest

当你看到下图 OK,则说明已经配置成功了!!!如果显示fail则使用nginx -t查找错误原因,看一下是否配置文件写错了!!

部署成功

在项目路径下输入以下命令(不需要进入虚拟环境)

$ uwsgi --ini ele.wsgi.ini

如图所示,项目已经在服务器跑起来了!!

这个时候不需要带端口号,直接访问你服务器的地址就可以了,如图所示,已经成功!!

浏览器测试结果如下:因为没有收集静态文件,所以静态文件例如图片、JS、CSS样式没有加载出来,因为是接口所以无所谓。

如果需要加载静态文件,需要做如下改动

settings.py文件添加以下内容

STATIC_ROOT = os.path.join(BASE_DIR,'static_dist')

终端加载虚拟环境

(django)$ python manage.py collectstatic

更改/etc/nginx/conf.d/ele.conf文件配置

server{

在server里面增加下面的内容

location /static {

alias /srv/ele/static_dist;

}

}

收集好静态文件,就能显示正常的效果了

以上就是阿里云Ubuntu16.04服务器使用python3.6+nginx+uwsgi部署Django项目的过程了,只要按照上述步骤走,基本上就是可以成功的。

如果大家有域名,可以解析域名绑定到服务器IP上,在Django项目settings.py中的ALLOWED_HOST=[]添加你的IP地址,然后在/etc/nginx/conf.d/ele.conf文件中把IP地址改成域名就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值