mirror of
https://github.com/wahyd4/wahyd4.github.com.git
synced 2026-08-09 05:15:56 +10:00
Site updated: 全站重建上线(测试文章已移除)
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-Hans">
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
@@ -15,22 +15,21 @@
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.0.0/css/all.min.css" integrity="sha256-VHqXKFhhMxcpubYf9xiWdCiojEbY9NexQ4jh8AxbvcM=" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.1.1/animate.min.css" integrity="sha256-PR7ttpcvz8qrF57fur/yAx1qXMFJeJFiA6pSzWi0OIE=" crossorigin="anonymous">
|
||||
|
||||
<script class="next-config" data-name="main" type="application/json">{"hostname":"toozhao.com","root":"/","images":"/images","scheme":"Muse","darkmode":false,"version":"8.25.0","exturl":false,"sidebar":{"position":"left","width_expanded":320,"width_dual_column":240,"display":"post","padding":18,"offset":12},"hljswrap":true,"codeblock":{"theme":{"light":"default","dark":"stackoverflow-dark"},"prism":{"light":"prism","dark":"prism-dark"},"copy_button":{"enable":false,"style":null},"fold":{"enable":false,"height":500},"language":false},"bookmark":{"enable":false,"color":"#222","save":"auto"},"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"stickytabs":false,"motion":{"enable":true,"async":false,"duration":200,"transition":{"menu_item":"fadeInDown","post_block":"fadeIn","post_header":"fadeInDown","post_body":"fadeInDown","coll_header":"fadeInLeft","sidebar":"fadeInUp"}},"prism":false,"i18n":{"placeholder":"Searching...","empty":"We didn't find any results for the search: ${query}","hits_time":"${hits} results found in ${time} ms","hits":"${hits} results found"}}</script><script src="https://cdnjs.cloudflare.com/ajax/libs/hexo-theme-next/8.25.0/config.min.js" defer></script>
|
||||
<script class="next-config" data-name="main" type="application/json">{"hostname":"toozhao.com","root":"/","images":"/images","scheme":"Muse","darkmode":false,"version":"8.28.0","exturl":false,"sidebar":{"position":"left","width_expanded":320,"width_dual_column":240,"display":"post","padding":18,"offset":12,"b2t":true,"scrollpercent":true},"hljswrap":true,"codeblock":{"theme":{"light":"default","dark":"stackoverflow-dark"},"prism":{"light":"prism","dark":"prism-dark"},"copy_button":{"enable":true,"style":"mac"},"fold":{"enable":false,"height":500},"language":false},"bookmark":{"enable":true,"color":"#222","save":"auto"},"mediumzoom":true,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"stickytabs":false,"motion":{"enable":false,"async":false,"duration":200,"transition":{"menu_item":"fadeInDown","post_block":"fadeIn","post_header":"fadeInDown","post_body":"fadeInDown","coll_header":"fadeInLeft","sidebar":"fadeInUp"}},"prism":false,"i18n":{"placeholder":"搜索...","empty":"没有找到任何搜索结果:${query}","hits_time":"找到 ${hits} 个搜索结果(用时 ${time} 毫秒)","hits":"找到 ${hits} 个搜索结果"},"path":"/search.xml","localsearch":{"enable":true,"top_n_per_article":5,"unescape":false,"preload":false,"trigger":"auto"}}</script><script src="/js/config.js" defer></script>
|
||||
|
||||
<meta name="description" content="说到 IDE 我们想到的都是 Intellij 和 Eclipse系列这样的几百兆的桌面应用程序,它让我们编程效率得以很大提升,在日常工作中变得离不开这些软件。我们最喜欢用的 IDE 功能主要有: 代码自动补全 代码重构 代码格式化 代码调试 代码高亮 代码错误检查 代码引用查询与跳转 但往往 IDE 也有占用内存多,时不时反应卡顿等问题。因此很多程序员在开发一些动态语言、脚本语言的时候更倾向">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:title" content="使用 VS Code 快速搭建你的 Golang 开发 IDE">
|
||||
<meta property="og:url" content="https://toozhao.com/2017/08/23/vscode-golang/index.html">
|
||||
<meta property="og:url" content="https://toozhao.com/2017/08/23/vscode-golang/">
|
||||
<meta property="og:site_name" content="大染志">
|
||||
<meta property="og:description" content="说到 IDE 我们想到的都是 Intellij 和 Eclipse系列这样的几百兆的桌面应用程序,它让我们编程效率得以很大提升,在日常工作中变得离不开这些软件。我们最喜欢用的 IDE 功能主要有: 代码自动补全 代码重构 代码格式化 代码调试 代码高亮 代码错误检查 代码引用查询与跳转 但往往 IDE 也有占用内存多,时不时反应卡顿等问题。因此很多程序员在开发一些动态语言、脚本语言的时候更倾向">
|
||||
<meta property="og:locale">
|
||||
<meta property="og:locale" content="zh_CN">
|
||||
<meta property="og:image" content="https://toozhao.com/vscode.gif">
|
||||
<meta property="og:image" content="https://debug.png/">
|
||||
<meta property="og:image" content="https://toozhao.com/code-runner.png">
|
||||
<meta property="article:published_time" content="2017-08-23T07:26:31.000Z">
|
||||
<meta property="article:modified_time" content="2025-10-27T10:42:00.950Z">
|
||||
<meta property="article:published_time" content="2017-08-23T07:26:00.000Z">
|
||||
<meta property="article:modified_time" content="2026-08-03T23:42:09.051Z">
|
||||
<meta property="article:author" content="Junv">
|
||||
<meta property="article:tag" content="go">
|
||||
<meta property="article:tag" content="vscode">
|
||||
@@ -41,14 +40,11 @@
|
||||
<link rel="canonical" href="https://toozhao.com/2017/08/23/vscode-golang/">
|
||||
|
||||
|
||||
<script class="next-config" data-name="page" type="application/json">{"sidebar":"","isHome":false,"isPost":true,"lang":"zh-Hans","comments":true,"permalink":"https://toozhao.com/2017/08/23/vscode-golang/","path":"2017/08/23/vscode-golang/","title":"使用 VS Code 快速搭建你的 Golang 开发 IDE"}</script>
|
||||
<script class="next-config" data-name="page" type="application/json">{"sidebar":"","isHome":false,"isPost":true,"lang":"zh-CN","comments":true,"permalink":"https://toozhao.com/2017/08/23/vscode-golang/","path":"2017/08/23/vscode-golang/","title":"使用 VS Code 快速搭建你的 Golang 开发 IDE"}</script>
|
||||
|
||||
<script class="next-config" data-name="calendar" type="application/json">""</script>
|
||||
<title>使用 VS Code 快速搭建你的 Golang 开发 IDE | 大染志</title>
|
||||
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-7N71TMKK99"></script>
|
||||
<script class="next-config" data-name="google_analytics" type="application/json">{"tracking_id":"G-7N71TMKK99","only_pageview":false,"measure_protocol_api_secret":null}</script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/hexo-theme-next/8.25.0/third-party/analytics/google-analytics.min.js" defer></script>
|
||||
|
||||
|
||||
|
||||
@@ -59,9 +55,12 @@
|
||||
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.1/anime.min.js" integrity="sha256-XL2inqUJaslATFnHdJOi9GfQ60on8Wx1C2H8DYiN1xY=" crossorigin="anonymous" defer></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/hexo-theme-next/8.25.0/utils.min.js" defer></script><script src="https://cdnjs.cloudflare.com/ajax/libs/hexo-theme-next/8.25.0/motion.min.js" defer></script><script src="https://cdnjs.cloudflare.com/ajax/libs/hexo-theme-next/8.25.0/sidebar.min.js" defer></script><script src="https://cdnjs.cloudflare.com/ajax/libs/hexo-theme-next/8.25.0/next-boot.min.js" defer></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/medium-zoom/1.1.0/medium-zoom.min.js" integrity="sha256-ZgMyDAIYDYGxbcpJcfUnYwNevG/xi9OHKaR/8GK+jWc=" crossorigin="anonymous" defer></script>
|
||||
<script src="/js/utils.js" defer></script><script src="/js/sidebar.js" defer></script><script src="/js/next-boot.js" defer></script><script src="/js/bookmark.js" defer></script>
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/hexo-generator-searchdb/1.5.0/search.js" integrity="sha256-xFC6PJ82SL9b3WkGjFavNiA9gm5z6UBxWPiu4CYjptg=" crossorigin="anonymous" defer></script>
|
||||
<script src="/js/third-party/search/local-search.js" defer></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -73,20 +72,158 @@
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
/* =========================================================
|
||||
Toozhao blog custom styles (injected via head.njk)
|
||||
阅读体验优化 — 微信读书风格
|
||||
========================================================= */
|
||||
html { scroll-behavior: smooth; }
|
||||
|
||||
/* 主内容阅读宽度 */
|
||||
.post-block, .posts-expand .post-block {
|
||||
max-width: 760px;
|
||||
}
|
||||
|
||||
.post-title {
|
||||
font-size: 1.7em;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.01em;
|
||||
}
|
||||
|
||||
.post-meta { color: #999; font-size: 0.9em; }
|
||||
|
||||
.post-body {
|
||||
font-size: 1.05em;
|
||||
line-height: 1.9;
|
||||
letter-spacing: 0.02em;
|
||||
color: #333;
|
||||
}
|
||||
.post-body p {
|
||||
margin: 1.1em 0;
|
||||
text-align: justify;
|
||||
text-justify: inter-ideograph;
|
||||
}
|
||||
.post-body h1, .post-body h2, .post-body h3, .post-body h4, .post-body h5, .post-body h6 {
|
||||
line-height: 1.4;
|
||||
margin-top: 1.6em;
|
||||
margin-bottom: 0.8em;
|
||||
font-weight: 600;
|
||||
color: #222;
|
||||
}
|
||||
.post-body h2::before, .post-body h3::before, .post-body h4::before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
width: 4px;
|
||||
height: 0.9em;
|
||||
background: #4a90d9;
|
||||
border-radius: 2px;
|
||||
margin-right: 10px;
|
||||
vertical-align: -0.08em;
|
||||
}
|
||||
.post-body img {
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
|
||||
margin: 0.6em auto;
|
||||
display: block;
|
||||
max-width: 100%;
|
||||
}
|
||||
.post-body blockquote {
|
||||
border-left: 4px solid #4a90d9;
|
||||
background: rgba(74, 144, 217, 0.06);
|
||||
margin: 1.4em 0;
|
||||
padding: 0.8em 1.2em;
|
||||
border-radius: 0 8px 8px 0;
|
||||
color: #555;
|
||||
}
|
||||
.post-body blockquote p { margin: 0.4em 0; }
|
||||
.post-body a {
|
||||
color: #2d6cdf;
|
||||
border-bottom: 1px solid rgba(45, 108, 223, 0.3);
|
||||
transition: color 0.2s, border-color 0.2s;
|
||||
}
|
||||
.post-body a:hover { color: #1a4fae; border-bottom-color: #1a4fae; }
|
||||
.post-body code {
|
||||
background: rgba(0, 0, 0, 0.05);
|
||||
border-radius: 4px;
|
||||
padding: 2px 6px;
|
||||
font-size: 0.9em;
|
||||
color: #c7254e;
|
||||
}
|
||||
.post-body table {
|
||||
border-collapse: collapse;
|
||||
margin: 1.2em auto;
|
||||
font-size: 0.95em;
|
||||
}
|
||||
.post-body table th, .post-body table td {
|
||||
border: 1px solid #ddd;
|
||||
padding: 8px 14px;
|
||||
}
|
||||
.post-body table th { background: #f5f7fa; font-weight: 600; }
|
||||
.post-body table tr:nth-child(even) { background: #fafbfc; }
|
||||
.post-body ul, .post-body ol { padding-left: 1.6em; margin: 0.8em 0; }
|
||||
.post-body ul li, .post-body ol li { margin: 0.35em 0; }
|
||||
.post-body hr {
|
||||
border: none;
|
||||
border-top: 1px dashed #ccc;
|
||||
margin: 2em auto;
|
||||
width: 60%;
|
||||
}
|
||||
|
||||
/* 暗色模式(跟随系统,不依赖 NexT darkmode class) */
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body { background: #1b1f24; color: #c8cdd3; }
|
||||
.post-body { color: #c8cdd3; }
|
||||
.post-body h1, .post-body h2, .post-body h3, .post-body h4, .post-body h5, .post-body h6 { color: #e8eaed; }
|
||||
.post-body blockquote { background: rgba(74, 144, 217, 0.1); color: #9aa5b1; }
|
||||
.post-body code { background: rgba(255, 255, 255, 0.1); color: #e88388; }
|
||||
.post-body table th, .post-body table td { border-color: #3a3f45; }
|
||||
.post-body table th { background: #2d3238; }
|
||||
.post-body table tr:nth-child(even) { background: #262a2f; }
|
||||
.post-meta { color: #777; }
|
||||
}
|
||||
|
||||
::selection { background: rgba(74, 144, 217, 0.25); }
|
||||
|
||||
/* 字体调节按钮 */
|
||||
.font-size-control {
|
||||
position: fixed;
|
||||
right: 18px;
|
||||
bottom: 90px;
|
||||
z-index: 1000;
|
||||
background: rgba(0, 0, 0, 0.65);
|
||||
color: #fff;
|
||||
border-radius: 20px;
|
||||
padding: 6px 4px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 2px;
|
||||
user-select: none;
|
||||
}
|
||||
.font-size-control button {
|
||||
background: none;
|
||||
border: none;
|
||||
color: #fff;
|
||||
font-size: 13px;
|
||||
cursor: pointer;
|
||||
padding: 3px 8px;
|
||||
opacity: 0.85;
|
||||
}
|
||||
.font-size-control button:hover { opacity: 1; }
|
||||
</style>
|
||||
|
||||
<noscript>
|
||||
<link rel="stylesheet" href="/css/noscript.css">
|
||||
</noscript>
|
||||
</head>
|
||||
|
||||
<body itemscope itemtype="http://schema.org/WebPage" class="use-motion">
|
||||
<body itemscope itemtype="http://schema.org/WebPage">
|
||||
<div class="headband"></div>
|
||||
|
||||
<main class="main">
|
||||
<div class="column">
|
||||
<header class="header" itemscope itemtype="http://schema.org/WPHeader"><div class="site-brand-container">
|
||||
<div class="site-nav-toggle">
|
||||
<div class="toggle" aria-label="Toggle navigation bar" role="button">
|
||||
<div class="toggle" aria-label="切换导航栏" role="button">
|
||||
<span class="toggle-line"></span>
|
||||
<span class="toggle-line"></span>
|
||||
<span class="toggle-line"></span>
|
||||
@@ -100,11 +237,12 @@
|
||||
<p class="site-title">大染志</p>
|
||||
<i class="logo-line"></i>
|
||||
</a>
|
||||
<p class="site-subtitle" itemprop="description">想要玩得很 High 的程序员</p>
|
||||
<p class="site-subtitle" itemprop="description">Junv's blog</p>
|
||||
</div>
|
||||
|
||||
<div class="site-nav-right">
|
||||
<div class="toggle popup-trigger" aria-label="Search" role="button">
|
||||
<div class="toggle popup-trigger" aria-label="搜索" role="button">
|
||||
<i class="fa fa-search fa-fw fa-lg"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -112,12 +250,38 @@
|
||||
|
||||
|
||||
<nav class="site-nav">
|
||||
<ul class="main-menu menu"><li class="menu-item menu-item-home"><a href="/" rel="section"><i class="fa fa-home fa-fw"></i>Home</a></li><li class="menu-item menu-item-about"><a href="/about/" rel="section"><i class="fa fa-user fa-fw"></i>About</a></li><li class="menu-item menu-item-archives"><a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>Archives<span class="badge">308</span></a></li><li class="menu-item menu-item-tags"><a href="/tags/" rel="section"><i class="fa fa-tags fa-fw"></i>Tags<span class="badge">249</span></a></li><li class="menu-item menu-item-知识图谱"><a href="https://wiki.toozhao.com/" rel="section" target="_blank"><i class="fa fa-sitemap fa-fw"></i>知识图谱</a></li>
|
||||
<ul class="main-menu menu"><li class="menu-item menu-item-home"><a href="/" rel="section"><i class="fa fa-home fa-fw"></i>首页</a></li><li class="menu-item menu-item-tags"><a href="/tags/" rel="section"><i class="fa fa-tags fa-fw"></i>标签</a></li><li class="menu-item menu-item-categories"><a href="/categories/" rel="section"><i class="fa fa-th fa-fw"></i>分类</a></li><li class="menu-item menu-item-archives"><a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>归档</a></li><li class="menu-item menu-item-about"><a href="/about/" rel="section"><i class="fa fa-user fa-fw"></i>关于</a></li>
|
||||
<li class="menu-item menu-item-search">
|
||||
<a role="button" class="popup-trigger"><i class="fa fa-search fa-fw"></i>搜索
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
|
||||
|
||||
<div class="search-pop-overlay">
|
||||
<div class="popup search-popup">
|
||||
<div class="search-header">
|
||||
<span class="search-icon">
|
||||
<i class="fa fa-search"></i>
|
||||
</span>
|
||||
<div class="search-input-container">
|
||||
<input autocomplete="off" autocapitalize="off" maxlength="80"
|
||||
placeholder="搜索..." spellcheck="false"
|
||||
type="search" class="search-input">
|
||||
</div>
|
||||
<span class="popup-btn-close" role="button">
|
||||
<i class="fa fa-times-circle"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="search-result-container">
|
||||
<div class="search-result-icon">
|
||||
<i class="fa fa-spinner fa-pulse fa-5x"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
@@ -127,45 +291,50 @@
|
||||
<div class="sidebar-inner sidebar-nav-active sidebar-toc-active">
|
||||
<ul class="sidebar-nav">
|
||||
<li class="sidebar-nav-toc">
|
||||
Table of Contents
|
||||
文章目录
|
||||
</li>
|
||||
<li class="sidebar-nav-overview">
|
||||
Overview
|
||||
站点概览
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="sidebar-panel-container">
|
||||
<!--noindex-->
|
||||
<div class="post-toc-wrap sidebar-panel">
|
||||
<div class="post-toc animated"><ol class="nav"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%AE%89%E8%A3%85-vscode"><span class="nav-number">1.</span> <span class="nav-text">安装 vscode</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%AE%89%E8%A3%85-Go-%E6%8F%92%E4%BB%B6"><span class="nav-number">2.</span> <span class="nav-text">安装 Go 插件</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#%E5%AE%89%E8%A3%85"><span class="nav-number">2.1.</span> <span class="nav-text">安装</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E9%85%8D%E7%BD%AE"><span class="nav-number">2.2.</span> <span class="nav-text">配置</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E4%BD%BF%E7%94%A8"><span class="nav-number">2.3.</span> <span class="nav-text">使用</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E8%B0%83%E8%AF%95-Go%E7%A8%8B%E5%BA%8F"><span class="nav-number">2.4.</span> <span class="nav-text">调试 Go程序</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E5%BF%AB%E9%80%9F%E7%9A%84%E6%90%9C%E7%B4%A2"><span class="nav-number">2.5.</span> <span class="nav-text">快速的搜索</span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%A6%82%E8%99%8E%E6%B7%BB%E7%BF%BC%E7%9A%84%E5%85%B6%E4%BB%96%E6%8F%92%E4%BB%B6"><span class="nav-number">3.</span> <span class="nav-text">如虎添翼的其他插件</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#IntelliJ-IDEA-Keybindings"><span class="nav-number">3.1.</span> <span class="nav-text">IntelliJ IDEA Keybindings</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#Code-Runner"><span class="nav-number">3.2.</span> <span class="nav-text">Code Runner</span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E6%A6%82%E6%8B%AC"><span class="nav-number">4.</span> <span class="nav-text">概括</span></a></li></ol></div>
|
||||
<div class="post-toc animated"><ol class="nav"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%AE%89%E8%A3%85-vscode"><span class="nav-text">安装 vscode</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%AE%89%E8%A3%85-Go-%E6%8F%92%E4%BB%B6"><span class="nav-text">安装 Go 插件</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#%E5%AE%89%E8%A3%85"><span class="nav-text">安装</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E9%85%8D%E7%BD%AE"><span class="nav-text">配置</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E4%BD%BF%E7%94%A8"><span class="nav-text">使用</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E8%B0%83%E8%AF%95-Go%E7%A8%8B%E5%BA%8F"><span class="nav-text">调试 Go程序</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#%E5%BF%AB%E9%80%9F%E7%9A%84%E6%90%9C%E7%B4%A2"><span class="nav-text">快速的搜索</span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%A6%82%E8%99%8E%E6%B7%BB%E7%BF%BC%E7%9A%84%E5%85%B6%E4%BB%96%E6%8F%92%E4%BB%B6"><span class="nav-text">如虎添翼的其他插件</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#IntelliJ-IDEA-Keybindings"><span class="nav-text">IntelliJ IDEA Keybindings</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#Code-Runner"><span class="nav-text">Code Runner</span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E6%A6%82%E6%8B%AC"><span class="nav-text">概括</span></a></li></ol></div>
|
||||
</div>
|
||||
<!--/noindex-->
|
||||
|
||||
<div class="site-overview-wrap sidebar-panel">
|
||||
<div class="site-author animated" itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||||
<img class="site-author-image" itemprop="image" alt="Junv"
|
||||
src="/images/avatar.gif">
|
||||
<p class="site-author-name" itemprop="name">Junv</p>
|
||||
<div class="site-description" itemprop="description">Go, JavaScript, Ruby on Rails, Java,Docker, CI, CD, Photography</div>
|
||||
<div class="site-description" itemprop="description">分享编程、运维、生活与思考</div>
|
||||
</div>
|
||||
<div class="site-state-wrap animated">
|
||||
<nav class="site-state">
|
||||
<div class="site-state-item site-state-posts">
|
||||
<a href="/archives/">
|
||||
<span class="site-state-item-count">308</span>
|
||||
<span class="site-state-item-name">posts</span>
|
||||
<span class="site-state-item-count">310</span>
|
||||
<span class="site-state-item-name">日志</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="site-state-item site-state-categories">
|
||||
<a href="/categories/">
|
||||
<span class="site-state-item-count">69</span>
|
||||
<span class="site-state-item-name">categories</span></a>
|
||||
</div>
|
||||
<div class="site-state-item site-state-tags">
|
||||
<a href="/tags/">
|
||||
<span class="site-state-item-count">249</span>
|
||||
<span class="site-state-item-name">tags</span></a>
|
||||
<span class="site-state-item-name">标签</span></a>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
<div class="links-of-author animated">
|
||||
<span class="links-of-author-item">
|
||||
<a href="https://github.com/wahyd4" title="GitHub → https://github.com/wahyd4" rel="noopener me" target="_blank"><i class="fab fa-github fa-fw"></i>GitHub</a>
|
||||
</span>
|
||||
</div>
|
||||
<div class="cc-license animated" itemprop="license">
|
||||
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" class="cc-opacity" rel="noopener" target="_blank"><img src="https://cdnjs.cloudflare.com/ajax/libs/creativecommons-vocabulary/2020.11.3/assets/license_badges/small/by_nc_sa.svg" alt="Creative Commons"></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -187,7 +356,7 @@
|
||||
|
||||
|
||||
|
||||
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="zh-Hans">
|
||||
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="zh-CN">
|
||||
<link itemprop="mainEntityOfPage" href="https://toozhao.com/2017/08/23/vscode-golang/">
|
||||
|
||||
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||||
@@ -197,7 +366,7 @@
|
||||
|
||||
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
|
||||
<meta itemprop="name" content="大染志">
|
||||
<meta itemprop="description" content="Go, JavaScript, Ruby on Rails, Java,Docker, CI, CD, Photography">
|
||||
<meta itemprop="description" content="分享编程、运维、生活与思考">
|
||||
</span>
|
||||
|
||||
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
|
||||
@@ -215,16 +384,16 @@
|
||||
<span class="post-meta-item-icon">
|
||||
<i class="far fa-calendar"></i>
|
||||
</span>
|
||||
<span class="post-meta-item-text">Posted on</span>
|
||||
<span class="post-meta-item-text">发表于</span>
|
||||
|
||||
<time title="Created: 2017-08-23 17:26:31" itemprop="dateCreated datePublished" datetime="2017-08-23T17:26:31+10:00">2017-08-23</time>
|
||||
<time title="创建时间:2017-08-23 17:26:00" itemprop="dateCreated datePublished" datetime="2017-08-23T17:26:00+10:00">2017-08-23</time>
|
||||
</span>
|
||||
<span class="post-meta-item">
|
||||
<span class="post-meta-item-icon">
|
||||
<i class="far fa-calendar-check"></i>
|
||||
</span>
|
||||
<span class="post-meta-item-text">Edited on</span>
|
||||
<time title="Modified: 2025-10-27 21:42:00" itemprop="dateModified" datetime="2025-10-27T21:42:00+11:00">2025-10-27</time>
|
||||
<span class="post-meta-item-text">更新于</span>
|
||||
<time title="修改时间:2026-08-04 09:42:09" itemprop="dateModified" datetime="2026-08-04T09:42:09+10:00">2026-08-04</time>
|
||||
</span>
|
||||
|
||||
|
||||
@@ -270,10 +439,10 @@
|
||||
<h4 id="配置"><a href="#配置" class="headerlink" title="配置"></a>配置</h4><p>Go 插件提供丰富的配置项,让我们对插件的默认行为进行调整,以便最大限度的适合每个人。<br>依次键入<code>F1</code> -> <code>Open User Settings</code> 即可打开vscode 用户配置文件,在文件末尾可以添加类似如下属性。</p>
|
||||
<figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">"go.buildOnSave"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">//在保存代码时自动编译代码</span></span><br><span class="line"><span class="attr">"go.lintOnSave"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">//在保存代码时自动检查代码可以优化的地方,并给出建议</span></span><br><span class="line"><span class="attr">"go.vetOnSave"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">//在保存代码时自动检查潜在的错误</span></span><br><span class="line"><span class="attr">"go.buildTags"</span><span class="punctuation">:</span> <span class="string">""</span><span class="punctuation">,</span></span><br><span class="line"><span class="attr">"go.buildFlags"</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line"><span class="attr">"go.lintTool"</span><span class="punctuation">:</span> <span class="string">"golint"</span><span class="punctuation">,</span> <span class="comment">//使用 golint 库来执行 lint操作,你也可以选择使用gometalinter</span></span><br><span class="line"><span class="attr">"go.lintFlags"</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line"><span class="attr">"go.vetFlags"</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line"><span class="attr">"go.coverOnSave"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">false</span></span><span class="punctuation">,</span> <span class="comment">//在保存代码时执行测试,并显示测试覆盖率</span></span><br><span class="line"><span class="attr">"go.useCodeSnippetsOnFunctionSuggest"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">//使用代码片段作为提示</span></span><br><span class="line"><span class="attr">"go.formatOnSave"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">//在保存代码时自动格式化代码</span></span><br><span class="line"><span class="attr">"go.formatTool"</span><span class="punctuation">:</span> <span class="string">"goimports"</span><span class="punctuation">,</span> <span class="comment">//使用 goimports 工具进行代码格式化,或者使用 goreturns和gofmt</span></span><br><span class="line"><span class="attr">"go.formatFlags"</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line"><span class="attr">"go.gocodeAutoBuild"</span><span class="punctuation">:</span> <span class="literal"><span class="keyword">true</span></span><span class="punctuation">,</span> <span class="comment">//代码自动编译构建</span></span><br><span class="line"><span class="attr">"go.goroot"</span><span class="punctuation">:</span> <span class="string">"/usr/local/Cellar/go/1.8.3/libexec"</span><span class="punctuation">,</span> <span class="comment">//设置 goroot,正常编译 go 代码。</span></span><br><span class="line"><span class="attr">"go.gopath"</span><span class="punctuation">:</span> <span class="string">"/Users/junv/gocode:/Users/junv/mygocode"</span><span class="punctuation">,</span> <span class="comment">// 设置 gopath,有利于自动导入库</span></span><br></pre></td></tr></table></figure>
|
||||
|
||||
|
||||
<h4 id="使用"><a href="#使用" class="headerlink" title="使用"></a>使用</h4><p><img src="/vscode.gif" alt="使用"></p>
|
||||
<h4 id="调试-Go程序"><a href="#调试-Go程序" class="headerlink" title="调试 Go程序"></a>调试 Go程序</h4><p>打开 go 源码,在你期望调试的行号左侧,点击即可添加断点。<br>当你第一次进行调试时,vscode 则要求你添加调试程序的相关配置。可以输入类似下图的配置即可。</p>
|
||||
<figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"version"</span><span class="punctuation">:</span> <span class="string">"0.2.0"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"configurations"</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line"> <span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"name"</span><span class="punctuation">:</span> <span class="string">"monitor-api"</span><span class="punctuation">,</span> <span class="comment">//程序名字</span></span><br><span class="line"> <span class="attr">"type"</span><span class="punctuation">:</span> <span class="string">"go"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"request"</span><span class="punctuation">:</span> <span class="string">"launch"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"mode"</span><span class="punctuation">:</span> <span class="string">"debug"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"remotePath"</span><span class="punctuation">:</span> <span class="string">""</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"port"</span><span class="punctuation">:</span> <span class="number">1234</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"host"</span><span class="punctuation">:</span> <span class="string">"127.0.0.1"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"program"</span><span class="punctuation">:</span> <span class="string">"${workspaceRoot}"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"env"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"QUICKPAY_ENV"</span><span class="punctuation">:</span> <span class="string">"testing"</span> <span class="comment">//注入你需要的环境变量</span></span><br><span class="line"> <span class="punctuation">}</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"args"</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">]</span></span><br><span class="line"> <span class="punctuation">}</span></span><br><span class="line"> <span class="punctuation">]</span></span><br><span class="line"><span class="punctuation">}</span></span><br><span class="line"></span><br></pre></td></tr></table></figure>
|
||||
<figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"version"</span><span class="punctuation">:</span> <span class="string">"0.2.0"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"configurations"</span><span class="punctuation">:</span> <span class="punctuation">[</span></span><br><span class="line"> <span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"name"</span><span class="punctuation">:</span> <span class="string">"monitor-api"</span><span class="punctuation">,</span> <span class="comment">//程序名字</span></span><br><span class="line"> <span class="attr">"type"</span><span class="punctuation">:</span> <span class="string">"go"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"request"</span><span class="punctuation">:</span> <span class="string">"launch"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"mode"</span><span class="punctuation">:</span> <span class="string">"debug"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"remotePath"</span><span class="punctuation">:</span> <span class="string">""</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"port"</span><span class="punctuation">:</span> <span class="number">1234</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"host"</span><span class="punctuation">:</span> <span class="string">"127.0.0.1"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"program"</span><span class="punctuation">:</span> <span class="string">"${workspaceRoot}"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"env"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"QUICKPAY_ENV"</span><span class="punctuation">:</span> <span class="string">"testing"</span> <span class="comment">//注入你需要的环境变量</span></span><br><span class="line"> <span class="punctuation">}</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"args"</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">]</span></span><br><span class="line"> <span class="punctuation">}</span></span><br><span class="line"> <span class="punctuation">]</span></span><br><span class="line"><span class="punctuation">}</span></span><br></pre></td></tr></table></figure>
|
||||
|
||||
<p>点击开始按钮,即可进行Go 程序调试了。</p>
|
||||
<p><img src="//debug.png" alt="debug"></p>
|
||||
<h4 id="快速的搜索"><a href="#快速的搜索" class="headerlink" title="快速的搜索"></a>快速的搜索</h4><p>当项目源代码越来越多,依赖的第三方库也越来越多的时候,你会发现 vscode的搜索功能 变慢了,而且很多时候我们并不希望搜索结果中包含 vendor (第三方依赖源代码)目录下的代码。<br>那么你可以尝试在<code>User Settings</code> 中添加如下的配置:</p>
|
||||
@@ -300,6 +469,23 @@
|
||||
|
||||
|
||||
<footer class="post-footer">
|
||||
|
||||
|
||||
<div class="post-copyright">
|
||||
<ul>
|
||||
<li class="post-copyright-author">
|
||||
<strong>本文作者: </strong>Junv
|
||||
</li>
|
||||
<li class="post-copyright-link">
|
||||
<strong>本文链接:</strong>
|
||||
<a href="https://toozhao.com/2017/08/23/vscode-golang/" title="使用 VS Code 快速搭建你的 Golang 开发 IDE">https://toozhao.com/2017/08/23/vscode-golang/</a>
|
||||
</li>
|
||||
<li class="post-copyright-license">
|
||||
<strong>版权声明: </strong>本博客所有文章除特别声明外,均采用 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" rel="noopener" target="_blank"><i class="fab fa-fw fa-creative-commons"></i>BY-NC-SA</a> 许可协议。转载请注明出处!
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="post-tags">
|
||||
<a href="/tags/go/" rel="tag"># go</a>
|
||||
<a href="/tags/vscode/" rel="tag"># vscode</a>
|
||||
@@ -335,14 +521,14 @@
|
||||
<div class="footer-inner">
|
||||
|
||||
<div class="copyright">
|
||||
©
|
||||
<span itemprop="copyrightYear">2025</span>
|
||||
© 2012 –
|
||||
<span itemprop="copyrightYear">2026</span>
|
||||
<span class="with-love">
|
||||
<i class="fa fa-heart"></i>
|
||||
</span>
|
||||
<span class="author" itemprop="copyrightHolder">Junv</span>
|
||||
</div>
|
||||
<div class="powered-by">Powered by <a href="https://hexo.io/" rel="noopener" target="_blank">Hexo</a> & <a href="https://theme-next.js.org/muse/" rel="noopener" target="_blank">NexT.Muse</a>
|
||||
<div class="powered-by">由 <a href="https://hexo.io/" rel="noopener" target="_blank">Hexo</a> & <a href="https://theme-next.js.org/muse/" rel="noopener" target="_blank">NexT.Muse</a> 强力驱动
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -355,15 +541,48 @@
|
||||
<span class="toggle-line"></span>
|
||||
</div>
|
||||
<div class="sidebar-dimmer"></div>
|
||||
<div class="back-to-top" role="button" aria-label="Back to top">
|
||||
<div class="back-to-top" role="button" aria-label="返回顶部">
|
||||
<i class="fa fa-arrow-up fa-lg"></i>
|
||||
<span>0%</span>
|
||||
</div>
|
||||
<div class="reading-progress-bar"></div>
|
||||
<a role="button" class="book-mark-link book-mark-link-fixed"></a>
|
||||
|
||||
<noscript>
|
||||
<div class="noscript-warning">Theme NexT works best with JavaScript enabled</div>
|
||||
</noscript>
|
||||
<script>
|
||||
/* 字号调节 A- / A / A+(阅读体验) */
|
||||
(function () {
|
||||
'use strict';
|
||||
function initFontSize() {
|
||||
var postBody = document.querySelector('.post-body');
|
||||
if (!postBody || document.getElementById('font-size-control')) return;
|
||||
var bar = document.createElement('div');
|
||||
bar.id = 'font-size-control';
|
||||
bar.className = 'font-size-control';
|
||||
var labels = [['A-', -1], ['A', 0], ['A+', 1]];
|
||||
var current = 1.0;
|
||||
labels.forEach(function (item) {
|
||||
var btn = document.createElement('button');
|
||||
btn.textContent = item[0];
|
||||
btn.title = item[0] === 'A-' ? '减小字号' : item[0] === 'A+' ? '增大字号' : '恢复默认';
|
||||
btn.addEventListener('click', function () {
|
||||
if (item[1] === 0) current = 1.0;
|
||||
else current = Math.min(1.4, Math.max(0.8, current + item[1] * 0.1));
|
||||
postBody.style.fontSize = current + 'em';
|
||||
});
|
||||
bar.appendChild(btn);
|
||||
});
|
||||
document.body.appendChild(bar);
|
||||
}
|
||||
if (document.readyState === 'loading') {
|
||||
document.addEventListener('DOMContentLoaded', initFontSize);
|
||||
} else {
|
||||
initFontSize();
|
||||
}
|
||||
})();
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+264
-41
@@ -1,5 +1,5 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-Hans">
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
@@ -15,20 +15,19 @@
|
||||
|
||||
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.0.0/css/all.min.css" integrity="sha256-VHqXKFhhMxcpubYf9xiWdCiojEbY9NexQ4jh8AxbvcM=" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.1.1/animate.min.css" integrity="sha256-PR7ttpcvz8qrF57fur/yAx1qXMFJeJFiA6pSzWi0OIE=" crossorigin="anonymous">
|
||||
|
||||
<script class="next-config" data-name="main" type="application/json">{"hostname":"toozhao.com","root":"/","images":"/images","scheme":"Muse","darkmode":false,"version":"8.25.0","exturl":false,"sidebar":{"position":"left","width_expanded":320,"width_dual_column":240,"display":"post","padding":18,"offset":12},"hljswrap":true,"codeblock":{"theme":{"light":"default","dark":"stackoverflow-dark"},"prism":{"light":"prism","dark":"prism-dark"},"copy_button":{"enable":false,"style":null},"fold":{"enable":false,"height":500},"language":false},"bookmark":{"enable":false,"color":"#222","save":"auto"},"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"stickytabs":false,"motion":{"enable":true,"async":false,"duration":200,"transition":{"menu_item":"fadeInDown","post_block":"fadeIn","post_header":"fadeInDown","post_body":"fadeInDown","coll_header":"fadeInLeft","sidebar":"fadeInUp"}},"prism":false,"i18n":{"placeholder":"Searching...","empty":"We didn't find any results for the search: ${query}","hits_time":"${hits} results found in ${time} ms","hits":"${hits} results found"}}</script><script src="https://cdnjs.cloudflare.com/ajax/libs/hexo-theme-next/8.25.0/config.min.js" defer></script>
|
||||
<script class="next-config" data-name="main" type="application/json">{"hostname":"toozhao.com","root":"/","images":"/images","scheme":"Muse","darkmode":false,"version":"8.28.0","exturl":false,"sidebar":{"position":"left","width_expanded":320,"width_dual_column":240,"display":"post","padding":18,"offset":12,"b2t":true,"scrollpercent":true},"hljswrap":true,"codeblock":{"theme":{"light":"default","dark":"stackoverflow-dark"},"prism":{"light":"prism","dark":"prism-dark"},"copy_button":{"enable":true,"style":"mac"},"fold":{"enable":false,"height":500},"language":false},"bookmark":{"enable":true,"color":"#222","save":"auto"},"mediumzoom":true,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"stickytabs":false,"motion":{"enable":false,"async":false,"duration":200,"transition":{"menu_item":"fadeInDown","post_block":"fadeIn","post_header":"fadeInDown","post_body":"fadeInDown","coll_header":"fadeInLeft","sidebar":"fadeInUp"}},"prism":false,"i18n":{"placeholder":"搜索...","empty":"没有找到任何搜索结果:${query}","hits_time":"找到 ${hits} 个搜索结果(用时 ${time} 毫秒)","hits":"找到 ${hits} 个搜索结果"},"path":"/search.xml","localsearch":{"enable":true,"top_n_per_article":5,"unescape":false,"preload":false,"trigger":"auto"}}</script><script src="/js/config.js" defer></script>
|
||||
|
||||
<meta name="description" content="说到Web 服务器,我们大多想到的是 Apache 这个老前辈和如日中天的Nginx,但是这里今天我将要分享的是 Web 服务器和反向代理服务器的新秀 Caddy。在我们拥有了这么强大的 Nginx 以后我们为什么还需要 Caddy?我认为 Caddy 之所以可以占有一席之地是因为它的两大法宝:配置简单 和 自动启用 HTTPS。下面带下面快速上手这个软件。 安装Caddy 提醒定制化的下载,可">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:title" content="快速上手更简单的 Web 服务器 —— Caddy">
|
||||
<meta property="og:url" content="https://toozhao.com/2017/09/19/caddy/index.html">
|
||||
<meta property="og:url" content="https://toozhao.com/2017/09/19/caddy/">
|
||||
<meta property="og:site_name" content="大染志">
|
||||
<meta property="og:description" content="说到Web 服务器,我们大多想到的是 Apache 这个老前辈和如日中天的Nginx,但是这里今天我将要分享的是 Web 服务器和反向代理服务器的新秀 Caddy。在我们拥有了这么强大的 Nginx 以后我们为什么还需要 Caddy?我认为 Caddy 之所以可以占有一席之地是因为它的两大法宝:配置简单 和 自动启用 HTTPS。下面带下面快速上手这个软件。 安装Caddy 提醒定制化的下载,可">
|
||||
<meta property="og:locale">
|
||||
<meta property="og:locale" content="zh_CN">
|
||||
<meta property="og:image" content="https://wx2.sinaimg.cn/mw1024/49fcaea6gy1fjp0hua3q1j20yp0l7dzc.jpg">
|
||||
<meta property="article:published_time" content="2017-09-19T06:23:53.000Z">
|
||||
<meta property="article:modified_time" content="2025-10-27T10:42:00.951Z">
|
||||
<meta property="article:published_time" content="2017-09-19T06:23:00.000Z">
|
||||
<meta property="article:modified_time" content="2026-08-03T23:42:09.061Z">
|
||||
<meta property="article:author" content="Junv">
|
||||
<meta property="article:tag" content="caddy">
|
||||
<meta name="twitter:card" content="summary">
|
||||
@@ -38,14 +37,11 @@
|
||||
<link rel="canonical" href="https://toozhao.com/2017/09/19/caddy/">
|
||||
|
||||
|
||||
<script class="next-config" data-name="page" type="application/json">{"sidebar":"","isHome":false,"isPost":true,"lang":"zh-Hans","comments":true,"permalink":"https://toozhao.com/2017/09/19/caddy/","path":"2017/09/19/caddy/","title":"快速上手更简单的 Web 服务器 —— Caddy"}</script>
|
||||
<script class="next-config" data-name="page" type="application/json">{"sidebar":"","isHome":false,"isPost":true,"lang":"zh-CN","comments":true,"permalink":"https://toozhao.com/2017/09/19/caddy/","path":"2017/09/19/caddy/","title":"快速上手更简单的 Web 服务器 —— Caddy"}</script>
|
||||
|
||||
<script class="next-config" data-name="calendar" type="application/json">""</script>
|
||||
<title>快速上手更简单的 Web 服务器 —— Caddy | 大染志</title>
|
||||
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-7N71TMKK99"></script>
|
||||
<script class="next-config" data-name="google_analytics" type="application/json">{"tracking_id":"G-7N71TMKK99","only_pageview":false,"measure_protocol_api_secret":null}</script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/hexo-theme-next/8.25.0/third-party/analytics/google-analytics.min.js" defer></script>
|
||||
|
||||
|
||||
|
||||
@@ -56,9 +52,12 @@
|
||||
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.1/anime.min.js" integrity="sha256-XL2inqUJaslATFnHdJOi9GfQ60on8Wx1C2H8DYiN1xY=" crossorigin="anonymous" defer></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/hexo-theme-next/8.25.0/utils.min.js" defer></script><script src="https://cdnjs.cloudflare.com/ajax/libs/hexo-theme-next/8.25.0/motion.min.js" defer></script><script src="https://cdnjs.cloudflare.com/ajax/libs/hexo-theme-next/8.25.0/sidebar.min.js" defer></script><script src="https://cdnjs.cloudflare.com/ajax/libs/hexo-theme-next/8.25.0/next-boot.min.js" defer></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/medium-zoom/1.1.0/medium-zoom.min.js" integrity="sha256-ZgMyDAIYDYGxbcpJcfUnYwNevG/xi9OHKaR/8GK+jWc=" crossorigin="anonymous" defer></script>
|
||||
<script src="/js/utils.js" defer></script><script src="/js/sidebar.js" defer></script><script src="/js/next-boot.js" defer></script><script src="/js/bookmark.js" defer></script>
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/hexo-generator-searchdb/1.5.0/search.js" integrity="sha256-xFC6PJ82SL9b3WkGjFavNiA9gm5z6UBxWPiu4CYjptg=" crossorigin="anonymous" defer></script>
|
||||
<script src="/js/third-party/search/local-search.js" defer></script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -70,20 +69,158 @@
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
/* =========================================================
|
||||
Toozhao blog custom styles (injected via head.njk)
|
||||
阅读体验优化 — 微信读书风格
|
||||
========================================================= */
|
||||
html { scroll-behavior: smooth; }
|
||||
|
||||
/* 主内容阅读宽度 */
|
||||
.post-block, .posts-expand .post-block {
|
||||
max-width: 760px;
|
||||
}
|
||||
|
||||
.post-title {
|
||||
font-size: 1.7em;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.01em;
|
||||
}
|
||||
|
||||
.post-meta { color: #999; font-size: 0.9em; }
|
||||
|
||||
.post-body {
|
||||
font-size: 1.05em;
|
||||
line-height: 1.9;
|
||||
letter-spacing: 0.02em;
|
||||
color: #333;
|
||||
}
|
||||
.post-body p {
|
||||
margin: 1.1em 0;
|
||||
text-align: justify;
|
||||
text-justify: inter-ideograph;
|
||||
}
|
||||
.post-body h1, .post-body h2, .post-body h3, .post-body h4, .post-body h5, .post-body h6 {
|
||||
line-height: 1.4;
|
||||
margin-top: 1.6em;
|
||||
margin-bottom: 0.8em;
|
||||
font-weight: 600;
|
||||
color: #222;
|
||||
}
|
||||
.post-body h2::before, .post-body h3::before, .post-body h4::before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
width: 4px;
|
||||
height: 0.9em;
|
||||
background: #4a90d9;
|
||||
border-radius: 2px;
|
||||
margin-right: 10px;
|
||||
vertical-align: -0.08em;
|
||||
}
|
||||
.post-body img {
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
|
||||
margin: 0.6em auto;
|
||||
display: block;
|
||||
max-width: 100%;
|
||||
}
|
||||
.post-body blockquote {
|
||||
border-left: 4px solid #4a90d9;
|
||||
background: rgba(74, 144, 217, 0.06);
|
||||
margin: 1.4em 0;
|
||||
padding: 0.8em 1.2em;
|
||||
border-radius: 0 8px 8px 0;
|
||||
color: #555;
|
||||
}
|
||||
.post-body blockquote p { margin: 0.4em 0; }
|
||||
.post-body a {
|
||||
color: #2d6cdf;
|
||||
border-bottom: 1px solid rgba(45, 108, 223, 0.3);
|
||||
transition: color 0.2s, border-color 0.2s;
|
||||
}
|
||||
.post-body a:hover { color: #1a4fae; border-bottom-color: #1a4fae; }
|
||||
.post-body code {
|
||||
background: rgba(0, 0, 0, 0.05);
|
||||
border-radius: 4px;
|
||||
padding: 2px 6px;
|
||||
font-size: 0.9em;
|
||||
color: #c7254e;
|
||||
}
|
||||
.post-body table {
|
||||
border-collapse: collapse;
|
||||
margin: 1.2em auto;
|
||||
font-size: 0.95em;
|
||||
}
|
||||
.post-body table th, .post-body table td {
|
||||
border: 1px solid #ddd;
|
||||
padding: 8px 14px;
|
||||
}
|
||||
.post-body table th { background: #f5f7fa; font-weight: 600; }
|
||||
.post-body table tr:nth-child(even) { background: #fafbfc; }
|
||||
.post-body ul, .post-body ol { padding-left: 1.6em; margin: 0.8em 0; }
|
||||
.post-body ul li, .post-body ol li { margin: 0.35em 0; }
|
||||
.post-body hr {
|
||||
border: none;
|
||||
border-top: 1px dashed #ccc;
|
||||
margin: 2em auto;
|
||||
width: 60%;
|
||||
}
|
||||
|
||||
/* 暗色模式(跟随系统,不依赖 NexT darkmode class) */
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body { background: #1b1f24; color: #c8cdd3; }
|
||||
.post-body { color: #c8cdd3; }
|
||||
.post-body h1, .post-body h2, .post-body h3, .post-body h4, .post-body h5, .post-body h6 { color: #e8eaed; }
|
||||
.post-body blockquote { background: rgba(74, 144, 217, 0.1); color: #9aa5b1; }
|
||||
.post-body code { background: rgba(255, 255, 255, 0.1); color: #e88388; }
|
||||
.post-body table th, .post-body table td { border-color: #3a3f45; }
|
||||
.post-body table th { background: #2d3238; }
|
||||
.post-body table tr:nth-child(even) { background: #262a2f; }
|
||||
.post-meta { color: #777; }
|
||||
}
|
||||
|
||||
::selection { background: rgba(74, 144, 217, 0.25); }
|
||||
|
||||
/* 字体调节按钮 */
|
||||
.font-size-control {
|
||||
position: fixed;
|
||||
right: 18px;
|
||||
bottom: 90px;
|
||||
z-index: 1000;
|
||||
background: rgba(0, 0, 0, 0.65);
|
||||
color: #fff;
|
||||
border-radius: 20px;
|
||||
padding: 6px 4px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 2px;
|
||||
user-select: none;
|
||||
}
|
||||
.font-size-control button {
|
||||
background: none;
|
||||
border: none;
|
||||
color: #fff;
|
||||
font-size: 13px;
|
||||
cursor: pointer;
|
||||
padding: 3px 8px;
|
||||
opacity: 0.85;
|
||||
}
|
||||
.font-size-control button:hover { opacity: 1; }
|
||||
</style>
|
||||
|
||||
<noscript>
|
||||
<link rel="stylesheet" href="/css/noscript.css">
|
||||
</noscript>
|
||||
</head>
|
||||
|
||||
<body itemscope itemtype="http://schema.org/WebPage" class="use-motion">
|
||||
<body itemscope itemtype="http://schema.org/WebPage">
|
||||
<div class="headband"></div>
|
||||
|
||||
<main class="main">
|
||||
<div class="column">
|
||||
<header class="header" itemscope itemtype="http://schema.org/WPHeader"><div class="site-brand-container">
|
||||
<div class="site-nav-toggle">
|
||||
<div class="toggle" aria-label="Toggle navigation bar" role="button">
|
||||
<div class="toggle" aria-label="切换导航栏" role="button">
|
||||
<span class="toggle-line"></span>
|
||||
<span class="toggle-line"></span>
|
||||
<span class="toggle-line"></span>
|
||||
@@ -97,11 +234,12 @@
|
||||
<p class="site-title">大染志</p>
|
||||
<i class="logo-line"></i>
|
||||
</a>
|
||||
<p class="site-subtitle" itemprop="description">想要玩得很 High 的程序员</p>
|
||||
<p class="site-subtitle" itemprop="description">Junv's blog</p>
|
||||
</div>
|
||||
|
||||
<div class="site-nav-right">
|
||||
<div class="toggle popup-trigger" aria-label="Search" role="button">
|
||||
<div class="toggle popup-trigger" aria-label="搜索" role="button">
|
||||
<i class="fa fa-search fa-fw fa-lg"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -109,12 +247,38 @@
|
||||
|
||||
|
||||
<nav class="site-nav">
|
||||
<ul class="main-menu menu"><li class="menu-item menu-item-home"><a href="/" rel="section"><i class="fa fa-home fa-fw"></i>Home</a></li><li class="menu-item menu-item-about"><a href="/about/" rel="section"><i class="fa fa-user fa-fw"></i>About</a></li><li class="menu-item menu-item-archives"><a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>Archives<span class="badge">308</span></a></li><li class="menu-item menu-item-tags"><a href="/tags/" rel="section"><i class="fa fa-tags fa-fw"></i>Tags<span class="badge">249</span></a></li><li class="menu-item menu-item-知识图谱"><a href="https://wiki.toozhao.com/" rel="section" target="_blank"><i class="fa fa-sitemap fa-fw"></i>知识图谱</a></li>
|
||||
<ul class="main-menu menu"><li class="menu-item menu-item-home"><a href="/" rel="section"><i class="fa fa-home fa-fw"></i>首页</a></li><li class="menu-item menu-item-tags"><a href="/tags/" rel="section"><i class="fa fa-tags fa-fw"></i>标签</a></li><li class="menu-item menu-item-categories"><a href="/categories/" rel="section"><i class="fa fa-th fa-fw"></i>分类</a></li><li class="menu-item menu-item-archives"><a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>归档</a></li><li class="menu-item menu-item-about"><a href="/about/" rel="section"><i class="fa fa-user fa-fw"></i>关于</a></li>
|
||||
<li class="menu-item menu-item-search">
|
||||
<a role="button" class="popup-trigger"><i class="fa fa-search fa-fw"></i>搜索
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
|
||||
|
||||
<div class="search-pop-overlay">
|
||||
<div class="popup search-popup">
|
||||
<div class="search-header">
|
||||
<span class="search-icon">
|
||||
<i class="fa fa-search"></i>
|
||||
</span>
|
||||
<div class="search-input-container">
|
||||
<input autocomplete="off" autocapitalize="off" maxlength="80"
|
||||
placeholder="搜索..." spellcheck="false"
|
||||
type="search" class="search-input">
|
||||
</div>
|
||||
<span class="popup-btn-close" role="button">
|
||||
<i class="fa fa-times-circle"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="search-result-container">
|
||||
<div class="search-result-icon">
|
||||
<i class="fa fa-spinner fa-pulse fa-5x"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</header>
|
||||
|
||||
@@ -124,45 +288,50 @@
|
||||
<div class="sidebar-inner sidebar-nav-active sidebar-toc-active">
|
||||
<ul class="sidebar-nav">
|
||||
<li class="sidebar-nav-toc">
|
||||
Table of Contents
|
||||
文章目录
|
||||
</li>
|
||||
<li class="sidebar-nav-overview">
|
||||
Overview
|
||||
站点概览
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="sidebar-panel-container">
|
||||
<!--noindex-->
|
||||
<div class="post-toc-wrap sidebar-panel">
|
||||
<div class="post-toc animated"><ol class="nav"><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%AE%89%E8%A3%85"><span class="nav-number">1.</span> <span class="nav-text">安装</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#Hello-World"><span class="nav-number">2.</span> <span class="nav-text">Hello World</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%BC%BA%E5%A4%A7%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6"><span class="nav-number">3.</span> <span class="nav-text">强大的配置文件</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#Host-%E7%9B%AE%E5%BD%95%E4%B8%8B%E7%9A%84%E7%BD%91%E9%A1%B5"><span class="nav-number">3.1.</span> <span class="nav-text">Host 目录下的网页</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E9%85%8D%E7%BD%AE%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86"><span class="nav-number">3.2.</span> <span class="nav-text">配置反向代理</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E8%87%AA%E5%8A%A8-HTTPS"><span class="nav-number">4.</span> <span class="nav-text">自动 HTTPS</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%80%BB%E7%BB%93"><span class="nav-number">5.</span> <span class="nav-text">总结</span></a></li></ol></div>
|
||||
<div class="post-toc animated"><ol class="nav"><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%AE%89%E8%A3%85"><span class="nav-text">安装</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#Hello-World"><span class="nav-text">Hello World</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%BC%BA%E5%A4%A7%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6"><span class="nav-text">强大的配置文件</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#Host-%E7%9B%AE%E5%BD%95%E4%B8%8B%E7%9A%84%E7%BD%91%E9%A1%B5"><span class="nav-text">Host 目录下的网页</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E9%85%8D%E7%BD%AE%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86"><span class="nav-text">配置反向代理</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E8%87%AA%E5%8A%A8-HTTPS"><span class="nav-text">自动 HTTPS</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E6%80%BB%E7%BB%93"><span class="nav-text">总结</span></a></li></ol></div>
|
||||
</div>
|
||||
<!--/noindex-->
|
||||
|
||||
<div class="site-overview-wrap sidebar-panel">
|
||||
<div class="site-author animated" itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||||
<img class="site-author-image" itemprop="image" alt="Junv"
|
||||
src="/images/avatar.gif">
|
||||
<p class="site-author-name" itemprop="name">Junv</p>
|
||||
<div class="site-description" itemprop="description">Go, JavaScript, Ruby on Rails, Java,Docker, CI, CD, Photography</div>
|
||||
<div class="site-description" itemprop="description">分享编程、运维、生活与思考</div>
|
||||
</div>
|
||||
<div class="site-state-wrap animated">
|
||||
<nav class="site-state">
|
||||
<div class="site-state-item site-state-posts">
|
||||
<a href="/archives/">
|
||||
<span class="site-state-item-count">308</span>
|
||||
<span class="site-state-item-name">posts</span>
|
||||
<span class="site-state-item-count">310</span>
|
||||
<span class="site-state-item-name">日志</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="site-state-item site-state-categories">
|
||||
<a href="/categories/">
|
||||
<span class="site-state-item-count">69</span>
|
||||
<span class="site-state-item-name">categories</span></a>
|
||||
</div>
|
||||
<div class="site-state-item site-state-tags">
|
||||
<a href="/tags/">
|
||||
<span class="site-state-item-count">249</span>
|
||||
<span class="site-state-item-name">tags</span></a>
|
||||
<span class="site-state-item-name">标签</span></a>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
<div class="links-of-author animated">
|
||||
<span class="links-of-author-item">
|
||||
<a href="https://github.com/wahyd4" title="GitHub → https://github.com/wahyd4" rel="noopener me" target="_blank"><i class="fab fa-github fa-fw"></i>GitHub</a>
|
||||
</span>
|
||||
</div>
|
||||
<div class="cc-license animated" itemprop="license">
|
||||
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" class="cc-opacity" rel="noopener" target="_blank"><img src="https://cdnjs.cloudflare.com/ajax/libs/creativecommons-vocabulary/2020.11.3/assets/license_badges/small/by_nc_sa.svg" alt="Creative Commons"></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -184,7 +353,7 @@
|
||||
|
||||
|
||||
|
||||
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="zh-Hans">
|
||||
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="zh-CN">
|
||||
<link itemprop="mainEntityOfPage" href="https://toozhao.com/2017/09/19/caddy/">
|
||||
|
||||
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||||
@@ -194,7 +363,7 @@
|
||||
|
||||
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
|
||||
<meta itemprop="name" content="大染志">
|
||||
<meta itemprop="description" content="Go, JavaScript, Ruby on Rails, Java,Docker, CI, CD, Photography">
|
||||
<meta itemprop="description" content="分享编程、运维、生活与思考">
|
||||
</span>
|
||||
|
||||
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
|
||||
@@ -212,16 +381,16 @@
|
||||
<span class="post-meta-item-icon">
|
||||
<i class="far fa-calendar"></i>
|
||||
</span>
|
||||
<span class="post-meta-item-text">Posted on</span>
|
||||
<span class="post-meta-item-text">发表于</span>
|
||||
|
||||
<time title="Created: 2017-09-19 16:23:53" itemprop="dateCreated datePublished" datetime="2017-09-19T16:23:53+10:00">2017-09-19</time>
|
||||
<time title="创建时间:2017-09-19 16:23:00" itemprop="dateCreated datePublished" datetime="2017-09-19T16:23:00+10:00">2017-09-19</time>
|
||||
</span>
|
||||
<span class="post-meta-item">
|
||||
<span class="post-meta-item-icon">
|
||||
<i class="far fa-calendar-check"></i>
|
||||
</span>
|
||||
<span class="post-meta-item-text">Edited on</span>
|
||||
<time title="Modified: 2025-10-27 21:42:00" itemprop="dateModified" datetime="2025-10-27T21:42:00+11:00">2025-10-27</time>
|
||||
<span class="post-meta-item-text">更新于</span>
|
||||
<time title="修改时间:2026-08-04 09:42:09" itemprop="dateModified" datetime="2026-08-04T09:42:09+10:00">2026-08-04</time>
|
||||
</span>
|
||||
|
||||
|
||||
@@ -237,15 +406,19 @@
|
||||
<p>说到Web 服务器,我们大多想到的是 Apache 这个老前辈和如日中天的Nginx,但是这里今天我将要分享的是 Web 服务器和反向代理服务器的新秀 Caddy。在我们拥有了这么强大的 Nginx 以后我们为什么还需要 Caddy?<br>我认为 Caddy 之所以可以占有一席之地是因为它的两大法宝:<code>配置简单</code> 和 <code>自动启用 HTTPS</code>。下面带下面快速上手这个软件。</p>
|
||||
<h2 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h2><p>Caddy 提醒定制化的下载,可以自由选择各种插件和平台。请前往: <a target="_blank" rel="noopener" href="https://caddyserver.com/download">https://caddyserver.com/download</a> 下载。 也可以使用这个一键安装脚本:</p>
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">curl https://getcaddy.com | bash</span><br></pre></td></tr></table></figure>
|
||||
|
||||
<p>完成之后,我们可以尝试执行下<code>caddy -version</code>。 当你看到有有类似:<code>Caddy 0.10.9</code>,即表示安装成功。</p>
|
||||
<h2 id="Hello-World"><a href="#Hello-World" class="headerlink" title="Hello World"></a>Hello World</h2><p>在命令行里面直接输入<code>caddy</code>,然后打开浏览器输入: <code>http://ip:2015</code>。 看到什么了吗? 你得到了一个404页面。Caddy 已经成功运行了。相比与其他浏览器需要各种配置文件才能运行相比,这就是 Caddy 的简单之处,不需要任何配置文件即可运行。当然当我们需要各种高级功能的时候,配置文件还是必不可少的。</p>
|
||||
<p>默认情况下,Caddy 运行在<code>2015</code> 端口。我们可以可以 Caddy 强大的命令行工具来自定义运行端口。</p>
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">caddy -p 80</span><br></pre></td></tr></table></figure>
|
||||
|
||||
<p>在无配置文件的情况下,Caddy 默认是映射当前程序执行的目录所有文件。因此我们可以快速创建一个文件:</p>
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">echo</span> <span class="string">"<h1>Hello Caddy</h1>"</span> >> index.html</span><br></pre></td></tr></table></figure>
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">echo</span> <span class="string">"Hello Caddy"</span> >> index.html</span><br></pre></td></tr></table></figure>
|
||||
|
||||
<p>再次刷新浏览器,刚才我们写的 <code>Hello Caddy</code> 已经出现在页面上了</p>
|
||||
<h2 id="强大的配置文件"><a href="#强大的配置文件" class="headerlink" title="强大的配置文件"></a>强大的配置文件</h2><p>Caddy 各种强大的功能还得需要 Caddyfile 体现。我们可以在任意目录放置我们的配置文件,通过命令行<code>caddy -conf</code> 即可指定</p>
|
||||
<h3 id="Host-目录下的网页"><a href="#Host-目录下的网页" class="headerlink" title="Host 目录下的网页"></a>Host 目录下的网页</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">0.0.0.0:8080 {</span><br><span class="line"> root /usr/local/www/</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
|
||||
|
||||
<p>这里简单解释下,<code>0.0.0.0</code> 表示我们将网站绑定至可以访问到本机的任意一个 IP;<code>8080</code>表示我们将网站暴露在8080端口; <code>root</code> 参数则表示网站的根节点。这就是最简单的一个Host 网站的配置。</p>
|
||||
<p>当前我们可以对网站添加更多的配置。比如设置响应过期时间,启用 gzip, 指定各种日志的输出端。</p>
|
||||
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">0.0.0.0:8080 {</span><br><span class="line"> root /usr/local/www/</span><br><span class="line"> timeouts 30s</span><br><span class="line"> gzip</span><br><span class="line"> <span class="built_in">log</span> /var/log/caddy/access.log</span><br><span class="line"> errors /var/log/caddy/error.log</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
|
||||
@@ -270,6 +443,23 @@
|
||||
|
||||
|
||||
<footer class="post-footer">
|
||||
|
||||
|
||||
<div class="post-copyright">
|
||||
<ul>
|
||||
<li class="post-copyright-author">
|
||||
<strong>本文作者: </strong>Junv
|
||||
</li>
|
||||
<li class="post-copyright-link">
|
||||
<strong>本文链接:</strong>
|
||||
<a href="https://toozhao.com/2017/09/19/caddy/" title="快速上手更简单的 Web 服务器 —— Caddy">https://toozhao.com/2017/09/19/caddy/</a>
|
||||
</li>
|
||||
<li class="post-copyright-license">
|
||||
<strong>版权声明: </strong>本博客所有文章除特别声明外,均采用 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" rel="noopener" target="_blank"><i class="fab fa-fw fa-creative-commons"></i>BY-NC-SA</a> 许可协议。转载请注明出处!
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="post-tags">
|
||||
<a href="/tags/caddy/" rel="tag"># caddy</a>
|
||||
</div>
|
||||
@@ -304,14 +494,14 @@
|
||||
<div class="footer-inner">
|
||||
|
||||
<div class="copyright">
|
||||
©
|
||||
<span itemprop="copyrightYear">2025</span>
|
||||
© 2012 –
|
||||
<span itemprop="copyrightYear">2026</span>
|
||||
<span class="with-love">
|
||||
<i class="fa fa-heart"></i>
|
||||
</span>
|
||||
<span class="author" itemprop="copyrightHolder">Junv</span>
|
||||
</div>
|
||||
<div class="powered-by">Powered by <a href="https://hexo.io/" rel="noopener" target="_blank">Hexo</a> & <a href="https://theme-next.js.org/muse/" rel="noopener" target="_blank">NexT.Muse</a>
|
||||
<div class="powered-by">由 <a href="https://hexo.io/" rel="noopener" target="_blank">Hexo</a> & <a href="https://theme-next.js.org/muse/" rel="noopener" target="_blank">NexT.Muse</a> 强力驱动
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -324,15 +514,48 @@
|
||||
<span class="toggle-line"></span>
|
||||
</div>
|
||||
<div class="sidebar-dimmer"></div>
|
||||
<div class="back-to-top" role="button" aria-label="Back to top">
|
||||
<div class="back-to-top" role="button" aria-label="返回顶部">
|
||||
<i class="fa fa-arrow-up fa-lg"></i>
|
||||
<span>0%</span>
|
||||
</div>
|
||||
<div class="reading-progress-bar"></div>
|
||||
<a role="button" class="book-mark-link book-mark-link-fixed"></a>
|
||||
|
||||
<noscript>
|
||||
<div class="noscript-warning">Theme NexT works best with JavaScript enabled</div>
|
||||
</noscript>
|
||||
<script>
|
||||
/* 字号调节 A- / A / A+(阅读体验) */
|
||||
(function () {
|
||||
'use strict';
|
||||
function initFontSize() {
|
||||
var postBody = document.querySelector('.post-body');
|
||||
if (!postBody || document.getElementById('font-size-control')) return;
|
||||
var bar = document.createElement('div');
|
||||
bar.id = 'font-size-control';
|
||||
bar.className = 'font-size-control';
|
||||
var labels = [['A-', -1], ['A', 0], ['A+', 1]];
|
||||
var current = 1.0;
|
||||
labels.forEach(function (item) {
|
||||
var btn = document.createElement('button');
|
||||
btn.textContent = item[0];
|
||||
btn.title = item[0] === 'A-' ? '减小字号' : item[0] === 'A+' ? '增大字号' : '恢复默认';
|
||||
btn.addEventListener('click', function () {
|
||||
if (item[1] === 0) current = 1.0;
|
||||
else current = Math.min(1.4, Math.max(0.8, current + item[1] * 0.1));
|
||||
postBody.style.fontSize = current + 'em';
|
||||
});
|
||||
bar.appendChild(btn);
|
||||
});
|
||||
document.body.appendChild(bar);
|
||||
}
|
||||
if (document.readyState === 'loading') {
|
||||
document.addEventListener('DOMContentLoaded', initFontSize);
|
||||
} else {
|
||||
initFontSize();
|
||||
}
|
||||
})();
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user