1. 程式人生 > >Linux之專案部署

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必須安裝好,存放資料