环境版本说明:centos 7、python 3.6.4、django 2.0
django 官网:www.djangoproject.com
django 开源github地址:https://github.com/django/django
一、django 安装
1、校验python 版本:
python -V
2、安装setuptools:
python -m pip install --upgrade pip setuptools
3、安装django (指定django版本为2.0):
python -m pip install django==2.0
python -m pip install uwsgi #WSGI协议
为了在终端中使用uwsgi命令,执行以下命令:
ln -s /usr/local/bin/python3.6/bin/uwsgi /usr/bin/uwsgi
4、测试是否安装成功?依次输入命令:
python
import django
django.VERSION
我们可以看到输出了Django的版本号,说明安装成功。
输入 exit() 回车退出!
提示: 安装成功后 Django 位于 Python 安装目录的 site-packages 目录下。
如果不清楚得,可以使用以下命令查看python安装目录:
python
import sys
print(sys.prefix)
则目录在:
/usr/local/lib/
二、创建django 项目
1、进入我们得站点目录,创建django项目: testdj
cd /var/www #这是我的项目目录;使用时候自行换成你自己的啊
django-admin.py startproject testdj
2、启动服务:
cd testdj # 切换到我们创建的项目
python manage.py runserver
这个时候报错了,错误如下图:
提示缺少 sqlite3 ,使用命令安装:
yum install sqlite-devel
并进入python安装目录。重新编译python:
cd /usr/local/python3.6.4
./configure
make
make install
3、重新进入 项目目录:
Django默认帮我们做很多事情,比如User、Session 这些都需要创建表来存储数据,Django已经把这些模块帮我准备好了,我们只需要执行数据库同步,把相关表生成出来即可:
python manage.py migrate
启动服务:
python manage.py runserver
上图中显示以上信息说明,项目已启动,
正常情况下 访问地址 http://127.0.0.1:8000/ 就可以成功 ,我在使用过程中,没成功。
经过网上查找相关资料。还需要要设置 uwsgi ;请继续向下看:
4、配置启动项目的xml 文件
进入到项目 目录下:
在你的django项目下新建 testdj.xml,内容如下:
<uwsgi>
<socket>127.0.0.1:8997</socket><!-- 内部端口,自定义 -->
<chdir>/var/www/testdj</chdir><!-- 项目路径 -->
<module>testdj.wsgi</module>
<processes>4</processes> <!-- 进程数 -->
<daemonize>uwsgi.log</daemonize><!-- 日志文件 -->
</uwsgi>
并赋权限 777;
5、配置nginx
在/etc/nginx/vhosts/中新建 python.conf,加入以下内容:
server {
listen 8000; #暴露给外部访问的端口
server_name localhost;
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8997; #外部访问8000就转发到内部8997
}
location /static/ {
alias /var/www/testdj/blog/static/; #项目静态路径设置
}
}
注意: 有的服务器需要:防火墙和安全组开启8000端口;
配置保存后,一定要重启nginx;
6、启动应用
进入项目目录:
uwsgi -x testdj.xml
浏览器输入:
ip地址:8000
此时显示,当前ip不允许;
解决:
进入项目 setting.py 修改:
ALLOWED_HOSTS = [ 'ip地址','localhost', '127.0.0.1']
然后执行:
ps aux | grep uwsgi
killall -9 uwsgi
重新启动:
uwsgi -x testdj.xml
再次访问:成功!