django搭建网站记录

1、创建项目
django-admin startproject mysite
2、启动服务器
python manage.py runserver

python manage.py runserver

3、创建app应用
django-admin startapp blog
4、按照如下教程进行
https://www.zmrenwu.com/post/20/
5、安装软件
新建用户
# 在 root 用户下运行这条命令创建一个新用户,yangxg 是用户名 # 因为我叫杨学光,所以我取的用户名是 yangxg # 选择一个你喜欢的用户名,不一定非得和我的相同 root@localhost:~# useradd -m -s /bin/bash yangxg# 把新创建的用户加入超级权限组 root@localhost:~# usermod -a -G sudo yangxg# 为新用户设置密码 # 注意在输密码的时候不会有字符显示,不要以为键盘坏了,正常输入即可 root@localhost:~# passwd yangxg# 切换到创建的新用户 root@localhost:~# su - yangxg# 切换成功,@符号前面已经是新用户名而不是 root 了 yangxg@localhost:~$

更新系统
yangxg@localhost:~$ sudo apt-get update yangxg@localhost:~$ sudo apt-get upgrade

安装软件
yangxg@localhost:~$ sudo apt-get install nginx yangxg@localhost:~$ sudo apt-get install git python3 python3-pip yangxg@localhost:~$ sudo pip3 install virtualenv

启动nginx
yangxg@localhost:~$ sudo service nginx start

输入网址可看见nginx欢迎页面

部署代码
部署前的项目配置
在blogproject/settings.py文件下添加 STATIC_URL = '/static/' # 加入下面的配置 # STATIC_ROOT = os.path.join(BASE_DIR, 'static')STATIC_ROOT = '/usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/'

DEBUG = False ALLOWED_HOSTS = ['your ip', '.zmrenwu.com']

激活本地的虚拟环境(如果你使用了虚拟环境的话),并进入项目的根目录,运行 pip freeze > requirements.txt 命令:
(blogproject_env) C:\Users\yangxg\Workspace\blogproject> pip freeze > requirements.txt

将代码上传到 GitHub
数据库文件不要上传

yangxg@localhost:~$ mkdir -p ~/sites/demo.zmrenwu.com

创建虚拟环境
yangxg@localhost:~$ cd ~/sites/demo.zmrenwu.com yangxg@localhost:~/sites/demo.zmrenwu.com$ virtualenv --python=python3 env

检查虚拟环境是否创建成功
yangxg@localhost:~/sites/demo.zmrenwu.com$ ls env

从代码仓库把代码拉到项目中
yangxg@localhost:~/sites/demo.zmrenwu.com$ git clone https://github.com/zmrenwu/django-blog-tutorial.git

检查是否拉取成功
yangxg@localhost:~/sites/demo.zmrenwu.com$ ls django-blog-tutorialenv

安装项目依赖
激活虚拟环境,再进入到项目根目录,即 requirements.txt 所在的目录,安装项目的全部依赖:
yangxg@localhost:~/sites/demo.zmrenwu.com$ source env/bin/activate (env) yangxg@localhost:~/sites/demo.zmrenwu.com$ cd django-blog-tutorial/ (env) yangxg@localhost:~/sites/demo.zmrenwu.com/django-blog-tutorial$ pip install -r requirements.txt

收集静态文件
虚拟环境下继续运行 python manage.py collectstatic 命令收集静态文件到 static 目录下:
(env) yangxg@localhost:~/sites/demo.zmrenwu.com/django-blog-tutorial$ python manage.py collectstatic

生成数据库
虚拟环境下继续运行 python manage.py migrate 命令创建数据库文件:
(env) yangxg@localhost:~/sites/demo.zmrenwu.com/django-blog-tutorial$ python manage.py migrate

创建超级用户
虚拟环境下继续运行 python manage.py createsuperuser 命令创建一个超级用户,方便我们进入 Django 管理后台。
(env) yangxg@localhost:~/sites/demo.zmrenwu.com/django-blog-tutorial$ python manage.py createsuperuser





配置 Nginx 先在服务器的 /etc/nginx/sites-available/ 目录下新建一个配置文件
/etc/nginx/sites-available/test.yourname.comserver { charset utf-8; listen 80; server_name test.yourname.com; location /static { alias /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/ }location / { proxy_set_header Host $host; proxy_pass http://unix:/tmp/test.yourname.com.socket; } }

sudo ln -s /etc/nginx/sites-available/test.yourname.com /etc/nginx/sites-enabled/test.yourname.com

使用 Gunicorn 在虚拟环境下,安装 Gunicorn:
(env) yangxg@localhost:~/sites/test.yourname.com/django-blog-tutorial$ pip install gunicorn

用 Gunicorn 启动服务器进程:
(env) yangxg@localhost:~/sites/test.yourname.com/django-blog-tutorial$ gunicorn --bind unix:/tmp/test.yourname.com.socket blogproject.wsgi:application

6、遇到的问题
6.1、按照教程操作完之后,页面仍旧显示nginx欢迎页面
(1)进入虚拟环境:
cd ~/sites/test.yourname.com
source env/bin/activate
(2)先重启nginx:
sudo nginx -s reload
(3)再启动gunicorn
cd blog
gunicorn --bind unix:/tmp/test.yourname.com.socket blogproject.wsgi:application
6.2、 admin的css、js文件失效
参考文章:https://www.cnblogs.com/alan-babyblog/p/7101163.html
(1)、找到django静态文件的目录
在env虚拟环境下,命令如下
python进入python
import django
django.__file__
得到django路径
比如:'/usr/local/lib/python2.7/dist-packages/django/__init__.pyc'
那么需要的路径即为:/usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/
(2)、修改settings.py
#STATIC_ROOT = '/usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/'
#STATIC_URL = '/static/'
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
(3)、将admin的static文件里的内容copy到blog里的static
cp -r /usr/lib/python2.6/site-packages/django/contrib/admin/static/*~/sites/test.yourname.com/blog/blog/static/
(4)、执行命令
python manage.py collectstatic
6.3、__init__() missing 1 requiredpositionalargument: 'on_delete'
# hbook = models.ForeignKey(BookInfo)
category = models.ForeignKey('Category', on_delete=models.CASCADE)
tags = models.ManyToManyField(Tag)
author = models.ForeignKey(User, on_delete=models.CASCADE)
6.4、重置migrate
删掉migration(除了_init_.py)里的文件
python manage.py makemigrations
python manage.py migrate



【django搭建网站记录】

    推荐阅读