有许多小伙伴想要拥有自己的个人小站,却苦于什么都不知道,在网上到处找结果被到处坑,坑到最后花了好多钱却根本什么都没办成。

这个教程将会致力于讲述一个花最少的钱,走最少的弯路,同时个性化也不会少的完整从小白到建整站的教程。这个教程并不是所谓的PHP空间那么简单。PHP空间价格低廉,但是可个性化程度是非常的低,有时候还要受到主机提供商的限制。这里的教程是基于VPS/独立服务器的教程。

0x00 预备知识

什么是域名?什么是IP地址?什么是80端口/443端口?我为什么需要它?

我们要访问一个网站的时候,首先要做什么?在地址栏输入地址。那么你想要访问github,你应该怎么做?输入github.com,这就是你要访问网站的域名。回车即可。页面直接就显示出来了。但是这一个看似简单的过程背后的流程可不少。想要建站可不能少。

在访问一个网站的时候,你将域名输入给了你的电脑,可是你的电脑其实根本不理解你输入的那一串字符到底是什么意思,它只认识0和1。所以它会把你请求的域名发给DNS服务器。DNS服务器是专门负责把域名变成IP地址的服务器,只要把域名送过去,它就会查询对应的IP地址是什么,然后返回给你的电脑。这时候问题来了,为什么要IP地址?

IP地址就像一个门牌号,你访问的请求数据会被一个一个按照指定的格式封好,按照这个地址去投递。没有IP地址也就没有了收件人地址,那么自然也就无法通讯了。在你的电脑把域名请求发给了DNS服务器后,电脑已经得到了DNS服务器发来的IP地址,就好比你说要发给张三,帮我查一下张三的地址在哪,然后查线员就会告诉你张三住在哪里一样。你得到了收件人地址,收件人姓名,那么该发货了。也就是开始准备通讯了,问题又来了,该发往哪里?有些小伙伴可能会疑惑,不是已经知道了这个域名的IP了吗,怎么还要发到哪里?直接发就好啦?

其实不然。在TCP/IP链接中,每个IP地址后面还会有指定的端口用于链接,就好像一个IP是一个小区单元楼,而端口是每个人所在的具体房间号一样。在网页链接中规定了HTTP明文访问是端口80,HTTPS安全链接是端口443,由于我们不懂那么多,所以暂时只需要知道它是发往目的IP的80端口就好啦。

当你的请求到达了对方的IP下的80端口后,服务器收到了你的请求,开始处理,查找文件,然后进行相应的处理返回给你,这样你就会看到网页了。

基础知识大概了解了,那么我们开始细数我们需要准备些什么来开设站点吧!

开设一个个人站点,你最少需要:

一个拥有公网的服务器。最少80端口可以访问。

一个域名。

一个支持nginx+php+mysql的linux服务器。

首先了解什么是域名。

域名其实就像一个人的名字,而域名指向的IP地址就好比是他的住址。要访问一个网站需要通过域名来访问,所以我们需要拥有一个域名。

公网服务器是什么?

这里我们要知道有一种网络是NAT网络,也就是非公网。采用地址转换而不是直接的公网方式存在的网络。这里这么说可能很复杂,简单来说就是一个网络是公网的话,它的IP地址后面跟着的端口号是可以被任何人直接访问的。而非公网则不能。要开设网页肯定是要让大家都能够访问,所以我们需要一个公网IP地址的服务器。不过这一点可以放心,一般购买的服务器没有说明是NAT基本都是公网地址。

Linux服务器是什么?

Linux是一种开源免费的操作系统,因其占用资源低,性能好,被广泛地应用于服务器等工业行业中,当然也可以用于桌面系统。这里的Linux服务器是指的是运行Linux发行版的服务器。Linux发行版有Fedora CentOS Ubuntu Debian等,这里我们推荐选择CentOS7。虽然Fedora或CentOS8更好,但是初学者很难掌握其中的许多麻烦问题的解决办法,因此我们选择CentOS7,待熟悉后再做决定。

Nginx Mysql PHP又是什么?

Nginx是一个网页服务器,它就是监听80端口的那个程序。在你把请求发送到IP地址的80端口后,它会首先处理你的请求。(x  庆历四年春 滕子京监听80端口

Mysql是一个数据库服务器,它可以存储小站的数据,比如这篇文章,等等。许多信息都可以存进数据库。

PHP是一个后端脚本解析器,小站的php文件是用php语言写的,比如<?php echo "hello world"?>,可是nginx它只负责把html格式的静态网页输出,它不认识php的语言。所以nginx会把所有php写的脚本交给php来解析,解析后php会输出一个标准的html页面,nginx再将它读取出来返回给用户。

0x01 开始购买域名

域名分为两部分,example.com。其中example部分是你的域名的名称部分,.是分隔符,com后缀是域名的后缀。后缀有很多,常用的后缀有com net moe jp in等。如果不考虑价格的话推荐moe(二次元向小站推荐)   当然通用一些还是选择com。in域名是印度的,但是由于其注册价格低廉,续费价格低廉也可以考虑。如果你不介意实名上网那么可以购买cn或者中文后缀域名。强烈不推荐。

想知道哪个注册商更加便宜?tld-list即可查看各种后缀的注册价格,Cheapest Register是最便宜的注册商,Cheapest Renewal是最便宜的续费价格对应的注册商。域名是按年购买的,很多注册商是购买白菜价,续费翻倍。这点要格外注意。

免责声明:本站和下文所述的任何注册商/主机商没有任何直接或间接的商业/非商业等任何关系,是否使用需您亲自决定。

如果你的英文实在不好,可以借助谷歌翻译或者使用godaddy。godaddy价格较贵,但是支付/语言门槛很低,支持X付宝,支持中文。

常见注册商基本上区别不大。注册域名的时候域名注册商会指引你注册。

在注册完毕之后,去cloudflare注册账户,这是你域名解析记录所需要的。

不推荐使用国内DNS,限制极多。如果你执意要去使用的话问题自行解决处理。

在注册完毕后,回到godaddy,在这里:https://dcc.godaddy.com/domains/选择你的域名从零开始的完整个人博客的建站教程

然后点击管理DNS,你会进入到这个界面。选中

域名服务器-使用自定义域名服务器,点击更改

将两个域名服务器修改为

algin.ns.cloudflare.com
olga.ns.cloudflare.com

随后进入Cloudflare,点击Add site,然后输入你的域名(不要带www,只需要输入example.com这种abc.com格式的域名即可。)CloudFlare会自动搜寻你的域名是否修改成功了域名服务器,如果修改成功了,Cloudflare就会自动进入管理界面了。点击上面一排的DNS按钮就可以看见添加记录了。我们现在已经拥有了域名,可是并没有服务器IP,该怎么办?那就要购买一台服务器了。

0x02 购买服务器

我们主要的受众是国人,那么优先选择日韩服务器,这些服务器的延迟较低,但美国西海岸(洛杉矶,圣何塞,凤凰城,旧金山等地)的也可以考虑(套CDN(CDN是什么?我们后面会叙述。))。香港服务器不推荐,价格很高,当地主机商尤其喜欢互D,一DDOS就绕路或者拔线。很不稳定。

服务比较稳定而且价格较低廉的是Choopa(Vultr),支持支付宝,5美元/月,支持IPV4/IPV6.按小时计费。随用随删,且支持镜像功能,随时一键镜像还原。

vultr注册需要先使用支付宝付款10美元后才能开通服务器。在左边选择Products,然后点击Instances,右边有个加号,点击后在Choose Server里面选择Cloud Compute(Cloud Compute是VPS,资源共享,有限制流量,High Frequency是高可用VPS(有必须稳定运行的要求时用的),Bare Metal是存储服务器,价格不菲,不推荐,Dedicated Cloud是独立服务器,性能最好,价格最贵,资源独享,极度不推荐,土豪随意)

Server Location选择Japan,Server Type选择CentOS,点击后选择Centos7 without selinux.因为selinux很麻烦所以我们选择关闭selinux的系统。

Server Size根据你的需求选择。

Additional Features附加选项 Enable IPv6 是启用IPV6,强烈推荐
Enable Auto Backups是启动自动备份,一般不需要,还要按照1美元/月收费。
Enable Private Networking 启用内网,这个一般是你拥有vultr一台以上且同一个区域的vps时启用,可用也可不用。内网传输貌似不走公网流量。

下面的几项可空着。点击Deploy Now即可创建服务器。

稍等一会,你就会看到你的服务器安装完成,IP地址就会在服务器名称下面显示出来,此时你需要验证IP是否可用。

访问https://ping.pe。这是一个测试IP是否连通的网站。在上面的输入框中输入你的IP地址,等待一会会出现结果。下面是几种ping情况的样例1:

这里的100%可不是100%连通,这里是100%丢包,全部100%也就代表着服务器网络故障或者服务器没有开机,又或者服务器的网络设置有问题。

例2:

中国大陆100%丢包,这种是被防火墙阻断的IP,也不可使用。

全部都显示连通的状态应该是全部0%,不过只要不是全部100%,或者大陆全部100%就可以使用。如果还不确定,最简单的办法是自己ping一下这个IP。

至此,我们需要付费购买的地方已经结束了,接下来开始配置了。

0x03 服务配置

在确认了IP可用之后,我们来到CloudFlare,选择你的域名,然后选择DNS,点击下面的Add record

Type是记录类型,Name是绑定到什么域名,IPV4 Address就是IPV4地址了。

A记录是对应的IPV4地址,格式是x.x.x.x

AAAA记录对应的是IPV6地址,格式是以冒号作为分隔符的那种。

我们先实现IPV4记录的操作。如果你要让example.com可以直接访问,那么选择A,然后Name填写@,在IPV4 Address填写你的服务器IP。如果你想要让www.example.com可以访问,那么选择A,Name填写www,在IPV4 Address填写你的服务器IP。

TTL保持默认,右边的橙色云彩如果选中则为CloudFlare CDN代理,若不选中则直接暴露服务器IP。在不熟悉CDN的情况下取消橙色云彩,让其变成灰色。点击Save即可保存记录。

在保存完成后,稍等一会你的解析记录就应该生效了,这时我们可以准备SSH工具了。

SSH是我们连接Linux服务器的桥梁,我们使用最简单的putty作为SSH工具。推荐在这里直接点击跳转到官方站点下载,不要下载来路不明的文件,以免服务器被入侵。

在下载完毕之后,我们打开vultr的控制面板,选择详细信息。

点击这里可以复制密码。

打开putty,在hostname输入你的IP地址,port输入22。然后点击open。

你会看到一个黑框出来了。

输入root后回车确认会提示你输入密码,这时直接输入即可,不会显示出来,在输入完毕后按下回车即可登录进Linux服务器。

我们这里介绍比较方便的一键面板安装方法来配置服务器。

进入服务器后,输入yum install screen -y 安装screen。因为不使用screen的话,一旦遇到网络不稳定的情况,你所有的操作均会被强制中断,只要你退出了ssh就会杀死所有前台你操作的进程。所以我们先安装screen。

Linux的基础命令用法:

cd abcabc 进入abcabc文件夹

cd .. 返回上一层

ls -al 查看当前文件夹下的所有文件和文件夹

df -h 查看磁盘利用率

yum软件包管理器

yum install 软件包名可以安装

yum remove 软件包名可以卸载,慎用,可能会误操作卸载掉核心程序,使用时务必注意。

nano abc.conf 使用nano编辑器修改文件(若提示command not found 执行yum install nano -y)

nano的用法:直接修改文件,修改完毕后按Ctrl+X 输入Y回车即可保存修改。

CentOS7系统一键安装宝塔面板环境可给新手减少不少的压力。

这里我们先进行screen,输入screen -S abc(-S一定要大写,Linux区分大小写。)(-S是创建一个新的screen,后面的abc是窗口名。)

然后你会进入一个screen,这个screen看起来和原来的环境没什么区别。这里我们输入

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

按下回车,会提示你是否安装宝塔面板,输入Y等着就可以了。如果中途不小心关闭/断网了怎么办?

按照登录服务器的方法重新登录,你会发现什么都没有了,这时候不要慌,我们输入screen -list 查看当前有什么screen在运行。

screen的安装方法:

yum install screen -y。如果提示没软件包,使用yum install epel-release -y然后再执行yum install screen -y

如果有screen在运行,那么里面就会显示它的名称,执行screen -r abc(abc为你-S时候输入的名字),回车即可返回到你的screen中。如果遇到screen -list出现了一个Attached的字样,在screen -r abc的r前面加入D,也就是screen -Dr abc即可返回。

在宝塔面板成功安装后,它会提示你一个面板访问链接,还有用户名。也可以通过在linux里面输入bt来进行修改面板的操作。

当你成功登录面板后,会提示让你一键安装软件,取消它,直接进入左下角的面板设置中,立即修改用户名和密码确保安全。

在修改完成后,返回linux的ssh界面,输入passwd,修改系统ssh的默认密码,输入两遍新密码即可,这样下次登录ssh就要用新的密码登录了。这也是为了确保安全而设置。

在左下角的软件商店找到nginx 安装1.18(最新版)选编译安装即可,然后选择mysql,编译安装,安装5.5(如果内存超过1G可以考虑5.5以后的版本)然后选择php 7.4(最新版)安装 编译安装,等待都安装完毕后,安装phpmyadmin,选择4.9版本(最新版)。

安装配置完成后,点击

左侧的网站,然后点击添加站点,在上面的站点输入你要使用的域名(请务必确保这个域名已经在前面设置完毕并且可以ping通)。其他保持默认即可。

点击提交后会提示成功。

点击右边的设置,会弹出对应网站的设置界面。

先设置好wordpress的网站参数。

点击保存后,点击

进入网站文件夹。

删除里面所有的文件(.user.ini无所谓)然后:

输入下面的地址,直接自动下载最新版的wordpress。

https://cn.wordpress.org/latest-zh_CN.tar.gz

下载完成后解压你下载的tar.gz结尾的文件。

进入文件夹,然后点击左上角那个对勾,全选并且剪切文件。

复制完成后是这个样子的,index.php应该在你的网站文件夹根目录。删掉之前解压出来的wordpress空文件夹和下载的tar.gz。现在通过域名开始访问你的wordpress。比如你的域名是example.com在地址栏输入http://example.com后会出现安装向导。

你会看见一个数据库设置界面,下面对图中123进行解释。

数据库名就是你的个人小站的数据库库名,用户名是你mysql的用户名。密码是mysql的密码。不知道?没关系,因为你并没有对mysql进行设置,只是安装好了。我们回到宝塔面板的左边,点击数据库按钮。

然后会弹出一个窗口。

这里的1 2 3 对应wordpress的1 2 3项目,要一致。右边的utf8建议选择utf8mb4 字符集兼容性较好。

设置完成点击提交后,在wordpress也点击提交,如果没有问题的话会出现这样的信息:

好的,你已经完成了基本的安装。点击现在安装即可完成你的小站建设!

0x04 进阶设置

当你完成了上述操作,你已经能搭建简单的个人小站了,这里阐述的一些东西是非常强烈推荐但是不是绝对必要的东西。

SSL HTTPS设置:

对站点添加SSL支持,也就是让网站加密访问,这样输入密码就不会被人监听到。

来到宝塔面板,选择左边的网站,找到你的网站,点击设置。

按照图中设置即可实现,保存后再启用右上角的强制https。

然后在这个设置中选择配置文件,在这里输入这行代码:

add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";

一定要在server{ 这下面输入。不要空行,直接复制就可以了。

然后保存配置文件,重启nginx即可。

这样你的网站就支持了HTTPS安全链接。

邮件系统设置:

由于设置邮件系统比较复杂,这里只推荐一些邮件服务。可以使用zoho.com 注意不要选择国内版的,有限制。

按照zoho的教程搭建即可。

服务器网络加速:

许多服务器的默认配置还是默认的加速,在晚上效果可能很不好,这里推荐使用这个脚本来加速。

传送门

按照里面的说明执行即可。

给Nginx上TLS1.3:

传送门

按照里面的说明执行即可。

防御暴力破解:

传送门

按照里面的说明执行即可。

0x05 其他问题

什么是CDN?

CDN是一种分布式节点技术,可以保护网站的真实IP地址,也可以给网络不好的服务器加速。cloudflare的CDN是免费的,接上之后它会自动地配置,无需用户干预。

通过CDN你只能使用网页(80/443),如果你将某个域名设置了CDN,那么你就不能通过这个域名来链接你的SSH,你只能通过IP地址来链接。

更多问题可以在下面留言哟!

 

未经授权可保留链接转载。不保留原链接的话是不允许转载的呢。码了七千多字还是很费力气的说


你是否会像清风拂过花儿一样与我相遇呢?