美文网首页
部署阿里云服务器

部署阿里云服务器

作者: 郑嘉成_ | 来源:发表于2018-01-03 17:42 被阅读0次

购买服务器

屏幕快照 2018-01-03 下午1.47.03.png

搭建服务器环境

  • 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

创建Django Project

apache默认网站目录是/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内容如下

<VirtualHost *:80>
#默认监听80端口
ServerName ip
#servername 填自己的域名或者ip
#ServerAlias otherdomain.com
#ServerAdmin youremail@gmail.com 

# 存放用户上传图片等文件的位置,注意去掉#号
Alias /media/ /var/www/apiproject/media/ 

# 静态文件(js/css/images)的存放位置
Alias /static/ /var/www/apiproject/static/                

# 允许通过网络获取static的内容
<Directory /var/www/apiproject/static/>                  
    Require all granted
</Directory>

# 最重要的!通过wsgi.py让Apache识别这是一个Django工程,别漏掉前边的 /
WSGIScriptAlias / /var/www/apiproject/apiproject/wsgi.py     
# wsgi.py文件的父级目录,第一个ProjectName为Django工程目录,第二个ProjectName为Django自建的与工程同名的目录
<Directory /var/www/apiproject/apiproject/>                  
<Files wsgi.py>
    Require all granted
</Files>
</Directory>

</VirtualHost>

要让这个配置文件生效,你需要运行

sudo a2ensite apiproject.conf

加载配置文件并启动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()

测试API

浏览器输入http://39.106.199.118/article/list_by_category/?cid=2

屏幕快照 2018-01-03 下午5.37.57.png

遇到的问题

  1. 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
  1. 使用域名或者外网ip的设置后无法访问

解决:在setting.py 中修改allow_host选项
ALLOW_HOST=['{$你的域名或者IP$}']

参考

Django 部署(Apache)

相关文章

网友评论

      本文标题:部署阿里云服务器

      本文链接:https://www.haomeiwen.com/subject/ckcknxtx.html