Ubuntu下部署Django應用

cebp 9年前發布 | 19K 次閱讀 Django Web框架

很高興我大半個月來做的dlpucsdn.com已經能正常訪問了,源碼在Github, 經過好幾天的研究,也可以在服務器端運行了,以下所有代碼中的操作都需要在命令行運行

安裝mysql

apt-get update
apt-get install mysql-server mysql-client

根據提示設置MySQL root用戶密碼

MySQL設置中文utf8格式

一般在/etc/mysql下

[client]下添加default-character-set=utf8

[mysqld]下添加character-set-server=utf8

[mysql]下添加default-character-set=utf8

重啟MySQL

service mysql restart

進入MySQL查看編碼

show variables like 'char%';

為MySQL建立遠程連接

由于修改數據庫時不可能頻繁的登服務器在命令行下修改,遠程用workbench連接MySQL服務器是更方便的選擇,先登入MySQL,授權一個可以遠程連接這個數據庫的用戶名和密碼

>>GRANT ALL PRIVILEGES ON *.* TO myuser@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
>>FLUSH PRIVILEGES; 

有的MySQL沒有開放遠程連接的端口,只允許本地連接,你需要查看my.conf之類的文件,我的在/etc/mysql/my.conf把

bind-address:127.0.0.1

那行注釋掉即可

安裝pip

下載地址

apt-get install python-pip

安裝django1.7

django官網

pip install Django==1.7

python進入python2.7解釋器

>>import django
>>

不出錯說明安裝成功

安裝mysql-python

安裝mysql-python注意需要配置mysql_config我的在(/usr/bin目錄下,其他的類似也在bin目錄下,視不同系統不同版本而定)如果/usr/bin目錄下沒有mysql_config,需要安裝mysql開發包

apt-get install python-setuptools
apt-get install libmysqld-dev
apt-get install libmysqlclient-dev
apt-get install python-dev

下載鏈接

wget 'url'

解壓zip文件,首先安裝unzip

apt-get install unzip
unzip mysql-python.zip
cd mysql-python
vi site.cfg

把mysql_config路徑那行取消注釋,路徑為/usr/bin/mysql_config

cd ..
python setup.py build
python setup.py install

進去python解釋器

>>import MySQLdb
>>

不報錯說明安裝成功

MySQLdb不支持python3,可以試試pymysql,同時在Python3的項目中,需要在__init__.py中添加

import pymysql
pymysql.install_as_MySQLdb()

這是由于Django調用MySQL的接口問題,在setting.py文件中具體為'ENGINE': 'django.db.backends.mysql',,仔細查看這句代碼就會發現Django默認調用的是MySQLdb,雖然它只支持Python2.0。

配置nginx

最重要的就是nginx的配置

我的配置目錄在/etc/nginx/nginx.conf和/etc/nginx/sites-enable/*后者可以在前者文件中設置,先查看配置文件/etc/nginx/sites-enable/django

根據自己的應用修改配置文件中static路徑,server_name,root等。修改完畢注意要service nginx reload

關于靜態文件的地址配置還是需要多說一句,nginx中的/static目錄對應的是setting.py文件中的STATIC_ROOT目錄,兩個寫一樣的,執行python manage.py collectstatic收集的文件是admin后臺模塊的靜態樣式文件,執行完后這些靜態文件就被復制在你設置的STATIC_ROOT目錄了。

部署代碼

因為我的代碼在github,先安裝git

apt-get install git
git clone https://github.com/tcitry/dlpucsdn.git

部署以后注意修改數據庫密碼,郵件服務器密碼,debug模式False,template_debug模式為False。

virtualenv

pip install virtualenv

根據網上現有的教程簡單看看virtualenv的使用很容易理解,在項目依賴的相關程序配置過程中需要始終開著virtualenv。

配置Gunicorn

查看這個教程修改為自己的應用參數

service gunicorn restart

當部署一個應用時可以將配置文件放在/etc/init.d/gunicorn.conf文件里面。但同時部署多個文件的時候,可以使用supervisor+gunicorn+virtualenv的部署方式,這樣可以在每個不同的項目目錄利用virtualenv為每個應用配置不同的環境,同時可以使服務器的環境更加易于管理。

先在項目的根目錄測試一下,確保gunicorn安裝正確,

../bin/gunicorn myapp.wsgi:application

不出錯就說明正確了,出錯一般是提示沒有那個module名,檢查一下django是否安裝,執行命令的文件目錄是否正確。

supervisor的使用

apt-get install supervisor
sudo vim /etc/supervisord.conf

編輯的內容如下,請自行修改項目和目錄名。

[program:classroom]
command = sh /home/projects/classroom/classroom/gunicorn_start
user = root
redirect_stderr = true
autorestart = true

配置這個gunicorn_start.sh

cd /home/projects/classroom/classroom
../bin/gunicorn classroom.wsgi:application -w 4 -b :8000

啟動supervisor

/etc/init.d/supervisord start

其他方式

supervisorctl start <name>
supervisorctl stop <name>

安裝七牛云SDK

由于網站的靜態存儲要用七牛云,在運行程序前要安裝否則報錯沒有qiniu SDK的方法。

pip install qiniu

七牛云安裝前注意安裝的版本,我被坑過一次,寫程序時是6.0版本,部署時都7.0了,接口全都不一樣。

還有

還有不推薦cloudflare等國外CDN加速,親身體驗。

還有推薦下這篇來自digitalocean的部署實例

來自:

 本文由用戶 cebp 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!