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

这个是写好的Django程序在本地机运行的情况,一个查询接口。
准备工作
1.首先购买一台阿里云的ECS服务器,选择Ubuntu16.04操作系统(我使用的是学生机 10/月)
2.注册一个码云账号,因为github私有项目是收费的,而码云是免费的。
3.准备一个Django项目,在本地机运行没有问题。

本项目代码和数据已上传到github
https://github.com/PythonerKK/eleme-api-by-django-restful-framework
在这个例子中,我们将在阿里云服务器上部署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地址改成域名就可以了。
本项目代码和数据已上传到github
https://github.com/PythonerKK/eleme-api-by-django-restful-framework
Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统的更多相关文章
- 填坑!!!virtualenv 中 nginx + uwsgi 部署 django
一.为什么会有这篇文章 第一次接触 uwsgi 和 nginx ,这个环境搭建,踩了太多坑,现在记录下来,让后来者少走弯路. 本来在 Ubuntu14.04 上 搭建好了环境,然后到 centos7. ...
- nginx + uwsgi 部署 Django+Vue项目
nginx + uwsgi 部署 Django+Vue项目 windows 本地 DNS 解析 文件路径 C:\Windows\System32\drivers\etc 单机本地测试运行方式,调用dj ...
- flask项目部署到阿里云 ubuntu16.04
title: flask项目部署到阿里云 ubuntu16.04 date: 2018.3.6 项目地址: 我的博客 部署思路参考: Flask Web开发>的个人部署版本,包含学习笔记. 开始 ...
- 生产环境使用Nginx+uwsgi部署Django
在本地运行django应用相对来说还是挺方便的,使用自带的runserver启动即可.如果在生产环境部署django,就要多考虑一些问题了.比如静态文件处理,安全,效率等等 在网上找到了不错的部署的教 ...
- nginx + uwsgi 部署django项目
因项目需求,需要部署django项目,这里是基础的nginx配合uwsgi部署django,后续会采用docker部署的方式 环境: centos7 python3.5.4 django2.1.4 u ...
- nginx+uwsgi部署Django项目到Ubuntu服务器全过程,以及那些坑!!!
前言:自己在windows上用PyCharm编写的Django项目,编写完后在windows上运行一点问题都没有,但是部署到服务器上时却Bug百出.百度,CSDN,sf,各种搜索寻求解决方案在历时3天 ...
- 使用Nginx+uWSGI部署Django项目
1.linux安装python3环境 参考链接:https://www.cnblogs.com/zzqit/p/10087680.html 2.安装uwsgi pip3 install uwsgi l ...
- Nginx+uwsgi部署django
0. 登录远程服务器并准备 ssh 用户@IP -p 端口 回车后,要求输入服务器密码,再输入密码 更新软件源 sudo apt-get update sudo apt-get upgrade 1. ...
- centos7 下通过nginx+uwsgi部署django应用
1. 安装python3.6 1. 获取 wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz tar -xzvf Python- ...
随机推荐
- MySql概念及常用Sql
MySQL是一个关系型数据库管理系统 MySQL启动命令: 本机mysql地址D:\pefession\mySql\mysql-8.0.12-winx64\bin 启动服务:net start mys ...
- 关于网站中Logo部分的写法
由于SEO对网页产生的影响,我们在写html的时候要注意写好三大要素:1.keywords 2.describtion 3.title 我们在写像h1 h2 h3 这种标题的时候尽量要带有网站的名字 ...
- 使用openpyxl模块将Excel中的数据导入数据库
这里将不介绍openpyxl模块的详细操作. 主要就是记录一个使用openpyxl模块将Excel表格的数据导入数据库中的实例. from openpyxl import load_workbook ...
- JavaSE——TCP协议网络编程(二)
1.Java网络编程与多线程的综合应用: 类Socket提供了方法getInputStream ()和getOutStream()来得到对应的输入/输出流以进行读/写操作,这两个方法分别返回Input ...
- JavaSE——网络编程基础知识
计算机网络的分类: 局域网(LAN) 指在一个较小地理范围内的各种计算机网络设备互联在一起的通信网络,可以包括一个或多个子网,通常局限在几千米的范围之内. 城域网(MAN) 主要由城域范围内的各个局域 ...
- [基础架构]PeopleSoft Tuxedo 重要文件说明
我们都知道PeopleSoft是由几个不同的服务组成的,他们在PeopleSoft体系结构中扮演着自己的角色.这些服务具有不同的文件结构并包含重要的可执行文件和配置文件. 以下是Peoplesoft体 ...
- 自定义适用于手机和平板电脑的 Dynamics 365(五):可视控件
使用 适用于手机的 Dynamics 365 和平板电脑中的可视控件帮助移动用户更快地输入 Dynamics 365 数据并提供更丰富的可视体验. 此组自定义控件包括滑块.开关.星数评级.视频嵌入以及 ...
- memset初始化数组的问题
今天才搞清楚,memset用于初始化数组,仅能初始化为0值,而不能初始化一个特定的值,这怎么能模糊了呢??? 因此,如果对申请的一段存放数组的内存进行初始化,每个数组元素均初始化为特定的值,必须使用循 ...
- ES6 箭头函数下的this指向
在javscript中,this 是在函数运行时自动生成的一个内部指针,它指向函数的调用者. 箭头函数有些不同,它的this是继承而来, 默认指向在定义它时所处的对象(宿主对象),而不是执行时的对象. ...
- go语言开发环境、goland、IDE
1.下载: https://studygolang.com/dl 可以从这个网址下载,版本根据你的系统来: 64位系统,可以下载推荐版本: 我安装的是32位系统,下载的是下面这个: 如果你的是其他的系 ...