项目部署是一个比较大的工程,但这是笔者最喜欢的一个环节,因为在部署过程中,会遇到很多疑难问题,这些问题能促使我学到很多很多的技术。

项目部署,顾名思义,就是将自己的程序存放到远程服务器上面,让全世界的网友都能访问到。在部署之前,我们需要提前准备好一些部署的知识,包括购买服务器、安装服务器软件、服务器配置、等等。

笔者专门购买了服务器来部署我们的视频播放网站,为了避免备案,笔者购买了国外的服务器。

购买服务器

购买服务器的地方有很多,国内有阿里云、腾讯云、百度云等,国外有aws、bwh、Linode等等。如果你是学生的话,建议购买 阿里云 的服务器,因为阿里云有学生认证,打折幅度非常大。

操作系统建议选择ubuntu系统

笔者购买的是aws服务器,操作系统是Ubuntu16.04

安装软件

需要安装的软件有nginx、mysql、python、uwsgi、django,另外还有项目的依赖库。

在Ubuntu系统安装nginx非常简单,只需一行命令

sudo apt-get install nginx

nginx的常用命令有

sudo service nginx start  # 启动nginx
sudo service nginx restart # 重启nginx
sudo service nginx stop # 关闭nginx

安装mysql

sudo apt-get install mysql-server

修改默认编码(/etc/mysql/my.cnf)

[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
[mysql]
default-character-set=utf8

启动mysql

sudo service mysql start

/etc/init.d/mysql restart

安装uwsgi

pip3 install uwsgi

安装django

pip3 install Django

拉取代码

代码仓库为https://github.com/geeeeeeeek/videoproject.git

git clone https://github.com/geeeeeeeek/videoproject.git

项目里面 uwsgi.ini 为配置文件

[uwsgi]

chdir = /var/www/videoproject
module = videoproject.wsgi

master = true
processes = 2
socket = 127.0.0.1:8001

chmod-socket = 664
uid = www-data
gid = www-data

vacuum = true

daemonize = %(chdir)/uwsgi.log

nginx就是通过该配置文件和uwsgi通信的,uwsgi是以socket方式运行。

配置settings.py

# 配置数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'video',
'USER': 'root',
'PASSWORD': '4643830',
'HOST':'127.0.0.1',
'PORT':'3306',
}
}

# 配置域名
ALLOWED_HOSTS = ['www.xxx.com']

创建数据库

create database video

导入表结构

# 首先导入auth表
python3 manage.py migrate auth

# 制作users
python3 manage.py makemigrations users

# 导入users
python3 manage.py migrate users

# 导入admin
python3 manage.py migrate --fake admin

# 导入其他
python3 manage.py migrate

# 导入video
python3 manage.py makemigrations video
python3 manage.py migrate video

# 导入comment
python3 manage.py makemigrations comment
python3 manage.py migrate comment

# 导入myadmin
python3 manage.py makemigrations myadmin
python3 manage.py migrate myadmin

创建超级用户

python3 manage.py createsuperuser

然后运行该配置

uwsgi --ini uwsgi.ini

创建upload目录

mkdir upload
# 修改权限为777
chmod 777 upload

服务器配置

需要配置nginx
在/etc/nginx/sites-enabled/下新建配置文件video.conf,并写入

upstream django {
    server 127.0.0.1:8001;
}

server {
    listen 80;
    server_name yourhost.com; # 配置成你自己的域名
    rewrite ^(.*) https://$host$1 permanent;
}

server {
        listen 443;
        server_name yourhost.com; # 配置成你自己的域名
        ssl on;
        ssl_certificate /home/ubuntu/1_v.mypython.me_bundle.crt; # 配置成你自己的https证书
        ssl_certificate_key /home/ubuntu/2_v.mypython.me.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;

    location /static/ {
           alias /var/www/videoproject/static/;
        }

    location /upload/ {
           alias /var/www/videoproject/upload/;
        }


        location / {
             include         uwsgi_params;
            uwsgi_pass      django;
        }

}

nginx 与 uwsgi通信方式: server 127.0.0.1:8001

最后重启nginx即可。

访问页面