Linux之專案部署
一 部署環境準備(準備Python3和虛擬機器環境直譯器,virtualenvwrapper)
1 下載virtualenvwrapper
pip3 install -i https://pypi.douban.com/simple virtualenvwrapper
2 修改Python3的環境變數,寫入到/etc/profile中
PATH=/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/ruby/bin/:/root/bin
3 修改~/.bashrc 寫入變數
4 新建一個虛擬環境 boy
mkvirtualenv boy
5 準備前後端程式碼
使用wget 下載下來 如: wget 前端檔案地址 wget後端檔案地址 如果程式碼在本地,傳到伺服器 使用 lrzsz 和xftp工具
6 下載完成後,解壓縮程式碼
unzip 前端的壓縮檔案 unzip 後端的壓縮檔案 注意 根據你的壓縮檔案的格式 選擇解壓縮的方式
7 前端中的程式碼
(1)準備node打包環境
wget https://nodejs.org/download/release/v8.6.0/node-v8.6.0-linux-x64.tar.gz
(2)解壓縮node包,配置環境變數,使用npm和node命令
tar命令解壓檔案 tar -xzf node-v8.6.0-linux-x64.tar.gz
(3)檢測node和npm
node -v npm -v #注意要是完成了之後,執行這兩個命令 結果都是出現相應的版本號
(4)安裝vue專案所需的包
npm install #下載Vue所需的包 npm run build #執行Vue專案 #這兩條都正確配置之後,就會生成一個 dist 靜態檔案目錄,整個專案的前端內容和index.html都在這裡了
(5)等待nginx載入這個dist資料夾
8 部署後端程式碼所需的環境
(1)啟用虛擬環境
workon boy
(2) 通過一條命令,到處本地的所有軟體包依賴
pip3 freeze > requirements.txt
(3) 將這個requirements.txt傳到伺服器中,在伺服器的新虛擬環境中,安裝這個檔案,就能安裝所有的軟體包了
pip3 install -r requirements.txt
這個檔案的內容如下:專案所需的軟體包都在這裡
[[email protected] opt]# cat requirements.txt certifi==2018.11.29 chardet==3.0.4 crypto==1.4.1 Django==2.1.4 django-redis==4.10.0 django-rest-framework==0.1.0 djangorestframework==3.9.0 idna==2.8 Naked==0.1.31 pycrypto==2.6.1 pytz==2018.7 PyYAML==3.13 redis==3.0.1 requests==2.21.0 shellescape==3.4.1 urllib3==1.24.1 uWSGI==2.0.17.1
(4)準備uwsgi 支援高併發的啟動python專案(注意uwsgi不支援靜態檔案的解析,必須用nginx去處理靜態檔案
1 安裝uwsgi
pip3 install -i https://pypi.douban.com/simple uwsgi
2 學習uwsgi的使用方法
通過uwsgi啟動一個python web檔案 uwsgi --http :8000 --wsgi-file s15testuwsgi.py --http 指定http協議 --wsgi-file 指定一個python檔案 通過uwsgi啟動django專案,並且支援熱載入專案,不重啟專案,自動生效 新的 後端程式碼 uwsgi --http :8000 --module s15drf.wsgi --py-autoreload=1 --module 指定找到django專案的wsgi.py檔案
5 使用uwsgi 的配置檔案,啟動專案
1.建立一個uwsgi.ini配置檔案,寫入引數資訊 touch uwsgi.ini #建立uwsgi.ini配置檔案 寫入 [uwsgi] # Django-related settings # the base directory (full path) #指定專案的絕對路徑的第一層路徑!! chdir = /opt/s15vuedrf/luffy_boy/ # Django's wsgi file # 指定專案的 wsgi.py檔案! # 寫入相對路徑即可,這個引數是以 chdir引數為相對路徑 module = luffy_boy.wsgi # the virtualenv (full path) # 寫入虛擬環境直譯器的 絕對路徑!!!!!! home = /root/Envs/s15vuedrf # process-related settings # master master = true # maximum number of worker processes #指定uwsgi啟動的程序個數 processes = 1 #這個引數及其重要!!!!!! # the socket (use the full path to be safe #socket指的是,uwsgi啟動一個socket連線,當你使用nginx+uwsgi的時候,使用socket引數 socket = 0.0.0.0:8000 #這個引數是uwsgi啟動一個http連線,當你不用nginx只用uwsgi的時候,使用這個引數 #http = 0.0.0.0:8000 # ... with appropriate permissions - may be needed # chmod-socket = 664 # clear environment on exit vacuum = true
6 使用uwisgi配置檔案啟動專案
uwsgi --ini uwsgi.ini
supervisor程序管理工具
1 將Linux程序執行在後臺的方法有哪些
第一個,命令後面加上 & 符號 python manage.py runserver & 第二個 使用nohup命令 第三個使用程序管理工具
2.安裝supervisor,使用python2的包管理工具 easy_install ,注意,此時要退出虛擬環境!!!!
如果沒有此命令,使用以下命令安裝 yum install python-setuptools easy_install supervisor
3 通過命令,生成一個配置檔案,這個問價就是寫入你要管理的程序任務
echo_supervisord_conf > /etc/supervisor.conf
4 編輯這個配置檔案,寫入操作django專案的命令
vim /etc/supervisor.conf #進入編輯 直接到最底行,寫入以下配置 [program:s15luffy] command=/root/Envs/s15vuedrf/bin/uwsgi --ini /opt/s15vuedrf/luffy_boy/s15drf/uwsgi.ini
5 啟動supervisord服務端,指定配置檔案啟動
supervisord -c /etc/supervisor.conf
6 通過supervisorctl管理任務
supervisorctl -c /etc/supervisor.conf
7 supervisor管理django程序的命令如下
supervisorctl直接輸入命令會進入互動式的操作介面 > stop s15luffy > start s15luffy > status s15luffy
8 啟動後端程式碼
nginx的配置步驟如下
1 編輯安裝nginx
2 nginx.conf配置如下
#第一個server虛擬主機是為了找到vue的dist檔案, 找到專案的index.html server { listen 80; server_name 192.168.13.79; #當請求來自於 192.168.13.79/的時候,直接進入以下location,然後找到vue的dist/index.html location / { root /opt/s15vuedrf/07-luffy_project_01/dist; index index.html; } } #由於vue傳送的介面資料地址是 192.168.13.79:8000 我們還得再準備一個入口server server { listen 8000; server_name 192.168.13.79; #當接收到介面資料時,請求url是 192.168.13.79:8000 就進入如下location location / { #這裡是nginx將請求轉發給 uwsgi啟動的 9000埠 uwsgi_pass 192.168.13.79:9000; # include 就是一個“引入的作用”,就是將外部一個檔案的引數,匯入到當前的nginx.conf中生效 include /opt/nginx112/conf/uwsgi_params; } }
3 啟動nginx
./sbin/nginx #執行這句話 直接啟動
此時可以訪問 192.168.13.79 檢視頁面結果
注意注意:redis必須安裝好,存放資料