ShoujoA的部署、评论以及其它

正如上一篇结尾所谈到的,就ShoujoA本身,在本地部署时样式表的路径是错的,所以没有任何样式效果可言,这是怎么回事,难道模板的路径错了么?对也不对,事实上,就结果论而言,本机上的路径基本一塌糊涂,也就是说,相对本机而言,这真是一份错误的配置。因为本来,模板中的路径就是针对服务器上部署而写的,在服务器中 / 这个符号代表的是根路径,而在本机上,这个符号代表在当前路径后追加 / 之后的路径,这就是造成路径混乱的根源。

改正的办法:

  1. 一劳永逸的办法,在本机上运行nginx服务器,然后用后面我提供的那份配置替换掉/etc/nginx/nginx.conf 那份配置,不过需要您修改一下配置中的路径,毕竟我这里的配置路径几乎不可能和您的一样。

  2. 临时的办法,在所有page.html中的样式表路径前面加两个小点,改成这样。../theme/xxxxx,然后所有post.html中样式表路径前加四个小点和一个斜线 。../../theme/xxxx 这样应该就能载入正确的样式了。

恩,貌似这篇文章涉及的东西有点乱,姑且我先分点吧。

  1. 配置

  2. 评论

  3. 其它

配置

上面说的是本机上测试的方法,其实服务器配置的方法也是相差仿佛。apache服务器我倒是没研究过,目前部署的只是简单的nginx服务器,当然对nginx的话,我也没深入研究,姑且只是把配置写好能用,所以有不太好的写法,请多担待。

nginx配置的话,如果您从github上download,应该会注意到里面有一个叫做nginx.example的文件,里面就是我nginx配置的完整代码,这里的话,只会看一下 server 部分,因为前面的涉及nginx优化部分我也是抄的……

每一个server代表一个虚拟的服务器,listen监听端口,通常这个总是80,因为我们需要监听的,是通过http协议发送过来的消息。当然您如果支持https的话,应该监听的是443(是吧?)

server_name是您希望分配的域名。比如我这里就是 blog.kochiya.me。需要说明的是,在您充满自信地填写这个字段的时候,请确定您已经在您的域名提供商那里改掉了cname,使之指向您的服务器域名。

说到域名,个人还是推荐godaddy的,价格不贵,也不需要备案(据说很恶心),虽然是英文的界面,但是也不至于看不懂。然后godaddy自己的dns解析貌似时常被墙,基本上是推荐更改dns解析到dnspod的,这部分和本主题关联不太大,并且网上有很丰富可靠的教程,所以就说到这里。

cname解析的话,比如说,您希望把您的博客地址定为 blog.kochiya.me,这样的话,您需要在您的域名提供商那里查看自己的cname,当然通常没有blog这一项,于是您添加一个blog项,再把后面的指向域名改成您服务器提供商的ip地址或者域名地址就好。当然,如果是希望 www.kochiya.me 的话,把www一项的指向域名改了就好。

cname修改完成之后,就可以设置您的server_name了。

接下来设定location。我的话,只是简单地指定了一个根路径,其实更多写法也是可以的,不过个人更喜欢这样的方式,对于一个静态博客而言,这样设定会很清晰。

但是设定根目录的方式固然会使得文件结构清晰,但是会造成后面index写法变得很麻烦。原因是,index项只能是文件名,路径名不可以。也就是说,如果我希望展示的index页面名字是page0.html的话,在config里面这样写 index page0.html 是正确的,但是 index /www/page0.html就是不正确的,比较吊诡的是,本机其实nginx可以这样写,但是服务器上不行……我也一直很好骑。

所以处理index的话,做一个内链接过去吧。正如后面跟的那两条语句:

rewrite /$ /www/page_0.html;
rewrite /index\..* /www/page_0.html;

这样世界就清净了。

error_page我只处理了404,403或者503错误都没做,不过其实这样就好,毕竟最多的还是404界面。对了,这个404是我自己P的,好看么?不过貌似载入很慢……?

最后还是说一句,在改配置的时候,主要也就是路径需要好好改一下,这样的。

评论

这里会谈到评论的一些设定,不,不是disqus的设定,而是多说的设定,这部分模板上的修改我没提交到github上那个项目上,主要是disqus更通用一点。当然如果您选择了多说的话,除了用通用代码替换掉disqus通用代码之外,您还需要做更多的事。

事实上,多说的通用代码太简单了,如果您有更高级(?)的要求,您就需要扩展它,比如我们这个模板,用通用代码就会有一些问题。

您可以参阅这篇官方的文档通用代码参数列表,根据这篇文章,您可以知道,需要扩展的实际上就是 class=“ds-thread” 之后的部分。虽然您可以改变更多的参数,但是推荐只添加data-thread-key参数,data-title参数以及data-url参数。需要注意的是,shoujo并没有id这个属性—-虽然您也可以修改代码然后把node在列表中的index当作id传过去,不过实际上不需要那么麻烦。您可以直接把TimeStamp传过去,反正这玩意也是独一无二的,当作id还是绰绰有余。虽然我曾经担心过多说中的id是整型数据,不过仔细看了一下,发现是string,嘛,所以就没问题了……

data-title其实很有用,不过最有用的是,可以直接把文章的链接发到微博上去……但是如果是通用代码的话,这个链接是错的。

具体的修改是这样:

<div class="ds-thread" data-thread-key="{{post.TimeStamp}}" data-title="{{post.Title}}" data-url="http://blog.kochiya.me/www/{{post.Title}}.html"></div>

嘛,就这样,如果您希望用多说的话,请这样修改。

其它

这部分叫其它其实让我有点踌躇,因为本来而言,我想讨论的是ssh连接服务器的问题,因为和上面干系不是很大,所以我直接叫其它了。

这部分是中午和群里面人讨论之后得出的一些结论。

当然,通常的ssh连接,一般只是ssh -p xxx xxx@xxx 这样的形式。但是这样太麻烦了,每次都要输密码,讨厌透了。于是考虑用ssh 公钥和私钥来免密码登陆。

使用ssh-keygen -t rsa 来生成rsa的公私钥对。当然您可以选dsa什么的,都随意—哈,当然,rsa是最不安全的一种,不过我倒是无所谓……

ssh-keygen依赖于openssh……一般都有吧?

后面会询问您公私钥对存放的位置,反正我是直接回车了。

在后面需要您给一个暗语,喜欢给就给吧,不过和上面一样,比起安全我更希望方便……于是我果断回车留白了。当然填了的话,可以通过 ssh-add 去缓存密钥,也算方便吧?

通过ssh-copy-id -i rsa.pub -p xxx xxxx@xxxx来上传公钥,这时候会让您输服务器ssh密码,放心,理论上来说这是最后一次了。

ssh公私钥系统对权限要求很严格,主要体现在,如果权限稍微出错,就会无法使用……涉及的几个权限相关的文件或者文件夹分别是:.ssh文件夹(只要您通过ssh-copy-id上传,您的服务器都会多出一个这个的,应该不可能没有?),.ssh文件夹中的authorized_keys,以及最容易被遗忘的,$Home本身的权限。

一点一点说。ssh要求,不能给其他用户以写权限,也就是说,一旦您发现ssh 不能直接连接,必然是权限的问题,而且多半是给了写权限。我的话,给了$Home 750的权限,话说必须给$HOME group,也就是第二位以x权限的,否则,别人压根无法访问您的博客。.ssh的话,给740就不错,或者可以给700,最后的authorized_keys,也只给740或者700就好。

如果严格按照上面的做了,应该可以直接通过 ssh -p xxx xxx@xxx来访问您的服务器。如果连xxx@xxx都嫌麻烦,可以在.ssh文件夹里建立一个叫做config的文件,然后像我这样配置:

Host server
User AprocySanae
Port 822
HostName us1.xxxx.net

第一行是别名,也就是说,您以后可以直接ssh server这样访问。第二行是您在服务器的用户名,也就是xxxx@xxxx的前半部分。第三行是端口号,指定vps服务商提供的端口吧。第四行是服务器域名,也就是xxxx@xxxx的后半部分。

好了,试着通过ssh server访问服务器吧,很方便不是?

然后,恩,应该没什么说的了。

阅读完上文的读者,您辛苦了~~~

以上。