專案部署
? 專案部署對恩操作通常是由運維人員來進行統一管理裝配的,但是對于一個開發人員來講,基礎的專案部署還是要會的,
? 這里我主要講解python的專案是如何部署的,至于專案哪里來的,這就要看觀眾如何抉擇了,可以把自己寫好的專案部署,也可以......(此處省略,,,你懂的O.O)
? 最重要一點就是此篇隨筆只是給初級的想部署自己小專案的開發人員看的,小打小鬧,大神來此千萬別認真,認真你就輸了,這要是拿去公司部署,老板當天就能把你開掉,我畢竟不是專業運維人員,只是個草根開發,
一、部署前準備
? 部署有兩種情況,線上部署,線下測驗環境部署;線上部署就是指把自己的專案部署到遠程的服務器上,類似阿里云,騰訊云或亞馬遜這種服務器;線下部署就是指在自己電腦中安裝一個VMware虛擬機(虛擬化技術:有效利用電腦中的未被占用的資源,高效利用服務器設備硬體資源,可以節省物理空間),VMWare讓一個電腦中可以創建多個系統, 方便同時管理;
? 這里我講解的是線上阿里云服務器部署,主要是現在我只有一臺阿里云服務器,相對于本地的VMWare中安裝Linux服務器,再阿里云中部署后,別人可以訪問,更高大上一些,
? 我們需提前準備好一些部署所需要的東西
- 注冊一個阿里云賬號,購買一臺阿里云服務器,推薦使用CentOS7,因為我所展示的就是CentOS7,至于為什么不推薦使用Ubuntu的原因是因為:相同的解釋器相同的代碼在這兩個系統中不能直接運行,移植后都需要各種微調,至于服務器的購買步驟就去百度吧,對于學生來說是有學生機的,學生機相對于來說比較便宜一百元左右(至于學生這個概念阿里云上是有學生通道的認證時是看教育網上是否有你個人資訊,但我和客服聊過,他說28歲以下都可以購買學生那種套餐,至于具體情況,可以和客服溝通);還有一種就是新注冊用戶的購買了,我個人認為還是一次性購買三年比較劃算(不管是學生還是新用戶);至于非新用戶應該都是老司機,都懂的,可能我這部署人家都了解,只是偶爾進來看看,
- 購買域名,管局備案,公安備案,大概需要20天,不過的放心備案多久阿里云送多久,不過據說不管備案10天或者說20天,阿里云都是直接贈送30天的時長,只是聽說我還真沒注意,
- 購買免費賽門鐵克,有一個0元一年的賽門鐵克,賽門鐵克是關于安全的東西,這個弄不弄都行,主要看你自己,因為看我這博客的應該都是些小白什么的來學習部署生產環境的,都是些自己撰寫的小專案,
- 下載Xshell和Xftp,這兩個軟體可以去官方網站上獲取,社區版是免費的,盡量使用6版本,當然你想給人家當小白鼠也可已使用7,這兩個軟體前者是用來遠程控制作業系統的,后者是檔案傳輸用的,可以以圖形界面的方式向遠程的阿里云CentOS中上傳檔案,也就是把自己本地的專案上傳到上面,
- 配置服務器安全組,開放80、8080、8000、443、6379、3306、這幾個埠;
- 開放80埠外部才能通過Http訪問服務器,
- 8080(也是一些WEB服務器的默認埠)和8000(djang默認啟動埠)這兩個埠主要是專案運行的時候常用到的,
- 443埠即網頁瀏覽埠,主要是用于HTTPS服務,是提供加密和通過安全埠傳輸的另一種HTTP;
- 6379埠,快取資料庫redis的埠
- 如果需要使用多臺服務器進行集群部署,負載均衡的時候是需要通過這些埠進行溝通訪問的
二、安裝Python環境
1、安裝python解釋器
在CentOS中默認有一個python2.7,但是對于我們現在,python2.7已經不足以滿足市場需求了,一般情況除了好多大公司,尤其是金融公司的系統是比較老的,可能會出現python2.7外,幾乎遇不到,我們現在開發都用python3版本,我這里使用的是python3.6.11版本和django1.11.9,這里有個坑,就是python3.6和django1版本是不會出現問題,但是當django2版本和python3.6版本一起使用時就會報一個錯誤:query = query.decode(errors='replace')
AttributeError: 'str' object has no attribute 'decode',
1. 當出現這種報錯時:打開檔案:vim /root/Envs/drawer/lib/python3.7/site-packages/django/db/backends/mysql/operations.py的146行修改
把:query = query.decode(errors='replace')
改成:query = query # .decode(errors='replace')
或者改成:query = query.encode(errors='replace') # 推薦
還有就是urls.py檔案的路徑寫法也有所變化:url -----> path ; url(正則) ---->re_path
-
下載之前要先下載依賴包:
yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y -
下載python解釋器:
wget https://www.python.org/ftp/python/3.6.11/Python-3.6.11.tar.xz -
解壓安裝:
yum install gcc -y./configure --prefix=/opt/python
make && make install -
加入python的啟動環境變數,永久生效自動補全
只需要啟動時執行一條命令即可 import rlcompleter, readline readline.parse_and_bind('tab:complete') 可以將上述的代碼存于~/.pythonrc.py檔案中, 然后,在~/.bashrc中設定 export PYTHONSTARTUP=~/.pythonrc.py 這樣,每次啟動終端,bash就會設定PYTHONSTARTUP這個環境變數,然后,python啟動時就會使用這個變數指定的檔案中的初始化代碼, 在python解釋器中,輸入一個變數的一部分,或者變數后面加句點,再按TAB鍵就可以看到自動補全的威力,
2、安裝配置virtualenv和virtualenvwrapper管理工具
在使用python開發的程序中,專案一多,管理起來就很麻煩,像不同的專案以來不同的版本庫的問題,或者是不想當前的開發環境下充斥著各種各樣又不需要的庫,由此引發一些依賴報錯問題,
這種情況下,就需要通過不同的工程使用不同的虛擬環境來保持開發環境以及宿主環境的清潔,
這時,我們就要使用virtualenv,它可以幫助我們管理不同的python環境,除了virtualenv還有一款工具叫anaconda這個工具里面內置了很多包,但是對于linux中生產環境的部署通常都使用virtualenv,
兩者是有區別的:
- anaconda:anaconda里面自帶python解釋器,也可以通過anaconda的命令安裝python解釋器,由此來創建不同的虛擬環境
- virtualenv:virtualenv是依賴于python解釋器的,也就是說他需要通過pip3 install命令來進行下載
- 兩者的創建虛擬環境的命令使用方法和操作方法很像,具體命令操作可以看作者的另一篇博客:https://www.cnblogs.com/wylshkjj/p/13122349.html
安裝命令
# 指定清華源下載pip的包,這種方式是臨時換源,如果使用的是阿里云的服務器,是不需要換源的,里面是默認的阿里源,如果是虛擬機的話可以自行換源達到加快下載速度的目的,至于怎么換源,我想大家都懂的,我就不多說了
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
# 升級pip工具
pip3 install --upgrade pip
安裝virtualenv:pip3 install virtualenv
注:雖然virtualenv很方便,但是他有一個大缺點
就是每次開啟虛擬環境之前要去虛擬環境所在目錄下的bin目錄下source一下activate,所以這就需要我們記住每個虛擬環境所在的目錄,但是人的記憶是會出錯的,甚至由于時間過長直接就忘記了虛擬環境放在哪里了,所以我們需要使用virtualenvwrapper工具進行虛擬環境的管理,其實他就是統一管理虛擬環境的目錄,并且省去了source的步驟,
安裝virtualenvwrapper命令:pip3 install virtualenvwrapper
至于操作命令上面的博客鏈接里面寫了基本的使用命令
3、下載所需包軟體:
-
方式一:比較麻煩,一個一個手動下載
-
方式二:導包通過pip freeze 檔案名,把所需下載的包打包成檔案,傳到服務器中直接執行下載:
pip3 freeze > requirements.txt1.通過命令保證環境的一致性,匯出當前python環境的包 pip3 freeze > requirements.txt 這將會創建一個 requirements.txt 檔案,其中包含了當前環境中所有包及 各自的版本的簡單串列, 可以使用 “pip list”在不產生requirements檔案的情況下, 查看已安裝包的串列, 2.上傳至服務器后,在服務器下創建virtualenv,在venv中匯入專案所需的模塊依賴 pip3 install -r requirements.txt
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/248869.html
標籤:Python
