Django服务器部署(皮卡丘也会的配置的环境)

配置环境

本地系统:Ubuntu 18.04 或 mac
腾讯云服务器:Ubuntu 16.04
数据库:MySQL
服务器端配置:Django+uwsgi+nginx

前言

写了一个微信公众号的后台管理界面,第一次将Django项目部署到正式的服务器上,花了整整一天配置环境,中途踩了不少坑。写这篇教程,是从一个小白的角度出发,手把手介绍Django服务器端的搭建,希望大家在搭建过程中能少走弯路。

在此先感谢 @nocmt 大佬写的教程,对我这次环境的配置帮助颇多,本文章在此基础上进行一定程度的扩展与修改,去掉了一些不必要的步骤,增加了自己踩的一些坑。参考教程链接:https://www.jianshu.com/p/d6f9138fab7b

具体步骤

1、开始

Ubuntu命令行输入sudo -i进入root模式,本教程默认在root模式下进行。要退出root请按Ctrl+D或输入logout命令。
16.04版本中apt-get命令可以直接使用apt命令,本文采用后者,版本较低请将文中命令对应替换成前者。
本篇文章本地操作系统使用的是Ubuntu 18.04,用Mac的同学也可以参照本文直接安装,使用Windows系统的同学请自行查看XShell的用法,或者参照腾讯云给的官方教程连接上服务器。
官方教程地址:https://cloud.tencent.com/document/product/213/5436

2、连接服务器

Ubuntu连接远程服务器非常简单(Mac由于使用Linux内核同理),首先,在你的电脑上安装ssh

apt update
apt install openssh-server
service ssh start

这样你的ssh服务就成功安装并启动。

下面链接远程服务器,使用分发的ip和密码

ssh 你服务器的用户名@你服务器的ip

在此会让你输入密码,输入即可,可以跳转到你的远程服务器了,此时你会发现命令行前端状态已经变成你服务器的名字了,说明成功登录服务器。
进入服务器同样输入sudo -i进入root模式。

本教程需要多次修改配置文件,vim大神请无视,不会使用vim的新手请使用nano,安装命令

apt install nano

nano的使用就不介绍了,只要进去就知道皮卡丘都会用,根本不需要教程。

3、配置python环境

这里先介绍一个命令

ls

用途是查看当前文件夹下的项目,请妥善利用。

Ubuntu 16.04默认自带了Python3.5的环境,命令行输入python3,若进入python3环境说明安装完成,否则请自行搜索安装。需要python3.6或更高版本的人请自行解决。

4、安装MySQL

直接上命令行代码

apt install mysql-server
#此处按照要求配置密码
mysql_secure_installation
#按照要求配置,所有y/n全部用y
#下面修改MySQL配置文件
cd /etc/mysql/
nano my.cnf

里面应该有些东西,不要管,拉到文件尾添上这些东西

[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
default-character-set=utf8

[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
character-set-server=utf8

[mysql]
no-auto-rehash
default-character-set=utf8

重启并连接MySQL

service mysql restart

如果没有报错直接按照教程继续进行。此步可能报错,我在这一步踩了坑,下面贴出解决方法,方便大家参考:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)

可尝试下面两篇连接中给的方法:
https://dba.stackexchange.com/questions/98467/how-to-solve-cant-connect-to-local-mysql-server-through-socket-error
https://stackoverflow.com/questions/19658891/error-2002-hy000-cant-connect-to-local-mysql-server-through-socket-var-run
很抱歉我已经忘了自己用的是哪一个了,大家都试试吧。

解决完报错后连接mysql

mysql -u root -p
create database '你的数据库名称'

输入quit退出

5、创建虚拟环境

我知道你们可能在本地使用了virtualenv等虚拟环境,但在本教程中推荐使用vcmt,python3.5自带,不需要任何安装。

创建并激活虚拟环境虚拟环境

python3 -m venv /home/vcmt
source /home/vcmt/bin/activate

命令行前面应该多出一个(vcmt)代表完成了这一步。

6、将本地文件打包上传至服务器

这一步可以直接从git上下载,如果你从git上下载,请自行研究,如果从本地上传,可以参考下面的步骤。

下面操作在本地完成。

首先修改settings.py的ALLOWED_HOSTS这一项,将你服务器的域名填入,不要http,不然运行时会报错。

删除各app/migrations/下的以数字开头的数据库同步日志文件。

在Django的主目录下打开命令行,运行

pip freeze > requirements.txt

看到多出一个requirements.txt 文件,打开,将里面的时间和pylint等项目删除,只保留你需要的环境包。

右键将文件夹压缩成压缩包zip,在文件夹目录下打开命令行

scp -r 文件名.zip 服务器用户名@服务器ip:/home/用户名/

输入密码上传。

下面在服务器上:

cd /home/用户名
unzip 上传的文件

和Windows解压缩一样,该目录下出现了你的文件夹。

rm 上传的文件

删除压缩包。

7、在服务器上安装依赖包

cd 到你Django的主目录下

pip -r install requirements.txt

安装了对应的依赖包文件。

如果安装时很有可能出现mysqlclient报错,用nano打开requirements.txt,删掉mysqlclient那一行,重新运行安装依赖包。mysqlclient按照下面的方法安装。

apt update
apt install mysql-server
apt install mysql-client
apt-get install libmysqlclient-dev
apt-get install python-dev
pip install mysqlclient

下面迁移数据库,注意更改你的configs.json文件。具体更改每个人都不一样,不细说。

python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
python manage.py collectstatic

测试是否正确安装

python manage.py runserver 0:80

正常安装的话应该没有报错信息,大功告成,到这一步实际上你将Django放在后台运行其他人已经可以访问了。但是我们还要继续配置更稳定的环境。

8、安装并配置uwsgi

先给大家介绍一个命令,因为很多程序被关闭后依然不会释放占用的端口,所以如果发现端口被占用,运行下面的命令查杀。这句话要经常使用,以80端口为例:

fuser -k 80/tcp

安装uwsgi

pip install uwsgi

启动测试

uwsgi --http :80  --chdir /home/用户名/项目名称 -w 项目名称.wsgi

正确的话恭喜你!错误的话也就和我一样踩坑了,请检查项目路径以及是否正确填写了绝对路径。

下一步填写配置文件

mkdir -p /etc/uwsgi/sites
cd /etc/uwsgi/sites
nano 项目名称.ini

填入以下内容:

[uwsgi]
project = 项目名称
base = /home/用户名

chdir = %(base)/%(project)
module = %(project).wsgi:application

master = true
processes = 5

socket = %(base)/%(project)/%(project).sock
chmod-socket = 666
vacuum = true

保存并退出

9、安装并配置nginx

apt install nginx
nano /etc/nginx/sites-available/项目名称

填入以下内容:

server {
    
    listen 80;
    server_name read.nocmt.com;

    location /static/ {
        root /home/用户名/项目名称;
        }
    location / {
        include         uwsgi_params;
        uwsgi_pass      unix:/home/用户名/项目名称/项目名称.sock;
        }
    }

保存并退出,运行下面代码,注意空格

ln -s /etc/nginx/sites-available/项目名称 /etc/nginx/sites-enabled/
service nginx configtest

返回OK没有问题。

10、启动网站项目

重启服务

service nginx restart
uwsgi /etc/uwsgi/sites/项目名称.ini -d /home/用户名/项目名称/项目名称.log

查看网站是否能正常运行,到这一步没有问题就 OK啦!

最后更改你的configs.json文件

DEBUG = False

重启一次服务,命令行输入

tmux attach

Ctrl+D返回,大功告成!

总结

这次环境配置真的是相当耗时,第一次踩了很多坑,很多问题Google了n次才得以解决,这是我个人第一篇技术博客,希望能帮助更多有需要的人。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,874评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,102评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,676评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,911评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,937评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,935评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,860评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,660评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,113评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,363评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,506评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,238评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,861评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,486评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,674评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,513评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,426评论 2 352

推荐阅读更多精彩内容