1. 程式人生 > >Django 上線部署 nginx +uswgi

Django 上線部署 nginx +uswgi

使用上傳檔案軟體連線阿里雲伺服器公網IP

在root根目錄下找到var在裡面新建一個www檔案目錄,把自己的專案傳進去,本次傳的是部落格專案

先更新一下:apt-get update
安裝git:apt-get install(不安裝無法下載虛擬環境的pyenv)
安裝編輯器:apt-get install vim
安裝資料庫:apt-get install mysql-server (需要輸入資料庫密碼)
      apt-get install libmysqlclient-dev
安裝redis : sudo apt-get install redis-server
安裝nginx:apt-get install nginx

安裝虛擬開發環境

pyenv是一個Python版本管理工具,它能夠進行全域性的Python版本切換,也可以為單個專案提供對應的Python版本。使用pyenv以後,可以在伺服器上安裝多個不同的Python版本,也可以安裝不同的Python實現。不同Python版本之間的切換也非常簡單。pyenv官方地址https://github.com/pyenv/pyenv-installer
 安裝pyenv,在命令列下鍵入:
 curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
 #預設安裝到當前使用者的工作目錄下的.pyenv,我們可以檢視一下
cd ~
ls -la
將安裝路徑寫入~/.bashrc
將以下三條語句寫入 ~/.bashrc (每個人的都不一樣,上面安裝後最後出現的三句話就是)
sudo vim .bashrc
跳到檔案末端
shift+G
按o
export PATH="/home/zhu/.pyenv/bin:$PATH" 
eval
"$(pyenv init -)"
eval
"$(pyenv virtualenv-init -)"
按esc
按 :x

source  ~/.bashrc  #配置立刻生效
$echo $PATH #如果路徑第一個結尾是shims則表示成功 
/home/python/.pyenv/plugins/pyenv-virtualenv/shims:/home/python/.pyenv/shims :/home/python/.pyenv/bin:/home/python/bin:/home/python/.local/bin:/usr/local/sbin :/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin 更新一下 pyenv update 列出pyenv中所有可用的python版本 pyenv versions
可以看到系統沒有任何編譯工具,我們需要下載python
安裝python
 ```shell
  #1.在安裝python之前,我們必須要安裝python所需要的依賴包,這個必須要安裝,安裝會失敗的:
  $ sudo apt-get install libc6-dev gcc
  $ sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm

  #2. 安裝python
  $ pyenv install 3.6.6 -v  #-v 以日誌模式顯示安裝過程
  #因為pyenv會自動到github上下載,速度超慢,所以一般會選擇使用curl或者wget下載到~/.pyenv/cache下,然後再用pyenv安裝,下面是可選的安裝模式
  $ cd ~/.pyenv
  $ sudo mkdir cache
  $ wget -c http://mirrors.sohu.com/python/3.6.6/Python-3.6.6.tar.xz -P  ~/.pyenv/cache/
  $ pyenv install 3.6.6 -v(一定要用這個安裝python)

  #3.更新pyenv資料庫
   $ pyenv rehash

  #4.列出所安裝的python版本
    $ pyenv versions

  #5.切換python版本
  $ pyenv  global 3.6.6

  #6.驗證版本
   $ python
  ```
 安裝virtualenv(可選)

  如果是python3以上,安裝完pyth就已經安裝了virtualenv,就不用安裝了

  ~~~
  #安裝
  $ pip install virtualenv

  #或者,如果提示版本不匹配,可以使用--upgrade引數
  $ sudo pip install --upgrade virtualenv
  ~~~


- 使用virtualenv建立專案的虛擬環境

**一個專案建立一個virtualenv的虛擬環境**,在這個環境中,可以用pip安裝專案所需的庫,不會影響其他專案。切記一個專案一個虛擬環境,否則可能會發生莫名的錯誤。

~~~
#1.首先建立專案目錄
$ sudo mkdir -p myproject/blog
cd myproject/blog

#2.建立專案的虛擬環境
#用法:pyenv virtualenv python版本號 虛擬環境名
$ pyenv virtualenv 3.6.6 env3.6.6  #注意版本號必須是已經安裝的,否則會報錯

#3.切換到虛擬環境
[email protected]:/myproject/blog$ pyenv activate env3.6.6

(env3.6.6) [email protected]:/myproject/blog$  # (env3.6.6)表示該專案處於虛擬環境中

#驗證
(env3.6.6) [email protected]:/myproject/blog$ python
Python 3.6.6 (default, Mar 29 2018, 10:33:37) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.

#4. 切出虛擬環境
(env3.6.6) [email protected]:/myproject/blog$ pyenv deactivate env3.6.6
~~~
切換到你上傳的專案目錄
cd /var/www/django_blog
如果你沒有退出虛擬環境就不用切換了,如果退出了就重新啟用
pyenv activate env3.6.6
pip install django==1.11.16
pip install pymysql
pip install pillow
pip install django-tinymce
插入你所有需要的包,不然最後會有報錯

這些是我需要的包

pip install uwsgi
編輯uwsgi配置檔案
 sudo vim uswgiconf.ini
[uwsgi]
   socket = 0.0.0.0:8000 # uwsgi的監聽埠
# 指向專案根目錄
  chdir =  /var/www/django_blog
   # wsgi.py所在位置
  wsgi-file = django_blog/wsgi.py
   module = django_blog.wsgi
   # 虛擬開發環境位置(一定要改成你自己的虛擬環境目錄)  virtualenv = /root/.pyenv/versions/env3.6.6
   
   master = true
   #處理器數
   processes = 1
# 執行緒數
   threads = 4
#啟動一下看看有沒有報錯
uwsgi uswgiconf.ini
可以看一下下面是沒有報錯的
然後ctrl +c結束程式配置nginx

新建並配置
sudo vim /etc/nginx/sites-available/myblog

配置內容
server {
        listen 80;
        server_name www.olnyou.cn;(你自己的域名)
        location / {
                uwsgi_pass      127.0.0.1:8000; 
           include uwsgi_params; 
           uwsgi_param UWSGI_SCRIPT django_blog.wsgi;
           
                uwsgi_param UWSGI_CHDIR  /var/www/django_blog;
        }
        
        location /static {
                alias /var/www/django_blog/static/;(靜態檔案位置)
        }
   }
cd /etc/nginx/sites-enabled/
ln -s ../sites-available/myblog myblog#建立軟連線
ll
如下圖沒有飆紅證明沒有問題

 

#重啟nginx
service nginx restart
最好把你的資料庫也上傳上來,後面要用到
上傳阿里雲簡訊驗證,先給他建一個檔案目錄,如下圖

cd  
cd duanxinyanzheng/dysms_python
ls
python setup.py install
mysql -uroot -p
輸入密碼
建立你自己的資料庫
create database blog;
exit

找到你的資料。進行資料恢復 
mysql -uroot -p blog2 <blog2.sql
切換到你的專案目錄
cd /var/www/django_blog/
啟動uwsgi
uwsgi uswgiconf.ini

現在登入你的網址就可以訪問了,有不懂的歡迎交流。