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-tutorial  env

安装项目依赖

激活虚拟环境,再进入到项目根目录,即 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.com

server {
    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/' 

(3)、__init__() missing 1 required  positional  argument: '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)

(4)、重置migrate

删掉migration(除了_init_.py)里的文件

python manage.py makemigrations

python manage.py migrate

猜你喜欢

转载自blog.csdn.net/tanqiaoxing/article/details/82492110