blog搭建过程(diango版本)

blog搭建过程(diango版本)


django 博客搭建 后端

感谢

感谢 liangliangyy 的贡献
原项目地址 https://github.com/liangliangyy/DjangoBlog
部分文档转载自https://www.django.cn/article/show-4.html#banqian 作者:吴秀峰
搭建环境 centos + nginx + uwsgi + python3.7.0 + django2.2.2
详细步骤(下面步骤都是 ROOT 权限执行):

一、更新系统软件包

yum update -y

二、安装软件管理包和可能使用的依赖

yum -y groupinstall "Development tools"
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc

三、下载 Pyhton3.7.0 到/usr/local 目录

cd /usr/local
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
解压
tar -zxvf Python-3.7.0.tgz
进入 Python-3.7.0 路径
cd Python-3.7.0
编译安装到指定路径
./configure --prefix=/usr/local/python3

注意:/usr/local/python3 路径可以自己指定,自己记着就行,下边要用到

安装 python3
make
make install
安装完成之后 建立软链接 添加变量 方便在终端中直接使用 python3
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
Python3 安装完成之后 pip3 也一块安装完成,不需要再单独安装
同样给 pip3 建立软链接
ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip3

四、查看 Python3 和 pip3 安装情况

五、安装 virtualenv ,方便不同版本项目管理。

pip3 install virtualenv
建立软链接
ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
安装成功在根目录下建立两个文件夹,主要用于存放 env 和网站文件的。(个人习惯,其它人可根据自己的实际情况处理)
mkdir -p /data/env
mkdir -p /data/wwwroot

六、切换到/data/env/下,创建指定版本的虚拟环境。

virtualenv --python=/usr/bin/python3 pyweb
然后进入
cd /data/env/pyweb/bin
启动虚拟环境:
source activate

出现(pyweb),说明成功进入虚拟环境。

七、虚拟环境里用 pip3 安 django 和 uwsgi

pip3 install django==2.2.2 (如果用于生产的话,则需要指定安装和你项目相同的版本)
pip3 install uwsgi

留意:uwsgi 要安装两次,先在系统里安装一次,然后进入对应的虚拟环境安装一次

给 uwsgi 建立软链接,方便使用
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

八、上传项目,并安装依赖,配置数据库

将项目直接放到/data/wwwroot 目录下
mysql 客户端从 pymysql 修改成了 mysqlclient,安装参考 pypi
sudo yum install python-devel mysql-devel
sudo yum install python3-devel
pip3 install mysqlclient
到项目目录下安装依赖
cd /data/wwwroot/DjangoBlog/
pip3 install -Ur requirements.txt
修改 DjangoBlog/setting.py 修改数据库配置,如下所示:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'djangoblog',
        'USER': 'root',
        'PASSWORD': 'password',
        'HOST': 'host',
        'PORT': 3306,
    }
}

创建数据库

mysql 数据库中执行,注意编码为 utf8mb4:
CREATE DATABASE `djangoblog` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
然后终端下执行:
python3 ./manage.py makemigrations
python3 ./manage.py migrate
创建超级用户
python3 ./manage.py createsuperuser
创建测试数据
python3 ./manage.py create_testdata
收集静态文件
终端下执行:
python3 ./manage.py collectstatic --noinput
python3 ./manage.py compress --force
开始运行:
python3 ./manage.py runserver

如上图所示 即成功运行

九、项目正常运行之后 配置一下 uwsgi

我们网站项目路径是 /data/wwwroot/DjangoBlog/,在项目根目录下创 DjangoBlog.xml 文件,输入如下内容:
<uwsgi>
   <socket>127.0.0.1:8997</socket><!-- 内部端口,自定义 -->
   <chdir>/data/wwwroot/DjangoBlog/</chdir><!-- 项目路径 -->
   <module>DjangoBlog.wsgi</module>
   <processes>4</processes> <!-- 进程数 -->
   <daemonize>uwsgi.log</daemonize><!-- 日志文件 -->
</uwsgi>
保存,注意里的 DjangoBlog,为 wsgi.py 所在的目录名。

十、安装 nginx 和配置 nginx.conf 文件

进入 home 目录 下载 nginx
cd /home/
wget http://nginx.org/download/nginx-1.13.7.tar.gz
下载完成后,执行解压命令:
tar -zxvf nginx-1.13.7.tar.gz
进入解压后的 nginx-1.13.7 文件夹,依次执行以下命令:
./configure
make
make install
nginx 一般默认安装好的路径为/usr/local/nginx
在/usr/local/nginx/conf/中先备份一下 nginx.conf 文件,以防意外。
cp nginx.conf nginx.conf.bak

然后打开 nginx.conf,把文件内容修改为:

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    server {
        listen       80;
        server_name  127.0.0.1:80; #改为自己的域名,没域名修改为127.0.0.1:80
        charset utf-8;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:8997; #端口要和uwsgi里配置的一样
           uwsgi_param UWSGI_SCRIPT DjangoBlog.wsgi; #wsgi.py所在的目录名+.wsgi
           uwsgi_param UWSGI_CHDIR /data/wwwroot/DjangoBlog/; #项目路径
        }
	   location /static/ {
        	 alias /data/wwwroot/DjangoBlog/collectedstatic/; #静态资源路径
        }
    }
}
进入/usr/local/nginx/sbin/目录
cd /usr/local/nginx/sbin/
./nginx -t  #执行./nginx -t命令先检查配置文件是否有错
没有错就执行以下命令:
./nginx
终端没有任何提示就证明 nginx 启动成功。可以使用你的服务器地址查看,成功之后就会看到一个 nginx 欢迎页面。

十一、线上访问项目

进入网站项目目录
cd /data/wwwroot/DjangoBlog/
执行下面命令:
uwsgi -x DjangoBlog.xml
以上步骤都没有出错的话。
进入/usr/local/nginx/sbin/目录
cd /usr/local/nginx/sbin/
执行:
./nginx -s reload
重启 nginx
然后在浏览器里访问你的项目地址!

我这边 nginx 配置的是 8090 端口 所以用 8090 端口访问

####至此全部完成

其他:

值得留意的就是项目的路径不要弄错,还有项目的所有操作都要在虚拟环境下进行。
一定要注意 Uwsgi 和 Nginx 配置文件里的项目路径和静态资源路径,填写正确了才能成功访问。不然会出现 502 错误。还有就是,修改 Django 文件和其它配置文件之后,一定要重启 Uwsgi 和 Nginx,不然不生效。
Uwsgi 和 Nginx 重启方法:

#####查看 Uwsgi 进程

ps -ef|grep uwsgi

#####用 kill 方法把 uwsgi 进程杀死,然后启动 uwsgi

killall -9 uwsgi

#####启动方法

uwsgi -x DjangoBlog.xml

#####Nginx 平滑重启方法

/usr/local/nginx/sbin/nginx -s reload

Django 多站点部署

有的时候我们一台服务器需要部署多个项目,那么我们应该怎么部署呢?
1、进入 Nginx 的配置文件目录/usr/local/nginx/conf/,然后新建一个目录:
mkdir vhost
之后在 vhost 目录里建立两个以.conf 结尾的文件(有几个项目就放几个),里面的内容如下:
server {
    listen       80;
    server_name  www.django.cn;
    charset utf-8;
    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8997;  #端口要和uwsgi里配置的一样
        uwsgi_param UWSGI_SCRIPT mysite.wsgi;  #wsgi.py所在的目录名+.wsgi
        uwsgi_param UWSGI_CHDIR /data/wwwroot/mysite/; #项目路径
        }
    location /static/ {
        alias /data/wwwroot/mysite/static/; #静态资源路径
        }
    }
项目路径、端口、静态资源与所属项目对应好。注意:项目里的 uwsgi 端口不能与另一个项目重复。
2、/usr/local/nginx/conf/目录下的原来默认的 nginx.conf 文件,先备份一下,然后把里面的代码删除,修改成如下代码:
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    include /usr/local/nginx/conf/vhost/xxx.conf;#主要是这个地方,把新建的两配置文件包含进来
    server {
        listen 80 default_server;
        server_name _;
        return 404;
        }
    }
3、新建立一个虚拟环境,把新项目上传到到服务器。进入虚拟环境,在新的虚拟环境再装一次 uwsgi,和安装项目所需依赖包,然后在项目根目录新建立一个 uwsgi 配置文件,里面的端口和配置文件名不要和其它项目相同,路径换成自己的项目路径。
4、在虚拟环境启动 uwsgi,重启 Nginx,就能成功访问。哪个项目不能访问,就把原来的 uwsgi 进行杀死,然后再进入对应虚拟环境,启动 uwsgi 即可。
© 2025 Niko Xie