這個是寫好的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的設置裏安裝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的帳號密碼
//執行如下命令,ele.wsgi能夠自定義命名 $uwsgi --http :8000 --module ele.wsgi --virtualenv /root/.virtualenvs/django
能夠看到使用服務器IP能成功訪問到接口了
若是能訪問能夠接着往下走
在項目目錄下新建一個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 ***