我终于搭了人生中第一个网站

 april 29, 2020     6 mins read


其实不能算第一个,但我总觉得在Github Pages弄静态页面不太算数,那就算第一个吧。其实我在学会写代码的时候就应该开始自己找个教程搭个自己的网站,但是由于懒癌和不自信,我迟到了好几年才开始做这件事情。而现在我最纠结的就是——工作五年了才开始研究怎么搭网站真的好lame啊!

现在已经搭得差不多了(其实还是没弄完)感想就是——妈蛋!建网站真的不需要会写程序甚至不需要有什么技术背景啊,需要的更多的是对相关产品和流程的了解,而这点我真是完全欠缺啊😂反而因为我解决所有问题的方法都会从敲代码出发,很多其实很简单的问题都被我复杂化了……感到好羞愧

(当然,会写代码的话,好像还是能省很多钱😂)

需求

和朋友们心血来潮想开个内容网站捞点外快,她们负责内容我负责网站。根据我的设想,网站需要有以下两个基本功能,

  • 我朋友们要在上面发文章并进行分类
  • 我们需要有个网站地址为后缀的邮箱和用户沟通

一看就是能靠WordPress一键搞定的吧?可我觉得我硬是给它搞复杂了……总之最后是这么个架构:

  • CMS为WordPress,因为除了它以外,其他能写博客的系统我只知道Jekyll, Hugo还有Hexo(就是你现在看的这个)等静态生成的博客,都要用markdown才能写……后来我更是发现最主要的是WP毕竟有后台管理啊!我刚说的那些其他没有后台管理系统的啊!!!
  • 邮件系统目前用的Postfix。讲真我有点后悔,原因本文后面慢慢说……
  • 域名从Namecheap买的,因为参考了这个知乎问题下面推荐的一系列服务,发现想要的域名在他们家好像比较便宜,推荐Namecheap的也很多😂
  • 服务器在Linode买的,因为之前用过在Linode上搭的梯子翻墙觉得效果特别好。目前对性能和客服还算满意所以觉得这个决定做的是对的,但又觉得那会儿如果直接让Namecheap直接帮我搞定服务器是不是能省许多许多麻烦……好了下面总结一下我建站的流程和遇到的难点

域名和服务器

我以前一直傻乎乎地以为这种操作虽然不至于需要我ssh到我买的服务器里操作,但也不是什么容易的事儿,闹了半天买完域名以后在我自己的namecheap账号里设一下域名的name server,然后去Linode里面把我买的那个域名登记一下就完事儿了……同理于我用Github Pages写的个人网站,在git repo的设置里填个网址差不多就万事大吉😂

因为买服务器毕竟要按月交钱,所以我一直拖着没买,而是在本地下了个bitnami进行开发。本来又傻乎乎的以为我得在买了服务器以后再在上面装个bitnami什么的,结果买服务器的时候可以直接选Wordpress模版来设置。那会儿以为矮玛真省心啊,后来发现namecheap服务器也提供这个功能而且还能解决更多我之后碰到的问题……当然我也不知道namecheap的服务器是不是好用就是了,Linode目前的表现还是挺良心的。

页面和排版——以及吐槽一下PHP

因为外观需要自己定义,于是我就傻乎乎地跟着WP theme的教程,用这玩意儿下了个生成器就开始自己写了。现在倒是把css一行行敲出来了,素材也用Photoshop画了个大概齐,但是看上去我觉得还是不咋好看没设计感。正当我觉得自己得去好好学一下设计的时候,有不止一位朋友给我推荐了Figma,我看了一眼教程瞬间觉得……我是不是敲那一大堆代码其实也都白敲了

好了因为WordPress是用PHP搭起来的所以我现在也可以说我写过PHP了!然而很遗憾,目前并没有什么体验,因为没有自己重新定义什么PHP函数啥的,干的活儿全都是各种复制粘贴……我只想说,作为一个写惯python的人来说,underscore的模版那个毫无规律的的换行和缩进真的很刺激我的强迫症……以及我现在对于PHP和JSP这种把排版和逻辑大块大块地混在一起的操作越来越不感冒了,不是说这种操作不应该,而是感觉很背离被几年前端经验培养出来的MVC/MVVM思维模式。(题外话,其实我觉得我没资格评价编程语言,因为写过的程序都不大,而且不求甚解的习惯导致我并不知道每种语言都是怎么实现的。就使用感受来讲,目前为止最喜欢的是Swift最讨厌的是Java😂)

这一块我估计以后还会长期更新,因为主页还没写出来😂

对SSL的支持

这一步到现在都没有完全做好,因为发现我目前用的SSL证书好像只在www.mydomain.com上面作用,去掉www就不行了。

首先呢据说很多WP引擎是提供SSL免费证书的,然而Linode没有Namecheap也没有,于是想要免费证书只能自己去Let's Encrypt生成一个了。但到这时候我还心存幻想觉着有那么多WP plugins我大概也许可能还是能在哪搞个一键生成吧,我自己手动操作万一一个不慎弄坏了咋整!

所有教程包括Wordpress官方推荐都是用Really Simple SSL这个plugin,结果他们的要求是要先搞到证书才能用。于是我又在想有没有别的什么plugins可以搞证书的,于是用另外一个plugin搞到了证书,结果不能一键装……那还不是一点卵用都没有啊😭

这下子就很尴尬了,手上已经有certificate了还不是Let's Encrypt给的,搜了不少教程都搜不到。还有很多人的服务器上好像自带一个叫cPanel的东西,我这边也没有……然后Linode教程说全都是怎么直接装Let's Encrypt程序跑的😂

最后以SSL certificate和Debian为关键字,搜到了这篇文章,直接ssh到主机用命令行几分钟之内搞定这事儿。顿时觉得之前费那么大劲儿真没意思……

邮件系统

搞这个邮件系统充分证明了——果然人永远是得陇望蜀的!

一开始我真的只有一个小目标……发给contact@mydomain.com的邮件能直接转到我私人邮箱就好了,我都不需要用它来发邮件。

研究了一下怎么做,发现……真的我要是直接用namecheap的服务器就很省事了,直接在后台设置一下就好了,比如contact@ginsterrific.com转发到我私人邮箱就是直接在Namecheap后台设置的。在我已经买好了别家服务器的情况下,就只能自己上手配了。因为搜出来的第一个答案建议表示这种转发邮件用Postfix很容易做到,于是就照办了,而且照办的时候还搜出了两三个别的介绍Postfix的教程来对比。

结果问题就来了,因为读的另一个教程最后建议我直接在主机上用sendmail来测试收发成功,于是……本来并不准备支持发邮件的我,硬是改变了自己的目标——要做到能发邮件!因为Linode为了防垃圾邮件把25号端口封锁了(花了好长一段时间才发现这一点)大周末又大半夜的我又担心客服效率太低,愣是自己想了好多办法想绕开25号端口,看来看去办法很多却没一个让我敢大胆上手动的,最后还是给Linode开了个工单让他们帮我把25端口撬开。他们效率倒是很快,半小时内给我搞定了。

所以目前的状态是,能收邮件并转发到我和朋友的私人邮箱,但是发邮件就只能从命令行发。目前因为在用Postfix所以搜到的搭完整smtp的教程都是用Dovecot+Postfix的,然而我再次陷入了后悔……我直接用个第三方邮件系统他不香吗,为什么非要自己搭还搞得破破烂烂的😂

后来还发现Postfix给QQ邮箱发邮件居然发不出去,每次QQ都会返回550(发送太频繁?明明没有啊)。虽然网上其他人很多表示遇到差不多问题,但是解决方式也各有不同五花八门。我试了好几种方法,最后终于找到能用的那个了……教程是这个但是!destination rate delay不是12秒!不是5分钟!而是要五分钟又一秒!!!(也就是301秒)我简直了,我在想要是让我自己一点点去试岂不是会想死……

总结

轮子那么多,我的产品需求又都很正常,何必一直在自己造轮子……

disclaimer: ginsterrific.com and the author give no guarantee and accept no responsibility or liability of the accuracy or the completeness of the materials and information contained. opinions are my own and do not necessarily reflect the views of my employer or any of my affiliations.