之前一直用的django在本地开发restful api,虽然有些不方便,但是也能将就使用,本来也是业余练手兼玩玩的意思,所以一直也没有怎么考虑部署的问题。
今天看到腾讯云服务器新手做活动,99元/年,价格还有点美丽,就买了一台云服务器。于是,就考虑把本地的django项目部署到云服务器上。
所以,接下来就记录一下一步步摸索的过程。
购买服务器
腾讯云标准型S2云服务器 最低配的
服务器安装Python3.7
pip安装第三方库和框架
需要安装的有django pymysql restfulframework django-filter等等相关的包
Pycharm连接远程服务器
Pycharm连接远程服务器并进行代码上传
直接将本地代码上传到远程服务器并保持同步
使用远程服务器的Python解释器,直接在Pycharm中运行远程代码。
服务器安装Mysql
最新的Mysql rpm地址:https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
修改初始密码时注意'' 和``的区别,否则报错ERROR 1064 (42000)
Navicate连接远程数据库
使用常规方法连接,有一个错误:Host 'xxx' is not allowed to connect to this MySQL server.
解决办法
将root用户修改为可以访问所有的host
mysql> update user set host = '%' where user = 'root';
数据库迁移,从本地迁移到服务器
使用Navicat连接到远程服务器,创建数据库。
使用Navicat连接本地数据库,将需要迁移的数据导出,然后导入到远程数据库。
迁移过程出现了部分字段被更改的情况,需要重新修改调整
更改django项目的数据库配置
将setting中DATABASE的配置修改为远程数据库的配置信息
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '你的项目名称',
'USER': 'root',
'PASSWORD': '你的密码',
'HOST': '127.0.0.1', //如果项目跟数据库都在同一台服务器的话,这里不用配置你的ip,使用127.0.0.1即可
'OPTIONS':{'init_command': 'SET default_storage_engine=INNODB;'}
}
}
ip访问配置
购买的服务器注意要修改安全规则,允许80 8000等端口访问。
服务器上允许django项目 进入到项目目录下,运行下面的命令
python manage.py runserver 0.0.0.0:8000
注意,如果需要使用其他用户通过公网ip访问,此处因为在0.0.0.0:8000上跑,而不能用127.0.0.1:8000跑。
还有项目的setting.py文件中设置ALLOWED_HOSTS
公网ip无法访问的问题
经过这一系列的设置,api就成功的在公网ip上跑起来了,客户端调用成功,整个迁移成功。
这篇文章只是粗略的记录了一个流程,实际操作过程遇到了各种各样的问题,最后都一一解决了。而且每个人的服务器配置,软件安装版本的不同,操作习惯的不同,可能并不一定适用每个人。仅供参考。
待续 Nginx+uwsgi部署
用django自带的web服务,性能有短板,接下来还要考虑安装Nginx进行转发
网友评论