把你開發(fā)的網(wǎng)站免費(fèi)發(fā)布到互聯(lián)網(wǎng)上
時(shí)間:2022-08-30 15:06:01 | 來(lái)源:網(wǎng)站運(yùn)營(yíng)
時(shí)間:2022-08-30 15:06:01 來(lái)源:網(wǎng)站運(yùn)營(yíng)
0. 前言
之前我們寫過(guò)很多代碼,但幾乎都是在自己的電腦上運(yùn)行的。如果別人要看,也只能在電腦上演示,或者把代碼發(fā)給他運(yùn)行。
而在學(xué)習(xí) web 開發(fā),比如 Django、Flask、webpy 等框架的過(guò)程中,我們會(huì)有將網(wǎng)站上線的需求,用來(lái)測(cè)試或展示。
如何可以讓我們寫的網(wǎng)站通過(guò)互聯(lián)網(wǎng)來(lái)訪問(wèn)呢?
本篇文章就將介紹如何免費(fèi)且快速的在
PythonAnywhere 上部署自己的 Django 網(wǎng)站。與 PythonAnywhere 類似的免費(fèi)平臺(tái)還有
Heroku,
Openshift 等,收費(fèi)平臺(tái)有
阿里云、
亞馬遜 AWS、
微軟 Azure 等。
本文包括兩部分:
- 直接在 PythonAnywhere 新建項(xiàng)目
- 在 PythonAnywhere 上部署已有項(xiàng)目
1. 部署前須知
1.1 部署環(huán)境針對(duì)本次部署的一些說(shuō)明:
- Python 版本:3.5
- Django 版本:1.10
- 數(shù)據(jù)庫(kù)采用 Django 自帶的 sqlite3
1.2 遇到問(wèn)題怎么辦由于每個(gè)人的部署環(huán)境,代碼量不一樣,所以部署的過(guò)程中很可能會(huì)出現(xiàn)問(wèn)題,所以在此貼出兩個(gè)英語(yǔ)版本教程,可以結(jié)合本教程來(lái)看:
Deploy! · Django Girls TutorialDeploying an existing Django project on PythonAnywhere同時(shí),PythonAnywhere 也提供了論壇,遇到錯(cuò)誤時(shí)不妨在論壇上搜索一下錯(cuò)誤信息,論壇地址如下:
Forums : PythonAnywherePythonAnywhere 支持常用的 Python web 框架:Django、web2py、Flask、Bottle,也可以手動(dòng)配置,還提供 MySQL 支持。免費(fèi)賬戶可以創(chuàng)建一個(gè)項(xiàng)目,雖然在性能和流量上有限制,但作為學(xué)習(xí)用足夠了。
2. 新建 PythonAnywhere 項(xiàng)目
在 PythonAnywhere 上新建項(xiàng)目并運(yùn)行的過(guò)程十分簡(jiǎn)單,在此貼出流程圖,查看教程或自己動(dòng)手部署時(shí)做到心中有數(shù)。
2.1 注冊(cè)登錄這個(gè)沒啥特別的地方,不贅述。PythonAnywhere 網(wǎng)站:
Host, run, and code Python in the cloud: PythonAnywhere2.2 新建 web-app然后按照提示依次選擇框架和版本,完成配置:
next ->
django ->
Python3.5 ->
next2.3 修改 urls 和 views 文件這是新建項(xiàng)目最關(guān)鍵的一步。這里我們新增一條對(duì)網(wǎng)站根目錄路徑的響應(yīng)處理,返回一個(gè)包含字符“hello,world”的網(wǎng)頁(yè)。
進(jìn)入 Files 分頁(yè):
如下圖所示修改urls文件:
新建 views.py 文件后,添加如下代碼:
2.4 運(yùn)行完成修改之后,需要點(diǎn)擊一下 Reload 重新載入修改后的網(wǎng)站。
下面是見證奇跡的時(shí)刻!
打開你注冊(cè)時(shí)設(shè)定的網(wǎng)址,將會(huì)看到如下圖所示的頁(yè)面:
以上,就是新建項(xiàng)目的整個(gè)過(guò)程。如果在此基礎(chǔ)上增加頁(yè)面,只需要對(duì) urls.py、views.py 進(jìn)行修改,必要時(shí)增加 models.py。基本上就是將本地開發(fā)搬到網(wǎng)頁(yè)上操作。了解過(guò) Django MTV 模式的同學(xué)是不是覺得很簡(jiǎn)單呢?
3. 部署已有項(xiàng)目到PythonAnywhere
接下來(lái)再講一講如何將已有的 Django 項(xiàng)目部署到 PythonAnywhere 上。這個(gè)要稍微麻煩一些,依然先上流程圖:
3.1 注冊(cè)登錄 同 2.1
3.2 新建 bash 控制臺(tái)我們需要將 GitHub 上的代碼克隆過(guò)來(lái),所以在 Consoles(控制臺(tái))下我們新建一個(gè) bash 控制臺(tái)。
點(diǎn)擊 bash 進(jìn)入一個(gè)類似 cmd 的操作界面。
3.3 從 GitHub 上傳代碼PythonAnywhere 上已經(jīng)預(yù)裝好了 git,所以只需在 bash 控制臺(tái)下,使用 git clone 命令將 GitHub 的代碼上傳到服務(wù)器。
git clone https://your.github.site
對(duì) git 操作有疑問(wèn)的可以看看這份《git - 簡(jiǎn)明指南》:
git - the simple guide - no deep shit!3.4 建立虛擬環(huán)境繼續(xù)在 bash 控制臺(tái)下操作。代碼示例如下:
進(jìn)入項(xiàng)目文件夾
cd mysitevirtualenv --python=python3.5 myvenvsource myvenv/bin/activate
其中 mysite 是你的項(xiàng)目名,myvenv 是你的虛擬環(huán)境目錄名。
3.5 下載所需安裝包接下來(lái),使用 pip 下載項(xiàng)目中使用到的庫(kù),最基本的就是 django。
注意:每個(gè)人的項(xiàng)目中安裝的庫(kù)可能不一樣,所以一定記得將所有項(xiàng)目中用到的庫(kù)都下載。比如處理圖片(如添加頭像)用到的 Pillow,操作 MySQL 使用到的 pymysql 等。
pip install djangopip install pillow...
3.6 遷移數(shù)據(jù)庫(kù)并創(chuàng)建管理員賬戶創(chuàng)建數(shù)據(jù)表。當(dāng)然需要預(yù)先配置好 MySQL 并建好庫(kù)。
python manage.py migrate
創(chuàng)建管理員,按要求輸入賬戶及密碼。
python manage.py createsuperuser
到此,關(guān)于 bash 控制臺(tái)的操作告一段落。
3.7 修改 setting文件進(jìn)入到 Files 欄目中,編輯 settings.py 文件,修改其中的 ALLOWED_HOST 值,把你項(xiàng)目的域名添加進(jìn)去。
修改示例:
ALLOWED_HOSTS = ['username.pythonanywhere.com']
注意:使用 MySQL 的同學(xué)還需要修改 settings.py 中 DATABASE 的設(shè)置。
3.8 新建 Web-app進(jìn)入 Web 欄目,選擇
Add a new webapp ->
next ->
Manual Configuration ->
Python3.5 ->
next比較重要的兩步截圖如下:
3.9 配置 WSGI - 按照要求填寫正確的項(xiàng)目文件夾
- 修改 WSGI 文件
修改 WSGI 配置文件,注意填寫正確的 path 路徑。
以下圖中的信息為例,settings文件的完整路徑為:
/home/zx576/zxsite_v0.3/mysite/settings.py
那么在文件中應(yīng)該如下圖所示填寫
3.10 其他的 web 設(shè)置最后我們?cè)僭O(shè)置一下虛擬環(huán)境路徑,以及靜態(tài)文件路徑,本地項(xiàng)目中有 media 文件的小伙伴仍需要設(shè)置 media 路徑。
結(jié)果如下圖所示:
3.11 展示最后“
Reload”一下,就開開心心去查看自己的網(wǎng)站吧!
下面是小編的半成品(捂臉逃:
3.12 總結(jié)以上就是將已有項(xiàng)目部署到 PythonAnywhere 的整個(gè)流程,回顧整個(gè)流程,攏共分三步:
- 上傳代碼
- 配置代碼
- 配置環(huán)境
都是不難的知識(shí),但每一步都有一些細(xì)節(jié)需要我們?nèi)フJ(rèn)真對(duì)待,最后才能搭出自己的網(wǎng)站。
魔鬼在細(xì)節(jié),編程之事大抵如此。
在公眾號(hào)『Crossin的編程教室』(crossincode)里回復(fù)
部署,可查看演示博客網(wǎng)站(仿 WordPress)及參考 Django 項(xiàng)目代碼。
2016 即將過(guò)去。祝大家新年有新的收獲!
其他文章及回答:學(xué)習(xí)編程的過(guò)程中可能會(huì)走哪些彎路,有哪些經(jīng)驗(yàn)可以參考? - Crossin 的回答
你是如何自學(xué) Python 的? - Crossin 的回答
今天,你搶到票了嗎 - Crossin的編程教室 - 本站專欄
Python 與 Excel 不得不說(shuō)的事 - Crossin的編程教室 - 本站專欄
Python-Excel 模塊哪家強(qiáng)?- Crossin的編程教室 - 本站專欄
爆款游戲《貪吃蛇大作戰(zhàn)》的 Python 實(shí)現(xiàn) - Crossin的編程教室 - 本站專欄
NBA 舉辦編程馬拉松 - 數(shù)據(jù)分析時(shí)代的到來(lái) - Crossin的文章 - 本站專欄
想用 Python 做數(shù)據(jù)分析?先玩玩這個(gè)再說(shuō) - Crossin的文章 - 本站專欄
用 Python 實(shí)現(xiàn)你的量化交易策略 - Crossin的文章 - 本站專欄
Python 抓取網(wǎng)頁(yè)亂碼原因分析 - Crossin的編程教室 - 本站專欄
Crossin的編程教室 微信ID:crossincode
論壇:Crossin的編程教室