网站改造

前言

果然高产是不可能高产的hhh,一不小心就又过了两个月

最近工作有点忙,完全没空做自己的游戏,闲着没事的时候把个人服务器再折腾折腾。不过毕竟这个不是本业,这几天搞过之后估计过不了多久就会没什么印象了2333,所以还是记录在这里,方便之后回顾。

嗯,这次的工程量还算是不小,大概分为下面几个步骤:

  1. 建立HTTPS站点
  2. 个人Git服务器
  3. 博客迁移
  4. 处理HTTP和HTTPS的共存关系

东西挺多的,慢慢搞,这一篇先写前两步(其实2019年春节前就已经差不多可以用了)

建立HTTPS站点

SSL证书申请

我一开始是打算用自签名的证书来用的,然而浏览器会报警,所以还是弄一个正儿八经的证书好了。

申请免费的SSL证书很容易,在搜索引擎里搜免费SSL证书就能找到很多提供者。我这里用的是在腾讯云申请的。

pic1

选择亚洲诚信(TrustAsia)的DV SSL证书,点击确定

pic2

填写域名和邮箱,然后选择”手动DNS”验证。根据帮助文档的说明,给你的域名加一条解析记录。

然后耐心等上一段时间,就可以在SSL证书管理页面看到你申请好的证书啦~

pic3

点击下载,把证书下载到本地,然后因为我用的是Apache的服务器嘛,就把里面的Apache文件夹下的三个文件传到云服务器上,并放在一个你觉得合适的位置:

  • 1_root_bundle.crt
  • 2_inspoy.cc.crt
  • 3_inspoy.cc.key

Apache配置

ssh登录云服务器,键入sudo vim /etc/httpd/conf.d/ssl.conf编辑SSL的配置文件,找到DocumentRoot字段,按照下面配置。

1
2
3
4
5
6
7
8
DocumentRoot "/var/https_root" # 这里是网站根目录,根据实际情况修改
ServerName inspoy.cc:443 # 网站域名
<Location />
<RequireAll>
Require all granted
</RequireAll>
AllowOverride All # 这个是为了后面要自定义.htaccess覆盖某些属性
</Location>

然后往下翻,找到Server Certificate,取消对应注释并配置下面三个字段:

1
2
3
4
5
6
# Server Certificate:
SSLCertificateFile /etc/pki/tls/certs/2_inspoy.cc.crt
# Server Private Key:
SSLCertificateKeyFile /etc/pki/tls/private/3_inspoy.cc.key
# Server Certificate Chain:
SSLCertificateChainFile /etc/pki/tls/certs/1_root_bundle.crt

这里的三个路径就是我们上一步传到服务器上的三个证书文件了。

然后在上面配置的网站根目录里新建一个index.html,在里面随便写点东西,比如:

1
2
3
4
5
6
7
8
<html>
<head>
<title>HomePage</title>
</head>
<body>
<h1>It works!</h1>
</body>
</html>

之后重启Apache服务器:

1
2
$ sudo service httpd restart
Redirecting to /bin/systemctl restart httpd.service

在浏览器里输入你的网址,记得以https开头,应该就能看到刚才写的那个测试网页了。

个人Git服务器

我之前是用的BitBucket来托管我的游戏工程,然而BitBucket实在是太太太慢了= =,然后就在考虑其他的托管平台,比如Coding,码云等,但是这些平台基本上都有1G的容量限制,对于一般纯代码的项目当然是完全足够,但是对于游戏项目来说,美术资源占用的空间才是大头(其实用久了就会发现对于游戏项目管理的话还是SVN更合适= =),1G的容量有可能会不够用。当时GitHub还没宣布私有仓库免费,我就想着干脆不要在第三方平台托管了,反正我有个云服务器,干脆用物尽其用,自己来托管Git仓库就好了,容量限制就是你云磁盘的容量,扩容成本很低。

一开始我打算在云服务器上搭建一个Gitlab,但我很快就发现我错了,Gitlab的配置要求有点高(推荐双核8G),我的单核1G的配置完全撑不住(甚至连WordPress用的MySQL都会时不时宕掉)。

pic4

准备工作

首先新建git仓库的根目录,我这里用的是类似https://inspoy.cc/git/foobar.git这样的形式,也就是说要在网站根目录下创建git目录,并对git目录做权限控制,只允许授权用户访问。

当然这个目录要允许Apache来修改,所以把所有者改成apache,并把目录权限设置为755:

1
2
$ sudo chown apache:apache git
$ sudo chmod 755 git

然后准备授权用户的配置,在终端输入

1
htpasswd -c /etc/httpd/conf.d/git-user.htpasswd USER_NAME

USER_NAME换成你的名字,再输入密码,就搞定了(当然这个用户配置文件可以放在任何你想放的位置)。

配置ssl.conf

拿出在前一个章节里编辑的Apache配置文件ssl.conf,在DocumentRoot里面追加对应的配置项:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DocumentRoot "/var/https_root"
ServerName inspoy.cc:443
SetEnv GIT_HTTP_EXPORT_ALL # 新增
SetEnv GIT_PROJECT_ROOT /var/https_root/git # 新增
ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/ # 新增
<Location />
# 保持不变
</Location>
# 以下都是新增的内容
<Location /git> # 相对于网站根目录的路径
AuthType Basic
AuthName "Git"
AuthUserFile /etc/httpd/conf.d/git-user.htpasswd
Require valid-user
</Location>

创建Git仓库

进入第一步创建的Git根目录,新建一个文件夹叫TestRepo.git,把名字换成项目名字,以.git结尾是一个约定俗成的规范,表示这是一个裸仓库(Bare Repo)。

进入刚创建的目录,输入git init --bare,目录里会出现几个目录。

Pic5

这样其实服务端就已经完全搞定了。

试着在自己的电脑上打开Git命令行输入git clone https://yoursite.domain/git/TestRepo.git,再输入之前配置的用户名和密码,应该就可以跟在GitHub上一样用了。

这下子就不用担心容量不够用的情况啦~