ECS搭建Typecho博客
前言
最开始了解搭建个人博客的时候,在Wordpress
和Hexo+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 | cd /var/www/html/ |
将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 | mysql -u root -p //输入刚才安装数据库的时候设置的密码,进入mysql |
然后就可以在typecho的创建页面进行配置,设置管理员账号等操作了。
可能出现的错误
- 配置好typecho后进入后台,但是点开主页报错
因为php缺少包导致,在服务器执行:sudo apt-get install php7.0-xml
Typecho博客配置永久链接
后台-管理-永久链接,但是点击保存的时候会显示出错。这是因为typecho无法在你的网站根目录上新建.htaccess文件。
解决办法:手动创建就好啦
创建.htaccess
进入网站根目录并创建.htaccess文件
1 | cd /var/www/html |
.htaccess文件内容如下:
在谷歌解决办法的时候,搜索到一些不同写法的.htaccess,都试了一下,我只有这一个文件内容会成功配置永久链接。
1 | <IfModule mod_rewrite.c> |
此时查看该文件夹的文件,不会显示.htaccess,因为这个文件只有类型,没有名称。但实际上这个文件已经存在了。
修改apahce.conf
路径一般为/etc/apache2
,找到如下内容
1 | <Directory /var/www/> |
将None
修改为ALL
启用重写功能,最后再重启apache:
1 | sudo a2enmod rewrite |
在博客后台设置永久链接仍然会报错,直接忽略错误强制保存即可。
在阿里云申请并配置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文件
1 | ``` |
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 |
|
vi /etc/apache2/mods-available/ssl.conf
1 |
|
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 |
|
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]
```