django項目部署上線

前言

完善的django項目上線,有不少種上線的方法,好比apache, uwsgi, nginx等。這裏只介紹2種,一種是django自帶的,另一種則是nginx + uwsgi完成介紹。這裏的系統環境採用的是ubantu系統, python環境採用的是python3, django環境採用1.11python

1、自帶的部署功能

數據從pycharm轉移到ubantu中。使用xshell軟件mysql


 
QQ圖片20180512193224.png

數據庫遷移:
若是django項目中的數據是在本地的mysql中,須要將它的數據遷移到遠程鏈接的數據庫中。使用navicat操做, 在工具下拉列表中有一個數據傳輸按鈕nginx


 
image.png

進入後,配置好,點擊下一步就好
 
image.png

1. 環境配置

  • 更新安裝包: sudo apt update
  • 下載mysql : apt install mysql-server mysql-client

2. 設置遠程訪問mysql:

(1) 查找 mysql.conf, 通常在/etc/mysql/mysql.conf.d目錄下
find / -name mysql.cnf
(2)註釋掉mysql.cnf文件中bind.conf.d,使外網也能夠訪問數據庫
vim /etc/mysql/mysql.conf.d/mysqld.cnf
web

 
QQ圖片20180512085640.png

(3)設置mysql數據庫的用戶密碼
設置: GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
刷新操做:flush privileges;

 

3. 修改django中的配置文件

  • 修改settings.py
    (1) 設置DEBUG=FALSE, ALLOWED_HOST = ['']
     
    image.png

    若是上線的時候出現500,502錯誤等,能夠將DEBUG=False設置爲DEBUG=True,這時候你就能夠在瀏覽器中看到具體的錯誤,而後進行調試
    (2)
    靜態文件的STARC的路徑配置
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    ![image.png](https://upload-images.jianshu.io/upload_images/10914545-f44323417d3ce602.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240
    (3)修改工程urls.py配置
    導入serve包:
    from django.views.static import serve
    在路由中加入static的路由地址:
    url(r'^static/(?P<path>.
    )$', serve, {"document_root": settings.STATIC_ROOT})
     
    image.png

4.修改首頁的訪問地址

在工程urls.py裏部署首頁訪問的地址: views.home是本身設置的一個方法,是路由指向的地址
url(r'^$', views.home)sql

5. 安裝pip3, 使用pip3來安裝必備的數據庫

安裝pip3 :up主在這裏遇到過一個bug,安裝不上庫文件,這時候你須要將pip3更新到最新的版本
apt install python3-pip
安裝必備庫:
pip3 install django
pip3 install pymysql
pip3 install pillowshell

6. 查看進程:

看看端口啥的, 若是80端口被佔用了,下面能夠更換到其餘端口,也能夠直接kill -9 掉佔用端口的程序
netstat -lntp數據庫

7. 啓動項目

進入manage.py文件目錄下:
python3 manage.py runserver 0.0.0.0:8000apache

2、使用nginx+uwsgi部署

1.nagin和uwsgi介紹

關於nginx和uwsgi與django的聯繫,有一篇博文講得簡單明瞭
https://blog.csdn.net/u014761344/article/details/40146597
(1)nginx:
nginx概念:
Nginx是一款高性能的http 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器。
nginx應用場景:
一、 http服務器。Nginx是一個http服務能夠獨立提供http服務。能夠作網頁靜態服務器。
二、 虛擬主機。能夠實如今一臺服務器虛擬出多個網站。例如我的網站使用的虛擬主機。
基於端口的,不一樣的端口
基於域名的,不一樣域名
三、 反向代理,負載均衡。當網站的訪問量達到必定程度後,單臺服務器不能知足用戶的請求時,須要用多臺服務器集羣可使用nginx作反向代理。而且多臺服務器能夠平均分擔負載,不會由於某臺服務器負載高宕機而某臺服務器閒置的狀況。
(2)uwsgi
uwsgi概念:
uWSGI實現了WSGI的全部接口,是一個快速、自我修復、開發人員和系統管理員友好的服務器django

2.安裝nginx

nginx啓動後,能夠在公網的ip地址上看到welcome to nginx
sudo apt-get install nginxvim

3.查看nginx的狀態

systemctl status nginx 查看nginx的狀態
system start/stop/enable/disable nginx 啓動/關閉/設置開機啓動/禁止開機啓動
service nginx status/stop/restart/start 查看狀態/中止/重啓/開啓 ngnix
安裝完成後,若是不能啓動nginx,可使用 ps -ef | grep nginx 查看進程,殺掉所有的nginx進程,再從新啓動nginx

4.安裝uwsgi

pip install uwsgi

5.在nginx的配置文件中加載自定義的nginx的配置文件

up主這裏使用本身的.conf文件放在 /home/app/conf/的,這裏建議你們創建一個統一的文件夾來管理conf文件
進入nginx的配置文件:
vim /etc/nginx/nginx.conf
修改文件:增長 include /home/app/conf/
.conf;

 
QQ圖片20180512095927.png

 

6. 配置自定的nginx文件:

up主建議每個項目都單獨創建一個conf文件
找到本身建立的conf文件, 並進入配置:
vim /home/app/conf/axfnginx.conf
配置:


 
image.png

7.配置uwsgi

up主是將uwsgi.ini文件與conf文件放在一塊兒的
pythonpath爲工程文件目錄
scoket要與nginx中的徹底相同
logto爲保存日誌文件的地方


 
image.png

nginx和uwsgi還能夠配置更多的東西,這裏配置的都是最簡單須要的內容

  • [uwsgi] 必須有 , 否則會報如下錯
Can't find section "uwsgi" in INI configuration file myweb_uwsgi.ini

8.啓動項目

進入uwsgi.ini文件目錄中:
uwsgi --ini uwsgi.ini

9.部署完成

可能會出現,nginx靜態資源文件沒法訪問,403 forbidden錯誤

解決辦法:

在nginx.conf配置文件頭部加user root:

user root;
worker_processes 8;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;

events {
worker_connections 1024;
}

連接:https://www.jianshu.com/p/c060448b3e78來源:簡書

相關文章
相關標籤/搜索