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會提示訪問不到。