我与Lamp模式建站的恩怨情仇

博客地址:https://wutongdeng.cn

很久没有更新我的博客,前几天网站突然不能访问,在排查原因无果之后,决定初始化我的磁盘,重新搭建我的博客。我是个爱折腾的人,当然循规蹈矩地安装lamp搭建博客基本上驾轻就熟,这一次我决定解决上次建站遗留下来的几个坑:

1.上次建站用的是centos自带的yum源,php5,apache2.4.6,以及mysql5,这一次我决定统一换成php7+mysql8。
2.网站https化。
3.让网站更加安全。

物料:

1.云服务器一台(centos系统)
2.Typecho博客最新稳定版安装包一个
3.手和脑子

首先,更新系统好习惯

sudo yum install update
sudo yum install upgrade

接下来,配置防火墙
我的感受就是:不要图省事直接关防火墙!虽然阿里云服务器防D防扫功能已经做得很好了,但是风险还是存在的。
开启防火墙服务: systemctl start firewalld
查看防火墙状态: systemctl status firewalld
开机启动:systemctl enable firewall

Tips:systemctl的这三个指令在centos7+版本改变服务状态很有用,可以记一记。

接下来,进行Apache的安装
这里,我偷懒就直接yum install httpd了,这时候安装下来的是centos自带的apache2.4.6版本,不过,这里的省事也给我之后造成了不小的麻烦。

安装完成之后,我们开启apache服务

service httpd start

查一波状态

service httpd status

如果看到一个绿色的running小圆点,就说明服务搭建好了,这时候我们访问我们的公网ip,就能看见喜闻乐见的apache running 的页面了。

接下来,进行mysql的安装
没有直接yum install,而是去官网下载了mysql最新版的rpm源
然后执行rpm -ivh进行安装

然后它告诉你mysql的默认缺省密码的存储位置,我们直接cat拿到密码,然后mysql -
u -root 输入密码,然后重新为数据库设置新的密码。

完成后,我们新建一个名为typecho的数据库

Create database typecho

然后使用grant privilege赋权
exit~

那么mysql服务就安装到这里。

接下来安装php
Yum源提供的php是5.7版本的,但是我选择去官方源下载php7的版本,这里安装方式不再赘述,网上一搜一大把。

下载typecho
去typecho官方网站wget下载最新稳定版安装包,tar解压,再把build文件夹里面的东西mv到/var/www/html 目录下。

这时候,访问公网ip,看到安装程序,一切正常。

我们的坑正式来了。

第一个坑:连不上数据库

数据库创建了,死活连不上,让你检查配置。
我们打开myql数据库

use mysql;
select user,plugin from user ;

我们可以看到,列出来的用户里面,加密方式为caching_sha2_password
Typecho默认数据库连接不支持sha2加密方式,我们改为native加密模式

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

然后修改密码

第一个坑顺利解决

安装完网站,进后台,进行各种设置,这时候,看到我们的域名
http://wutongdeng.cn
作为一名资深强迫症患者,chrome和火狐再给我丢一个不安全,就十分难受。
不用说,https化。
上次搭建因为mysql版本问题没能成功解决(一个很奇怪的报错条件)
开始。
我首先选择的是certbot,一个免费证书颁发网站(白嫖党上线)。
网站虽然是英文的,但是有点英语基础安装起来没有困难,况且每一步的安装命令都给了,我们ctrl c ctrl v就能解决(额好吧,linux应该shift insert)。抱着这种心态,一路配置下去,突然卡在了
sudo yum install python2-certbot-apache
这一步上。
安装的过程始终报错,后来才发现是python版本冲突的问题,这时候我想都没想干了一件蠢哭自己的事情

rpm -qa|grep python|xargs rpm -e --allmatches --nodeps
whereis python|xargs rm -fr

然后我们再whereis python
没有回显,说明python卸载干净了,我们再高高兴兴地sudo yum install python2-certbot-apache
这时候,屏幕显示,yum不可用了。
网上一查,yum和python有千丝万缕的联系,删除了python,yum就不能正常使用。
喵喵喵?一个基于yum仓库,一个基于pip仓库,你俩怎么就有py关系了?
虽然不服,还是接受了事实,决定把yum和python都删得干干净净然后重新安装。
方法是去阿里云,163,以及ustc或者清华的镜像站去找rpm源,方式也是wget +rpm
有依赖关系的要放在一块儿安装。
恢复之后,sudo yum install python2-certbot-apache成功,然后接着

yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional

这时候,系统提示,找不到yum-config-manager。
网上找了大部分方法都没有解决这个问题,我干脆就直接把虚拟机上同版本的centos系统里的yum-config-manager拷贝过来。
再执行命令,成功。
然后sudo certbot --apache
按照提示配置证书,这时候配置完了之后,又回显失败了。
排错了很久也没有找到原因(感觉可能和我卸载yum和pip重装有关系)
我再次投向了腾讯爸爸的怀抱。
登录腾讯云平台,申请ssl证书,按照它的步骤走,什么放密钥在根目录,十分清晰明了。
认证很快,邮件通知,然后到平台上下载你的证书文件
进入/etc/httpd/conf.d 修改ssl.conf文件,把里面证书文件的缺省名称换为你的证书文件的位置,并且正确放置证书。
重启apache服务,这时候我们可以看到网站已经能够https访问了,但是仍然能够以http的方式访问,显然不够完美。
我们修改/etc/httpd/conf 里面的http.conf 文件,把网站根目录的overwrite功能打开(网上大部分的教程都是rewrite,但我死活没有找到,可能apache的版本导致的)
这时候,我们利用rewrite功能在根目录写一个.htaccess文件
如下:

<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On
  RewriteCond %{SERVER_PORT} 80
  RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1 [R=301,L]
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
</IfModule>

文件会监听80端口,并且301重定向到https的网站,重启apache服务,输入http的域名,成功定向到https的域名。
至此,https化成功。

那么如何让你的博客更加安全呢?为此,我做了以下几个改变:
1.改变网站后台文件地址(名称需要非常复杂),并且设置ip白名单。
2.网站目录重命名,并且apache配置禁止访问
3.全站开启静态化。
4.伪造了一个假的admin页面,用于愚弄脚本小子们。(之后想进一步学习蜜罐陷阱的布置方法,也算是开了一个小头了吧。)

2019年1月14日
傍晚

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值