ubuntu18+uwsgi+nginx部署django項目

更新系統軟件源css

  sudo apt-get updatepython

pip3安裝mysql

  sudo apt install python3-pipnginx

安裝virtualenvwrappergit

  pip3 install virtualenvwrapperredis

修改.bashrc,最後面添加如下代碼:sql

  export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3數據庫

  source /usr/local/bin/virtualenvwrapper.shvim

從新加載配置瀏覽器

  source ~/.bashrc

 

建立虛擬環境

  mkvirtualenv 虛擬環境名

進入虛擬環境

  workon 虛擬環境名

退出虛擬環境

  deactivate

 

安裝mysql

  sudo apt-get install mysql-server

 

安裝mysql驅動
  sudo apt-get install libmysqlclient-dev

 

設置mysql容許遠程訪問,方便使用navicat導入數據.首先編輯文件/etc/mysql/mysql.conf.d/mysqld.cnf

  sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

  註釋掉bind-address = 127.0.0.1: #容許遠程鏈接

 

進入mysql,修改root密碼

  mysql>set password for root@localhost = password('123');

 

建立普通用戶

  create user 'username'@'%' IDENTIFIED BY 'password';

 

給普通用戶賦權

  grant all on *.* to username@'%';

 

刷新

  flush privileges;

 

退出

  exit

 

重啓mysql

  service mysql restart

 

安裝redis

  sudo apt-get install redis-server

 

修改redis配置

  使用redis的訪問帳號

  sudo vi /etc/redis/redis.conf

  #取消註釋requirepass

  requirepass 密碼

 

容許遠程訪問

  #註釋bind

  # bind 127.0.0.1

重啓redis

  sudo /etc/init.d/redis-server restart

 

桌面建立新目錄Project

  mkdir Project

 

在項目中建立項目依賴包文件

  pip freeze > package.txt

 

上傳項目到Project,或者進入Project使用git克隆

  scp -r 本地項目目錄  root@服務器IP:/root/Project

  git clone 項目地址

 

安裝依賴包

  pip install -r package.txt

 

進入項目修改settings文件

  將mysql帳號密碼修改爲服務器的

  修改ALLOWED_HOSTS = ['*']

 

# 測試以前先將項目用到數據導入數據庫,否則確定報錯

測試可否正常運行,而後瀏覽器訪問服務器地址

  python3 manage.py runserver 0.0.0.0:80

 

安裝uwsgi

  sudo pip3 install uwsgi

 

在manage.py同級目錄下建立uwsgi.ini文件

  vim uwsgi.ini

 

編輯內容以下

[uwsgi] #若是單獨使用uwsgi來部署Django項目時,就用這一行。 http=0.0.0.0:80 #若是使用nginx+uwsgi來部署Django項目時,就用這行。 # socket=127.0.0.1:8080 # 和nginx鏈接的端口 #你項目的完整路徑。 chdir=/root/Project/MyProject #給socket文件賦權限,這裏不用管。 # chmod-socket=664 #啓用主線程。 master=true processes=4 threads=2 #指定日誌文件(會自動建立)。這個很重要,若是uwsgi出現錯誤,能夠經過日誌文件來查錯。 logto=uwsgi.log #指定進程號文件(會自動建立)。這個也很重要,若是要重啓和關閉uwsgi,則須要這個文件,裏面記錄了進程號。 pidfile=uwsgi.pid #指定wsgi文件。在與settings.py同級目錄中會有一個wsgi.py文件。 module=MyProject.wsgi:application

 

保存退出後啓動uwsgi,若是報錯請查看日誌文件

  uwsgi --ini uwsgi.ini 

 

安裝nginx

  sudo apt-get nginx

 

進入/etc/nginx/備份nginx.conf

  sudo cp nginx.conf nginx.conf.bak

刪除nginx.conf,從新建立nginx.conf,內容以下:

  

events { worker_connections 1024; # 不用管 } http{ server { listen 80; #這個端口用來監聽瀏覽器的請求。 server_name 0.0.0.0; # 不用管,若是有域名能夠填上域名。 charset UTF-8; #日誌文件。若是nginx出現問題,均可以經過日誌文件來查錯。 access_log /var/log/nginx/MyProject_access.log; error_log /var/log/nginx/MyProject_error.log; client_max_body_size 75M; location / { include uwsgi_params; # 使用uwsgi服務器。 uwsgi_pass 127.0.0.1:8080; # 把瀏覽器發來的請求轉發到8001端口,而uwsgi也正在監聽8001端口,因此就實現了nginx與uwsgi的通訊。 uwsgi_read_timeout 30; #連接超時時間 } location /static/{ # 處理靜態文件,處理連接是以/static/開頭的請求。 alias /usr/DjangoProject/MyProject/static/; # 項目靜態文件的絕對路徑。 } } }

 


最後

修改uwsgi.ini文件,把http=0.0.0.0:80註釋掉,使用socket=127.0.0.1:8080

輸入:uwsgi -d --ini uwsgi.ini    # 啓動uwsgi服務器。-d表示在後臺運行。這樣就不會佔用當前窗口了。

輸入:/etc/init.d/nginx start     # 啓動nginx

瀏覽器訪問

相關文章
相關標籤/搜索