很是抱歉的是,由於突如其來的疫情,個人hadoop系列斷更了,很難受,由於個人分佈式環境在學校,個人筆記本配置帶不起來,代碼跑不起來我是不敢寫博客的,而後寒假在家寫代碼也沒啥意思,看了很是多的書,把計網和操做系統從新學了一遍。由於實習的須要,將來我更多的技術可能在Python這塊,可是java相關的內容我也會努力保持更新,同時也會出更多的入門教程給你們謝謝你們。php
最近在學習django的過程當中,用django作了一個小demo,因此試試看能不能部署到服務器上,本身順便也熟悉一下Django整個部署的流程,由於以前學習flask的時候,就使用的uwsgi來做爲python web服務器來部署的,因此此次也就選擇了nginx+uwsgi這樣的一個組合。css
當時買完雲服務器以後,就順手把寶塔裝上了,以前用寶塔部署php項目是真的很容易,因此就偷懶試試寶塔能不能部署django,苦試一個小時,無果,遂放棄,仍是老老實實用原生的uwsgi配合Nginx來部署吧。而後下面的流程我會爭取把有多是坑的地方重點標註出來,未來若是發博客或者本身須要再次部署的時候,也能夠少寫不少配置文件。java
系統版本
:centos7.5python
python
版本:3.6.5linux
nginx
版本:1.16.1nginx
uwsgi
版本:2.0.18web
如環境不一樣,還請查閱其餘資料另行配置。sql
在部署以前,請確保你的linux服務器正確安裝了對應的python版本,若是須要python3版本,請自行查閱資料進行升級安裝。django
首先爲了更好的獨立部署,避免對其餘的項目產生干擾,咱們須要安裝python 虛擬環境:json
sudo pip install virtualenv
sudo pip install virtualenvwrapper
複製代碼
virtualenvwrapper 是virtualenv的擴展管理包,能夠將全部的虛擬環境整合在一個目錄下。
配置虛擬環境:
mkdir ~/.virtualenvs
複製代碼
打開.bashrc:
sudo vim ~/.bashrc
複製代碼
在.bashrc的末尾增長下面內容:
export WORKON_HOME=$HOME/.virtualenvs # 全部虛擬環境存儲的目錄
source /usr/local/python3/bin/virtualenvwrapper.sh
複製代碼
注意!:這裏的/usr/local/bin/virtualenvwrapper.sh只是針對於我當前系統環境的一個位置,並非全部的服務器都是在這個位置,若是本身不知道virtualenvwrapper.sh在哪裏,能夠搜索文件來找到它在系統中的位置,而且修改.bashrc。
啓用配置文件:
source ~/.bashrc
複製代碼
這個時候若是不報錯,就表明咱們的虛擬環境配置成功了,通常常見的報錯就是virtualenvwrapper.sh文件找不對。
建立虛擬環境:
找一個你本身以爲能記住的地方,新建一個env 文件夾:
cd /www
mkdir env
cd env #進入env目錄
複製代碼
新建一個虛擬環境:
mkvirtualenv -p /usr/bin/python3 orange_env # my_env是虛擬環境的名稱
複製代碼
注意:若是你的軟鏈接/usr/bin/python3沒有的話,會報錯誤,找不到/usr/bin/python3,這個時候就須要你本身新建一個軟鏈接:
若是報錯:
ln -s /usr/local/python3/bin/python3 /usr/bin/python3 # 路徑要改爲本身的python安裝路徑
複製代碼
以後即可以進入咱們的虛擬環境了:
source /www/env/orange_env/bin/activate
複製代碼
進去虛擬環境以後,前面會出現一個括號,裏面是你虛擬環境的名字:
(orange_env) [root@iz2ze1cvux96riiwfh05qqz ~]#
複製代碼
在虛擬環境中安裝uwsgi:
pip install uwsgi
複製代碼
退出虛擬環境:
deactivate
複製代碼
再次在主環境中安裝uwsgi:
pip install uwsgi
複製代碼
注意:若是你有其餘的依賴,好比django,msqlclient這些,記得必定要在虛擬環境裏pip安裝一下。
找一個你認爲比較合適的地方,新建一個文件夾,將你的Django項目上傳進去:
以我爲例:
cd /www
mkdir orange
複製代碼
上傳解壓操做略,記得是上傳項目根目錄,就是直接帶manage.py的那個目錄。
新建一個uswgi配置文件,uswgi支持多種配置文件類型,好比yaml,xml,json,ini,這裏我選的是xml。
vim mysite.xml #記得mysite.xml 要和你項目的manage.py 在一個目錄下。
複製代碼
mysite.xml內容以下:
<uwsgi>
<socket>127.0.0.1:8080</socket><!-- 內部端口,自定義 -->
<chdir>/www/orange/</chdir><!-- 項目路徑 -->
<module>orangeproject.wsgi</module> <!-- 通常模塊名 項目名+wsgi -->
<processes>4</processes> <!-- 進程數 -->
<daemonize>uwsgi.log</daemonize><!-- 日誌文件 -->
</uwsgi>
複製代碼
安裝Nginx:
Nginx 我以前有寫過一系列的基礎入門教程,若是對安裝啓動重啓這些不是很熟練的能夠看下面這篇文章:
查看nginx 配置文件路徑:
nginx -t
複製代碼
記得備份nginx以前的配置文件,而後把以前的配置所有刪了,直接加入下面內容:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 8000;
server_name 你的域名;
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8080;
uwsgi_param UWSGI_SCRIPT orangeproject.wsgi;
uwsgi_param UWSGI_CHDIR /www/orange/;
}
location /static/ {
alias /www/orange/transfer/static/;
}
}
}
複製代碼
注意模塊名要保持一致,並且你nginx監聽的端口不能和你django啓動的端口同樣,要不uswgi會由於nginx佔用端口啓動失敗。alias /www/orange/transfer/static/; 這個是你的靜態文件地址,css,img這些。
檢查nginx是否配置成功:
nginx -t
複製代碼
重啓nginx:
nginx -s reload
複製代碼
以後,再次進入咱們的虛擬環境orange_env中,啓動咱們的uwsgi服務器:
cd /www/orange
uwsgi -x mysite.xml
複製代碼
而後打開咱們的本地瀏覽器,輸入:域名:8000,備案過的能夠改nginx配置文件成80。
大功告成: