購(gòu)買(mǎi)服務(wù)器
屏幕快照 2018-01-03 下午1.47.03.png
搭建服務(wù)器環(huán)境
- Ubuntu 16.04 64位
- Python 2.7.12
- Django 1.11
- Apache 2.4
1.更新apt-get:
$sudo apt-get update
2.安裝Django
$sudo pip install django==1.11
3.安裝DjangoRestFramework
$sudo pip install djangorestframework
4.安裝Apache
$sudo apt-get install apache2
5.安裝Mod_wsgi
$ sudo apt-get install libapache2-mod-wsgi
創(chuàng)建Django Project
apache默認(rèn)網(wǎng)站目錄是/var/www/
cd /var/www/
git clone https://github.com/JiachengZheng/LearnDjango
為Django安家桑寨,讓Apache找到它
- 將Django工程放在/var/www/下涣雕;
- sudo vi /etc/apache2/sites-available/apiproject.conf 修改配置文件影涉;
- sudo a2ensite apiproject.conf 配置文件生效;
- sudo service apache2 restart 重啟Apache稠炬。
apiproject.conf內(nèi)容如下
<VirtualHost *:80>
#默認(rèn)監(jiān)聽(tīng)80端口
ServerName ip
#servername 填自己的域名或者ip
#ServerAlias otherdomain.com
#ServerAdmin youremail@gmail.com
# 存放用戶(hù)上傳圖片等文件的位置,注意去掉#號(hào)
Alias /media/ /var/www/apiproject/media/
# 靜態(tài)文件(js/css/images)的存放位置
Alias /static/ /var/www/apiproject/static/
# 允許通過(guò)網(wǎng)絡(luò)獲取static的內(nèi)容
<Directory /var/www/apiproject/static/>
Require all granted
</Directory>
# 最重要的!通過(guò)wsgi.py讓Apache識(shí)別這是一個(gè)Django工程狈癞,別漏掉前邊的 /
WSGIScriptAlias / /var/www/apiproject/apiproject/wsgi.py
# wsgi.py文件的父級(jí)目錄,第一個(gè)ProjectName為Django工程目錄茂契,第二個(gè)ProjectName為Django自建的與工程同名的目錄
<Directory /var/www/apiproject/apiproject/>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
要讓這個(gè)配置文件生效蝶桶,你需要運(yùn)行
sudo a2ensite apiproject.conf
加載配置文件并啟動(dòng)apache
service apache2 relaod
service apache2 restart
修改Django的wsgi.py文件
from os.path import join,dirname,abspath
import os
from os.path import join,dirname,abspath
PROJECT_DIR = dirname(dirname(abspath(__file__)))
import sys
sys.path.insert(0,PROJECT_DIR)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "apiproject.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
測(cè)試API
瀏覽器輸入http://39.106.199.118/article/list_by_category/?cid=2
屏幕快照 2018-01-03 下午5.37.57.png
遇到的問(wèn)題
sqlite3.OperationalError: attempt to write a readonly database
解決:
chgrp www-data apiproject
chgrp www-data apiproject/db.sqlite3
chmod g+w apiproject
chmod g+w apiproject/db.sqlite3
- 使用域名或者外網(wǎng)ip的設(shè)置后無(wú)法訪問(wèn)
解決:在setting.py 中修改allow_host選項(xiàng)
ALLOW_HOST=['{$你的域名或者IP$}']