分類
2022 技术

建博客教程

建个博客网站困难吗?
教程在手,包你学会

最近闲起来了(约稿的可以约起来

同时有朋友也想自己搭建一个博客玩玩,所以就做了这个教程供大家参考

如果按照步骤来,顺利的话半天之内就能搭建完成

0.申请域名(可选)

详细步骤看2.1

如果申请的是免费的域名,那么建议先注册好域名再进行操作,因为本文用到的免费域名申请时间不确定(本次是1个多小时就申请上了);而直接用花钱的域名则没有这个问题,先买vps或先买域名都可以

1.服务器 vps

第一步就是要有自己的服务器,大家可以根据自己的需求选取合适的vps。

不同的CPU数量、运行内存、存储大小、带宽的价格也不同;有些是按小时、月、年进行收费,这也是需要注意的;此外,有些提供免费更换ip功能,有些则需要付费更换,这一点也比较重要。

现在假设大家已经有自己的vps,默认操作系统是CentOS7或CentOS8系列,如果是更低的版本还是先升级一下吧

这次我用5美元月费的vps进行演示,1G运行内存+30G存储空间+每月1T流量(不打广告所以就不说是哪个vps商

有时候分配的服务器ip不可用(被中国大陆防火墙屏蔽了),所以要先检测一下,进入tool大全的ip可用性检测网站,输入自己服务器的ip和端口(默认ssh一般是22)

如果检测结果如上图所示,说明不可用,则需要更换ip;如果显示均为可用,则可以进入下一步

既然ip可用,我们就可以开始工作了。首先要有ssh工具,这里我用xshell进行演示(它有免费版本,输入邮箱就能下载)。ssh工具是连接到服务器的工具,即从我们自己的设备上(电脑、手机等)连接到服务器并对其进行操作的一种工具),类似于远程控制,不过在这里我们控制的不是其他人的设备,而是自己的服务器

下载安装好以后,点击新建会话,在主机那里输入你的服务器ip,然后点击连接

用户名默认为root,密码则是复制粘贴服务器的密码

若想服务器不被破解或入侵,就要做好安全性设置

及时安装安全更新

什么系统都很可能会有漏洞,而及时安装更新能够降低被入侵的风险,这里启动自动更新,输入以下这行命令并回车(下同)

yum install yum-cron -y && sed -i 's/download_updates = no/download_updates = yes/g' /etc/yum/yum-cron.conf && sed -i 's/apply_updates = no/apply_updates = yes/g' /etc/yum/yum-cron.conf && systemctl enable yum-cron.service && systemctl start yum-cron.service

安装防火墙服务(有些CentOS系统连防火墙都没有……),如果自带firewalld的也无妨,该命令不会影响已有的功能

yum install firewalld -y && systemctl enable firewalld && systemctl start firewalld

修改ssh端口(可选):因为默认是22端口,为避免其他人尝试破解,可以改成其他端口,这里设置为404,你也可以设置为你想要的其他端口(除80、443以外的都行,这两个端口是建站要用的)

sed -i 's/#Port 22/Port 404/g' /etc/ssh/sshd_config && sed -i 's/Port 22/Port 404/g' /etc/ssh/sshd_config && service sshd restart && firewall-cmd --zone=public --add-port=404/tcp --permanent && firewall-cmd --reload && exit

将端口改成你修改后的端口(有③才有④,即404),重新进行连接进入服务器,这时候你再用22端口进行ssh连接是连不上的

创建密钥并只允许密钥登录(可选)

一般来说,做完以上三步以后服务器就比较安全了,想更安全,就禁止用密码登录,而只能用密钥

ⅰ建立密钥对(可用shift+insert键粘贴密码,或右键粘贴

ⅱ安装密钥,设置好密钥权限,修改sshd设置并重启服务

cat .ssh/id_rsa.pub >> .ssh/authorized_keys && chmod 600 .ssh/authorized_keys && chmod 700 ~/.ssh && sed -i 's/RSAAuthentication no/RSAAuthentication yes/g' /etc/ssh/sshd_config && sed -i 's/PubkeyAuthentication no/PubkeyAuthentication yes/g' /etc/ssh/sshd_config && systemctl restart sshd

ⅲ下载私钥到本地

yum install lrzsz -y && sz .ssh/id_rsa && exit

ⅳ重新连接服务器,这次用密钥来登录,从本地里导入刚刚下载的文件,密码与之前创建时的相同,无密码则直接确定进行连接

ⅴ成功进入服务器,这时可以取消密码登录,只允许密钥登录(请保存好自己的密钥

sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/g' /etc/ssh/sshd_config && systemctl restart sshd && exit

这时再重新登录,就会发现已经无法用密码登录,而只能用密钥登录,非常安全!

安装面板,其实是为了更方面操作,大家应该都习惯了可视化的系统,对于要成天输入命令的终端可能并不太喜欢,在这里用的是aaPanel

yum install -y wget && wget -O install.sh http://www.aapanel.com/script/install_6.0_en.sh && echo -e "y"| bash install.sh && rm -rf install.sh

运行成功后选取面板登录地址,用ctrl+insert快捷键进行复制,或右键复制,然后粘贴到浏览器进行访问

浏览器会提示网站不安全,这是正常的,照样访问就好(因为其设置的ssl证书是自带的,跟ip服务器不符,会提示不安全,后面的步骤会教大家怎么使面板绑定域名并设置对应的ssl证书)

输入帐号和密码登入面板

进入面板后,会让我们安装一些软件,我们只选nginx即可

可以直接关掉不管它,它会继续安装;我们打开左侧的App Store,搜索docker,安装Docker Manager

继续关掉不管它,打开左侧的Security,删掉没在用的端口号,如22、21等等,添加443端口,并备注https。同时可以打开顶部的Turn on to Block ICMP,减少黑客破解的风险

打开左侧的Setting,随自己心意修改一些东西,非常建议修改面板端口,默认的端口总是不那么安全(除80、443(跟网站相关),25、110、143、465、995、993、587(跟邮箱功能有关,如自己不用可不考虑),和自己的ssh端口外,其他端口都能选

修改完成后面板的访问地址就会变成 https://你的ip:面板端口/面板路径,如果忘记了,也没关系,在ssh里输入bt 14则可看到面板地址、帐号和密码

需要监控和记录服务器运行情况的,可以打开左侧的Monitork开启监控(一般没什么必要,只会稍稍影响服务器性能以及需要一些存储资源为储存记录)

然后我们就等插件安装好,点击左上角ip旁边的小红框看目前进度如何

ⅰ.安装Linux Tools插件,与前面安装docker的方式相同

打开该工具的设置,可修改虚拟内存大小、服务器时区、服务器密码等

其中修改时区比较重要,方便自己在对文件操作时查看文件修改时间时不需要转换成自己当地的时间

ⅱ.安装Nginx free firewall,可以降低网站被侵入、注入漏洞或病毒的风险

ⅲ.安装Log cleanup,可以用来清理系统日志

每次要对插件进行操作的时候,都需要打开面板的App Store找到对应的插件,这样很麻烦,因此将它们都显示到面板主页上就方便很多了

首先打开面板的App Store,选择上方的Installed,将Display on dashboard的按钮打开

这样我们回到面板的Home,就可以在左下方看到安装的插件,点击插件就可以对其进行操作

 

2.建站

大家在建站的时候需要提前考虑好自己想用的是什么平台,不同的平台特色和功能不尽相同,而跨平台之间的无缝迁移的难度很大。因此一般人都是建一次之后就不会换平台,除非是从很简单、朴素的平台迁移到功能较多、显示可以很花里胡哨的平台。

这里介绍两种平台的搭建方法。分别是ghost和wordpress

说说它们各自的特点吧。

ghost:较轻型,响应速度快,比较简洁,整体设计就是主要为了写作,没有太多玩出花来的东西;因此功能也不太全,如果希望有的就得自己动手加,比如说添加评论区、添加站内搜索等等

wordpress:相对比较成熟和大型,可以将网站设计得很好看,文章的布置也是如此,它可以用到的功能和插件有很很多;但也因为较大型,所以响应速度会差一些,很多功能用不上;以及需要有数据库配合使用

我个人比较推荐用ghost,虽然功能是少了点,也没法把文章排版之类的弄得很好看,但搭建和备份起来很方便。或者你自己有看到其他比较好的平台也可以推荐推荐

有一个域名,那么别人就可以通过域名来访问你的网站,不需要记一大串的ip。而且暴露服务器ip在我看来怎么样都不是一件好事

因为演示的关系,所以就选择EU.org创建一个免费的域名independently.eu.org,可以看这个教程,所不同的是,在这里我用的不是dnspod,而是用的GoDaddy(因为不想输入手机等信息),其他用法一致,dns托管得到ns服务器。然后就等吧……这就是免费的代价——需要时间成本(等的时候可以到下一步先建站

如果是直接买的,从域名商那里购买,则不需要添加DNS托管,直接买完就到下一步(域名商可以用GoDaddyName之类的,或其他也行)

当域名可用后(购买之后的那一秒,或申请免费域名有邮件通知时),可以进行域名跟服务器的绑定

访问cloudflare,注册或登录帐号,输入你的域名

添加A记录或AAAA记录:绑定服务器ip地址

name名称随自己所想

举例来说,如果填@,则绑定的域名就是independently.eu.org

如果填www,则绑定的域名就是www.independently.eu.org

其他以此类推,没绑定的域名是不会自动生效的。比如说我没有填@,填了其他,那么independently.eu.org这个域名是没有跟我的服务器ip绑定在一起的

value内容填ip地址(A记录填服务器ipv4地址,AAAA记录则填服务器ipv6地址,可以都绑定,这样会根据情况选择通过哪一个地址进行解析)

一定要是自己的服务器ip地址!初始默认的可能是域名商自己的ip地址

然后根据cloudflare的提示回到自己的域名商那里(Godaddy、Name、EU.org或其他)更改ns服务器

修改完后等待ns服务器解析和DNS解析生效,可以先去完成建站的工作,我自己大概半个小时左右就可以了(在cloudflare那里刷新看网站是否已经active激活)

cloudflare的更多进阶功能可自行摸索

打开面板左侧Website,点击Add site,输入域名,如ghost.independently.eu.org(需要提前添加好对应的A记录或AAAA记录),申请ssl证书,然后提交,然后就创建成功

如果发现网站没有申请上SSL证书,即显示Not Set(如上图所示),则点开这个Not Set进行申请

记得不要勾选强制https,否则可能会出现异常,网站循环重定向

(另外需要注意,如果在cloudflare SSL安全策略里选择了严格,是无法申请SSL证书的,需要换成弹性才行)

①拉取或更新镜像

打开面板主页左下角的Docker Manager(如果前面跳过了1.4,可以回去看看怎么设置)

按下图拉取或更新ghost镜像

②创建容器

按下图创建容器

2368, /var/lib/ghost/content不能改,填好Port Mapping和Dir mapping记得要按右边的+号才可以

数据卷路径/var/lib/docker/volumes/ghostdata   ghostdata可以改成其他名称

需要注意的是确保数据卷路径内没有数据,否则将会覆盖复制,原有的数据就会被初始化(尤其是在更新容器的时候)

再重复一次,需要注意的是确保数据卷路径内没有数据,否则将会覆盖复制,原有的数据就会被初始化

创建成功,可修改容器名称方便管理(可选,单纯个人看着初始化设置的名称很长很不爽……