1. 部署的本质与整体思路拆解
1.1 "部署"到底意味着什么
第一次把自己写的代码"搬"到一台服务器上,让它跑起来,对很多刚接触开发的朋友来说,这一步比写代码本身还要让人头疼。我第一次部署项目的时候,整整折腾了一个周末,中间一度怀疑人生:明明本地跑得好好的,怎么换台机器就各种报错?
先说清楚一个概念:部署这件事,本质上就是把你本地电脑上"碰巧能跑"的环境,在另一台永远开机的机器上重新复现一遍,然后把代码传过去,让它对外提供服务。这里的关键词是复现环境,而不仅仅是传文件。
很多小白容易栽跟头,就是因为只想着"把代码传上去",完全忽略了服务器上的操作系统、运行时版本、依赖关系、端口开放、进程守护这些东西。这就好比你把一份菜谱给了别人,但对方厨房里连锅都没有,那肯定做不出菜来。
所以,部署项目需要三条线同时推进:
- 代码线:项目文件怎么从本地变成服务器上的文件
- 环境线:服务器上需要装哪些软件、什么版本,才能把你的项目跑起来
- 服务线:项目启动之后,怎么让它一直活着,还允许别人从公网访问
这三条线都通了,才算真正部署成功。
1.2 两条主流方案:裸机部署与容器化部署
部署方案现在基本分两大流派:传统的"裸机部署"和现在越来越主流的"Docker容器化部署"。
裸机部署的思路很直接:在服务器上手动安装Node.js、Python、MySQL之类的东西,配好环境变量,然后把你项目的代码拉下来,运行相应的启动命令。好处是每一步都看得见摸得着,出了问题你能知道具体是哪个环节挂了,对理解整个部署链路特别有帮助。缺点是环境隔离差,如果你的服务器上同时跑多个项目,一个项目要Python 3.8,另一个要Python 3.11,就很容易打架。
Docker的思路则是把环境整个打包进去。你的项目、运行时、依赖、配置,全部写进一个镜像里,在服务器上直接跑这个镜像。好处是环境完全一致,本地能跑,服务器上就一定也能跑,而且想删就删,不会污染服务器的系统环境。缺点是你得额外理解镜像、容器、数据卷这些概念,对纯小白来说多了一层学习成本。
我自己给新人的建议是:第一条项目别贪快,老老实实走一遍裸机部署。哪怕多花点时间,你也能搞清楚"服务器上跑一个项目到底需要什么"。等有了这个底子,再上Docker,你会发现Docker其实就是把"手动装环境"变成了"自动装环境",理解起来会快很多。这篇文章先按裸机主线路走,后面单独开一个章节讲Docker方案。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 服务器选购与基础环境准备
2.1 服务器怎么选:配置、系统与厂商
部署的第一步是拥有一台服务器。对新手来说,我建议直接上云服务器,别折腾物理机,也别一开始就搞什么服务器集群。云服务器的核心优势是开箱即用,而且有一堆配套的防护能力,你要做的就是选配置然后付钱。
配置方面,如果你只是想部署自己的练手项目、个人博客或者一个小型应用,1核2G内存起步就够了。这个配置跑一个Node.js或Python后端应用,顺带挂个MySQL,日常访问量不大是完全没问题的。如果你预算稍微充裕一点,或者项目里涉及Java系的东西(比如Spring Boot,启动就吃不少内存),可以选2核4G,用起来会更从容。至于带宽,新人选3M到5M的按流量计费或者固定带宽都行,只是自己测试的话,1M固定带宽也能忍受,就是稍微慢一点。
系统选哪个?Ubuntu 22.04 LTS是我最推荐给新手的选择。原因不是什么高深的理由,纯粹是它用户基数大、出问题搜一下基本都有答案,而且软件包更新及时。CentOS现在已经停止维护了,除非你所在的公司有特定要求,否则没必要在一个新部署的项目上选它。
厂商的选择就看你自己的实际情况了,主流的云厂商都提供新用户优惠。购买时注意地域选择,离你的目标用户近一点延迟就低一点,国内服务器后续如果要做域名备案,这个心里要有数。如果只是想学习练手,完全不想管备案那摊事,选择境外节点也是一个办法,访问速度会略慢,但省心。
2.2 安全组:云服务器第一道坎
服务器买完之后,很多小白会卡在最基础的一步:怎么连不上。这个问题的头号原因就是安全组没配好。
安全组可以理解成云服务器外层的"门禁系统",它在你的操作系统外面挡了一道。你服务器上某个端口即使已经开放了,安全组不放行,公网照样访问不到。购买服务器时,一般会让你选安全组规则或默认的安全策略,很多人直接点了默认就完事,结果默认只放行了22端口(SSH用的),其他全都不通。
所以拿到服务器之后,第一件事就是去云厂商的控制台,找到安全组或防火墙管理页面,确认或者添加入方向规则。对我们接下来的部署来说,以下几个端口是必须要放行的:
| 端口 | 用途 | 说明 |
|---|---|---|
| 22 | SSH远程登录 | 默认开启,别关 |
| 80 | HTTP访问 | Web服务都用这个 |
| 443 | HTTPS访问 | 配证书之后要用 |
| 3000/8080 | 项目调试端口 | 看你的应用实际监听哪个端口,调试期开放,上线后可以关掉只走Nginx |
配置安全组的时候注意,云厂商的规则一般会要求你填写"协议、端口范围、授权对象"。授权对象填0.0.0.0/0表示允许所有IP访问,这个在80和443这种对外端口上是合理的,但如果是数据库端口(比如3306),强烈建议不要对全网开放,后面安全那节我会专门说。
2.3 用SSH登录服务器:装个顺手的终端工具
安全组配好之后,接下来就是登录服务器。在Windows上,以前大家习惯用Xshell这类工具,但现在微软自带的Windows Terminal其实也够用了,你只需要知道一个命令:
bash复制ssh 用户名@服务器IP地址
比如你的服务器用户名是root,IP是123.123.123.123,那就输入:
bash复制ssh root@123.123.123.123
回车之后它会提示你输入密码,输入的时候屏幕上不会显示任何字符,这个别慌,正常现象,敲完回车就行。第一次连接时会问你是否确认主机指纹,输入yes回车即可。
如果你觉得命令行太朴素,也可以装一个MobaXterm或者FinalShell,它们
