之前一直用的django在本地開發(fā)restful api,雖然有些不方便,但是也能將就使用,本來也是業(yè)余練手兼玩玩的意思,所以一直也沒有怎么考慮部署的問題。
今天看到騰訊云服務(wù)器新手做活動,99元/年,價格還有點美麗,就買了一臺云服務(wù)器。于是,就考慮把本地的django項目部署到云服務(wù)器上。
所以,接下來就記錄一下一步步摸索的過程。
購買服務(wù)器
騰訊云標(biāo)準(zhǔn)型S2云服務(wù)器 最低配的
服務(wù)器安裝Python3.7
pip安裝第三方庫和框架
需要安裝的有django pymysql restfulframework django-filter等等相關(guān)的包
Pycharm連接遠(yuǎn)程服務(wù)器
Pycharm連接遠(yuǎn)程服務(wù)器并進(jìn)行代碼上傳
直接將本地代碼上傳到遠(yuǎn)程服務(wù)器并保持同步
使用遠(yuǎn)程服務(wù)器的Python解釋器,直接在Pycharm中運行遠(yuǎn)程代碼。
服務(wù)器安裝Mysql
最新的Mysql rpm地址:https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
修改初始密碼時注意'' 和``的區(qū)別,否則報錯ERROR 1064 (42000)
Navicate連接遠(yuǎn)程數(shù)據(jù)庫
使用常規(guī)方法連接,有一個錯誤:Host 'xxx' is not allowed to connect to this MySQL server.
解決辦法
將root用戶修改為可以訪問所有的host
mysql> update user set host = '%' where user = 'root';
數(shù)據(jù)庫遷移,從本地遷移到服務(wù)器
使用Navicat連接到遠(yuǎn)程服務(wù)器,創(chuàng)建數(shù)據(jù)庫。
使用Navicat連接本地數(shù)據(jù)庫,將需要遷移的數(shù)據(jù)導(dǎo)出,然后導(dǎo)入到遠(yuǎn)程數(shù)據(jù)庫。
遷移過程出現(xiàn)了部分字段被更改的情況,需要重新修改調(diào)整
更改django項目的數(shù)據(jù)庫配置
將setting中DATABASE的配置修改為遠(yuǎn)程數(shù)據(jù)庫的配置信息
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '你的項目名稱',
'USER': 'root',
'PASSWORD': '你的密碼',
'HOST': '127.0.0.1', //如果項目跟數(shù)據(jù)庫都在同一臺服務(wù)器的話,這里不用配置你的ip,使用127.0.0.1即可
'OPTIONS':{'init_command': 'SET default_storage_engine=INNODB;'}
}
}
ip訪問配置
購買的服務(wù)器注意要修改安全規(guī)則,允許80 8000等端口訪問。
服務(wù)器上允許django項目 進(jìn)入到項目目錄下,運行下面的命令
python manage.py runserver 0.0.0.0:8000
注意,如果需要使用其他用戶通過公網(wǎng)ip訪問,此處因為在0.0.0.0:8000上跑,而不能用127.0.0.1:8000跑。
還有項目的setting.py文件中設(shè)置ALLOWED_HOSTS
公網(wǎng)ip無法訪問的問題
經(jīng)過這一系列的設(shè)置,api就成功的在公網(wǎng)ip上跑起來了,客戶端調(diào)用成功,整個遷移成功。
這篇文章只是粗略的記錄了一個流程,實際操作過程遇到了各種各樣的問題,最后都一一解決了。而且每個人的服務(wù)器配置,軟件安裝版本的不同,操作習(xí)慣的不同,可能并不一定適用每個人。僅供參考。
待續(xù) Nginx+uwsgi部署
用django自帶的web服務(wù),性能有短板,接下來還要考慮安裝Nginx進(jìn)行轉(zhuǎn)發(fā)