惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Security Latest
Security Latest
Recorded Future
Recorded Future
人人都是产品经理
人人都是产品经理
S
SegmentFault 最新的问题
Hacker News - Newest:
Hacker News - Newest: "LLM"
C
CXSECURITY Database RSS Feed - CXSecurity.com
博客园 - 三生石上(FineUI控件)
博客园 - 聂微东
P
Privacy & Cybersecurity Law Blog
WordPress大学
WordPress大学
Know Your Adversary
Know Your Adversary
Spread Privacy
Spread Privacy
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
量子位
L
LINUX DO - 热门话题
L
Lohrmann on Cybersecurity
博客园 - Franky
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Tor Project blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
雷峰网
雷峰网
阮一峰的网络日志
阮一峰的网络日志
V
Visual Studio Blog
T
Threatpost
T
Tenable Blog
有赞技术团队
有赞技术团队
大猫的无限游戏
大猫的无限游戏
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI
C
Cisco Blogs
H
Heimdal Security Blog
Attack and Defense Labs
Attack and Defense Labs
A
About on SuperTechFans
Last Week in AI
Last Week in AI
N
News and Events Feed by Topic
T
Threat Research - Cisco Blogs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
I
Intezer
V
V2EX
Cyberwarzone
Cyberwarzone
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
B
Blog RSS Feed
V
Vulnerabilities – Threatpost
N
Netflix TechBlog - Medium
T
The Blog of Author Tim Ferriss
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
U
Unit 42
PCI Perspectives
PCI Perspectives
P
Privacy International News Feed
D
Docker

Chenxu's Blog

RAG检索优化:从 68% 到 82.2% 学习深度学习 北邮计算机研究生选课指北 学习机器学习 上海篇 提出一个好问题 写代码的环境 选购一台合适的设备 计算机的第零课 序言 内蒙古篇 山东篇 一篇对transformers的疑惑 浅析GPUStack 浅谈后端项目分层 浙江篇 河南篇 一些三端协同的开发工具记录 浅谈编程语言中的 GC 在 Windows 上安装 Rust 美化博客 消息队列 MyBatis 现代交换原理2024年题目 回忆版 北邮计科本科课程指北 ClkLog埋点用户分析系统研究报告 大数据梧桐实验分享 大数据HBase实验分享 国产向量数据库研究实践 —— 基于 Milvus 的电影推荐系统 服务器环境配置 大数据HDFS实验分享 SSE多服务之间推送数据 数据库系统原理 操作系统 编译原理 手把手教你gozero从开发到部署 (番外篇): 介绍 gtodolist 前端项目 天津篇 北京篇 手把手教你gozero从开发到部署 (5): gtodolist 之任务的删除 前端相关问题 vue3 + element-plus学习 git相关命令 人工智能原理 使用 MongoTemplate 时开启事务 MySQL Redis 力扣刷题笔记之动态规划 记录一次 VSCode 出现的各种奇怪的问题 手把手教你gozero从开发到部署 (4): 在 model 中自己编写函数实现数据库分页查询 记录平时用到的 windows 右键管理 记录平时使用的 linux 的指令 安装 gstore 并使用 java api 手把手教你gozero从开发到部署 (3): gtodolist 之任务的创建和修改 手把手教你gozero从开发到部署 (番外篇): 记录第一次部署 CI/CD 的流程 记录完成 gtodolist 中遇到的 bug 手把手教你gozero从开发到部署 (2): gtodolist 之 user 模块开发 手把手教你gozero从开发到部署 (1): gtodolist 项目说明和环境准备 快速入门 gozero 框架 vue部署在nginx上的相关问题 记一次安装scrapy的报错 Java CS143: Compliers 《MySQL必知必会》读书笔记(2) 初识 GORM 初识 gin 框架 Spring 《MySQL必知必会》读书笔记(1) 本地搭建博客 🤝友链 🙋🏻‍♂️关于 Browser and Device Check
将博客部署至服务器
Chenxu · 2023-08-03 · via Chenxu's Blog

环境配置

  1. 在本地搭建好博客 具体可以参考本地搭建博客 这篇文章

    日期: 2023-06-21   标签: #博客 

    安装 hugo windows 用户直接去hugo 官网 下载框架 下载完之后在命令行中输入 hugo version 出现以下内容说明安装成功 创建博客 本教程仅讲解我的已完成的项目的使用, 具体从 0 开始的搭建博客请参考这些文章 项目地址 , 开箱即用, 欢迎 star 首先 ......

  2. 购买腾讯云轻量级服务器 当初买的时候比较了一下, 腾讯、阿里和华为三家里面似乎只有腾讯一家新人可以直接购买三年, 所以建议一步到位直接三年, 否则老用户不如狗. 还有就是不建议弄他的那些免费试用, 白损失了新用户优惠, 很不划算, 买的时候也可以在节假日买, 到时候应该也有一些优惠.

    我的配置是:

    1 核 2GB

    每月 500GB 流量

    固定 50GB 硬盘空间

    系统镜像为 Ubutun 22.04

下载 nginx

首先要下载 nginx, 切换至 root 用户

sudo su root
apt-get install nginx

查看是否安装成功

设置 nginx 为开机自启, 并启动 nginx, 不报错就是启动成功

sudo systemctl enable nginx
sudo systemctl start nginx

查看 nginx 状态

sudo systemctl status nginx

在浏览器访问你的服务器地址, 出现 nginx 的欢迎页面证明安装并启动成功

打开防火墙

如果你上一步做的没有问题, 但是无法正常显示 nginx 的欢迎页面, 那很大概率就是防火墙的问题.

一共有两层防火墙, 腾讯云和服务器

  1. 打开腾讯云的防火墙

  1. 打开服务器的防火墙

打开服务的 80 和 443 端口, 并查看状态

sudo ufw allow 80
sudo ufw allow 443
sudo ufw status # Status: active   对应端口: allow

将静态文件传输至服务器

使用 hugo -F --cleanDestinationDir 生成 public 文件夹, 然后将该文件夹传输到服务器上.

上传文件到服务器一共有两种方式, 使用 scp 或者 rsync (推荐).

使用 scp

windows 系统自带有 OpenSSH, 如果没有的话可以在 设置 -> 应用 -> 应用与可选功能 -> 可选功能 里找到 OpenSSH 并安装

安装完成并添加至环境变量后使用如下命令进行传输 (传输前需要在服务器上创建public目录)

scp -r D:/Tools/Tools/hugo/blog/public/ username@ip:~/public/

scp 似乎不能覆盖同名文件, 如果对已有文章修改的话可能需要手动删除服务器上的文件

使用 rsync

windows 系统没有 rsync, 需要下载替代品 cwrsync

下载解压并添加之环境变量后使用如下命令传输 (同样需要提前在服务器上创建 public 目录)

# 注意路径
rsync -avuz --progress --delete /cygdrive/D/Tools/hugo/blog/public/ username@ip:~/public/

ssh 免密登录

上面两种方法在输完命令之后都会让输入密码, 这样是很不方便的, 所以推荐设置 ssh 免密登录, 可以参考win10 自带 SSH 免密登录 Linux 这篇文章的教程.

保护自己的网站

保护网站同样有两种方式, 在 来此加密 上申请免费的 ssl 证书, 或者是使用cloudfare 代理, 推荐使用前者

申请配置 ssl 证书

来此加密的方式可以直接参考来此加密证书申请,验证,自动部署 这篇文章, 里面讲述了证书的申请、部署以及自动续期.

不过有一点补充, 域名验证时的 DNS 解析是在下图中这个位置添加解析记录, 注意看清楚记录类型

> 温馨提示: 一旦开始申请证书就要完成流程 (直到证书申请成功为止), 否则你的域名会被封禁 别问我为什么会知道 😭

上述方法疑似是国内代理商,极其不靠谱,所以推荐使用certbot 获取证书并配置。

使用 certbot 配置十分方便,只需要输入几行指令即可完成自动配置和更新。

首先进入官网 ,选择自己使用的代理软件和系统环境,这里以我的 Nginx 和 Ubuntu 20 为例。

流程就是先安装 snapd,然后通过 snap 安装 certbot,然后执行命令配置即可,使用到的命令如下:

# 更新 apt,安装 snapd
sudo apt update
sudo apt install snapd

# 安装 certbot,并做链接方便后续使用
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

# 自动配置证书,直接执行会自动识别你当前 nginx 有哪些网站并配置对应证书
# 使用这个命令可以自动在 nginx 里面写好配置文件
sudo certbot --nginx
# 或者你如果只是想要一个证书,可以使用下面这个指令
# 使用这个命令需要你执行命令后手动在 nginx 配置文件里面写好证书位置
sudo certbot certonly --nginx

# 上面两个命令二选一执行,执行后会将证书更新自动添加到定时任务
# 可以使用下面这个命令来检查证书是否能够正常更新
sudo certbot renew --dry-run

cloudfare 代理

cloudfare 的代理也比较简单, 进入网站后添加域名自己的域名然后一直下一步即可, 中间有一步要修改 DNS 服务器地址, 是在下面这个地方修改, 修改后需要过一段时间才能生效

设置完代理后如果再想添加新的域名解析就需要在 cloudfare 上添加

免费版的 cloudfare 代理只有国外的服务器, 所以国内访问速度会很慢, 不过有 cloudfare 有一个监控图还不错, 可以查看网站的访问日志等信息

速报: 在腾讯云购买备案的域名需要指向大陆服务器, cloudfare 改代理会指向美国的服务器, 所以可能会导致腾讯取消你的域名 (没错我就是被通知整改了). 所以建议使用自行配置 SSL 证书

配置 nginx

/etc/nginx 目录下的 nginx.conf 文件中的写入如下配置:

user root;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
	worker_connections 768;
	# multi_accept on;
}

http {

	##
	# Basic Settings
	##

	sendfile on;
	tcp_nopush on;
	types_hash_max_size 2048;
	# server_tokens off;

	# server_names_hash_bucket_size 64;
	# server_name_in_redirect off;

	include /etc/nginx/mime.types;
	default_type application/octet-stream;

	##
	# SSL Settings
	##

	ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
	ssl_prefer_server_ciphers on;

	##
	# Logging Settings
	##

	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;

	##
	# Gzip Settings
	##

	gzip on;

	# gzip_vary on;
	# gzip_proxied any;
	# gzip_comp_level 6;
	# gzip_buffers 16 8k;
	# gzip_http_version 1.1;
	# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

	##
	# Virtual Host Configs
	##

	# include /etc/nginx/conf.d/*.conf;
	# include /etc/nginx/sites-enabled/*;

	# 配置http
	server {
		listen       80 default_server;
	    listen       [::]:80 default_server;

		# 配置域名
        server_name www.chenxutalk.top chenxutalk.top;

		# 把http的域名请求转成https
		return 301 https://$host$request_uri;

		# rewrite ^(.*) https://$server_name$1 permanent; #自动从http跳转到https

        root /home/chenxu/public;

		include /etc/nginx/default.d/*.conf;

        location / {
        	root /home/chenxu/public;
        	index index.html index.htm;
        }

        error_page 404 /404.html;
        location = /40x.html {
			root /home/chenxu/public;
        }

		error_page 500 502 503 504 /50x.html;
	    location = /50x.html {
    	}
	}

    # 配置https
	server {
        listen 443 ssl;

        server_name chenxutalk.top www.chenxutalk.top;
        root /home/chenxu/public;

        # ssl证书的位置,使用certbot会自动配置,可以忽略
        ssl_certificate /etc/nginx/fullchain.crt;
        ssl_certificate_key /etc/nginx/private.pem;

        ssl_session_timeout 5m;
	 	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
 	 	ssl_protocols TLSv1.2 TLSv1.3;
 	 	ssl_prefer_server_ciphers on;

        error_page 404 /404.html;
        location / {
        	root /home/chenxu/public;
	      	index index.html index.htm;
        }

        include /etc/nginx/default.d/*.conf;
    }
}

修改后重新加载配置文件:

重启 nginx 并查看状态:

sudo systemctl restart nginx
sudo systemctl status nginx

如果一切顺利的话, 此时应该就能通过域名访问博客首页了

后续

以后发布博客的流程就是 写文章 -> 生成public文件夹 -> 上传至服务器, 这里总结了一下常用的三个命令, 可以写成脚本方便使用:

# 在posts目录下新建一篇文章
hugo new posts/newarticle.md

# 生成public文件夹
hugo -F --cleanDestinationDir

# 将public文件夹上传至服务器
rsync -avuz --progress --delete /cygdrive/D/Tools/hugo/blog/public/ username@ip:~/public/

参考文章

  1. hugo 博客部署到腾讯云轻量级服务器

  2. 来此加密证书申请,验证,自动部署

  3. win10 自带 SSH 免密登录 Linux