本文介绍基于阿里云centOS7的Django框架博客搭建(上)
之前买了几个月的阿里云服务器,准备来搞毕设,寻思着捣鼓一个Django框架的项目,恰好githup上看到一个不错的博客项目,奥利给!
本文为Django框架博客搭建的基础操作,使用高级工具gunicorn、nginx、supervisor优化程序请看下一篇文章:Django框架博客搭建(下)
一、环境准备
- 阿里云服务器(我的是轻量应用服务器,1核 2G内存,可以使用xshell连接上阿里云服务器,可以参考博文:https://blog.csdn.net/qq_37266079/article/details/103815699)
- github上基于Django的博客框架项目地址:https://github.com/liangliangyy/DjangoBlog,原文作者使用的是Ubuntu系统部署博客系统,但是我这边习惯使用centOS7,就使用centOS7部署。
- 阿里云上拉取github项目(阿里云上安装git工具,clone到本地)
- 阿里云安装python3.6环境(这里不推荐使用anaconda自带的python的版本 可能会出现问题)安装好python要知道你的python的安装位置,即python和pip可执行文件的位置(后面设置python虚拟环境回用到 可以参考博文:https://blog.csdn.net/qq_37266079/article/details/103800518)
二、阿里云centOS7上MySQL的安装与配置
参考博文:https://www.jianshu.com/p/3cf566658ad6
1.在MySQL官网中下载YUM源rpm安装包:
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
2.安装mysql源
yum localinstall mysql57-community-release-el7-8.noarch.rpm
3.检查mysql源是否安装成功
yum repolist enabled | grep "mysql.*-community.*"
4.安装MySQL
yum install mysql-community-server
5.启动MySQL服务
systemctl start mysqld
6.开机启动
systemctl enable mysqld
systemctl daemon-reload
7.使用root用户登录
mysql -uroot -p
如果无法登录,可以使用如下步骤,请注意,我这里的密码Q1W2E3R4T5#$%qwe只是示例,请修改成你自己的密码.:
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Q1W2E3R4T5#$%qwe';
FLUSH PRIVILEGES;
exit
8.修改mysql默认字符集
vi /etc/my.cnf #根据个人配置找到相应文件
加入
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
重启MySQL
systemctl restart mysqld
9.创建博客相关的数据库
mysql -uroot -p #进入mysql终端
CREATE USER 'djangoblog'@'localhost' IDENTIFIED BY 'DjAnGoBlOg123!@#';
CREATE DATABASE `djangoblog` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
GRANT all ON djangoblog.* TO 'djangoblog'@'localhost';
FLUSH PRIVILEGES;
exit #退出
同样,这里的DjAnGoBlOg123!@#密码也要改成你自己的密码。
三、修改djangoblog项目配置
前提是你已经把项目clone到本地:
修改DjangoBlog/settings.py中的DATABASES配置,如下所示,DjAnGoBlOg123!@#是你自己设置的,其他可以不动。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'djangoblog',
'USER': 'djangoblog',
'PASSWORD': 'DjAnGoBlOg123!@#',
'HOST': 'localhost',
'PORT': 3306,
'OPTIONS': {'charset': 'utf8mb4'},
}
}
四、项目依赖安装
首先我们要进入对应python的虚拟环境(先yum安装好virtualenv工具)
cd ~ && mkdir -p python/env && cd python/env
virtualenv -p /usr/bin/python3 djangoblog
source ~/python/env/djangoblog/bin/activate
这里的/usr/bin/python3
是你要使用的python的虚拟环境使用的python路径
在执行完上述命令之后,你的终端应该看起来是类似于下面的样子:
更多关于python的虚拟环境介绍请参考Python虚拟环境设置 这篇文章。
下面开始安装djangoblog运行所需要的依赖(已经在python的虚拟环境下),终端下执行:
cd ~/python/DjangoBlog #进入你自己的项目路径
pip install -Ur requirements.txt
在安装requirements.txt 中的依赖的时候,可能其中的一个无法安装就导致其他的都无法安装,这个时候看安装停止在哪个模块的,很可能就是这个模块的安装出现问题,先把这个模块先拎出来单独pip install
再执行pip install -Ur requirements.txt
例如可能会遇到的问题:
centos7安装mysqlclient报错mysql_config not found、
安装django-haystack报错
五、数据迁移
这里同样要进入python虚拟环境
source ~/python/env/djangoblog/bin/activate
cd ~/python/DjangoBlog #进入你自己的项目路径
python ./manage.py makemigrations
python ./manage.py migrate
python ./manage.py createsuperuser #创建超级用户
python ./manage.py collectstatic --no-input
python ./manage.py compress --force
六、运行项目
cd ~/python/DjangoBlog #进入你自己的项目路径
项目运行在8000端口,这里的0.0.0.0是让它监听所有IP地址的意思,不加这个可能会导致其他浏览器无法访问
python ./manage.py runserver 0.0.0.0:8000
看到如下所示,则说明启动成功了:
如果在本地使用curl工具访问正常但是外部的浏览器无法访问,可能是防火墙设置有关
登陆你的阿里云账号,添加这样的一条防火墙规则
如果还是不行,在终端上再关闭防火墙
centos7防火墙操作:
查看防火墙状态
firewall-cmd --state
临时关闭防火墙
systemctl stop firewalld.service
永久关闭防火墙
systemctl disable firewalld
这些设置好了,应该就可以在浏览器上访问你的博客首页了
项目后台运行:
使用上面的source ~/python/env/djangoblog/bin/activate && cd /root/DjangoBlog/DjangoBlog && python ./manage.py runserver 0.0.0.0:8000
这个命令也可以快速启动博客项目,但是只要把你终端关掉,这个项目就没了。
所以就想把这个项目后台运行,让其退出终端,程序还是在跑所以用到了nuhup命令
sudo nohup /usr/local/python3/bin/python3 /root/DjangoBlog/DjangoBlog/manage.py runserver 0.0.0.0:8000 &
这里的/usr/local/python3/bin/python3
是你的python解释器位置(和你博客的python虚拟环境的一样),/root/DjangoBlog/DjangoBlog/
是你的博客项目地址。这样执行命令更加不留痕迹。
在使用netstat -ntlp
命令查看端口使用情况,可以看到8000端口已经在后台监听了
可以把这个命令放到一个脚本文件里面,就可以直接使用运行脚本文件运行程序(也可以放到环境变量中,运行项目更加方便)
本文的Django博客项目环境搭建是基础的,项目可以基本运行,使用高级工具gunicorn、nginx、supervisor优化程序请看下一篇文章:Django框架博客搭建(下)
最后再感谢github的作者的项目:https://github.com/liangliangyy/DjangoBlog