尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

从零开始玩转云服务器:建站、Docker部署与游戏服实操指南

从零开始玩转云服务器:建站、Docker部署与游戏服实操指南 最近几年云服务器价格一路走低几十块钱一个月就能拿下一台配置还不错的机器。但很多刚接触云计算的朋友买完之后往往面临同一个尴尬控制台逛了一圈密码重置好了然后呢这台机器能拿来干嘛如果你正处于这个阶段这篇文章就是给你准备的。我会从零开始把云服务器最核心的玩法拆开讲清楚什么是云服务器、第一次怎么登录、怎么用它建个人网站、怎么用 Docker 一条命令跑起各种中间件最后再聊怎么开一个联机游戏服。每一部分都会给出可直接复制的命令和配置尽量让你看完就能打开控制台动手试。文章内容面向小白但也不会只停留在“点到为止”。我会把每一步背后的原理、容易踩的坑、以及生产环境里的安全底线一起讲清楚这样你既能把服务器玩起来也知道怎么玩得稳。1. 先弄明白云服务器到底是什么很多教程上来就让你买机器、敲命令反而忽略了最基础的问题云服务器和普通电脑到底有什么区别为什么建站、跑程序、开游戏服都需要它1.1 通俗理解一台 24 小时在线的电脑你可以把云服务器理解成一台放在机房里面、7×24 小时不间断运行的电脑。它有 CPU、内存、硬盘、网络带宽和我们平时用的电脑在硬件组成上没有本质区别。关键在于它有两个普通电脑不具备的特性拥有独立的公网 IP。别人在任意地方、任意时间都可以通过这个 IP 访问你这台机器。不受本地网络环境影响。你家里的电脑关机、断网、路由器重启都影响不到云服务器上面的服务。正因为这两个特性云服务器非常适合部署需要对外提供访问的软件和服务——网站的后端、数据库、API 接口、联机游戏服务器等都需要一个稳定的、始终在线的运行环境。1.2 它是虚拟主机吗这里要特别区分一个概念云服务器不是传统虚拟主机。虚拟主机通常只提供网站运行环境用户没有系统权限不能随意安装软件更不能改内核、调端口。而云服务器拥有完整的操作系统权限你可以用 root 账号登录想装什么就装什么想怎么配置就怎么配置。举个例子如果你买的是虚拟主机通常只能按服务商规定放 PHP 网站但如果你买了一台云服务器你可以装 MySQL、装 Redis、装 Docker、跑 Java 程序、开 Minecraft 服务器甚至拿它当学习 Linux 的练习机。自由度完全不同。1.3 云服务器的常见用途用途说明适合人群搭建个人网站博客、作品集、企业官网前端/全栈开发者、站长部署后端服务API 接口、管理系统、爬虫定时任务后端开发者跑 Docker 应用快速部署 MySQL、Redis、Nextcloud 等开发/运维开联机游戏服Minecraft、泰拉瑞亚、幻兽帕鲁等游戏玩家、开服爱好者Linux 学习环境练习命令、网络配置、Shell 脚本正在学运维的新手从上表可以看出来云服务器的本质就是一台“基础计算设施”。具体能做什么取决于你在上面装什么软件、跑什么服务。所以接下来我们先解决“怎么进去”的问题。2. 买完服务器先搞懂四个概念在真正开始操作之前有几个云服务器的基础概念强烈建议先理清楚。很多新手后续连不上服务器、端口不通、带宽不够用根源都是这几个概念没搞明白。2.1 公网 IP公网 IP 是云服务器在互联网上的唯一地址相当于你家房子的门牌号。我们后面通过 SSH 连接服务器、在浏览器访问网站、让游戏好友加入房间全部都要用到这个 IP。购买服务器时云厂商通常会分配一个公网 IP你可以在控制台实例列表里看到。特别注意如果你的服务器没有公网 IP或者只是内网 IP外网是无法访问的。购买时务必确认配置了公网 IP。2.2 带宽带宽决定了服务器对外传输数据的速度上限。云服务商的带宽单位通常是 Mbps兆比特每秒。换算成我们更熟悉的下载速度大概是除以 85Mbps 带宽 ≈ 625KB/s 实际下载速度这意味着如果云服务器带宽只有 1Mbps别人访问你网站时的加载速度会非常慢如果用来开游戏服那么多人同时在线时也可能卡顿。对小白来说我建议只是建站、跑 API3Mbps ~ 5Mbps 够用。要开游戏服或者做文件下载根据人数选择 10Mbps 以上或者使用按量付费带宽。2.3 操作系统选什么云厂商一般提供多种系统镜像常见的有Ubuntu / Debian对新手最友好安装软件方便社区资料多。CentOS / 其他 RHEL 系过去很流行但 CentOS 已停止维护新购服务器不建议再选。Windows Server如果你完全不熟悉 Linux且业务必须用 Windows 环境可以选但占用资源更高价格通常也更贵。本文后面所有命令都基于 Ubuntu 系统。如果是其他发行版命令格式会有差异但整体思路一致。2.4 安全组 / 防火墙这是新手最容易忽略、也是导致“服务起不来”的头号原因。云服务器厂商在物理网络层面提供了一道防火墙叫安全组。默认情况下安全组只放行少数端口比如 SSH 的 22 端口其他端口一律拦截。所以你常常会遇到这种情况软件明明启动成功了浏览器却打不开页面。原因大概率就是安全组没有放行对应端口。后面我们搭建网站、跑 Docker、开游戏服每次都要记得去云控制台检查安全组规则放行对应端口。3. 第一次登录云服务器理论说完了现在开始动手。第一步是登录到你的云服务器。3.1 登录方式总览操作系统推荐工具说明WindowsXshell、PuTTY、WindTerm界面化操作适合新手macOSTerminal 自带 ssh 命令打开终端直接连LinuxTerminal 自带 ssh 命令同上任何系统云厂商网页版终端浏览器直接连无需安装工具如果是刚买完机器我建议优先使用云厂商自带的“网页版终端”也叫 Workbench、VNC 等这种方式不需要在本机装任何软件在浏览器里就能完成初始配置。3.2 使用 SSH 命令登录如果你使用的是 macOS 或 Linux打开终端直接执行ssh root你的公网IP例如ssh root123.45.67.89回车后系统会提示输入密码。输入你在云控制台重置的 root 密码注意输入密码时屏幕不会显示任何字符这是正常现象输完直接回车即可。如果是 Windows可以下载 Xshell 或 PuTTY新建会话时填写公网 IP协议选择 SSH端口填 22然后连接按提示输入用户名和密码。3.3 登录后先看哪些信息成功登录后你会看到类似下面的提示符rootVM-0-1-ubuntu:~#这说明你已经拥有了这台服务器的完全控制权。这时候可以执行几条命令确认机器基本状态# 查看系统版本 cat /etc/os-release # 查看 CPU 和内存 lscpu | grep CPU(s) free -h # 查看磁盘使用情况 df -h # 查看公网 IP curl ifconfig.me如果你能正常看到上面命令的输出说明云服务器已经可以正常使用了。安全提示新服务器建议第一时间修改 root 密码或者创建一个普通用户后续日常操作使用普通用户登录避免 root 账号被暴力破解。这部分我会在安全章节详细展开。4. 场景一用云服务器搭建个人网站建网站是云服务器最经典、也最适合练手的玩法。我们从一个最简单的静态网站开始逐步过渡到动态网站。4.1 思路解析访问网站发生了什么在浏览器地址栏输入http://你的公网IP回车之后浏览器会向服务器的 80 端口发送一个 HTTP 请求。服务器上的 Web 软件比如 Nginx接收到请求后会读取磁盘上对应的网页文件再返回给浏览器渲染。所以搭建网站核心只做两件事安装 Web 服务器软件Nginx / Apache。把网页文件放到软件指定的目录里。4.2 安装 Nginx登录服务器后依次执行# 更新软件源 sudo apt update # 安装 Nginx sudo apt install -y nginx # 启动 Nginx sudo systemctl start nginx # 设置开机自启 sudo systemctl enable nginx安装完成后直接在浏览器访问http://你的公网IP如果看到 Nginx 的欢迎页面说明安装成功。如果打不开请立刻去云厂商控制台检查安全组规则确认是否放行了 80 端口。这是新手最常见的问题。4.3 替换默认网页Nginx 默认的网站根目录是/var/www/html。我们在这个目录下新建一个index.html文件sudo vim /var/www/html/index.html写入以下内容!DOCTYPE html html langzh-CN head meta charsetUTF-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 title我的第一个云服务器网站/title /head body h1Hello云服务器/h1 p这个页面运行在我的云服务器上。/p /body /html保存退出后刷新浏览器就可以看到你亲手部署的网页了。4.4 动态网站与建站工具上面的例子是一个纯静态页面。如果你想要一个带后台、能发文章的个人博客可以选择以下方案方案难度说明WordPress Nginx MySQL中等最流行的开源博客系统Typecho / Halo中等轻量级博客程序宝塔面板 一键部署低图形化操作适合小白静态站点生成器低Hugo、VuePress 等本地生成后上传以宝塔面板为例它相当于 Linux 服务器上的可视化控制面板可以用网页界面管理 Nginx、MySQL、文件、计划任务等功能。安装方式可以直接看宝塔官网目前支持一键安装脚本。建站提醒如果你的云服务器在境内机房并且使用域名对外提供网站访问按法规要求需要完成 ICP 备案。如果只是临时用 IP 访问、用于学习或内网测试可以先不备案。等后续决定上线正式网站再按云厂商指引走备案流程。5. 场景二用 Docker 快速部署常用应用如果说建站让你了解了“一台服务器能干什么”那么 Docker 会让你体验到“一条命令部署一个应用”的快乐。5.1 Docker 是什么Docker 是一个开源的容器化平台。你可以把容器理解成一个超轻量的“虚拟机”它把应用和运行环境打包在一起做到“一次构建到处运行”。对使用者来说最大的好处是你不用再手动安装 MySQL、Redis、Nginx、Java 等一系列软件不用纠结版本冲突和环境变量只需要用docker run命令拉取镜像并启动容器应用就跑起来了。下面我们来实际操作。5.2 安装 Docker以 Ubuntu 系统为例推荐使用 Docker 官方源安装# 1. 更新软件包索引 sudo apt update # 2. 安装依赖工具 sudo apt install -y ca-certificates curl gnupg # 3. 添加 Docker 官方 GPG 密钥 sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod ar /etc/apt/keyrings/docker.gpg # 4. 写入 Docker 软件源 echo \ deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release echo $VERSION_CODENAME) stable | \ sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 5. 安装 Docker Engine sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin安装完成后执行sudo systemctl status docker看到active (running)就说明 Docker 已运行。再执行docker --version查看版本号。5.3 用 Docker 跑一个 MySQL这是一个非常经典的场景。以前手动装 MySQL 至少要 10 分钟还要处理初始化密码等一堆问题用 Docker 只需要一条命令sudo docker run -d \ --name mysql8 \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD你的密码 \ -e MYSQL_DATABASEtestdb \ -v /srv/mysql-data:/var/lib/mysql \ mysql:8.0参数解释参数含义-d后台运行容器--name mysql8给容器起名方便后续管理-p 3306:3306将宿主机的 3306 端口映射到容器内的 3306 端口-e MYSQL_ROOT_PASSWORD设置 MySQL root 用户密码-e MYSQL_DATABASE自动创建一个数据库-v /srv/mysql-data:/var/lib/mysql数据持久化容器删除后数据仍在宿主机注意-v这行非常重要。容器本身是临时的如果哪天容器被误删没有挂载数据卷的话数据库数据也会全部丢失。5.4 用 Docker 跑一个 NextcloudNextcloud 是一个开源的私有网盘系统相当于自己搭建的“百度网盘”。sudo docker run -d \ --name nextcloud \ -p 8080:80 \ -v /srv/nextcloud:/var/www/html \ nextcloud启动后浏览器访问http://你的公网IP:8080就能看到 Nextcloud 的初始化界面。按照提示创建管理员账号、选择数据库即可完成部署。5.5 Docker 常用管理命令实际使用中下面几个命令频率最高# 查看运行中的容器 sudo docker ps # 查看容器日志 sudo docker logs mysql8 # 进入容器内部 sudo docker exec -it mysql8 bash # 停止/启动/重启容器 sudo docker stop mysql8 sudo docker start mysql8 sudo docker restart mysql8 # 删除容器 sudo docker rm mysql8 # 查看镜像列表 sudo docker images重要提醒生产环境修改容器配置、升级版本时务必先备份数据卷再操作。尤其是数据库类容器在删除或升级前一定要确认数据已经做了快照或导出了备份。5.6 Windows 用户安装 Docker Desktop 的注意事项如果你不想在云服务器上折腾只想在本地 Windows 电脑上使用 Docker通常需要安装 Docker Desktop。这里频繁出现的一个问题是Docker Desktop failed to start because virtualization support is not detected.也就是系统检测不到虚拟化支持。原因通常是BIOS 里没有开启虚拟化VT-x / AMD-V。Windows 功能里没有启用“虚拟机平台”和“适用于 Linux 的 Windows 子系统”。排查方法打开任务管理器 → 性能 → CPU查看“虚拟化”是否显示“已启用”。如果显示“已禁用”需要重启电脑进入 BIOS找到 Intel Virtualization Technology 或 SVM Mode 并开启。进入“控制面板 → 程序 → 启用或关闭 Windows 功能”勾选“虚拟机平台”和“适用于 Linux 的 Windows 子系统”然后重启。在云服务器上则一般不存在这个问题因为云厂商通常已经在虚拟化层配置好了。6. 场景三开一个 Minecraft 联机游戏服云服务器除了跑正经业务还有一个很受欢迎的使用场景——开联机游戏服。这里以 Minecraft Java 版服务端为例介绍完整的开服流程。6.1 开服前要准备什么一台至少 2GB 内存的云服务器官方服务端默认最低 1GB2GB 会更流畅。已经放行25565端口的流量。Minecraft 服务端 jar 包去官网或正规启动器页面下载不要从陌生网站下载来历不明的 jar。6.2 安装 JavaMinecraft 服务端依赖 Java 运行环境。以 Minecraft 1.20 及以上版本为例需要 Java 17 或更高版本sudo apt update sudo apt install -y openjdk-17-jre-headless安装完成后验证java -version能看到 OpenJDK 版本号即安装成功。6.3 下载并启动服务端# 创建独立目录存放服务端 mkdir ~/mc-server cd ~/mc-server # 将下载好的 server.jar 放到这个目录第一次启动java -Xmx1024M -Xms1024M -jar server.jar nogui启动过程会生成eula.txt文件并退出。这个文件里写明了最终用户许可协议需要手动同意# 将 eulafalse 改为 eulatrue sed -i s/eulafalse/eulatrue/ eula.txt然后再次启动java -Xmx1024M -Xms1024M -jar server.jar nogui看到类似Done (xx.xxxs)的输出就说明服务器启动成功了。6.4 让朋友加入你的服务器打开 Minecraft 游戏选择“多人游戏”→“添加服务器”服务器地址填写你的公网IP:25565如果连接失败请依次检查云控制台安全组是否放行了 TCP 25565 端口。服务器是否还在运行窗口是否显示 Done。服务端是否报错比如内存不足、端口被占用。6.5 进阶用 Docker 开服游戏服也可以容器化运行。例如使用 itzg/minecraft-server 镜像一条命令就能起服务sudo docker run -d \ --name mc-server \ -p 25565:25565 \ -e EULATRUE \ -e MEMORY1G \ -v /srv/minecraft:/data \ itzg/minecraft-server:latest这种方式的好处是升级版本、换服务端类型都比较方便。不过要注意容器镜像版本繁多含义不完全相同建议先查看镜像文档确认参数。7. 常见问题为什么我的服务总是连不上搭建过程中遇到最多的大概率不是“软件报错”而是“服务明明起来了外面就是访问不到”。下面把高频问题集中整理一下。问题现象常见原因解决思路SSH 无法连接安全组未放行 22 端口云控制台添加入方向规则放行 TCP 22网站打不开80/443 端口未放行放行对应端口并确认 Nginx 已启动Docker 容器端口不通宿主机端口映射未生效或安全组未放行docker ps查看端口映射再检查安全组游戏服连接超时25565 端口未放行放行 TCP 25565确认服务端 DoneNginx 显示欢迎页默认页面未替换检查/var/www/html/index.html内存不足导致应用被杀云服务器配置太低升级内存或用 swap 临时缓解7.1 端口不通的标准排查顺序如果你发现某个服务外网访问不了强烈建议按下面顺序排查不要上来就重装软件# 第 1 步确认服务在监听哪个端口 ss -tlnp # 第 2 步本机测试端口是否可访问 curl http://127.0.0.1:8080 # 第 3 步检查系统防火墙状态 sudo ufw status # 第 4 步检查云控制台安全组是否放行该端口 # 进入云厂商控制台查看安全组规则第 3、4 步是最容易混淆的。很多人只关了系统防火墙但忘了安全组还在拦截或者安全组放行了但系统防火墙没开也会导致不通。7.2 Docker Desktop 虚拟化报错Windows 上使用 Docker Desktop 经常遇到virtualization support not detected的提示。前面 5.6 节已经讲过解决方案这里再做一次简化总结任务管理器查看 CPU“虚拟化”是否显示“已启用”。如果没有BIOS 里开启 VT-x 或 AMD-V。启用 Windows 功能和 BIOS 虚拟化设置后重启电脑。如果 Docker Desktop 还报错卸载重装最新版本并检查 WSL2 是否正常。7.3 云数据库连接不上有的同学会在云服务器上用 Docker 跑 MySQL然后用本地的 Navicat 连接发现一直报错。常见原因除了端口没放行外还有两点MySQL 用户权限不够root 用户默认可能只允许 localhost 连接需要创建远程用户并授权。身份认证插件不兼容MySQL 8.0 默认使用 caching_sha2_password老版本客户端可能不支持可通过修改用户认证方式解决。在 MySQL 容器里执行sudo docker exec -it mysql8 mysql -uroot -p-- 创建允许任意主机连接的用户 CREATE USER root% IDENTIFIED BY 你的密码; GRANT ALL PRIVILEGES ON *.* TO root% WITH GRANT OPTION; FLUSH PRIVILEGES;这里再次提醒生产环境不要轻易给 root 开放远程访问权限。如果只是开发调试建议创建最小权限的专用账号并且限制来源 IP。8. 云服务器安全这几条底线不能丢很多小白拿到服务器后第一时间就是装软件、跑服务却忘了安全加固。结果过几天一看CPU 占用 100%系统被植入了挖矿程序。下面列出的几条底线建议每台服务器都配上。8.1 禁用 root 直接登录改用密钥认证云服务器默认的 root 账号是暴力破解的首要目标。正确做法是创建一个普通用户。将本地电脑的公钥放到服务器的~/.ssh/authorized_keys文件中。修改 SSH 配置禁止 root 登录和密码登录。创建用户# 创建用户 sudo adduser deploy # 赋予 sudo 权限 sudo usermod -aG sudo deploy在本机生成密钥如果还没有ssh-keygen -t ed25519 -C your_emailexample.com然后拷贝公钥到服务器macOS/Linuxssh-copy-id deploy你的公网IP修改 SSH 配置/etc/ssh/sshd_configPermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes改完后重启服务sudo systemctl restart sshd操作前务必确认自己的密钥已经能正常登录否则一重启 SSH 就可能把自己锁在门外。8.2 安全组遵循最小放行原则安全组是云服务器第一道安全屏障。放行端口时只放行业务必须的端口不要图省事一键放行所有端口。比如搭建网站只需要放行22 端口SSH最好限制来源 IP80 端口HTTP443 端口HTTPS如果已配置证书其他端口按需添加像 Docker 暴露的 3306、6379 等端口在安全组层面不要直接对全网开放。如果确实需要远程管理数据库可以考虑通过 SSH 隧道连接而不是把端口暴露到公网。8.3 定期创建快照和备份云厂商一般都提供“快照”功能可以对整个云盘做一次状态备份。建议重大配置变更前先做一次快照。重要的数据库数据周期性导出备份。备份文件不要只放在同一台服务器上可以传到对象存储或另一台机器。以 Docker MySQL 为例备份命令sudo docker exec mysql8 sh -c exec mysqldump --all-databases -uroot -p$MYSQL_ROOT_PASSWORD /srv/backup/backup_$(date %F).sql8.4 更新软件源并定期升级刚装完系统后建议立即执行一次sudo apt update sudo apt upgrade -y之后养成定期升级的习惯尤其是 SSH、Web 服务器、数据库等关键组件。云服务器暴露在公网环境中很多入侵事件利用的都是未打补丁的已知漏洞。8.5 涉及删除和变更时先在测试环境验证最后一条是工程实践经验不只是技术问题。无论是改数据库结构、删数据文件还是升级生产环境依赖都要遵循一个原则有备份再动手先在测试环境验证再在生产环境操作。如果你刚接触云服务器建议在正式使用前先熟悉快照、回滚、备份恢复这套流程而不是等出问题之后再学。9. 总结你的下一步学习路线这篇文章从概念到实操完整走了一遍云服务器的基础用法。现在你至少应该掌握云服务器的本质和常见用途。公网 IP、带宽、安全组等核心概念。使用 SSH 登录服务器。用 Nginx 搭建一个静态网站。用 Docker 快速部署 MySQL、Nextcloud 等应用。开一个 Minecraft 游戏服。服务端口不通时的排查顺序。云服务器的基本安全加固措施。如果这些内容你都能亲手完成一遍说明你已经具备了独立使用云服务器的基础能力。接下来可以往这些方向继续深入学习方向说明Linux 命令与运维top、systemctl、journalctl、crontab 等Docker Compose用编排文件一次性管理多个容器HTTPS 证书为网站配置免费的 SSL 证书CI/CD 自动化部署GitHub Actions 自动拉取代码、构建、部署反向代理通过 Nginx 把不同服务映射到不同域名云服务器是一台可以随心折腾的机器只要注意备份和安全大胆尝试是最好的学习方式。如果这篇文章对你有帮助建议收藏备用以后遇到具体问题时也可以随时回来对照排查。祝你早日玩转属于自己的第一台云服务器。
返回列表