DjangoBlog部署教程
本篇文章将会手把手教你如何部署DjangoBlog项目,首先介绍下我这里的基本环境,请大家仔细阅读此部分,下面的教程都会使用这些约定来介绍:
- 系统是
ubuntu 18.04 LTS
- 假设你的域名是
www.djangoblog.com
。 - python虚拟环境目录在
~/python/env
- djangoblog源码位置在
~/python/DjangoBlog
- 登入用户
server
- 编辑器使用vim,你可以使用你喜欢的编辑器。
安装ftp,把代码上传上去,路径就是~/python/DjangoBlog,注意连接阿里云的时候,使用ssh连接,端口22,
准备工作
升级系统
首先需要升级系统到最新版,终端下执行:
sudo apt update
sudo apt upgrade -y
待完成更新之后,建议重新启动下系统,再进行后面的操作。终端下执行:
sudo reboot
待系统启动后,可以开始安装依赖的mysql以及python环境了。
安装依赖
终端下执行:
sudo apt install mysql-server -y #安装mysql
sudo apt install python3-dev python3-pip python-pip memcached -y #安装pip和memcached
sudo apt install supervisor -y
sudo apt install nginx -y
sudo apt-get install python-dev default-libmysqlclient-dev #安装mysqlclient依赖 第一步 sudo apt install -y mysql-client
2. 基于python安装mysqlclient需要依次安装以下库:
sudo apt-get install libmysqlclient-dev
sudo apt install libssl-dev
sudo apt install libcrypto++-dev
sudo pip3 install mysqlclient
Successfully installed mysqlclient-1.4.6
接下来需要设置python的虚拟环境,终端下执行:
cd ~
mkdir -p python/env && cd python/env
virtualenv -p /usr/bin/python3 djangoblog
source djangoblog/bin/activate
在执行完上述命令之后,你的终端应该看起来是类似于下面的样子: 更多关于python的虚拟环境介绍请参考Python虚拟环境设置 这篇文章。
下面开始安装djangoblog运行所需要的依赖,终端下执行:
source ~/python/env/djangoblog/bin/activate
cd ~/python/DjangoBlog
pip install -Ur requirements.txt
基本配置及部署
配置mysql数据库
终端下执行:
sudo mysql_secure_installation
类似下图,需要输入的地方我都用红色箭头标注了出来,需要注意,root密码一定要牢记,后面会用到。
使用root用户登录:
mysql -uroot -p
如果无法登录,可以使用如下步骤,请注意,我这里的密码只是示例,请修改成你自己的密码.:
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Q1W2E3R4T5#$%qwe';
FLUSH PRIVILEGES;
exit
如果提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
,则说明你的密码强度不够,需要提供更复杂的密码,如下所示: 修改mysql默认字符集,使用你喜欢的编辑器,如vim或者nano,打开
/etc/mysql/conf.d/mysql.cnf
,配置文件,注意,需要使用root权限,如vim:
sudo vim /etc/mysql/conf.d/mysql.cnf
删除该文件的[mysql]
行并贴入如下内容:
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci [client]
default-character-set = utf8mb4 [mysql]
default-character-set = utf8mb4
退出并保存,重启mysql服务,终端下执行:
sudo /etc/init.d/mysql restart
接下来就可以登录mysql数据库并创建用户和数据了,终端下执行:
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配置
修改DjangoBlog/settings.py
中的DATABASES
配置,如下所示,当然,你也可以将其中的配置写入你的.bashrc
中,这样就不需要改这个文件了,我这里只是介绍下如何修改:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'djangoblog',
'USER': 'djangoblog',
'PASSWORD': 'DjAnGoBlOg123!@#',
'HOST': 'localhost',
'PORT': 3306,
'OPTIONS': {'charset': 'utf8mb4'},
}
}
接下来开始执行数据库迁移,终端下执行:
./manage.py makemigrations
./manage.py migrate
./manage.py createsuperuser #创建超级用户
./manage.py collectstatic --no-input
./manage.py compress --force
下面可以尝试启动网站,终端下执行:
./manage.py runserver
看到如下所示,则说明启动成功了: 接下来你就可以使用浏览器打开
http://127.0.0.1:8000/
来查看了。你需要访问http://127.0.0.1:8000/admin/
在站点
中,将默认的example.com
修改成你自己的,如www.djangoblog.com
。
gunicorn 配置
安装,终端下执行:
source ~/python/env/djangoblog/bin/activate
pip install gunicorn
配置,终端下执行:
vim ~/python/gunicorn_start.sh
贴入如下内容:
#!/bin/bash NAME="DjangoBlog"
DJANGODIR=/home/server/python/DjangoBlog #Django project directory
USER=server # the user to run as
GROUP=server # the group to run as
NUM_WORKERS=1 # how many worker processes should Gunicorn spawn
DJANGO_SETTINGS_MODULE=DjangoBlog.settings # which settings file should Django use
DJANGO_WSGI_MODULE=DjangoBlog.wsgi # WSGI module name echo "Starting $NAME as `whoami`" # Activate the virtual environment
cd $DJANGODIR
source /home/server/python/env/djangoblog/bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH # Create the run directory if it doesn't exist
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR # Start your Django Unicorn
# Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon)
exec /home/server/python/env/djangoblog/bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
--user=$USER --group=$GROUP \
--log-level=debug \
--log-file=-
注意,将该文件中的server
修改成你自己的用户,如果是root
用户的话,也要将/home/server
修改为/root
。同时,将DjangoBlog/settings.py
中的DEBUG = True
修改为DEBUG = False
。 增加可执行权限: (文件路径在 cd ~/python)
chmod +x gunicorn_start.sh
执行:
./gunicorn_start.sh
如果看到类似下面的输出,则说明成功了。 然后使用
Ctrl+c
来终止。
nginx配置
终端下执行:
# 删除默认配置
sudo rm /etc/nginx/sites-enabled/default
sudo vim /etc/nginx/sites-enabled/djangoblog.com.conf
贴入如下内容:
server { listen 80;
server_name www.djangoblog.com;
root /home/server/python/DjangoBlog/; access_log /var/log/nginx/django_access.log;
error_log /var/log/nginx/django_error.log; location /static/ {
alias /home/server/python//DjangoBlog/collectedstatic/;
expires max;
access_log off;
log_not_found off;
}
location /media {
# 静态文件配置
alias /home/server/python/DjangoBlog/uploads/;
expires max;
}
location ~ \.py$ {
return 403;
} location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://127.0.0.1:8000;
break;
}
} }
注意,将该文件中的server修改成你自己的用户,如果是root用户的话,也要将/home/server修改为/root
保存并退出。重启nginx:
sudo /etc/init.d/nginx restart
配置Supervisor
终端下执行:
sudo vim /etc/supervisor/conf.d/djangoblog.conf
贴入如下内容:
[program:djangoblog]
command = /home/server/python//gunicorn_start.sh
user = server
autostart=true
autorestart=true redirect_stderr = true
stdout_logfile = /var/log/djangoblog.log
stderr_logfile=/var/log/djangoblog.err
同样,需要将server
修改成你自己等用户名. 保存成功后继续执行:
sudo supervisorctl update
sudo supervisorctl reload
sudo /etc/init.d/memcached restart && sudo /etc/init.d/nginx restart
至此,全部完成。你可以通过你的浏览器访问http://www.djangoblog.com
了。 更多配置相关可以参考: https://github.com/liangliangyy/DjangoBlog/blob/master/docs/config.md。这里就不再赘述了。
DjangoBlog部署教程的更多相关文章
- deepsooncms在Ubuntu 14.04上部署教程
deepsooncms在Ubuntu 14.04上部署教程 一.安装mono1.在命令行运行sudo apt-key adv --keyserver keyserver.ubuntu.com --re ...
- 自动化部署教程(一) redhat安装jenkins
自动化部署教程(一) redhat安装jenkins 源配置: sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.or ...
- 写给新手看的Flask+uwsgi+Nginx+Ubuntu部署教程
学习 Flask,写完一个 Flask 应用需要部署的时候,就想着折腾自己的服务器.根据搜索的教程照做,对于原理一知半解,磕磕碰碰,只要运行起来了,谢天谢地然后不再折腾了,到下一次还需要部署时,这样的 ...
- LAMP 搭建wordpress部署教程贴.
LAMP 搭建wordpress部署教程贴.这是一篇主要将LAMP,并且通过wordpress来进行验证,演示.如何去部署PHP CMS很多新手看到LAMP就很很头大,觉得很难搞,编译安装,搞了好几天 ...
- Cowrie蜜罐部署教程【转载】
0.蜜罐分类: 低交互:模拟服务和漏洞以便收集信息和恶意软件,但是攻击者无法和该系统进行交互: 中等交互:在一个特有的控制环境中模拟一个生产服务,允许攻击者的部分交互: 高交互:攻击者可以几乎自由的访 ...
- Hexo快速部署教程
一直有建立博客的需要,使用过Wordpress动态博客,一直访问速度比较慢,刚开始以为是空间域名的解析的问题,尝试使用Hexo静态博客,部署后感觉速度正常很多,特意发文快速部署教程 准备 本文是在wi ...
- Django+nginx+uwsgi部署教程(centos7+ubuntu16.4)
在线教育平台项目演示地址 项目部署教程 1.1.工作原理介绍 django 一个基于python的开源web框架 uwsgi 一是一个web服务器,也可以当做中间件 nginx 常用高性能代理服务器 ...
- 【gitlab】gitlab快速部署教程
gitlab快速部署教程 部署环境 Ubuntu 16.04(亲测可用) 开始部署 安装依赖 sudo apt-get install curl openssh-server ca-certifica ...
- 新版TeamTalk部署教程
新版TeamTalk部署教程 新版TeamTalk已经在2015年03月28日发布了,目前版本定为1.0.0版本,后续版本号会按照如下规则进行:1.版本规则按照x.y.z的形式进行.2.各端小bug修 ...
随机推荐
- POJ - 3662 Telephone Lines (dijstra+二分)
题意:有N个独立点,其中有P对可用电缆相连的点,要使点1与点N连通,在K条电缆免费的情况下,问剩下的电缆中,长度最大的电缆可能的最小值为多少. 分析: 1.二分临界线(符合的情况的点在右边),找可能的 ...
- Java算法练习——两数相加
题目链接 题目描述 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新 ...
- Api_hook 拦截 messageBox 等函数
library hookdll; uses SysUtils, Windows, Classes, unitHook in 'unitHook.pas'; {$R *.res} const HOOK_ ...
- MySQL的优化与执行
MySQL会解析查询,并创建内部数据结构(解析树),然后对其进行各种优化,包括重写查询.决定表的读取顺序,以及选择合适的索引等.用户可以通过特殊的关键字提示(hint)优化器,影响它的决策过程.也可以 ...
- opencv显示图像
使用imshow函数 imshow函数功能 imshow的函数功能也非常简单,名称也可以看出来,image show的缩写.imshow负责的就是将图片显示在窗口中,通过设备屏幕展现出来.与imrea ...
- tensorflow笔记(北大网课实战)
1. tf.multiply(x,y1) # 对应元素相乘 tf.matmul(x,y2) # 矩阵相乘 2.会话:执行计算图中的节点运算的. with tf.Session() as sess: p ...
- vue中在时间输入框中默认显示时间
<template> <card> <label>开始时间</label> <DatePicker v-model="startTime ...
- springboot的配置文件说明
1.以servlet的方式启动SpringBoot 正常情况下要复制代码到tomcat去启动,但springboot内置tomcat了,配置好就可以直接run方法直接运行. 2.直接run运行
- 17.3.12---sys模块
1---sys是system的缩写,用来获取操作系统和编译器的一些配置,设置和操作,如判断文件和文件夹是否存在,创建文件夹,获取系统版本之类的操作 import sys #导入sys模块 2--一些 ...
- 17.3.10--->关于数值溢出问题
取值范围: short.int.long 占用的字节数不同,所能表示的数值范围也不同.以32位平台为例,下面是它们的取值范围: 数据类型 所占字 ...