linux 系統會自帶python,通常不須要特定安裝python. 查看版本html
python -V
修改默認版本 [即修改python的link位置]python
ln -snf /usr/bin/python3.6 /usr/bin/python
ln -s [源文件] [連接文件]linux
準備python-dev[或者 python-devel]nginx
sudo apt-get update sudo apt-get upgrade sudo apt-get install python-dev sudo apt-get install gcc sudo apt-get install puthon-pip #pip python軟件管理工具
訪問pip
報錯 關於 /usr/bin/pip mian
執行pip更新web
easy_install --upgrade pip
查看pip 版本django
pip -V
安裝Uwsgi Djangovim
pip install uwsgi pip install Django==2.1.1 #2.1.1爲版本號 請到官網獲取最新
Uwsgi 與Python 鏈接測試服務器
cd /var/www #新建一個test.py vim test.py #內容以下 def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b"Hello World"] #開啓uwsgi http服務 uwsgi --http :8000 --wsgi-file test.py # 2) #訪問 127.0.0.1:8000 是否輸出helloworld; #未輸出,請檢查test.py的return helloworld 與python版本是否一致 #沒法訪問 請檢查防火牆及端口占用
如HelloWorld正常輸出 說明 uwsgi與python鏈接無缺。多線程
Django 項目建立及配置app
#進入項目目錄 cd /var/www #projectName 爲項目名 請自定義 django-admin startproject projectName #進入projectName目錄 cd projectName #1.修改setting.py 讓項目容許的host爲所有 vim projectName/setting.py ALLOWED_HOSTS = ["*"] #2.在項目目錄下,建立 靜態文件目錄 及視頻圖片目錄 sudo mkdir static_common sudo mkdir media_common #配置設置到setting.py文件尾部 vim projectName/setting.py STATIC_ROOT = os.path.join(BASE_DIR, 'static_common') MEDIA_ROOT = os.path.join(BASE_DIR, 'media_common') #進入項目根目錄,執行靜態文件遷移命令 python manage.py collectstatic #提示輸入選項時選yes便可
nginx 安裝
sudo apt-get install nginx #安裝完畢,訪問127.0.0.1 或者ip地址,查看nginx是否成功。
nginx與django配置
#進入項目目錄 cd /var/www/projectName #將/etc/nginx/目錄下的uwsgi_params複製到項目文件夾,對此文件不作任何改動 cp /etc/nginx/uwsgi_params ./ #在項目根目錄建立文件my_nginx.conf(nginx配置),my_uwsgi.ini(uwsgi配置),並寫入如下內容【注意不一樣項目請區別名稱】 touch my_nginx.conf #以下 touch my_uwsgi.ini #以下 #與Nginx配置目錄創建軟連接 sudo ln -s /var/www/projectName/my_nginx.conf /etc/nginx/sites-enabled/ #[必須使用絕對路徑,不然nginx 啓動報錯]
my_nginx.conf 內容
upstream django { # server 127.0.0.1:8001;#【使用socket 請開打此項 配合 uwsgi socket使用 1)】 server unix:///var/www/projectName/mySock.sock;#【使用 UNIX socket 3)】 } server { listen 80; # 【端口號】 server_name myweb.com; # 【服務器 ip 或是域名】 charset utf-8; # 字符集 # 最大上傳限制 # client_max_body_size 75M; location /media { alias /var/www/projectName/media_common; # 【媒體文件所在文件夾】 } location /static { alias /var/www/projectName/static_common; # 【靜態文件所在文件夾】 } # 將全部非媒體請求轉到Django服務器上 location / { uwsgi_pass django; # 最上方已定義 # 將全部參數都轉到uwsgi下 include /var/www/projectName/uwsgi_params; # 【uwsgi_params的路徑】 } }
這個配置文件表示將靜態文件和媒體文件由Nginx處理,而其它的請求轉入uWSGI處理
my_uwsgi.ini 內容
[uwsgi] # 使用nginx鏈接時使用 1) # socket = 0:8001 # 直接作web服務器使用 【命令行直接調用 2)】 # http = 0:8080 # 【項目目錄】 chdir = /var/www/projectName # 【項目中wsgi.py文件的目錄】 wsgi-file = /var/www/projectName/projectName/wsgi.py # 主進程 master = true # 多進程&多線程 processes = 6 threads = 2 # 【.sock文件目錄需與Nginx文件內的配置相同】 socket = /var/www/projectName/my_sock.sock # 3) chmod-socket = 666 # 以守護進程的方式啓動 vacuum = true # 存儲pid進程 pidfile=uwsgi.pid # 存儲log日誌 daemonize=uwsgi.log
重啓Nginx和uWSGI
sudo service nginx restart #重啓nginx cd /var/www/projectName uwsgi --stop uwsgi.pid #關閉原有的 uwsgi uwsig --ini my_uwsgi.ini #使用項目的配置文件 已後臺方式啓動 uwsgi
訪問 myweb.com 完成環境搭建
設置開機自啓動
將各項目的uwsgi配置到開機自啓內便可
uwsgi --ini /var/www/projectName/my_uwsig.ini
新增項目 注意事項