Ubuntu 16.04.5部署Django環境

一、安裝python環境

使用以下命令安裝的是3.5.x版本html

sudo apt-get install python3-pip

若是使用下面的命令,會安裝2.x版本的pythonpython

sudo apt-get install python-pip

pip不建議更新到最新版本,會出現不少未知錯誤apache

# 這是更新語句,可是不建議用
pip3 install --upgrade pip

二、安裝python虛擬化環境virtualenv

sudo pip3 install virtualenv

安裝完畢後建立名爲VENV的虛擬環境django

virtualenv VENV

激活虛擬環境vim

source venv/bin/activate

這樣就進入虛擬環境中了,能夠部署站點所用的插件安全

pip install -r requirements.txt

注:在這裏,咱們使用pip而不是pip3的緣由是虛擬環境裏只有py3的存在,因此咱們輸入「python」和「pip」所關聯的都會是py3的。在虛擬環境中輸入是不會報錯的,而在真實的環境裏則會是顯示py2。服務器

       安裝分頁插件pagination的時候,若是你是py3,請使用pip install django-pagination-py3==1.1.1命令安裝,網上不少文章針對的都是py2的,當你用網上的命令安裝這個插件後,在py3下是不會有效果的。app

安裝完畢後就能夠退出虛擬環境,繼續下面的安裝了。ssh

# 退出虛擬環境
deactivate
# 刪除虛擬環境
rm -rf VENV

三、啓用root帳戶和開啓root登陸權限

基於安全角度不該該配這一步,可是爲了方便使用FileZilla上傳文件,暫時開通,等都配置完畢後,關閉便可網站

修改root密碼

sudo passwd root

開啓root登陸權限

sudo vi /etc/ssh/sshd_config

將PermitRootLogin選項改成yes,而後重啓服務器便可(原來是 prohibit-password)

四、上傳站點文件

目錄結構以下:

/var/www/
├── html
├── mblog
│   ├── mainsite
│   ├── mblog
│   ├── static
│   └── templates
└── VENV
    ├── bin
    ├── include
    └── lib

五、安裝apache2和mod_wsgi

sudo apt-get install apache2 libapache2-mod-wsgi-py3

新建一個網站的配置文件

sudo vim /etc/apache2/sites-available/sitename.conf
<VirtualHost *:80>
    ServerName localhost:80
    ServerAlias 192.168.9.5
    ServerAdmin xxxxx@qq.com

    Alias /media/ /var/www/mblog/media/
    Alias /static/ /var/www/mblog/static/

    <Directory /var/www/mblog/media>
        Require all granted
    </Directory>

    <Directory /var/www/mblog/static>
        Require all granted
    </Directory>

    WSGIScriptAlias / /var/www/mblog/mblog/wsgi.py
    WSGIDaemonProcess http://192.168.9.5:80 python-path=/var/www/VENV/lib/python3.5/site-packages
    WSGIProcessGroup http://192.168.9.5:80

    <Directory /var/www/mblog/mblog>
    <Files wsgi.py>
        Require all granted
    </Files>
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error-my_blog.log
    CustomLog ${APACHE_LOG_DIR}/access-my_blog.log combined
</VirtualHost>

配置apache來加載mod_wsgi

# 先關閉Apache服務
sudo service apache2 stop  
# /etc/apache2/apache2.conf加入下面一句話
LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so 

若是找不到.so文件,能夠用下面的語句查找

sudo find / -name mod_wsgi.so  

六、修改wsgi文件

文件路徑在/var/www/mblog/mblog/

"""
WSGI config for mblog project.

It exposes the WSGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/2.1/howto/deployment/wsgi/
"""

import os
from os.path import join,dirname,abspath

PROJECT_DIR = dirname(dirname(abspath(__file__)))

from django.core.wsgi import get_wsgi_application

import sys
sys.path.insert(0,PROJECT_DIR)
sys.path.append("/var/www/VENV/lib/python3.5/site-packages")

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mblog.settings')

application = get_wsgi_application()

七、激活網站重啓服務

sudo service apache2 reload 
sudo a2dissite 000-default && a2ensite sitename.conf
sudo service apache2 restart

八、其餘

(1)日誌目錄

cd /var/log/apache2

(2)處理Django admin打開時CSS和JS丟失的問題

在setting.py 底部設置添加以下代碼

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

執行如下代碼

python manage.py collectstatic

 

 

參考文章:https://www.jianshu.com/p/ff78d1ab5091

          https://www.cnblogs.com/lexus/archive/2012/02/23/2365896.html

       https://www.cnblogs.com/sxwen/p/8006782.html

相關文章
相關標籤/搜索