零、为什么要搭建个人博客?
为了摆脱千篇一律的CSDN、简书、知乎,为了练技术或者仅仅是为了不让服务器蒙尘
一、选择适合自己的博客框架
我这两天捣鼓过两个博客框架,一个是Hexo,另一个是这个,Typecho。两边我都挺喜欢的,这里介绍一下两者的特点(除了都很好看之外)
Hexo:
- 静态网页,体积小,性能好
- Hexo保存文章都是md格式,便于转储
- 最大的优点,不需要购买类似云服务器这类东西,因为可以直接托管到Github或者Coding之类的地方
- 环境:node.js
Typecho:
- 动态网页,交互好,性能没有不好(具体对两者我还没太大感受)
- 相对Hexo而言可以很方便的在网页上直接敲文章
- 环境:LAMP(Linux+Apache+Mysql+PHP)
实际上Typecho的环境搭建相对而言更复杂一些,而且Hexo不需要购买服务器这一点也是很多人选择它的理由。但我最终还是选择了Typecho,因为一方面我更喜欢它的交互,另一方面Typecho也能更方便的写作。Hexo也能做到这一步,也就是安装Hexo-admin,我也尝试安装了,然后就没有然后了,他让我打开localhost:4000,可是我用的并非本地主机(放寒假带回家的笔记本也并非是我的主力机),听大佬说可以用nginx反向代理,但这个时候我已经被Typecho的动态效果深深吸引了......
咳咳,接下来进入正题,这次暂时就只记录一下用Typecho搭建个人博客的流程
二、购买并配置服务器
杂谈:前段时间我在阿里云花了70块钱左右买了一年1核2G的ECS(Elastic Compute Service,云服务器,跟VPS虚拟主机的区别详见百度,主要是虚拟主机可能会存在资源竞争),还送了对象存储OSS和关系型数据库RDS(这两样我都还用不来),然后看了眼第二年续费的价格,900RMB,打扰了。今天我又看了一下Vultr上的云服务器,都是国外的(意思是可以进行科学计算),最便宜的只要$2.5,但是这个套餐的实例只支持IPV6,这样显然是不行的,跟它相同配置但支持IPV4的实例要$3.5,折合下来也才二十多块钱一个月,一年也才三百块的样子。但我听说有一个充$5送$25的活动,就能白嫖几个月的服务器,简直不要太舒服
总结起来就是,能找到那个充值活动并且不需要太好的配置的话,可以去vultr看看,不然就在阿里云买应该是性价比最高的了
购买时选择Linux操作系统,一般是Centos7,我选了8.1(建议不要傻乎乎的选最新版)
服务器买了之后在产品控制台可以修改密码,之后就能用ssh远程登录了,需要注意的是,云服务器不像自己的虚拟机,对一些涉及到外网端口访问的服务,是需要在阿里云产品安全组里面进行配置的
三、安装Apache
打开自己Windows上的Xshell远程连接云服务器port22,在终端键入以下命令(默认在root用户)
yum -y install httpd # -y选项表示当安装过程提示选择全部为"yes"
等到出现“Complete!”就表示安装成功了,使用下列指令启动并设置开机自启httpd服务
systemctl start httpd.service # 启动
systemctl enable httpd.service # 设置开机自启
如果服务器有防火墙则需要让防火墙允许http和https通信
systemctl status firewalld # 查看防火墙状态,显示绿色active(running)表示正在运行
service iptables status # 如果第一条没有的话,有可能不是用的firewall而是iptables防火墙
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
# 以上两条中--permanent表示永久生效,开放防火墙还可以针对端口,如--add-port=80/tcp
firewall-cmd --reload # 重新载入使配置生效
云服务器还需要在控制台添加安全组规则,否则也是不能打开网页的
到这一步之后可以打开浏览器,输入“服务器ip”,查看是否出现Apache测试界面,有的话就成功了
四、安装Mysql
PS:本人以前也装过不少Mysql了,这次却还是碰壁了,可能跟Centos8有点关系,也可能是镜像源、仓库啥的出了问题
首先更新系统上的软件
yum update
然后可以试试直接安装
yum -y install mysql # 我印象中mysql好像就这么安来着
由于我是Centos8,所以也可以这样安装
dnf install @mysql # centos8中yum被dnf取代,之所以还能用貌似是因为软连接(类似快捷方式)
不出意外的话就安装好了,但是我出意外了,下面提供解决方案:
到mysql官网上找到mysql等需要的软件的链接(我已经找好了),用wget下载到当前路径(建议专门建一个文件夹来存东西)
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-community-server-8.0.19-1.el8.x86_64.rpm
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-community-common-8.0.19-1.el8.x86_64.rpm
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-community-libs-8.0.19-1.el8.x86_64.rpm
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-community-client-8.0.19-1.el8.x86_64.rpm
下载之后用rpm指令安装这些安装包,有一定顺序(因为软件依赖),需要先安装common、libs、client,再安装server
rpm -ivh mysql-community-common-8.0.19-1.el8.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.19-1.el8.x86_64.rpm
rpm -ivh mysql-community-client-8.0.19-1.el8.x86_64.rpm
rpm -ivh mysql-community-server-8.0.19-1.el8.x86_64.rpm
# 其中i表示安装,v表示显示安装过程,h表示显示进度
全部安装完之后用下面的指令查看安装情况
rpm -qa|grep -i mysql # 在Linux里面要实现一种操作不一定只有一种指令,比如这里还可以用yum
安装完成后使用以下命令启动并设置开机自启
systemctl start mysqld
systemctl enable mysqld
然后查看mysql运行状态
systemctl status mysqld
mysql的初始临时密码在/var/log/mysqld.log,但这里不需要去查看,下面的步骤将重置mysql的密码
关闭mysql
systemctl stop mysqld
设置环境选项,跳过授权表(以前的做法是要到配置文件里面手动追加的)
systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"
启动mysql
systemctl start mysqld
现在就可以免密登录mysql了
mysql -u root
下面修改root密码,这里需要分版本(mysql8开始就改变语法了)
MySQL> UPDATE mysql.user SET authentication_string = PASSWORD('MyNewPassword')
-> WHERE User = 'root' AND Host = 'localhost'; # mysql8之前的用这种
MySQL> alter user 'root'@'localhost' identified by 'MyNewPassword'; # mysql8用这种
MySQL> FLUSH PRIVILEGES; # 刷新,使修改生效
MySQL> exit # 退出,quit也一样
# mysql8之后对密码的格式要求比较复杂,也有办法设置简单密码,但这里没必要
出来后找到my.cnf文件删掉Skip-grant-table语句
vi /etc/my.cnf # 进去删
然后用前面的方法重启mysql,之后进行安全配置
mysql_secure_installation # 没有在mysql里面
除了第一条改密码按回车跳过之外,一路按y
关于mysql的最后一步,为typecho建立一个数据库,先登录mysql
mysql -u root -p # 会提示输入密码,就用自己刚设置的密码
新建数据库之后退出,就完了
MySQL> create database typecho; # 建立名为typecho的数据库,记住名字
MySQL> show databases; # 这一步用于检查是否成功建库
MySQL> exit; # 退出
五、安装PHP
PS:这一步原本也很简单,但我依然弄了很久
先按照正常流程来吧,直接yum安装PHP以及相关组件
yum -y install php php-mysql # php-mysql很关键,用于连接php和mysql,类似java的jdbc
如果不行的话,就跟我一样吧,首先安装镜像源
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-8.rpm
然后查看是否有php
yum search php
我安装的比较顺利的是php74及其相应组件
yum install php74
yum install php74-php-mysqlnd.x86_64
yum install php74-php-mbstring.x86_64
安装完成后可以用指令查看版本和安装情况
php74 -v # 这里不进行软连接的话只能这样查版本,但我既然都知道是74了。。。
yum list installed | grep php # 这里grep起到一个筛选的作用
接下来重点是建立软连接,之后指令中就可以用php代替php74了
ln -s /opt/remi/php74/root/usr/bin/php /usr/bin/php # 如果不做这一步它根本不把你php74当php
为了确保成功安装,可以在“/var/www/html/”目录下新建一个info.php文件,内容如下
<?php
phpinfo();
?>
然后浏览器输入“服务器ip/info.php”看看有没有版本信息,有就完事儿了
确保万一重启一下mysql和http
systemctl restart mysqld
systemctl restart http
六、安装Typecho
这一步就比较简单,首先到http://typecho.org/去下载软件包,或者你可以用wget
wget http://typecho.org/downloads/1.1-17.10.30-release.tar.gz
解压会得到一个build文件夹,把里面的东西全部移动到“/var/www/html/”路径下(我把之前的东西都清空了)
cd build # 进入文件夹
mv * /var/www/html/ # 星号表示全部
这时打开网页“服务器ip/install.php”即可开始安装
安装注意事项mysql端口3306,建好的库是之前的typecho,没有前缀;第二步按照要求在指定路径创建config.inc.php配置文件;安装完成后可删掉install.php
至此,大功告成!
七、绑定域名与网站备案
在阿里云
这一步以及之后的SEO优化、https等工作都还没开始做,究其原因还是域名实名认证通不过啊!!!之后在做吧!
八、个性化与体验优化
Typecho默认的主题是不满足我的要求的,因此个性化之旅马上开启
1.简单美化
可以从主题模板和插件入手,搜索引擎很容易搜到许多主题和插件,下面提供一点链接
主题:
https://www.typechodev.com/themes/
插件:
https://www.typechodev.com/plugins/
本人比较看好的主题模板有Akina和Aria,这两款我认为各有优缺点,所以我目前最想做的就是将两者合二为一,改叫Akinaria如何?hhh,怪般配的
插件的话,Access、HoerMouse、Links三款应该算必备吧,分别是查看浏览情况、鼠标指针和点击特效、友情链接,具体的在上面的链接里都有
2.优化方案
图片加载优化:
针对有的博客可能会放很多大图片而加载变慢的问题,可以使用图床来解决,看了一下知乎,比较好的选择主要是:七牛云和又拍云
具体的可以参考知乎https://zhuanlan.zhihu.com/p/35270383?ivk_sa=1023345p
文章书写体验优化:
没什么好说的,下载安装Typora,本地编辑之后复制到网页上发布吧hhh
3.深度定制
这一步俺自己也搞不定啊~
不过模板终究是模板,谁都可以用的东西,要让博客真正独一无二,深度定制是必不可少的。将别的模板中比较好的功能和配置整合到现有模板我认为也算深度定制,比如自动显示、透明化、隐藏导航栏,自动隐藏右侧滑动条,更改现有模板的布局,使用一些API增强页面的功能等,需要研究的还有很多,如果能做好的话,其实也可以单独做成插件
还可以做一个自己的个人网盘挂在网站上,这一点也是近期我最想做的,毕竟服务器不能吃灰
九、总结
- 写本文的时候更多是想充实一下自己的博客,虽然我并不会把它当成一个纯技术博客(毕竟我没什么技术)。而实际上能看懂本文并发现其中问题的人应该已经不太需要看这篇文章了
- 搭建完了才回来写博客我还是记不太清楚细节上的操作(别人的教程有时候不太准确恐怕也是类似的原因),一定程度上是因为我按照别人的教程来会遇到很多问题,更多的则是我自己对各种操作的理解还不够深刻,所以重新写博客的时候我会尽可能去了解命令的每一步每一项做了什么工作
- 搭建和使用的过程中都会有很多意想不到的问题,最终还是要自己慢慢来解决
十、问题与解决
- 浏览器在科学上网的时候提交文章会失败(白屏),关掉VPN之后就好了
终于写完第一篇了