Python3.6+nginx+uwsgi部署Django程序到阿里雲Ubuntu16.04系統

Python3.6+nginx+uwsgi部署Django程序到阿里雲Ubuntu16.04系統

在這裏插入圖片描述
這個是寫好的Django程序在本地機運行的狀況,一個查詢接口。python

準備工做

1.首先購買一臺阿里雲的ECS服務器,選擇Ubuntu16.04操做系統(我使用的是學生機 10/月)
2.註冊一個碼雲帳號,由於github私有項目是收費的,而碼雲是免費的。
3.準備一個Django項目,在本地機運行沒有問題。
在這裏插入圖片描述mysql

本項目代碼和數據已上傳到github
https://github.com/PythonerKK/eleme-api-by-django-restful-framework
***nginx

在這個例子中,咱們將在阿里雲服務器上部署Django編寫好的餓了麼高校外賣商家查詢API接口,部署成功後能夠經過IP地址或者域名訪問。(數據庫我使用的是阿里雲的RDS Mysql,你們也能夠直接在阿里雲ECS服務器上安裝數據庫本地訪問)git

用Pycharm把寫好的項目上傳到碼雲私有項目中

須要在pycharm的設置裏安裝gitee插件,重啓後可以使用github

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述能夠看到已經成功上傳至碼雲,注意是私有項目!sql

阿里雲服務器端的配置

使用SSH遠程工具登陸阿里雲服務器
在這裏插入圖片描述由於Ubuntu16.04自帶的是Python2.7版本,而個人項目使用Python3.6開發,因此須要將版本替換爲python3,執行以下命令便可完美替換。數據庫

//執行如下命令來安裝python3.6
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt-get update
sudo apt-get install python3.6

//執行如下命令來修改默認python版本
cd /usr/bin
rm python
ln -s python3.6m python

//執行如下命令來升級pip版本
wget https://bootstrap.pypa.io/get-pip.py  --no-check-certificate
sudo python get-pip.py
//執行如下命令來驗證是否成功安裝python3.6和pip
python
pip

一路執行到這裏,在命令行中輸入python和pip,查看是否爲python3.6而且可以用pip安裝。若是沒問題接着看下面,若是pip有問題重裝再執行一遍,不會出問題的。django

接下來安裝服務器必備的工具bootstrap

//若是想把數據庫直接放在服務器本地上,執行如下安裝mysql命令
$ sudo apt install mysql-server mysql-client
$ sudo apt-get install libmysqld-dev

//安裝支持包
$ apt-get install libpython3.6-dev

//安裝git
$ apt install git
$ apt-get install libpython3.6-dev

//在系統級python中安裝uwsgi,virtualenv
$ pip install uwsgi
$ pip install virtualenv
$ pip install virtualwrapper

//修改環境變量,直接使用mkvirtualenv建立一個虛擬環境
$ vi ~/.bashrc
把下面兩行添加到末尾,按下ESC輸入冒號wq保存。
export WORKON_HONE=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

激活剛剛添加的變量
$ source ~/.bashrc
建立一個名字叫django的虛擬環境,成功後自動激活,直接pip安裝所需包
$ mkvirtualenv django
(django) $ pip install XXX

在這裏插入圖片描述在這裏插入圖片描述

到此準備工做已經完成,接下來就是把django項目從gitee上拉取下來。ubuntu

$ cd/srv
$ mkdir ele
$ cd ele
$ git init
$ git remote add origin [這裏寫你的項目地址.git]
$ git pull origin master
後面會提示你輸入gitee的帳號密碼

在這裏插入圖片描述

用uwsgi測試運行是否正常

//執行如下命令,ele.wsgi能夠自定義命名
$uwsgi --http :8000 --module ele.wsgi --virtualenv /root/.virtualenvs/django

在這裏插入圖片描述
能夠看到使用服務器IP能成功訪問到接口了
若是能訪問能夠接着往下走

配置Nginx和uwsgi

在項目目錄下新建一個xxx.wsgi.ini,我這裏新建的是ele.wsgi.ini

$ touch ele.wsgi.ini
$ vi ele.wsgi.ini

xx.wsgi.ini配置以下:

[uwsgi]
chdir = /srv/ele
module = ele.wsgi
home = /root/.virtualenvs/django
socket = /srv/ele/ele.sock
chmod-socket = 666

接下來配置nginx

//安裝nginx
$ apt install nginx
//開啓nginx服務
$ service nginx start
//寫nginx配置
$ touch /etc/nginx/conf.d/ele.conf
$ vi /etc/nginx/conf.d/ele.conf

ele.conf配置以下(儘可能手寫否則容易出錯)

upstream ele{
    server unix:///srv/ele/ele.sock;
}
server{
    listen 80;
    server_name (這裏寫阿里雲服務器的地址);
    charset utf-8;
    client_max_body_size 75M;

    location /{
        uwsgi_pass ele;
        include /etc/nginx/uwsgi_params;
    }
}

寫完之後命令行輸入如下命令

$ nginx -t
$ service nginx configtest

當你看到下圖 OK,則說明已經配置成功了!!!若是顯示fail則使用nginx -t查找錯誤緣由,看一下是否配置文件寫錯了!!
在這裏插入圖片描述

部署成功

在項目路徑下輸入如下命令(不須要進入虛擬環境)
$ uwsgi --ini ele.wsgi.ini

如圖所示,項目已經在服務器跑起來了!!
在這裏插入圖片描述
這個時候不須要帶端口號,直接訪問你服務器的地址就能夠了,如圖所示,已經成功!!
在這裏插入圖片描述
瀏覽器測試結果以下:由於沒有收集靜態文件,因此靜態文件例如圖片、JS、CSS樣式沒有加載出來,由於是接口因此無所謂。
在這裏插入圖片描述
若是須要加載靜態文件,須要作以下改動

settings.py文件添加如下內容

STATIC_ROOT = os.path.join(BASE_DIR,'static_dist')

終端加載虛擬環境

(django)$ python manage.py collectstatic

更改/etc/nginx/conf.d/ele.conf文件配置

server{
            在server裏面增長下面的內容
            location /static {
            alias /srv/ele/static_dist;
            }
    }

收集好靜態文件,就能顯示正常的效果了

以上就是阿里雲Ubuntu16.04服務器使用python3.6+nginx+uwsgi部署Django項目的過程了,只要按照上述步驟走,基本上就是能夠成功的。

若是你們有域名,能夠解析域名綁定到服務器IP上,在Django項目settings.py中的ALLOWED_HOST=[]添加你的IP地址,而後在/etc/nginx/conf.d/ele.conf文件中把IP地址改爲域名就能夠了。

本項目代碼和數據已上傳到github
https://github.com/PythonerKK/eleme-api-by-django-restful-framework ***

相關文章
相關標籤/搜索