源碼安裝python +NGINX 的坎坷路 +uwsgi安裝 部署django 項目

1、Nginx安裝(基於ubuntu17.10 版本)css

首先咱們是基於源碼安裝,主要有以下步驟html

一、安裝依賴包python

一、安裝gcc g++的依賴庫 sudo apt-get install build-essential sudo apt-get install libtool

 二、安裝pcre依賴庫
 sudo apt-get update sudo apt-get install libpcre3 libpcre3-dev

 三、安裝zlib依賴庫
 sudo apt-get install zlib1g-dev

 四、安裝SSL依賴庫
 sudo apt-get install openssl

 說實話我一直不知道爲何linux安裝個軟件須要先安裝依賴包這個東西,有時間查詢一下,不過若是你要安裝nginx,請相信我,必定要執行上述步驟。

  

2 、安裝過程linux

wget http://nginx.org/download/nginx-1.13.6.tar.gz #下載nginx安裝包 #解壓: tar -zxvf nginx-1.13.6.tar.gz #解壓安裝包 #進入解壓目錄: cd nginx-1.13.6 #配置: ./configure --prefix=/usr/local/nginx #配置安裝目錄 #編譯:  make #安裝: sudo make install #啓動: sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 注意:-c 指定配置文件的路徑,不加的話,nginx會自動加載默認路徑的配置文件,能夠經過-h查看幫助命令。 #查看進程: ps -ef | grep nginx #查看當前運行的進行,若是nginx已經運行,能夠經過0.0.0.0:80 進行訪問了
 以上都是最友好的過程,請看下面安裝過程遇到的坑

  

三、安裝過程踩的坑nginx

一、 一開始,安裝完成時,啓動nginx ,會提示沒法綁定80端口。 其實就是被佔用了,so 
 1 killall -9 nginx(先停掉nginx) 2 service nginx restart


 二、make 編譯的過程,提示編譯有警告變爲錯誤,一直編譯不成功
 export CFLAGS = "-Wno-error" 
 我記得export 是獲取環境變量的,這個也是對環境變量作一些配置,就能解決這個問題,具體是怎麼個原理,哥也不清楚。反正有效果。

 三、還有一個好像是啓動nginx時候,提示權限的問題,其實就是用戶權限不過,給用戶加一個root用戶的權限組,或者直接sudo su 切換到root用戶便可

  

 2、源碼安裝python3web

安裝老套路,先安裝依賴包,而後下載安裝包,第三部編譯安裝sql

一、安裝依賴django

  

一、sudo apt-get update  #更新軟件源


二、安裝依賴
sudo apt-get install -y gcc make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \
libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev
--------------------- 

  

二、下載源碼、解壓、配置安裝ubuntu

2.1 wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tar.xzvim

2.2 tar -xvf Python-3.7.2.tar.xz

2.3 ./configure --prefix=/usr/local/python3 --enable-optimizations

2.4 make && make install

2.5 刪除原有軟鏈接 rm -rf  /usr/bin/python3

2.6 建立新的軟鏈接 ln -s /usr/local/python3/bin/python3 /usr/bin/python3

2.7 ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

 

  

三、首先去執行一下python有沒有問題,沒有問題,去設置永久的環境變量

 

一、rm /usr/bin/python3 #刪除原有的軟鏈接
二、添加一個新的軟鏈接 ln -s /usr/python371/bin/python3 /usr/bin/python3
設置一些永久的環境變量
三、vim /etc/profile
二、export PATH=/usr/python3/bin:$PATH
三、source /etc/profile

 

  

3、python 和nginx都安裝好了也測試好了,下面是去下載一個django ,而後去執行一下django,看看能不能正常訪問

一、使用豆瓣源安裝django真的超級快,這個提及來有一個坑,就是我,孕媽下載python的時候,那十幾k的下載,我都呀崩潰了

pip install -i https://pypi.doubanio.com/simple/ Django  你可能想問,能不能指定安裝版本,我也不知道能不能,妮可google一下。

  

二、啓動django 

安裝啓動django
#建立django項目

django-admin startproject mysite

#修改django  settings.py配置文件
ALLOWED_HOSTS = ['*']
#啓動django

python3 manage.py runserver 0.0.0.0:9000


#可能出現的問題
網頁訪問不到
	解決辦法:  iptables -F  
				setenforce 0
	關閉防火牆
	

由於我用的不是啥虛擬機,我直接弄了一開電腦,安裝了一個ubuntu ,因此,在指定ip+port時,我用的是ubuntu的實際ip 192.168.0.12:8000.才能訪問。若是是虛擬機好像用上面的沒啥關係。

  

4、介紹兩個好玩的東西,一個是virtualenv模塊 ,一個是virtualenvwrapper

一、virtual

先介紹virtualenv  ,從英文上就能看出來就是虛擬環境簡寫,這個是python的一個模塊,可以穿件虛擬環境。

這玩意的原理 ,簡單來理解,就是複製出一份python解釋器能夠執行的一個環境。而後你能夠在這個環境下在作一些事情,和你實際的物理環境隔離,相互不影響

安裝virtualenv:
	#經過pip3安裝
	pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
	#建立虛擬環境 venv(venv就是一個環境命名) 
	virtualenv --no-site-packages --python=python3   venv  後面這個--python=python3 是說指定複製哪個解釋器
#激活虛擬環境,進入虛擬環境!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!() 重點,這個虛擬環境不是什麼虛擬的linux,只是複製了一份python解釋器! 
#激活虛擬環境 source /data/mydjango1.11.15/venv/bin/activate
#退出虛擬環境 decactive
#此時你的環境變量,已經被修改,添加了虛擬環境 能夠查看echo $PATH

  

 

二、確保開發環境一致

安裝完虛擬環境後,還有一個很是重要的一步,就是這個確保開發環境一致,咱們想一個問題,咱們的django都是在window環境下進行安裝的,和寫代碼的

確保開發環境一致性的操做
	2、確保開發環境的一致性
	1.假設咱們在本地開發環境,準備好了項目+依賴包環境
	2.如今須要將項目上傳至服務器,上線發佈
	3.那麼就要保證服務器的python環境一致性
	複製代碼
	解決方案:
	1.經過命令保證環境的一致性,導出當前python環境的包
	pip3 freeze > requirements.txt   #這個文件重定向後,文件的位置在C盤的用戶下面,例如我本身的重定向後(C:\Users\gsl)

	這將會建立一個 requirements.txt 文件,其中包含了當前環境中全部包及 各自的版本的簡單列表。
	可使用 「pip list」在不產生requirements文件的狀況下, 查看已安裝包的列表。


	2.上傳至服務器後,在服務器下建立virtualenv,在venv中導入項目所需的模塊依賴
        須要將這個文件上傳到虛擬環境的目錄下
        而後執行這條命令
	pip3 install -r requirements.txt

  

三、關於virtualenvwrapper

這個東西就是用來管理虛擬環境的,讓咱們使用虛擬環境操做更加簡便一些(這個東西有一步安裝,哥們直接把python全部依賴都刪除掉了,而後我就跪,從新裝的系統)

 

一、先建立一個路徑用來管理虛擬環境的 mkdir ~/envs

2.vim ~/.bashrc  #打開這個文件,寫入下面三行信息(根據本身目錄結構修改參數)
export WORKON_HOME=~/envs   #設置virtualenv的統一管理目錄
VIRTUALENVWRAPPER_PYTHON=/usrpython371/bin/python3   #賦值一個virtualenvwrapper變量,這個也能夠不寫,能夠經過 mkvirtualenv --python==/usr/bin/python3 ,或者指定本身源碼安裝的路徑
source /opt/python347/bin/virtualenvwrapper.sh     #執行virtualenvwrapper安裝腳本

三、source ~/.bashrc #讀取一下系統變量,而後永久生效

  

關於virtualenvwrapper的相關命令

基本使用virtualenvwrapper,管理virtualenv

	建立一個虛擬環境,默認會激活當前這個虛擬環境
	mkvirtualenv my_django115

	
	#任意切換不一樣的虛擬環境,workon提供tab補全功能,很是方便
	
	workon   my_django115
	
	workon   my_django2 
	這個命令很是方便的用法就是,在物理環境下,快速進入虛擬環境
	
	固然也能夠手動中止虛擬環境
	deactivate
	

        刪除虛擬環境,須要先退出虛擬環境
        rmvirtualenv my_django115

        lsvirtualenv

        列舉全部的環境。
        cdvirtualenv
        導航到當前激活的虛擬環境的目錄中,好比說這樣您就可以瀏覽它的 site-packages 。
        cdsitepackages
        和上面的相似,可是是直接進入到 site-packages 目錄中。
        lssitepackages
        顯示 site-packages 目錄中的內容。

完整官網介紹:https://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html

  

大爺的,就上面這些不斷採坑,大概就花了我2天時間

 

4、(開始進入正戲了)安裝uwsgi

一、apt-get install uwsgi  (這個是在虛擬環境下安裝的)

二、建立uwsgi配置文件  uwsgi.ini (這個文件的路徑也只要在虛擬環境下就好,就是一個啓動uwsgi的配置文件)
[uwsgi]
#使用nginx鏈接時使用
socket=0.0.0.0:9000
#不用nginx直接當作web服務器使用
#http=0.0.0.0:9000
#項目目錄絕對路徑(django項目的絕對路徑)
chdir=/root/Envs/django15/mysite15
#wsgi文件路徑,在項目底下(django項目下面的wsgi文件)
wsgi-file=mysite15/wsgi.py
#指定解釋器目錄
home=/root/Envs/django15
processes=4
threads=2
master=True
pidfile=uwsgi.pid

  

5、配置 nginx轉發請求到uwsgi

配置nginx支持轉發uwsgi請求

主要修改配置以下:
	#負載均衡池 ,這個負載均衡就是nginx分發服務端請求的規則,
         #upstream 後面指定分發的 服務器組 ,裏面是具備相同服務的服務器們
         #nginx 負載均衡支持2中,一種是輪詢,就是循環分發狀況,一種是權重。指定weight。
   upstream django {
    server 0.0.0.0:9000 weight=10;
}
    #gzip  on;
    #虛擬主機標籤段,在這定義mytb.com
      
    server {
        listen       80;
        server_name  www.s12django.com;
        location / 
           #訪問nginx的根路徑時,轉發請求給uwsgi的8000端口,這裏要和uwsgi.ini寫的一致 
            include /opt/nginx1-12/conf/uwsgi_params; 
            uwsgi_pass  django;
            #root   /opt/static/mytb/;
            #index  index.html index.htm;
        }
		#nginx處理靜態資源配置 
		location /static  {
        alias /opt/static/django;
}

  

6、nginx配置靜態資源

首先咱們如今作的事情是,nginx接到client請求,將請求分發給uwsgiServer進行處理,而咱們說nginx只返回靜態文件(html、js、css)因此就要將咱們的靜態文件指定的放在nginx的一個能讀取到的目錄下 ,就是上述的那個 ,nginx 處理靜態資源配置的那個路徑,這個路徑是自定義的。

.配置django項目,收集靜態文件(這兩步的做用是,將咱們用到的靜態文件,放到nginx的靜態文件目錄下)
	#關閉debug模式
	debug=False

	#收集靜態文件的目錄,靜態文件內容都放這裏了(要保證和nginx配置的是一致的路徑,否則你的頁面很是醜)
	STATIC_ROOT='/opt/static/django'(這個路徑須要本身先建立一下)
	STATIC_URL = '/static/'
	STATICFILES_DIRS=[
		os.path.join(BASE_DIR,"static"),
	]
	
.執行命令統一收集靜態文件,使得網站正常加載js,css
python3 manage.py collectstatic

  

七、安裝一個叫作supervisor的進程管理工具

爲何要這個東西是由於,咱們uwsgi是一個webserver ,咱們一直用手工去重啓有點麻煩,直接配置這個東西,咱們管理uwsgi簡單一些。固然這個東西不是必要的

	一、apt-get supervisor
	
	2.生成supervisor配置文件
	echo_supervisord_conf > /etc/supervisord.conf
	
	3.添加進程管理命令
	[program:my_django15] 給你要管理的usgi起個名字
       #這個地方要配置好 ,就是前面你安裝的uwsgi的文件,用這個你本身配置的啓動ini文件啓動的意思。
	command=/root/Envs/django15/bin/uwsgi --ini /root/Envs/django15/mysite15/uwsgi.ini
	
	4.啓動supervosr,管理uwsgi
	supervisord -c /etc/supervisord.conf #啓動supervisor
	supervisorctl   #開始進程管理
	start django15
        stop  django15

  

8、若是以上無誤,就能夠正常訪問到了。

有一個地方 ,忘記記錄了 ,就是關於nginx虛擬主機設置域名的時候,這個咱們在windows下訪問,找到hosts 文件的路徑,將域名和ip+端口配置一下要。否則,你訪問的域名,解析不到正確額ip會提示訪問不到。

相關文章
相關標籤/搜索