详解centos7+django+python3+mysql+阿里云部署项目全流程


Posted in Python onNovember 15, 2019

(PS:本文假设你已经在本地联调好django和客户端,只是需要将django部署到外网)

购买阿里云服务器

到[阿里云官网],选择轻量应用服务器, 步骤如图所示:

详解centos7+django+python3+mysql+阿里云部署项目全流程

详解centos7+django+python3+mysql+阿里云部署项目全流程

详解centos7+django+python3+mysql+阿里云部署项目全流程

地域随便选择哪一个,镜像的话,对比了CentOS,Debian,Ubuntu,我最终选择了CentOS,因为流行嘛~配置的话,看项目本身了,我这里选择的是1G内存,20G硬盘最小配置,也够用了。

配置python环境

进入服务器

选择好服务器并付费之后,点击阿里云的控制台-云计算基础服务-轻量应用服务器:

详解centos7+django+python3+mysql+阿里云部署项目全流程 

点击CentOS服务器,进入后,点击右上角的远程连接,如图所示:

详解centos7+django+python3+mysql+阿里云部署项目全流程

安装python3并与python2共存

CentOS 7.3 默认安装了python2.7.5 因为一些命令要用它比如yum 它使用的是python2.7.5。当我们在命令行里输入

python -V

就可以看到版本为2.7.5。

安装python3

因为我们要安装python3版本,所以python要指向python3才行,目前还没有安装python3,先备份,备份之前先安装相关包,用于下载编译python3

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

这几个包必须得安装,否则安装python3时可能会出现各种错误.
运行下面两个命令,进行备份

cd /usr/bin
mv python python.bak

安装

wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tar.xz

解压

tar -xvJf Python-3.6.3.tar.xz

切换进入

cd Python-3.6.3

编译安装

./configure prefix=/usr/local/python3
make && make install

安装完毕,/usr/local/目录下就会有python3了

实现python3和python2的共存

添加python3的软链

rm /usr/bin/python
ln -s /usr/local/python3/bin/python3 /usr/bin/python

这时候在执行命令python -v和python2 -V,应该就能看到python3和python2的版本了。
因为执行yum需要python2版本,所以我们还要修改yum的配置,执行:

vi /usr/bin/yum

把#! /usr/bin/python修改为#! /usr/bin/python2

详解centos7+django+python3+mysql+阿里云部署项目全流程

同理

vi /usr/libexec/urlgrabber-ext-down

文件里面的#! /usr/bin/python 也要修改为#! /usr/bin/python2

安装django项目中需要的python相关包

安装python相关包需要用到python中的pip命令,比如我项目中需要的包有:

pip install Django
pip install PyMySQL
pip install Scrapy
pip install beautifulsoup4
pip install bs4
pip install lxml
pip install numpy
pip install requests
pip install simplejson
pip install urllib3

注意:在执行命令pip install mysqlclient时会报错,这里需要特别强调下,不然在后面运行需要连mysql的django项目时,会报do you install mysqlclient?

解决方法如下:

sudo python -m pip install mysqlclient

此时python所有需要的包,都已经安装好

安装mysql

下载mysql源安装包

wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

安装mysql源

yum localinstall mysql57-community-release-el7-8.noarch.rpm
yum install mysql-devel

安装MySQL

yum install mysql-community-server

启动MySQL服务

systemctl start mysqld

查看MySQL的启动状态

systemctl status mysqld

开机启动

systemctl enable mysqld

修改root本地登录密码

grep 'temporary password' /var/log/mysqld.log
mysql -uroot -p
set password for 'root'@'localhost'=password('!2Qw32sd');

注意:mysql5.7默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。否则会提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements错误

配置默认编码为utf8
修改/etc/my.cnf配置文件,在[mysqld]下添加编码配置,如下所示:

[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'

导入django和mysql数据库

导入django项目

由于我项目放在码云上面,然后CentOS又自带git,我的数据库文件也比较小,所以也放在django项目中了,用git下载下来:

sudo su root
mkdir project
cd project
git clone https://gitee.com/dafeige/django-restframework-demo.git

此时,我的数据库文件路径是:project/django-restframework-demo/tutorial/test_python.sql,由于需要将此sql文件导入到mysql数据中,需要给此文件加权限:

chmod 777 project/django-restframework-demo/tutorial/test_python.sql

导入sql数据库文件

进入数据库

mysql -u root -p

导入sql文件

create database test_python;
use test_python;
source project/django-restframework-demo/tutorial/test_python.sql;

部署django工程

进入到工程中

sudo su root
cd project/django-restframework-demo/tutorial
python manage.py runserver 0.0.0.0:80 &

最后面的”&”,这符号表示在后台运行该进程。这里的IP地址如果用公网IP
会运行不了,而用0.0.0.0则外网和127.0.0.1都能够访问。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
如何在python中使用selenium的示例
Dec 26 Python
Python实现的购物车功能示例
Feb 11 Python
Pycharm如何打断点的方法步骤
Jun 13 Python
对pyqt5多线程正确的开启姿势详解
Jun 14 Python
django认证系统 Authentication使用详解
Jul 22 Python
Python中利用LSTM模型进行时间序列预测分析的实现
Jul 26 Python
Python大数据之使用lxml库解析html网页文件示例
Nov 16 Python
基于python修改srt字幕的时间轴
Feb 03 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
Nov 10 Python
python代码实现猜拳小游戏
Nov 30 Python
Python matplotlib绘制雷达图
Apr 13 Python
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
Apr 21 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
Nov 15 #Python
python函数局部变量、全局变量、递归知识点总结
Nov 15 #Python
python matplotlib如何给图中的点加标签
Nov 14 #Python
Python中的引用和拷贝实例解析
Nov 14 #Python
使用python快速在局域网内搭建http传输文件服务的方法
Nov 14 #Python
通过python扫描二维码/条形码并打印数据
Nov 14 #Python
VSCode中自动为Python文件添加头部注释
Nov 14 #Python
You might like
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
PHP 等比例缩放图片详解及实例代码
2016/09/18 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
如何让您的中波更粗更长 - 中波框形天线制作
2021/03/10 无线电
顶部缓冲下拉菜单导航特效的JS代码
2013/08/27 Javascript
JavaScript实现快速排序的方法
2015/07/31 Javascript
JS实现带关闭功能的阿里妈妈网站顶部滑出banner工具条代码
2015/09/17 Javascript
url传递的参数值中包含&时,url自动截断问题的解决方法
2016/08/02 Javascript
AngularJS  $modal弹出框实例代码
2016/08/24 Javascript
第一次接触神奇的前端框架vue.js
2016/12/01 Javascript
jQuery实现优雅的弹窗效果(6)
2017/02/08 Javascript
使用cropper.js裁剪头像的实例代码
2017/09/29 Javascript
微信小程序 动画的简单实例
2017/10/12 Javascript
详解Nuxt.js部署及踩过的坑
2018/08/07 Javascript
vue-auto-focus: 控制自动聚焦行为的 vue 指令方法
2018/08/25 Javascript
Vue模板语法中数据绑定的实例代码
2019/05/17 Javascript
nodejs 递归拷贝、读取目录下所有文件和目录
2019/07/18 NodeJs
浅谈微信小程序列表埋点曝光指南
2019/10/15 Javascript
[02:27]2018DOTA2亚洲邀请赛赛前采访-OpTic
2018/04/03 DOTA
pycharm 使用心得(七)一些实用功能介绍
2014/06/06 Python
Python通过DOM和SAX方式解析XML的应用实例分享
2015/11/16 Python
python如何获取服务器硬件信息
2017/05/11 Python
Python编程之黑板上排列组合,你舍得解开吗
2017/10/30 Python
python opencv实现旋转矩形框裁减功能
2018/07/25 Python
Python中出现IndentationError:unindent does not match any outer indentation level错误的解决方法
2020/04/18 Python
详解Selenium 元素定位和WebDriver常用方法
2020/12/04 Python
面向游戏玩家和书呆子的极客订阅盒:Loot Crate
2020/11/25 全球购物
iostream与iostream.h的区别
2015/01/16 面试题
过程装备与控制工程专业个人的求职信
2013/12/01 职场文书
《长城》教学反思
2014/02/14 职场文书
中学生英语演讲稿
2014/04/26 职场文书
车间班组长竞聘书
2015/09/15 职场文书
幼儿园小班开学寄语(2016秋季)
2015/12/03 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
教师纪律作风整顿心得体会
2016/01/23 职场文书
利用JavaScript写一个简单计算器
2021/11/27 Javascript