PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上


Posted in Python onApril 01, 2019

Django2.1 + Python3.6 + nginx + uwsgi 部署到Ubuntu18.04

材料准备

准备一个Django项目准备一台Ubuntu18.04的主机

ssh连接到主机(腾讯云)

Mac直接在bash中输入ssh root@你的主机ip
Windows请下载ssh远程连接工具例如Putty

腾讯云默认不能以root身份登录,请使用以下方式登录

$ ssh -q -l ubuntu -p 22 你的主机ip

配置Python3.6环境

Ubuntu18.04已经默认安装了python3.6.5,所以不需要再安装了,可使用python3命令查看
安装pip3:

$ sudo apt install python3-pip

在命令行中输入pip3以验证是否安装成功。

接下来安装virtualenv和virtualenvwrapper:

$ pip3 install virtualenv$ pip3 install virtualenvwrapper#创建你项目的虚拟环境$ mkvirtualenv django# 创建虚拟环境的根目录$ mkdir $HOME/.virtualenvs#配置环境变量$ sudo vim ~/.bashrc

将以下内容放到最后面

export WORKON_HOME=$HOME/.virtualenvsexport VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3export VIRTUALENVWRAPPER_VIRTUALENV=~/.local/bin/virtualenvsource ~/.local/bin/virtualenvwrapper.sh

激活环境变量来生效:

$ source ~/.bashrc

PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上

安装Nginx

$ sudo apt-get install nginx#查看是否运行$ ps aux | grep nginx

PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上

安装完成后,在浏览器中输入你的ip地址,如果看到以下界面则说明安装完成!

PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上

安装Mysql并配置

$ sudo apt-get install mysql-server#查看是否运行$ ps aux | grep mysql

接下来配置mysql的密码和权限问题

$ sudo mysql_secure_installation

执行后会弹出多个选择界面

1.是否安装密码校验插件VALIDATE PASSWORD PLUGIN can be used to test passwords......选择n2.设置密码Please set the password for root here.New password:xxxxxxRe-enter new password:xxxxxx3.删除匿名用户(生产环境有必要删除)By default, a MySQL installation has an anonymous user......选择y4.是否允许root用户远程登录Normally, root should only be allowed to connect from‘localhost'. ......选择y5.是否删除“测试”库By default, MySQL comes with a database named ‘test' thatanyone can access. This is also intended only for testing,......选择y6.是否立即生效Reloading the privilege tables will ensure that all changes......选择y

配置完mysql后,把bind-address注释掉,使得本机以外的ip都能连接进来:

$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf# 把这一行注释上# bind-address 127.0.0.1#保存退出!wq

PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上

然后登录到mysql中

$ mysql -uroot -pmysql> use mysqlmysql> update user set host='%' where user=‘root';mysql> grant all on *.* to root@'%' identified by '你的密码' with grant option;flush privileges;

PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上

重启mysql服务:

$ service mysql restart

到此,mysql配置完成,可以在你的本地机上用navicat连接到远程服务器测试,方便操作数据库

PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上

测试Django项目能否正常运行

#进入虚拟环境$ workon django$ cd 你的项目根路径#同步到数据库$ python manage.py migrate$ python manage.py runserver 0.0.0.0:8000

在你的本机上输入服务器ip:8000测试能否访问,如果能访问则接着往下看(此时static静态资源还没有被代理加载不出来)

安装uwsgi和测试

#首先进入虚拟环境$ workon django$ pip3 install uwsgi

PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上

然后先测试一下uwsgi能否拉起django项目

$ cd 你的项目根路径$ uwsgi --http :8000 --module 你的项目名.wsgi

如果能拉起的话,就可以来配置nginx和uwsgi了。

nginx配置和uwsgi配置

创建自己的nginx.conf配置

vim my_nginx.conf
server {listen 80;server_name 你的ip地址或者域名;charset utf-8;client_max_body_size 75M;#代理django的媒体文件location /media { alias 你的项目路径/media;}#代理django的静态文件location /static { alias 你的项目路径/static;}#端口转发location / { uwsgi_pass django; include uwsgi_params;}}

配置完成后把文件复制到nginx目录下并重启服务:

$ cp my_nginx.conf /etc/nginx/conf.d/$ service nginx restart

然后配置uwsgi.ini

$ vim uwsgi.ini
[uwsgi]chdir = 你的项目根路径module = 你的项目名.wsgimaster = trueprocesses = 10socket = 127.0.0.1:8000vacuum = truevirtualenv = /home/ubuntu/.virtualenvs/django#你的项目的虚拟环境地址

Django项目生产环境配置

首先需要收集静态文件

#收集静态文件$ python manage.py collectstatic

在settings.py中,注释掉STATICFILES_DIRS

#STATICFILES_DIRS=[#os.path.join(BASE_DIR,'static')#]# 加入 STATIC_ROOT=os.path.join(BASE_DIR,'static')

settings.py中,debug改为True:

DEBUG = TrueALLOWED_HOSTS = ['*']

启动项目,部署成功

来到uwsgi.ini目录下

uwsgi -i uwsgi.ini

PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上

在浏览器中输入服务器ip地址

成功访问
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上

部署成功!

以上就是Ubuntu18.04的部署

** 如果想在Ubuntu16.04部署,大致步骤是一模一样的,只是Ubuntu16.04中预装了python2没有python3,需要自行安装python3和pip3,仅仅多了此步骤而已!**

总结

以上所述是小编给大家介绍的PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python实现得到一个给定类的虚函数
Sep 28 Python
python中urllib模块用法实例详解
Nov 19 Python
举例讲解Django中数据模型访问外键值的方法
Jul 21 Python
Python 中Pickle库的使用详解
Feb 24 Python
如何使用VSCode愉快的写Python于调试配置步骤
Apr 06 Python
详解python如何在django中为用户模型添加自定义权限
Oct 15 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
Jan 29 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
Jun 20 Python
Django项目基础配置和基本使用过程解析
Nov 25 Python
Python Django view 两种return的实现方式
Mar 16 Python
解决python执行较大excel文件openpyxl慢问题
May 15 Python
详解numpy1.19.4与python3.9版本冲突解决
Dec 15 Python
python使用Plotly绘图工具绘制柱状图
Apr 01 #Python
python使用Plotly绘图工具绘制水平条形图
Mar 25 #Python
Python进阶之@property动态属性的实现
Apr 01 #Python
彻底理解Python中的yield关键字
Apr 01 #Python
python抓取搜狗微信公众号文章
Apr 01 #Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
Apr 01 #Python
python装饰器简介---这一篇也许就够了(推荐)
Apr 01 #Python
You might like
PHP 采集心得技巧
2009/05/15 PHP
C# Assembly类访问程序集信息
2009/06/13 PHP
php 获取当前访问的url文件名的方法小结
2010/02/08 PHP
php 网上商城促销设计实例代码
2012/02/17 PHP
php ctype函数中文翻译和示例
2014/03/21 PHP
PHP中使用imagick实现把PDF转成图片
2015/01/26 PHP
PHP实现的自定义图像居中裁剪函数示例【测试可用】
2017/08/11 PHP
几个有趣的Javascript Hack
2010/07/24 Javascript
javascript中数组中求最大值示例代码
2013/12/18 Javascript
JavaScript中的prototype和constructor简明总结
2014/04/05 Javascript
js实现具有高亮显示效果的多级菜单代码
2015/09/01 Javascript
jquery日历插件datepicker用法分析
2016/01/22 Javascript
基于BootStrap Metronic开发框架经验小结【二】列表分页处理和插件JSTree的使用
2016/05/12 Javascript
jQuery简单注册和禁用全局事件的方法
2016/07/25 Javascript
js实现开启密码大写提示
2016/12/21 Javascript
jQuery插件Echarts实现的渐变色柱状图
2017/03/23 jQuery
React-Native左右联动List的示例代码
2017/09/21 Javascript
解决vue-cli3 使用子目录部署问题
2018/07/19 Javascript
vue插件draggable实现拖拽移动图片顺序
2018/12/01 Javascript
原生js实现针对Dom节点的CRUD操作示例
2019/08/26 Javascript
使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解
2020/06/10 Javascript
[02:28]DOTA2英雄基础教程 狼人
2013/12/23 DOTA
Python中title()方法的使用简介
2015/05/20 Python
Python字符编码判断方法分析
2016/07/01 Python
Python实现购物车功能的方法分析
2017/11/10 Python
Python3计算三角形的面积代码
2017/12/18 Python
简单实现python收发邮件功能
2018/01/05 Python
浅谈python新式类和旧式类区别
2019/04/26 Python
浅谈PyQt5 的帮助文档查找方法,可以查看每个类的方法
2019/06/25 Python
详解Python打包分发工具setuptools
2019/08/05 Python
python全局变量引用与修改过程解析
2020/01/07 Python
python3.8与pyinstaller冲突问题的快速解决方法
2020/01/16 Python
python中if嵌套命令实例讲解
2021/02/25 Python
端午节活动总结报告
2015/02/11 职场文书
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏
科学家测试在太空中培育人造肉,用于未来太空旅行
2022/04/29 数码科技