小白入門Python Web之web開發前的準備(持續更新~)
技術標籤:python經驗分享程式人生python大資料其他
前面對python web開發做了個簡單的介紹,不清楚的小夥伴可以戳小白入門Python Web開發介紹。
今天繼續講講如何進行web開發前的準備
Web開發準備
搭建一個能執行的虛擬機器環境
Ubuntu是Linux發行版裡面被用作個人桌面最多的系統,現在已經有很多公司選擇使用 Ubuntu Server作為生產環境的作業系統。
筆者選擇了釋出於2016年4月21日,版本程式碼名為“Xenial Xerus”的Ubuntu 16.04 LTSO LTS是Long Term Support (長期支援)的縮寫,這樣的版本一般桌面版官方支援3年,服 務器版支援5年。
安裝 VirtualBox
VirtualBox是Oracle開源的虛擬化系統,它支援Linux、OSX, Windows等平臺,Docker和 Vagrant環境都需要使用它作為宿主機到官方網站下載對應平臺的最新版並安裝’ 安裝過 程很傻瓜化,按提示一步一步執行到安裝完成即可。
使用Vagrant安裝
為什麼選擇Vagrant?原因如F:
- Vagrant是一個操作虛擬機器的工具,它會很快地完成一套開發環境的部署,也解決了 各個開發環境不一致的問題,減少了重複配置環境而造成的時間和精力上的浪費 舉個例子,在沒有用Vagrant之前,新員工加入後常常需要一到兩天的時間搭建完 整的開發環境,而有了 Vagrant,直接啟動就好了。先不需要了解所有相關環境的知 識和細節,在工作中再慢慢熟悉就行了。
- 它底層支援VirtualBox, VMware甚至AWS作為虛擬機器系統,可以滿足不同使用者的 需要。
- 可以通過“vagrant provision”,使用Shell指令碼或者主流的配置管理工具(如Puppet. Ansible等)對軟體進行自動安裝、更新和配置管理。
安裝 Vagrant
PI前Rubygems上Vagrant只更新到1.5.0,不支援VirtualBox 5.0及以上版本。需要到官方網 站選擇對應的平臺下載並安裝。
安裝完成後檢查一下是否安裝成功:
vagrant --version
Vagrant 1.8.3
使用 Vagrant
一個打包好的作業系統在Vagrant中稱為Box,實際上它是一個zip包,包含了 Vagrant的配 置資訊和VirtualBox的虛擬機器映象檔案預設的Ubuntu系統需要進行配置,如改成使用aliyun的源,安裝Python等軟體,新增使用者 ubuntu等 ,為了方便大家可以使用打包好的Box ( dongweiming/web_develop )o首先, 克隆原始碼並進入專案目錄:
>git clone https://github.com/dongweiming/web_develop
>cd web_develop
項日中包含了 Vagrantfile檔案,不需要初始化:
Vagrant.configure(2) do |config|
conf ig.vm.box = ,,dongweiming/web_develop,'
config.vm.hostname = "WEB"
config.vm.network :forwarded_port, guest: 9000, config.vm.network :forwarded_port, guest: 3141, config.vm.network :forwarded_port, guest: 5000, config.ssh.username = "ubuntu" config.ssh.password = "ubuntu" config.ssh.insert_key = false
config.ssh.private_key_path = ["~/.ssh/id_rsa"]
config.vm.provision "file", source: "~/.ssh/id_rsa.pub"f destination: "~/.ssh/ authorized_keys"
config.vm.provider "virtualbox" do |v|
v.customize ["modifyvm"r :id, "--name'*, "web_dev", "--memory", "1536"]
end
config.vm.network "public_network", bridge: "en0: Wi-Fi (AirPort)" end
Vagrantfile儲存了虛擬機器的各項配置° I:述設定的用途如下:
- 使用定製的Box,名字為dongweiming/web_developo
- 設定虛擬機器的主機名。
- forwarded_port 用來設定埠轉發,"guest: 9000, host: 9000” 表示訪問本機 9000 埠 的流量就會轉發到虛擬機器上的9000埠,反之亦然。
- 沒有使用vagrant作為預設使用者,這是因為程式碼中有些指定了目錄地址,為了相容 Docker容器,使用中立的使用者ubuntu
- customize語句把虛擬機器在VirtualBox中的顯示名改為web_dev,記憶體為1536 MB。
- config.vm.network用來新增一個橋接網絡卡,它將使用DHCP獲得IP。
定製的Box基於官方的ubuntu/xenial64,筆者在實際使用中發現不能直接登入,這裡我們將建立一個SSH金鑰用於自動登入:如果之前沒有建立過SSH金鑰,需要執行如下命令並 回車:
> ssh-keygen
執行完畢會生成〜/.ssh/id_rsa (金鑰)和〜/.ssh/id_rsa.pub (公鑰)。
現在啟動虛擬機器:
>vagrant up
啟動的時候會檢査本地是否右這個Box,沒有的請就會下載 所以第一次花的時間會比 較長.
第-次啟動完成後需耍使用配置指令碼來初始化系統環境:
>vagrant provision
==> default: Running provisioner: file...
provision會執彳r Vagrantfile中定義的hie命令,把本機的〜/.ssh/id_rsa.pub拷貝到目標服務 器並儲存為 ~/.ssh/authorized_keys
啟動完成就可以登入虛擬機器f :
>vagrant ssh
登入之後就可以直接驗證本1弓提到的內容了
使用Docker安裝
Docker 是 dotCloud 開源的一個使用 Go 編寫的晝 J - Linux 容器(Linux Containers, LXC ) 的容器引擎它有以下優點:
- 效能卓越 在以前的虛擬化方案中,虛擬機器都是一個完整的作業系統,這本身就會佔 用CPU、記憶體、硬碟等資源 而Docker是“作業系統級別的虛擬化”,可以達到秒級啟 動IBM曾發發過一■篇關於虛擬機器和Linux Container效能對比的論文(http://domino.
research.ibm.com/library/cyberdig.nsf/papers/0929052195DD819C85257D2300681E7B/$File/ rc25482.pdf).論文中實際測試f■虛擬機器和LXC在CPU、記憶體、網路的負載等方面的 情況,結果顯示Docker容器本身幾、「不佔用什麼開銷。 - 可移植性帶來J’「•作效率的提升沒冇Docker之前,運維和開發工作中經常會發生 這樣的情況:本地開發環境正常,但是上線就出問題“這就需要花時間找原因然後 解決 而Docker是“-次封裝,到處執行”,開發者只需要關注開發,運維人員只需 要關注部署,比如要做伺服器遷移,重新部署和除錯這樣的工作就町以省去了一 在新的伺服器I .啟動需要的容器就可以了。
安裝Docker
Docker官網的文件北常詳細 開啟選單第一欄"Install”,根據你當前使用的桌面系統選擇 對應的版本:如果使用Max OSX.就選擇11 Installation on Mac OS X*’;如果使用Ubuntu,就 先打丿F “Linux”子選單,再選擇"Installation on Ubuntu"也可以選擇直接安裝Docker的 二進位制檔案 ''Installation from binaries”
這時候可能會顯示對你選擇的系統的要求,比如選擇“Ubuntu”,會提示支援如下版本的
Ubuntu:
Ubuntu Xenial 16.04 (LTS)
Ubuntu Wily 15.10
Ubuntu xenial 14.04 (LTS)
Ubuntu Precise 12.04 (LTS)
如果你使用的系統不在上述列表中,不代表不能正常使用Docker,只是如果出現問題可能 不會得到官方的修復支援,所以筆者建議升級到它要求的版本範圍。
對於Max OSX,按照官方文件進行,然後點選"Docker Quickstart Terminal”選項就可以進 A Docker Shell它會進行一系列的初始化,最後會提示:
docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com
上面提到的192.168.99.100是Docker建立的虛擬機器的IP,之後訪問應用其實都是在請求這 個IP。如果忘記了也可以通過如下命令獲得:
> docker-machine ip
192.168.99.100
如果看到類似如下的輸出就說明Docker安裝成功了:
$ docker --version
Docker version 1.11.2, build b9f10c9
卜載映象
在Docker中映象稱為Image。為了節省時間,可以使用已經上傳了基於Ubuntu:16.04 LTS 的映象“
- dongweiming/web_develop:dev: dev標籤包含了基本環境,比如使用aliyun的源,安 裝Python , Git, IPython, net-tools等軟體,克隆原始碼,新增使用者ubuntu並預設 使用ubuntu這個使用者等 所做的全部前期工作都可以參考專案下的Dockerfile檔案。 這個版本適合從零開始學習的小夥伴。
- dongweiming/web_develop:也就是預設的latest標籤,它可以直接執行絕大多數應用 和例子。這個版本會經常更新,適合有一定基礎,想直接看到執行效果的小夥伴。
執行如下命令會自動下載映象:
>docker pull dongweiming/web_develop:dev
Docker會檢視映象是否已經載入到Docker主機上,如果沒有,它就會從映象倉庫Docker Hub下載這個映象°下載完成後可以看到類似如下的映象列表:
>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
dongweiming/web_develop dev 43fb02d9c1a3 2 weeks ago 292.2 MB
dongweiming/web_develop latest 5895e8d64924 34 seconds ago 6.075 GB
要進入容器應該使用如下命令:
> docker run --name web_dev -it -p web_develop /bin/zsh
9000:9000 -p 3141:3141 -p 5000:5000 dongweiming/
這個命令有如下含義:
–name指定了容器的名字為web.dev,如果不指定,將由系統隨機取一個名字
・-p可以顯式地暴露特定埠,比如9000:9000,就表示web_dev這個容器裡面的9000 埠可以通過192.168.99.100:9000訪問。
• /bin/zsh是登入容器的預設Shell
進入容器後,預設使用ubuntu這個用丿",並切換到/home/ubuntu/web_develop目錄下。
從容器退出之後,容器就關閉了,重新登入容器的方法如下:
>docker start web_dev # 啟動容器
web_dev
>docker attach web_dev # 要回車2次
Docker虛擬機器埠轉發
之前提到,在Docker環境中訪問應用需要使用http://192.168.99.100:PORT這個地址,由於 Vagrant做了埠轉發,直接在宿主機上訪問http://127.0.0.1:PORT即可°那麼,可不可以統 -呢?當然可以。
首先獲得Docker虛擬機器的名字:
> docker-machine inspect|grep MachineName
"MachineName": "default",
Docker虛擬機器的名字是default通過如下的Shell命令即可新增本機與容器的埠映象:
> for port in 3141 5000 9000
do
VBoxManage controlvm "default" natpfl "tcp-port$port,tcp,127.0.0.1,$port,,$port"; echo $port
done
VBoxManage是Virtualbox提供的命令列管理匸具,通過它能完成很多用GUI不能實現的工 作.現在已經可以用http://127.0.0.1:PORT這樣的地址訪問了。
總結
今天就先講到這裡啦,希望各位看了就會,這裡也整理了一些資料,如果有想要的小夥伴記得點這裡點這裡敲門號:csdn。
預祝各位變得更強,以及冬至吃好哦!