Django_Ubuntu_Web部署
一、環境配置
1、Ubuntu 14.04 阿里云
2、python2.7
3、nginx
4、uWSGI
二、環境部署
1、服務器更新升級
~~~
sudo apt-get update
sudo apt-get upgrade
~~~
2、通過寶塔搭建nginx,方便后續多網站管理
`wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh && sudo bash install.sh`
登錄寶塔安裝 [nginx-1.12]
3、通過寶塔建立網站
4、django源碼上傳至網站目錄/www/py.guigudoor.com
5、更換pip源
~~~
sudo mkdir ~/.pip
sudo vi ~/.pip/pip.conf
~~~
輸入:
~~~
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
~~~
三、上傳django源碼
1、安裝配置文件
在已配置好的機器上導出配置文件
`pip freeze > requirements.txt`
然后進入項目目錄安裝配置
`pip install -r requirements.txt`
2、測試外網訪問
python manage.py runserver 0.0.0.0:8000
> 備注:如果訪問不來,請確定服務器、寶塔或者其他安全是否放行8000端口。
三、uWSGI的配置
1、安裝uWSGI:
`sudo pip install uwsgi`
2、啟動測試: www/wwwroot/py.guigudoor.com 為網站目錄、guigu為django項目目錄
`uwsgi --http :8000 --chdir /www/wwwroot/py.guigudoor.com/ -w guigu.wsgi`
> 如果出錯更新下面操作
> 安裝python-dev包:sudo apt-get install python-dev
> 安裝或升級pip :sudo apt-get install python-pip
> 升級:sudo pip install --upgrade pip
3、配置uWSGI文件:
~~~
mkdir -p /etc/uwsgi/sites
cd /etc/uwsgi/sites
vi guigu.ini
~~~
配置guigu.ini chdir = www/wwwroot/py.guigudoor.com 網站目錄 guigu.wsgi django項目目錄
~~~
[uwsgi]
chdir = /www/wwwroot/py.guigudoor.com
module = guigu.wsgi
master = true
processes = 10
socket = /www/wwwroot/py.guigudoor.com/guigu.sock
vacuum = true
~~~
4、建立一個自啟腳本:
`vi /etc/init/uwsgi.conf`
配置uwsgi.conf
~~~
description "uWSGI application server in Emperor mode"
start on runlevel [2345]
stop on runlevel [!2345]
setuid guigu
setgid www-data
exec /usr/local/bin/uwsgi --emperor /etc/uwsgi/sites
~~~
四、通過寶塔配置網站Nginx
1、網站—設置—配置文件
配置添加
~~~
server {
listen 80;
server_name py.guigudoor.com;
location /static/ {
root /www/wwwroot/py.guigudoor.com;
}
location / {
include uwsgi_params;
uwsgi_pass unix:/www/wwwroot/py.guigudoor.com/guigu.sock;
}
}
~~~
~~~
#樣本
server
{
listen 80;
server_name py.guigudoor.com;
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/py.guigudoor.com;
location /static/ {
root /www/wwwroot/py.guigudoor.com;
}
location / {
include uwsgi_params;
uwsgi_pass unix:/www/wwwroot/py.guigudoor.com/guigu.sock;
}
#SSL-START SSL相關配置,請勿刪除或修改下一行帶注釋的404規則
#error_page 404/404.html;
#SSL-END
#ERROR-PAGE-START 錯誤頁配置,可以注釋、刪除或修改
error_page 404 /404.html;
error_page 502 /502.html;
#ERROR-PAGE-END
#PHP-INFO-START PHP引用配置,可以注釋或修改
include enable-php-54.conf;
#PHP-INFO-END
#REWRITE-START URL重寫規則引用,修改后將導致面板設置的偽靜態規則失效
include /www/server/panel/vhost/rewrite/py.guigudoor.com.conf;
#REWRITE-END
#禁止訪問的文件或目錄
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
access_log off;
}
location ~ .*\.(js|css)?$
{
expires 12h;
access_log off;
}
access_log /www/wwwlogs/py.guigudoor.com.log;
}
~~~
2、重啟nginx
3、啟動uWSGI配置
`uwsgi /etc/uwsgi/sites/guigu.ini -d /www/wwwroot/py.guigudoor.com/guigu.log`
> etc/uwsgi/sites/guigu.ini uWSGI配置文件
> www/wwwroot/py.guigudoor.com/guigu.log 項目目錄
4、靜態文件收集
`python manage.py collectstatic`
備注:需要settings.py修改配置
~~~
#樣本
STATIC_URL = '/static/'
# 加入下面的配置
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
~~~
靜態文件訪問不了(服務器模式沒有添加'DIRS': [os.path.join(BASE_DIR, 'templates')],)
~~~
#樣本
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
~~~
### 提示:每次重啟需要啟動uWSGI配置