花了点时间好生折腾了一番,总算是搞了一个稳定的blog写点东西,那么第一篇文章就记录一下博客的搭建过程吧,给大家提供经验,也为以后可能的迁移做好准备;文章也会顺便就主机、域名等选择作说明。
假装会有图,以后有空补上一些图;
服务器的选择
了解需求
- 博客程序大多需要使用数据库+PHP,所以一般可以选择虚拟主机(MySQL+PHP类型)或者虚拟主机(VPS),巨富玩独立服务器(Dedicated Server);需要注意的是,大陆的很多虚拟主机要求在主机提供商处购买域名并备案;一般来说,VPS有相对较高的价格,但同时可玩性也更高,下文主要就VPS的配置进行叙述。
VPS的虚拟类型
- 购买前需要注意看下VPS使用何种虚拟技术,对于这一部分,无脑选KVM虚拟化就行了,大部分主机商提供的也是这种,OpenVZ和Xen虚拟都或多或少有一些不方便的地方;
VPS的网络性能
作为建站需要,我们希望主机的网络延迟尽量低、带宽尽量高,中国的网络带宽费用很高,绝大多数的基本型主机都是上行1Mbps保证带宽,下行是弹性带宽,一般也就是1-10Mbps左右;国外主机大多是1Gbps共享上下行带宽(多台机器共享一个G口),但同时延迟也会比国内机器高,更重要的是,由于数据要通过国际出口,可能会存在绕路的情况(比如主机提供商没有购买某国际出口的线路而这条线路是较近的唯一出口,那么连接的时候数据包就得从别的国际出口出,绕一大圈到达目的地,造成很高的延迟和丢包)。对于个人建站来说,一般选择国外的主机还是比较好的(足够的带宽可以提供更丰富的玩法233),线路问题只能通过经验来解决,以我的经验,选择人少、路近的主机会比较好(但也不一定总是正确),推荐两个个人感觉比较好的大牌主机提供商:
- Linode:日本的数据中心大概是被开机场的人玩坏了,经常莫名高延迟和丢包……英国伦敦的数据中心倒是意外不错;
- DigitalOcean:Github的EducationPack可以白嫖50USD的礼券,只有SGP的机房还比较能看,移动联通较快,电信略差;
内存、硬盘、流量之类
- 内存基本512MB-1G都够用了,小内存的话可以多划点交换区出来,现在大部分硬盘都是SSD Raid,性能还是比较可观的,硬盘大小基本在15G以上就够用了除非有其他用途,流量限制大部分国外厂商是1TB/mo,国内是限速不限流(1Mbps跑一个月也跑不了太多流量)
域名购买
域名提供商
- 国内主机,从主机商处购买,需要备案的备案;国外主机,推荐Godaddy……
域名解析
- 解析建议使用Cloudflare的免费套餐就够了;
根据Cloudflare的提示在域名提供商处作好设置;
- 添加一个*解析和一个@解析,A记录,值是主机的IPv4地址,此时www.domain.xxx和domain.xxx以及{any}.domain.xxx都会被解析到你的域名上;如果你想将{special}.domain.xxx解析到别的地方,添加一个A类记录,主机记录填写{special},记录值填写那个你想要解析到的地方;
- IPv6请添加AAAA记录,同上;
- 如果你想将你的域名隐性跳转到某个域名上,请添加cname记录(如果我没有记错);
VPS配置(以KVM下CentOS7x64进行演示)
SSH连接及安全
- 开通VPS时,提供商会通过邮件或者网页显示的方式告诉你主机的IP和登录账号、密码,windows使用Xshell登录即可,别的平台自己找下ssh客户端;
- 在登录之后,立刻、或等你基本完成配置后,更改SSH登录端口和root用户的密码(同时在防火墙中打开对应端口),更改SSH端口的方式见皓煙的CSDN博客,注意关闭SELinux;
- 注意管理开放端口,firewalld的使用见:(莫小安cnblog)[https://www.cnblogs.com/moxiaoan/p/5683743.html];注意,有些主机供应商在系统中不安装或者关闭firewall-cmd,而是使用网页控制台来管理主机的开放端口。Linux默认应该是对全部Outbound数据直接放行,而Inbound则只有特定端口开放(当然你也可以设置出口规则);建议打开的端口:TCP 23,80,443;
更新和安装一些必要的软件
- 直接敲(其他Linux系统可能使用不同的包管理器,记得发挥主观能动性)
yum -y upgrade
yum -y install epel-release
#安装epel-release源,某些版本的Linux可能并不能直接装上,请百度方法
yum -y install wget nethogs screen git unzip lrzsz
#觉得一些需要但是并没有自带的程序,随着使用你可能会安装更多
打开BBR TCP拥塞控制算法(以下几条配置内容均来自秋水逸冰【不过好像被墙了)
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh
执行完若没有错误信息,重启之后应该就已经打开了BBR,验证方式略;顺便一提,Linode的主机貌似有内核管理,可能需要使用GRUB2引导新内核;
一键安装LAMP环境,请安装Apache+MySQL+PHP环境,内存小于等于1GB的用户,最好先添加1-2GB的Swap以防编译时内存不够;
git clone https://github.com/teddysun/lamp.git
cd lamp
chmod +x *.sh
screen -S lamp
./lamp.sh
安装完成后功能:
lamp add 创建虚拟主机
lamp del 删除虚拟主机
lamp list 列出虚拟主机
/etc/init.d/mysqld (start|stop|restart|status)
/etc/init.d/httpd (start|stop|restart|status)
or service httpd (start|stop|restart|status)
默认的网站根目录: /data/www/default
其他事项
- 有些Linux版本会自带php,注意解决版本冲突问题(使用php -v检查版本是否和安装的版本相同)
- 如果需要python的一些新特性,你需要安装python3并使其与python2共存
网站配置(以typecho为例)
增加与编辑vhost
- 使用一键工具创建一个新vhost
lamp add
#按照提示建立一个新vhost,顺便把ssl证书搞上,强制http跳转https
- 在之前建立的vhost根目录下,安装网站相关文件
wget -O release.tar.gz http://typecho.org/downloads/1.1-17.10.30-release.tar.gz
tar -xzvf release.tar.gz
- 目录关系和权限处理:解压完貌似多了一层目录,用mv命令给弄到vhost的根目录下,然后chown -R apache:apache ../{vhost name}处理权限问题,并service httpd restart重启服务器,然后直接访问你的域名,开始安装typecho,后续安装调试优化略;
- 子站vhost设置:如果你使用了三级域名,你需要编辑/usr/local/apache/conf/vhost/{vhost name}.conf文件,有个什么name和alias,分别改成你的域名domain.xxx和{special}.domain.xxx,注意如果你做了http到https的跳转,下面有个443端口的部分也要相应更改;保存并重启apache;
给网站加上MathJax
- 从官网下载发行的包,解压后上传到腾讯云COS上(或者新建一个vhost),然后把相关文件丢上去,使得最终你可以通过一个链接:{whatever link}/mathjax/latest/MathJax.js (不要在意目录形式)
把这个js扔到一个在任何时候都会被加载的地方,比如header和footer文件里:
<script src='http(s)://{whatever link}/mathjax/latest/MathJax.js?config=TeX-AMS-MML_SVG' async></script>
好累啊,不知道还需要写什么,先写这么多……