手把手带你搭建个人网站!博客、域名统统搞定
前言
哈喽大家好,我是莫提。
最近搞了一台新的云服务器,服务器上面现在啥都没有,正好给大家介绍一下我是怎么从0搭建出自己的个人网站。
我现在这个服务器是腾讯云的轻量应用服务器,这个其实不重要,只要你有一台云服务器就可以。重要的是这个Linux系统,或者说是Linux系统的发行版本,因为不同的发行版本在使用命令的时候,会稍微有一点区别,那么这里注意一下,我使用的Linux系统的发行版本是CentOS7。
我的博客:www.xuewei.world
配置服务器的基础环境
当你购买完服务器之后,你就可以知道这个服务器的公网IP,然后需要你配置root用户的密码。配置完成之后,你就可以使用ssh来登录到这台服务器了,Windows用户可以使用Putty、XSheel等软件来连接服务器,Mac用户可以使用Termius或者苹果电脑自带的终端工具来连接到服务器。
之后我们需要做的一件事是把系统软件的镜像源配置成国内镜像,这样在下载软件的时候就会快很多了。
可以参考的我个人博客里面的这篇文章:
http://xuewei.world/categories/linux
更新完镜像源之后,我们需要安装Docker,安装方式也很简单,自行百度或者参考的我个人博客里面的这篇文章:
之后服务器的基础环境就可以OK了
安装MySQL数据库
博客的数据肯定是要存在数据库里面的,数据库我选择的是一般接触最多的MySQL数据库,安装方式也很简单,这里我直接使用Docker来安装一个。
依次执行下面的命令即可
# 拉去镜像
docker pull mysql:5.7
注意下面的命令需要指定MySQL的密码,我这里以123456
为例,为了安全起见,你一定要改一个比较复杂的密码!
# 运行镜像
docker run --restart=always -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
安装成功之后使用docker ps命令查看当前正在运行的容器,可以看到,mysql正位列其中。
然后我们就可以使用数据库连接工具,比如Navicat、SQLYog等软件连接到这个数据库。
注意
如果你发现连接不到数据库的话可能是你服务器的防火墙没有关掉。可以使用systemctl status firewalld.service
来查看防火墙状态。
我之前就已经把防火墙关掉了。
关于防火墙相关更多的命令,可以参考我这篇文章:
还有!如果你发现你把防火墙关掉了还是连接不到,那是因为在你云服务器的控制台里还有一个云服务防火墙的配置,你需要把对应数据库的端口3306开放!
以腾讯云为例:
保存之后就可以正常的连接到数据库了!
之后我们在MySQL中创建一个数据库,取名blog-db。字符集选utf8mb4,之后点击完成即可。
这里的数据库取名要注意,稍后我们要用到
安装Halo
这次教大家部署的个人博客是Halo,这是一款非常优秀的个人博客系统,自带后台管理系统,比WordPress更加的轻量,单功能缺不输于它,也是支持主题的切换,甚至Halo的主题要更加的美观漂亮!
官网:https://halo.run/
在服务器上依次执行下面的命令
# 创建博客项目目录
cd ~;mkdir halo-blog;cd halo-blog
# 创建配置文件
vim application.yaml
在配置文件输入以下内容:
server:
port: 8090
compression:
enabled: false
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://152.136.150.203:3306/blog-db?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: root
password: 123456
halo:
admin-path: blog-admin
cache: memory
注意:这里你需要修改MySQL的连接信息,主要修改IP和密码,还要注意数据库要连接刚才安装MySQL创建的那个数据库,名称默认blog-db
# 拉取halo的最新镜像
docker pull halohub/halo
# 运行镜像获得容器
docker run -d -p 8090:8090 -v ~/halo-blog:/root/.halo --restart=always --name halo halohub/halo
之后使用docker ps
查看正在运行的容器,可以看到,我们刚才安装的Halo正位列其中
之后使用浏览器访问你的IP的8090端口,即http://IP:8090
,然后就可以看到Halo的安装页面了。如果访问不到,那可能还是和防火墙有关,参考之前安装MySQL的解决方案处理一下就OK了。
填写信息,点击安装即可。安装完成之后会自动跳转到登录页面。再次访问你的IP的8090端口就可以访问到博客的主页了!
基本介绍
Halo的后台管理中主要包含文章管理、页面管理、附件管理、评论管理、外观主题、用户设置以及系统设置。功能还是非常的丰富的,操作也非常的简单。
这里着重介绍一下怎么更换主题:外观 -> 安装 -> 远程下载
这里需要我们输入远程地址,我们需要前往Halo的官方主题仓库,挑选一个自己喜欢的主题。
选择好一款主题之后,查看主题详情,里面就会有介绍怎么安装,我们输入远程地址之后,点击下载即可。
稍作等待之后我们就可以在主题中看到刚刚下载的主题了,点击启用即可。在每个主题的设置里面,还可以对主题进行更加细致化的自定义。
注意,很多的主题都是寄托在github上面,所以远程下载会很慢,有时候还会出现网络错误,多尝试几次或者使用离线安装的方式
再次访问IP的8090端口就可以看到主题已经生效了。
配置域名
只用IP访问博客既不高级,也不安全,所以现在来教大家怎么为IP来绑定域名。
当然前提是你已经购买了一个域名,可以选择在阿里云、腾讯云的官网购买。
注意:购买的服务器和域名可以不是同一个厂商,我的服务器是腾讯云,域名是在阿里云购买
我的域名:www.xuewei.world
以阿里云为例,首先需要进入到域名控制台
这里会显示你购买过的域名,然后点击后面的解析,进入到当前域名的解析设置
我们点击添加记录进行下一步的配置。
记录类型:这里默认是A类型,即把域名解析到一个IPV4的地址,正好我们需要这样做。 主机记录:这就是你之后需要在浏览器访问个人网站使用的规则‘ 解析路线:解析路线一般设置成默认就OK 记录值:你的IP地址 TTL:你的域名配置的DNS缓存时间,这里也是默认10分钟
最简单的,我们配置一个www域名,主机记录中填写www,然后记录值填写服务器的IP地址。
然后我们就可以在浏览器试一试了,注意我们刚才大家的博客的端口是8090,浏览器地址中应该是http://www.域名:8090,在我这里就是这样访问
http://www.xuewei.world:8090
。还要注意一点,从9月15号开始,对于未进行实名认证的域名,阿里云不再提供解析服务了,所以大家最好还是实名认证一下,最好也进行网站的备案。
隐藏端口号
域名已经配置好了,但是每次都要加上端口实在是麻烦,下面给大家讲一下我是怎么将端口号隐藏的,当然隐藏端口号有一个前提,就是你的服务器需要进行备案!浏览器http端口是80(可隐藏),还有https端口443(可隐藏),但是像阿里云、腾讯云这些国内服务器,你必须要备案之后才会给你开放,不热就会被跳转到下面这个页面
当你备案完成之后就可以安装我下面的步骤一步一步操作了
首先我使用的方法是在服务器搭建Nginx服务,并配置反向代理。
如果你的服务器是CentOS7,那么可以参考我下面的文章进行Nginx的安装:
之后你需要修改Nginx的配置文件,位于/usr/local/nginx/conf/nginx.conf
,将配置文件修改为以下内容:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream halo {
server 127.0.0.1:8090;
}
server {
listen 80;
server_name www.yourdomain.com;
client_max_body_size 1024m;
location / {
proxy_pass http://halo;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
之后重启Nginx,在浏览器访问你的域名,我这里直接访问http://www.xuewei.world
,访问http://www.xuewei.world/blog-admin
就可以进入后台管理
大功告成!点击原文链接可以查看我的个人博客,文章里面一些软件的安装都在里面!
我是莫提,一个喜欢自学的程序员。关注我,我们一起变优秀!