前言

最开始了解搭建个人博客的时候,在WordpressHexo+github中选择了成本更低(几乎木有成本)、更简单的Hexo
由于是刚入坑的咸鱼,在搭建的过程和配置个性化主题的过程中踩了无数次坑,虽然搭建起来的博客也看得过去,但是最终因为一个改了很久+查了很久解决方法无果后的BUG而选择弃坑..也就是在这个时候,接触了Typecho

基础配置

阿里云ECS: 仗着学生优惠买的..(贫穷又不失礼貌的微笑)

Ubuntu 16.04 32位

万网域名: 已备案,耗时15天
操作终端: Mac OS X 10.11.6 Terminal

域名解析

阿里云控制台的域名解析设置中添加两条解析:

记录类型 主机记录 解析路线(isp) 记录值
A @ 默认 你的ECS的公网ip
A www 默认 你的ECS的公网ip

配置LAMP+Typecho环境

配置LAMP

在Mac的终端进行ssh操作:

1
sudo ssh your ECS's ip  

会提示输入密码,然后再输入ECS密码

首次进行ssh操作需要先在阿里云ESC实例重置密码,并重启

更新安装包的源:

1
sudo apt-get update 

安装apache:

1
sudo apt-get install apache2 

安装php:

1
sudo apt-get install php

安装Mysql:

1
sudo apt-get install mysql-server

关联php和mysql

1
sudo apt-get install php-mysql

关联Apache和php:

1
sudo apt-get install libapache2-mod-php

到这里,LAMP的环境搭建就结束了。
是不是觉得很简单?
不用担心!前面的一堆坑等着你跳哪(不要问我为什么知道)
此时访问你的域名,会出现Appache的默认主页。

配置Typecho

Typecho官网下载下来Typecho的压缩包

我下载的是1.1正式版(2018-4-17)

在本地执行命令上传到服务器上:
scp -P 22 /yourpath/1.1-17.10.30-release.tar.gz root@yourip:/var/www/html/1.1-17.10.30-release.tar.gz

端口一般默认是22

再次通过ssh连接服务器:

1
sudo ssh yourip  

进入Apache的站点默认目录,解压Typecho压缩包,是一个build文件夹:

1
2
cd /var/www/html/
tar xzf 1.1-17.10.30-release.tar.gz

将build文件夹的所有文件移动到站点根目录:

1
mv build/*  /var/www/html/

删除apache默认的主页:

1
rm -f index.html

对站点文件夹授权777:

以便后面typecho可以自行创建config.inc.php文件

1
chmod -R 777 /var/www/html

此时打开你的域名,是一个typecho博客的创建页面,但是别急…数据库还需要手动创建:

1
2
3
4
mysql -u root -p   //输入刚才安装数据库的时候设置的密码,进入mysql
create database typecho; //创建typecho的数据库,不要忘记打分号
show databases; //除了默认的几个数据库,typecho数据库也被创建
quit // 退出mysql

然后就可以在typecho的创建页面进行配置,设置管理员账号等操作了。

可能出现的错误

  • 配置好typecho后进入后台,但是点开主页报错

因为php缺少包导致,在服务器执行:sudo apt-get install php7.0-xml

Typecho博客配置永久链接

后台-管理-永久链接,但是点击保存的时候会显示出错。这是因为typecho无法在你的网站根目录上新建.htaccess文件。

解决办法:手动创建就好啦

创建.htaccess

进入网站根目录并创建.htaccess文件

1
2
cd /var/www/html
vi .htaccess

.htaccess文件内容如下:

在谷歌解决办法的时候,搜索到一些不同写法的.htaccess,都试了一下,我只有这一个文件内容会成功配置永久链接。

1
2
3
4
5
6
7
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
</IfModule>

此时查看该文件夹的文件,不会显示.htaccess,因为这个文件只有类型,没有名称。但实际上这个文件已经存在了。

修改apahce.conf

路径一般为/etc/apache2,找到如下内容

1
2
3
4
5
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

None修改为ALL
启用重写功能,最后再重启apache:

1
2
sudo a2enmod rewrite
sudo /etc/init.d/apache2 restart

在博客后台设置永久链接仍然会报错,直接忽略错误强制保存即可。

在阿里云申请并配置SSL证书

在控制台申请云盾证书

因为我的域名是在万网购买的,所以直接在阿里云申请的免费的一年SSL证书。

  • 免费型DV SSL
  • 保护类型:1个域名
  • 选择品牌: Symantec

刚进入购买页面是默认没有免费型DV SSL的,先选择1个域名,再选择Symantec,就会出现免费型SSL。

购买成功后,阿里云控制台-左侧安全(云盾)-CA证书服务补全信息

在服务器配置SSL证书

阿里云控制台 - 左侧安全(云盾) - CA证书服务 - 选择对应的证书 - 下载
在apache根目录/etc/apache2创建名为cert的文件夹

1
mkdir cert

将下载的压缩包上传到该目录

1
scp  -P 22 /本地路径/证书压缩包.zip root@101.132.127.63:/etc/apache2/cert/证书压缩包.zip

连接服务器,解压该压缩包

1
unzip 证书压缩包.zip

开启ssl: sudo a2enmod ssl

修改default-ssl.conf文件

/etc/apache2/sites-available/default-ssl.conf
1
2
3
4
```

找到如下内容并修改路径:

SSLCertificateFile /etc/apache2/cert/public.pem
SSLCertificateKeyFile /etc/apache2/cert/你的证书.key

            #   Server Certificate Chain:
            #   Point SSLCertificateChainFile at a file containing the
            #   concatenation of PEM encoded CA certificates which form the
            #   certificate chain for the server certificate. Alternatively
            #   the referenced file can be the same as SSLCertificateFile
            #   when the CA certificates are directly appended to the server
            #   certificate for convinience.
            SSLCertificateChainFile /etc/apache2/cert/chain.pem
1
2
3
4
5

>去掉SSLCertificateChainFile前面的#号

修改default-ssl.conf文件

vi /etc/apache2/mods-available/ssl.conf

1
2
3

找到如下内容并修改:

SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM

    # SSL server cipher order preference:
    # Use server priorities for cipher algorithm choice.
    # Clients may prefer lower grade encryption.  You should enable this
    # option if you want to enforce stronger encryption, and can afford
    # the CPU cost, and did not override SSLCipherSuite in a way that puts
    # insecure ciphers first.
    # Default: Off
    SSLHonorCipherOrder on 
    
    #   The protocols to enable.
    #   Available values: all, SSLv3, TLSv1, TLSv1.1, TLSv1.2
    #   SSL v2  is no longer supported
    SSLProtocol all -SSLv3 //没有添加SSLv2 因为上面的注释说不再支持了
1
2
3
4
5
6
7
8
9
10
11
12
13
14

最后重启Apache2
>此时访问https://你的域名 显示小绿锁即成功。
>必须全站https才会有小绿锁,如果你的图片外链是http,会显示警告。

## Http重定向到Https ##
### 博客后台管理修改站点地址 ###

将站点地址的http修改为https

### 服务器端修改.htaccess ###

在站点根目录修改`.htaccess`如下:

RewriteEngine On
RewriteCond %{http_host} ^www.qwqmiao.com$ [NC]
RewriteRule ^(.*)$ https://qwqmiao.com/$1 [R=301,L]

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [L,R]

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]

```