本篇文章将会手把手教你如何部署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]行并贴入如下内容:

1 [mysqld]
2 character-set-server=utf8mb4
3 collation-server=utf8mb4_unicode_ci
4 
5 [client]
6 default-character-set = utf8mb4
7 
8 [mysql]
9 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

贴入如下内容:

 1 #!/bin/bash
 2 
 3 NAME="DjangoBlog"
 4 DJANGODIR=/home/server/python/DjangoBlog #Django project directory
 5 USER=server # the user to run as
 6 GROUP=server # the group to run as
 7 NUM_WORKERS=1 # how many worker processes should Gunicorn spawn
 8 DJANGO_SETTINGS_MODULE=DjangoBlog.settings # which settings file should Django use
 9 DJANGO_WSGI_MODULE=DjangoBlog.wsgi # WSGI module name
10 
11 echo "Starting $NAME as `whoami`"
12 
13 # Activate the virtual environment
14 cd $DJANGODIR
15 source /home/server/python/env/djangoblog/bin/activate
16 export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
17 export PYTHONPATH=$DJANGODIR:$PYTHONPATH
18 
19 # Create the run directory if it doesn\'t exist
20 RUNDIR=$(dirname $SOCKFILE)
21 test -d $RUNDIR || mkdir -p $RUNDIR
22 
23 # Start your Django Unicorn
24 # Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon)
25 exec /home/server/python/env/djangoblog/bin/gunicorn  ${DJANGO_WSGI_MODULE}:application \
26 --name $NAME \
27 --workers $NUM_WORKERS \
28 --user=$USER --group=$GROUP \
29 --log-level=debug \
30 --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

贴入如下内容:

 1 server {
 2 
 3     listen 80;
 4     server_name www.djangoblog.com;
 5     root /home/server/python/DjangoBlog/;
 6 
 7     access_log /var/log/nginx/django_access.log;
 8     error_log /var/log/nginx/django_error.log;
 9 
10     location /static/ {
11         alias /home/server/python//DjangoBlog/collectedstatic/;
12         expires max;
13         access_log        off;
14         log_not_found     off;
15     }
16     location /media {
17         # 静态文件配置
18         alias /home/server/python/DjangoBlog/uploads/;
19         expires max;
20     }
21     location ~ \.py$ {
22         return 403;
23     }
24 
25     location / {
26         proxy_set_header X-Real-IP $remote_addr;
27         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
28         proxy_set_header Host $http_host;
29         proxy_set_header X-NginX-Proxy true;
30         proxy_redirect off;
31         if (!-f $request_filename) {
32             proxy_pass http://127.0.0.1:8000;
33             break;
34         }
35     }
36 
37 }

 


注意,将该文件中的server修改成你自己的用户,如果是root用户的话,也要将/home/server修改为/root

保存并退出。重启nginx:

sudo /etc/init.d/nginx restart

配置Supervisor

终端下执行:

sudo vim /etc/supervisor/conf.d/djangoblog.conf

贴入如下内容:

1 [program:djangoblog]
2 command = /home/server/python//gunicorn_start.sh
3 user = server
4 autostart=true
5 autorestart=true
6 
7 redirect_stderr = true
8 stdout_logfile = /var/log/djangoblog.log
9 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。这里就不再赘述了。

 

 

 

 

版权声明:本文为andy0816原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/andy0816/p/12334227.html