老板让我一周上线一个网站的一些记录(上)

十年热恋 提交于 2019-12-11 10:50:31
本人IR方向情报学硕士一枚,记得上周二本是一个平静的调参之夜,老板突然来了电话让我去找他一趟。到了办公室之后,老板说,我们最近发布了一个数据集,需要搭个网站。正当我想问“哦?谁来搭呢”,我发现,老板的眼里,都是我……

本文讲讲笔者在本个项目里购买服务器和服务器环境配置时踩过的那些坑。

1 需求分析

经过对老板的需求整理,这次网站看起来不是很复杂,简而言之有三个要实现的功能:

第一,主页信息展示。写个homepage展示我们数据集的使用规则,留下我们的联系方式,可以让用户下载需要填写的文件等;

第二,信息收集。提交填写好的协议文档,留下提交者的个人信息等,存储到数据库。

第三,审核申请信息的管理员界面。实现对提交文档的在线查看,审批等功能。

2 已有的技术基础

我的技术基础:大二的时候照着W3School学了点html/css/js三件套,说实话,忘得差不多了,所以节约时间起见,查了几个Bootstrap在线生成网站

四种最好的免费Bootstrap在线设计工具 -解道Jdon​www.jdon.com

最后选中了Carrd

Simple, free, fully responsive one-page sites for pretty much anything​carrd.co

网上说这个是免费的,不过现在貌似收费了,在注册之后送了一周的试用会员,可以把生成的网站发布到一个以 .carrd.co 结尾的网页,不过这个试用版会员不能直接下载网页的源码(下载源代码的会员要充钱,一年49美刀)。可是,这里有个BUG——既然直接能生成一个在线预览的网页,那我ctrl+s不就可以保存网页源代码了吗?所以也是变相的一周免费试用(对不起 羊毛 我薅了)。以上,一顿拖拽操作之后,用于应付这次建站足够了。

至于关于如何拖拽生成一个前端网站不是本文的重点,下文就不赘述了。

此外,我的主语言是Python,所以这次后台的搭建打算采用Django。之前也只是听说Django是一种基于Python的Web开发框架,上线快,性能强。作为一个好奇宝宝还是蛮想尝试的。

服务器购买记

除了技术基础,我们还要考虑到硬件的问题——我们还需要一个云服务器来放我们的网站,我选择了阿里云的(可能是前几天看王坚院士的新闻看的吧)。

购买服务器这里踩了第一个坑

阿里云提供的服务器主要有两种,一种叫“虚拟主机”,另一种叫“云服务器ECS”。

一开始,图便宜买了第一种虚拟云主机,中等点的配置,一年500多块。这种云主机,说白了就是通过ftp访问的主机文件,操作简单,实现前端页面只要把homepage重命名为“zhuye.html”就可以直接访问页面了。但是,越到后面越觉得不对,为毛只能放静态页面啊?!(虽然有人说放ASP或者.NET程序可能会实现,但是没时间去考证了)

打了客服电话,那边给的回复是:

“虚拟主机适合放企业的一些比较简单的展示页面,如果需要交互功能的话,推荐购买ECS产品……”

还好,阿里提供每个用户一次5天无条件退货的选择,一场虚惊。

巧的是,退货之后,我翻到了阿里的“云翼计划”产品。

阿里云学生机-云服务器学生机优惠-学生机推荐-云翼计划-阿里云​promotion.aliyun.com

简而言之,就是学生(默认24岁之前都是学生。哎呀,暴露年龄了)首次购买一个一年的云服务器ECS(1核/2G内存/40GB硬盘),只需要114元。小是小了点,应付我这个网站足够了呀,果断入手。

最后,购买域名,老板的精心挑选之下,阿里云域名服务里买了一个.cn的域名,两年68元,国内服务器只能挂国内域名,要不然不给备案。没啥大坑,买就完事了。

4 服务器环境配置

前面说到,前端页面直接通过拖拽发布ctrl+s就搞下来了,也不是我的主要采坑点,所以就不赘述了。(Carrd牛X!再次感谢Carrd!好看好用好吧)

回到正题。这里我要说一个服务器环境的版本号问题,这坑耗费了很多时间。

我选择的ECS版本是windows server2008 32位的(也许当时我选Ubuntu就没有这么多坑了吧),没想到这坑,介么大。

先说一下最终的配置(下面三个是踩着坑排出来的雷):

Python==3.6
Django==2.1.7
MySQL 5.6

还记得,装环境那一天的上午,我先装了Python3.8,告诉我版本过高,服务器装不了(cmd输入Python之后会秒退),于是退3.7版本,也不行,一样秒退。一气之下,装了个3.5的。结果在使用Django的时候告诉我,Django最低也得Python3.6才能用。

中午一个人忧郁的去食堂吃了顿午饭,喜欢吃的思乡掉渣饼突然就不香了。

下午回到实验室开始安装MySQL,结果同样遇到了问题,我先装了MySQL 8.0,闪退,装了MySQL5.7版本太高装不上,之后装了个MySQL5.5,结果在python manage.py inspectdb的时候告诉我,5.5,低了。

此情此景,我想吟诗诗一首:


服务器啊 真是小,一天骑次 妹装好;
Django Python MySQL, 谁先装上 谁最屌。

一点脾气都没有甚至有点想学习。

同样,也是在python manage.py inspectdb的时候,会报一个版本1.3.13,但是你的mysqlclient (感觉就是指pymysql) 版本是0.9.3的错。

Django - installing mysqlclient error: mysqlclient 1.3.13 or newer is required; you have 0.9.3

网上有主要有两种解决方案,一种是改库的源码(注释掉判断版本号的那一行,然后把某处的decode改成encode),个人非常不推荐,这样会影响代码的可移植性,且治标不治本,以后在遇到总不能总改源码吧。所以,比较推荐第二种方法,

pip install Django==2.1.7 

就没有这个问题了。如果没换源,下载速度很慢,可以加一个源:

pip install Django==2.1.7 -i https://pypi.douban.com/simple

总之,上面除了通过闪退进行判断安装的版本有问题外,如果报“无法加载到动态链接库xxx.dll”之类的错误,也别找dll了,找到也没有管理员权限安装到System32目录里,大概率就是版本有问题的意思,要重新装其他版本的环境了。

小结

本文主要记录了一下阿里云服务器选择和服务器环境准备上的问题。

总之,如果经济允许,首选ECS,毕竟相比云虚拟主机解锁了多种玩法,并且云翼计划也很划算。

其次,如果你也是windows server2008 32位版本,请直接Python3.6(Anaconda约4.4.0,别忘区分32和64位)+Django 2.1.7+ MySQL 5.6。(来自沙雕博主装环境的一天得出来的结果)

最后,一周上线是不可能的,光是服务器备案就得一周了,而且这种企业性质的页面内容,管局貌似也不会通过我以个人身份进行的备案吧。不过老板倒是很靠谱地联系了学校的信息中心,让我直接把后台接过去。哦吼,我岂不是白嫖了一个域名和服务器?

等这两天网站上线了,再总结一下Django搭建后台时,以及自动生成Django后台管理员界面时遇到的“坑”吧。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!