从零搭建网站

本文最后更新于 2024年3月11日 晚上

本文介绍如何利用云产品搭建一个属于自己的网站~

背景知识

  1. 网络基础知识介绍:从输入 URL 到页面加载完成的过程中都发生了什么事情

  2. 免费简单配置搭建网站:GitHub Pages + Hexo搭建个人博客网站

本文将介绍利用华为云产品从零搭建一个网站。

快速部署

购买服务器

现在云服务器厂商大多产品都可以免费试用,对新手上手很友好,同时也会有像双11等大促活动,例如笔者就在双11中用170块就入手了一台2核/4G/5Mbps的云服务器,还是比较划算的~

部署应用

有了服务器后,可以参考之前的文章先搭建开发环境,之后我们就可以部署应用。这里以用Docker部署开源建站工具Halo为例:

1
docker run -it -d --name halo -p 8090:8090 -v ~/.halo2:/root/.halo2 halohub/halo:2.13

之后只需在VPC的安全组放行相应端口(8090), 即可在公网通过http协议 + 服务器ip + 端口访问应用: http://{your_ip}:8090

但为了统一管理服务器上的访问,我们采用Nginx来配置反向代理,这样就可以直接使用服务器ip访问:http://{your_ip}

1
2
3
4
5
6
7
8
9
10
11
12
13
server {
listen 80;
listen [::]:80;
server_name www.yourdomain.com;
client_max_body_size 1024m;
location / {
proxy_pass http://127.0.0.1:8090;
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;
}
}

便捷访问

IP地址不利于记忆,所以我们需要注册一个易记的域名访问,再配置个A类型的DNS解析绑定主机IP,理论上就可以用域名访问:http://{your_domain}

但这个时候如果直接尝试利用域名访问的话会出现以下提示:

404.png

这是因为使用大陆节点服务器提供互联网信息服务,需要在服务器提供商处提交ICP备案申请。

但像笔者现在这样漂泊四方的状态,由于居住地和户口所在地不同,备案还通过不了,只能暂时采用CNAME的方式使用域名了。

安全访问

由于http协议采用明文传输数据,很不安全,故现在大都都采用https(http+ssl/tls)加密传输:
ssl.png
我们可以先在SSL证书管理服务上购买DigiCert颁发的免费DV(Basic)证书,然后通过一系列流程后就能开启https访问:
ssl_pipeline.png
最后的Nginx配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
server {
listen 443 ssl;
ssl_certificate cert/server.crt;
ssl_certificate_key cert/server.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
server_name syntomic.cn;
client_max_body_size 1024m;
location / {
proxy_pass http://127.0.0.1:8090;
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;
}
}

这样就完成了一个基本的网站搭建,使用自己的服务器,并可以使用https协议和域名访问:https://{your_domain}

问题

主机安全

由于是自己购买服务器,需要格外注意主机安全,笔者就不小心由于若口令被被入侵:

可以参考Linux主机安全加固建议进行相应设置,并在设置利用密钥登陆后,关闭密码登陆sudo vim /etc/ssh/sshd_config :

1
2
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no

总结

单体架构足以搭建出简单的应用系统,但随着系统功能越来越复杂,缺乏应用间自治和隔离的能力,又逐渐发展出了复杂的微服务架构。然而伴随着云原生化和无服务化的成熟,我们只需要简单地使用各种组件,像搭积木一样,就能构建出可靠、可扩展以及可维护的系统。


从零搭建网站
https://syntomic.cn/2023/11/05/从零搭建网站/
作者
syntomic
发布于
2023年11月5日
更新于
2024年3月11日
许可协议