<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>安全组 on 鹿鸣青野的blog</title><link>https://www.sylgalaxy.xyz/tags/%E5%AE%89%E5%85%A8%E7%BB%84/</link><description>Recent content in 安全组 on 鹿鸣青野的blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Tue, 25 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.sylgalaxy.xyz/tags/%E5%AE%89%E5%85%A8%E7%BB%84/index.xml" rel="self" type="application/rss+xml"/><item><title>C++ 服务部署实战：从源码到公网访问</title><link>https://www.sylgalaxy.xyz/posts/cpp-http-server-deploy/</link><pubDate>Tue, 25 Aug 2026 00:00:00 +0000</pubDate><guid>https://www.sylgalaxy.xyz/posts/cpp-http-server-deploy/</guid><description>&lt;blockquote&gt;
&lt;p&gt;在一台 2C2G 的云服务器上实测：单文件 HTTP 服务器，&lt;code&gt;g++&lt;/code&gt; 编译，监听 8080 端口，从编译到公网访问全流程跑通。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="1-socket-七步流程"&gt;1. socket 七步流程&lt;/h2&gt;
&lt;p&gt;示例是一个约 60 行的单文件程序 &lt;code&gt;http_server.cpp&lt;/code&gt;，纯 Linux socket API、零第三方依赖，放在你自己的项目目录里即可。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;socket() → bind() → listen() → accept() → recv() → send() → close()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 建电话 插网线 开机待命 接电话 听需求 答复 挂断
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;步骤&lt;/th&gt;
&lt;th&gt;调用&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;code&gt;socket(AF_INET, SOCK_STREAM, 0)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;IPv4 + TCP，返回文件描述符（Linux 一切皆文件）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;code&gt;bind(fd, &amp;amp;addr, sizeof)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;绑定地址；&lt;code&gt;INADDR_ANY&lt;/code&gt;（0.0.0.0）= 监听所有网卡&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;code&gt;listen(fd, 16)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;开始待命；16 是 backlog 等待队列长度&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;code&gt;accept(fd, ...)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;阻塞等客户端，返回新 fd（每客户一个）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;code&gt;recv(fd, buf, n, 0)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;读 HTTP 请求报文（原始文本）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;code&gt;send(fd, resp, len, 0)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;回 HTTP 响应&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;&lt;code&gt;close(fd)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;挂断，回 while 等下一客&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;要点：&lt;/p&gt;</description></item><item><title>云服务器认识与使用：从虚拟机到公网部署</title><link>https://www.sylgalaxy.xyz/posts/cloud-server-intro/</link><pubDate>Fri, 21 Aug 2026 00:00:00 +0000</pubDate><guid>https://www.sylgalaxy.xyz/posts/cloud-server-intro/</guid><description>&lt;blockquote&gt;
&lt;p&gt;适用读者：有 C++/Qt 开发基础，用 VMware 虚拟机跑过 Linux、做过 Qt 界面开发，正在学 Go，手边有一台入门配置的云服务器（示例：2 核 / 2G / 40G）。
主线：先用起来，再理解原理。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="1-认识你买的到底是台什么机器"&gt;1. 认识：你买的到底是台什么机器&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;核心要点&lt;/strong&gt;：云服务器不是神秘的新东西——它就是「一台放在数据中心里、常年开机、你通过 SSH 远程使用的 Linux 电脑」，和你在 VMware 里装的那台 Ubuntu 骨子里是同一种东西。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="11-先回忆你在虚拟机里做过什么"&gt;1.1 先回忆：你在虚拟机里做过什么&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;用 VMware 装一个 Ubuntu 服务器版，在里面跑现成的后端程序、做 Qt 界面开发。&lt;/li&gt;
&lt;li&gt;这台 Ubuntu 是「一台软件模拟出来的电脑」，运行在你自己的 Windows 上。&lt;/li&gt;
&lt;li&gt;你能 &lt;code&gt;ssh&lt;/code&gt; 连它、在里面装服务、跑程序——这些和云服务器上的操作&lt;strong&gt;几乎一模一样&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;💡 为什么先从虚拟机讲起：你已经在「一台假的服务器」上做过大部分操作了。云服务器只是把「这台假的」换成「一台真的、别人帮你放在机房的」。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="12-两个易混的词服务器和服务端"&gt;1.2 两个易混的词：「服务器」和「服务端」&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;词&lt;/th&gt;
&lt;th&gt;含义&lt;/th&gt;
&lt;th&gt;举例&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;服务器 (Server)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;一台&lt;strong&gt;长期开机的电脑&lt;/strong&gt;（硬件 + 系统）&lt;/td&gt;
&lt;td&gt;你的云上主机、机房里的物理机&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;服务端 (Server-side)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;一种&lt;strong&gt;软件的运行角色&lt;/strong&gt;，相对客户端而言&lt;/td&gt;
&lt;td&gt;你用 Qt 写的 TCP Server、Nginx、MySQL、Go 的 HTTP 服务&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;「开启服务器端」= 在某个服务器上，把一个&lt;strong&gt;服务程序&lt;/strong&gt;跑起来并对外提供功能。&lt;/li&gt;
&lt;li&gt;这个程序跑在哪台机器上都行（本机、虚拟机、云服务器），区别只在&lt;strong&gt;谁能访问到它&lt;/strong&gt;——这一点正是第 2 章的核心。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="13-一台服务器由什么组成"&gt;1.3 一台服务器由什么组成&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;组成部分&lt;/th&gt;
&lt;th&gt;作用&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;硬件&lt;/td&gt;
&lt;td&gt;CPU、内存、磁盘、网卡——决定这台机器能干多重的活&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;操作系统&lt;/td&gt;
&lt;td&gt;你熟悉的 Linux（Ubuntu、Alibaba Cloud Linux、CentOS 等）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;服务软件&lt;/td&gt;
&lt;td&gt;提供业务能力的程序：Nginx、MySQL、你的 Go 后端&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IP / 端口 / 域名&lt;/td&gt;
&lt;td&gt;IP 定位机器、端口定位机器上的程序、域名给人好记&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="2-区别云服务器-vs-虚拟机开启服务器端"&gt;2. 区别：云服务器 vs 虚拟机「开启服务器端」&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;核心要点&lt;/strong&gt;：技术层面你几乎不换思路——都是「Linux + 服务程序」。真正的差别在 4 件事：&lt;strong&gt;谁能访问、关机了怎么办、坏了谁来修、按什么计费&lt;/strong&gt;。&lt;/p&gt;</description></item></channel></rss>