搭建个人博客完整过程:腾讯云 + LNMP + 宝塔 Linux 面板 + Typecho

搭建个人博客完整过程:腾讯云 + LNMP + 宝塔 Linux 面板 + Typecho

前言

写个人博客的方式有很多,最普通的就是在CSDN、博客园、简书等平台进行创作和发布;当然,如果不希望受到这些平台对版式、管理的限制,也可以尝试建立个人的网站。如果想白嫖且有一定制作静态网站的基础,可以试试用Github发布个人博客。不过,单纯使用Github托管建立的网站的域名带有.github.io的后缀,如果想要自己的域名还是需要去申请域名和绑定DNS解析的,还有一个问题就是Github好像只能做静态网站。最个性化、最自由的方法是个人建站,从服务器开始一步步建站,不过难度也相对较大,相当于一次全栈开发,会需要一些对网络的基础知识,包括网络、网络安全、SEO优化等等……

本文主要介绍个人建站的操作和粗浅的分析,内容为本站点建立的过程实录和具体分析,如有错漏敬请指正。

以下是我的个人站点,欢迎大家来玩呀:
丝瓜的世界树
原文链接

服务器的选择

我的选择时租用腾讯云的服务器。腾讯云官网上经常有秒杀活动,我租的是轻量应用服务器(1核2G SSD50G内存 500G流量,北京)的价格大概是一年三四十,仅供参考。不想看废话就可以直接跳到下一节的域名备案解析了。

如果资金比较充裕的话,可以自己买一台性能很不错的服务器,除去购买的成本,每月交点电费擦擦机器就可以跑好久好久……不过一台普普通通的专业服务器的价格大概在一万左右,如果是企业级的服务器,可能要到上百万(捂紧我的小荷包)。

当然,专业的服务器说白了就是一台性能稍微好一点,适用场景稍微单一一点(比如说通常没有多媒体)的计算机罢了。其实,我们自己的计算机也可以用作服务器的。

如果只想在本地访问,可以使用本机服务器,使用Windows的IIS服务即可实现,当然也可以试试Linux系统和Apache、Nginx等服务器,开启防火墙后是可以通过局域网ip访问的。如果想用公网ip的话,还需要进行内网穿透等一系列麻烦的操作。

不过上一段是建立在ipv4的基础上的。随着如今ipv6的普及,可以让我们的ip地址不需要内网穿透也可以被广域网访问到,前提是用作服务器的PC和访问设备都要支持ipv6。此外,ipv6的地址好像一般是动态的,会经常有变化,如果想要稳定的域名,还是需要去备案一个域名并且需要DDNS进行动态域名解析。

如果已经决定了要去租用服务器,却又不知道该如何选择。接下来将介绍云服务器、虚拟主机和轻量应用服务器的概念和适用场景。

虚拟主机:把一台服务器虚拟化成多台,供不同用户同时使用,每个虚拟主机都有独立域名和完整的Internet服务器功能,相互独立,由用户管理。相当于与人合租一套房,优点是便宜,缺点是会相互影响,比如说一个虚拟主机被黑,一整台服务器都会崩溃。

VPS虚拟专用服务器 (Virtual Private Servers):功能和虚拟主机差不多,但每个用户是彼此隔离的,相当于买了一套房而非合租,可以独立地重启系统,具有更高的安全性和可靠性。

弹性计算:简单来说就是一种云资源的高效动态分配技术,可以让服务更加稳定。

云计算:这是一种分布式技术,据说其来源是因为过去一直将因特网画成一朵云。简单来说,云计算就是一个计算机群,合作完成计算,可以达到和超级计算机同样强大的网络服务,我们可以在任意位置的终端获取应用服务,而应用运行的位置是云的某一处。

云服务器CVM(Cloud Virtual Machine):普遍的虚拟云服务器的统称,是一种简单搞笑、安全可靠、处理能力可弹性伸缩的计算服务。

云服务器ECS(Elastic Compute Service):弹性云服务器,是CVM的一种。

轻量应用服务器:新一代开箱即用、面向轻量应用场景的云服务器产品,针对云计算新手或只有轻量计算需求的用户。可以理解为精简版云服务器,比云服务器便宜,但功能有一定限制,具体的可能需要看厂商。

综上,对于我这种预算较低,预期流量和负载较小,且主要目的是学习的人来说,租用轻量应用服务器是比较好的选择。此外,腾讯云提供系统镜像和技术支持等服务,非常值得小白考虑哦。如果只想用ip地址访问服务器,则可以直接进行LNMP安装。

创建实例时应选择Linux系统,关于Linux系统哪家强的问题见仁见智吧,我用的是CentOS 7.6。当然,腾讯云还提供其他的应用镜像,比如WordPress、Typecho,但Typecho的镜像用的数据库是MariaDB,装完后好像没有宝塔面板,再安装的话在数据库的问题上有些麻烦,因此若是想用Typecho+宝塔面板,最好还是自己安装。

域名备案及DNS解析

首先是需要注册一个域名,取名字的教程有很多,此处不予详述。

域名需要经过备案才能被解析到大陆服务器。但如果是海外或者香港的服务器,则不需要备案。

根据工信部《互联网信息服务管理办法》(国务院292号令)和工信部令第33号《非经营性互联网信息服务备案管理办法》规定,国家对经营性互联网信息服务实行许可制度,对非经营性互联网信息服务实行备案制度。未取得许可或者未履行备案手续的,不得从事互联网信息服务,即网站在未完成备案之前,不能指向中国内地服务器开通访问。如果需要在中国内地托管网站或者开通CDN服务,就必须向互联网提供商申请ICP备案。

域名备案可能需要一两天的审核时间,备案成功后就可以进行DNS解析了。腾讯云提供了免费的DNS解析服务,按照要求一步步做就行了。

关于域名还发生过一件很有意思的事。

试试在浏览器里输入这个域名:世界一流大学.com

你会发现它跳转到了北京大学的官网。。。

虽然是我考不上的学校……但这说明了几件很重要的事:

  1. 浏览器是可以支持中文域名的。DNS解析式不支持中文域名解析的,想要使用中文的域名,需要先进行Punycode转码,最后将Punycode码进行DNS解析。在网上查到一些资料,据说这个域名的Punycode码解析到的ip是国外的,目前阿里云、腾讯云等厂商好像也提供中文域名备案解析的服务。当然也有纯中文的域名,比如说[茅溪.中国](中国·茅溪 (xn–19w374b.xn–fiqs8s)).
  2. 一个ip是可以绑定多个域名的。

不过我暂时还不知道这些解析是学校官方操作的还是未经学校知情擅自绑定的,如果是后者,那就说明域名的解析只需要域名和ip地址就可以完成。

宝塔Linux面板和LNMP安装

到这一步,虽然已经有了服务器和域名,但若是在浏览器输入ip地址或域名,仍然是无法加载出网页的。这时,我们就需要建设一下服务器了。

宝塔面板非必须,但它可以帮我们很方便地管理网站和传输文件,这些功能也可以通过腾讯云控制台和xftp等工具实现,不过肯定没那么舒服就是了。安装教程请戳这里:宝塔Linux面板安装教程 - 2022年2月18日更新 - 7.9.0正式版 - Linux面板 - 宝塔面板论坛 (bt.cn)

LAMP=Linux+Apache+MySQL+PHP

LNMP=Linux+Nginx+MySQL+PHP(国外好像是LEMP)

LNMP/LAMP是一种网站服务器的架构,M也可以指MariaDB,P也可以指Perl或Python,但如果你选择使用PHP,那么MySQL绝对是最好的选择。二者的区别主要体现在Apache和Nginx的区别上:前者开源、稳定、模块丰富,但占用内存大、CPU开销大,对静态文件响应较慢;后者稳定、低消耗、轻量,但对php这种动态页面响应较慢。

现在也有LNMPA的架构,这种架构综合了Nginx和Apache(即用前者处理静态页面,后者处理动态页面),不过不能由LNMP直接升级,需要新装。

在安装完宝塔面板后,一键快捷安装LNMP就好了。(另一个选项的意思是要自己编译安装)

SSH远程登录、修改SSH端口和禁用root用户登录

这个时候,在浏览器中输入“http://xxxx(你的域名):8888”已经可以访问到宝塔Linux面板了。如果没有用其他远程登录的需求(比如VSCode远程登录、XShell远程登录),可以跳过这一节,想要登录终端可以去控制台一键登录登录或VNC登录。

修改SSH端口和禁用root用户登录

开启SSH远程登录后,由于默认的端口22没有修改,且没有禁用root用户,可能会有机器人爆破服务器。为减小这一风险,建议修改SSH端口和禁用root用户。

首先在防火墙开放想要设置的SSH端口(最好挑10000~65535之间的端口号,10000以下容易被系统或一些特殊软件占用,或是以后新应用准备占用该端口的时候,却被你先占用了,导致软件无法运行。

  1. 如果想禁用了root用户登录且还想要远程登录,则需要创建一个新的普通用户用于远程登录。以管理员身份运行:

    useradd usrname	//usrname为用户名
    passwd usrname	//设置密码
    
  2. 登录服务器,切换身份为管理员,打开sshd_config文件。

    su
    vim /etc/ssh/sshd_config
    
  3. i键进行编辑,找到“Port 22”这一行,将其注释掉,新增一行为Port xxxxx(你要设置的端口号),或者直接改掉22。这样操作后,将无法使用一键登录功能,但还是可以使用VNC登录的。

  4. 禁用root用户登录这一步非必须,一般改掉端口号就可以了。若要禁用root用户登录,需要找到PermitRootLogin yes,把“yes”改成“no”。此外,若想使用密码/公钥远程连接,需要确保PasswordAuthentication yes/PubkeyAuthentication yes

  5. 修改完成后按ESC键进入末行模式,输入:wq!保存内容并强制退出。

  6. 重启sshd服务

    service sshd restart
    

操作在这里已经成功了,还可以在宝塔面板上“安全”的界面上更改SSH端口,已建立的连接不被影响。

SSH远程登录

使用XShell远程登录的话可以使用用户名和密码,也可以使用密钥,但如果是使用VSCode远程登录的话,就必须使用密钥了。

以下是创建密钥的步骤:(如果要在终端使用ssh远程连接的话,需要将密钥保存在C/user/.ssh/下)

  1. 打开文件夹C/user/.ssh/,新建空白文本文档id_rsaid_rsa.pub(注意没有.txt后缀),此类文件可以用记事本、VSCode等编辑器打开。

  2. 如果此前有过对该IP的登录,需要在know_hosts文件中删去该记录所在行并保存。

  3. 登录服务器终端,切换为管理员,生成密钥。

    ssh-keygen -t rsa
    

    要是不想设置密钥的密码,一路回车就好了。

  4. 生成后会提示你密钥文件的位置,找到它们,把id_rsaid_rsa.pub的内容分别复制粘贴到第一步新建的文档中。

  5. 可以试试在终端输入命令检查是否能成功连接:

    ssh [email protected](服务器IP地址) -p xxxxx(端口号)
    

以下是VSCode远程连接服务器的步骤:

  1. 下载VSCode并安装remote插件。

  2. 如图,点击SSH TARGETS右边的“+”号,就可以弹出这个框。

    搭建个人博客完整过程:腾讯云 + LNMP + 宝塔 Linux 面板 + Typecho_第1张图片

  3. 输入

    ssh [email protected](服务器IP地址) -p xxxxx(端口号)
    
  4. 选择刚刚保存的密钥文件。

  5. 连接成功,选择文件夹即可打开。

强制HTTPS

HTTPS协议比HTTP协议更安全。开启强制HTTPS可以自动将HTTP请求重定向到HTTPS请求。

  1. 打开宝塔面板,选择网站,点击域名(或者“设置”),选择SSL,选择宝塔SSL,点击申请。申请完成后证书会自动部署。

    如果已经有了SSL证书,可以先下载到本机,然后选择其他证书,将证书文件内容粘贴上去保存即可。

  2. 点击右上角的强制HTTPS即可。

搭建个人博客完整过程:腾讯云 + LNMP + 宝塔 Linux 面板 + Typecho_第2张图片

需要先安装SSL证书再开启强制HTTPS,否则你的网页会打不开……

Typecho安装

下载一个Typecho安装包,上传到服务器上并解压,根据文件路径浏览器中打开install.php即可按照安装指引一步步安装。

主题与插件

可以先去网上搜集一些好看的主题模板和插件,下载后上传并解压到对应Typecho软件目录下的usr/themes和usr/plugins下,完成后在Typecho管理页面选择"控制台-外观/插件"就可以启用了。后期有兴趣、有余力再自己整。

升级php7

如果最初安装的php版本是php5,而有些好看的主题或插件只支持php7,可以通过宝塔面板更改php版本。

首先打开宝塔面板,选择软件管理--运行环境,找到PHP-7.x,忽略“PHP是世界上最好的语言”,选择最右侧的安装。

安装完成后,选择网站,点击域名(或者“设置”),选择PHP版本,在PHP版本中PHP-7x,点击切换。此后可以在软件管理--运行环境中选择将原来的php5.x服务关掉。(因为宝塔面板支持多个版本的php同时运行,以供不同的网站使用不同的php版本,开着不用会浪费不必要的资源。)

部分参考资料

个人技术博客的选择

python脚本实现ipv6的ddns功能

什么是弹性计算 - 定义 | Microsoft Azure

云计算 - MBA智库百科 (mbalib.com)

VPS和虚拟主机的区别_百度知道 (baidu.com)

修改ssh默认端口 - 云+社区 - 腾讯云 (tencent.com)

你可能感兴趣的:(php,nginx,腾讯云,网络,服务器)