把web项目部署到云服务器上,本质上就是三件事:买一台云服务器、把代码传上去、让服务跑起来并对外开放访问。这个过程没有想象中复杂,但涉及域名、环境、安全等多个环节,第一次操作容易踩坑,下面按实操顺序,把完整的部署流程和常见问题拆开讲清楚。
部署前需要准备什么
云服务器怎么选:配置和价格
新手部署web项目,通常从2核4G内存的配置起步,这个规格能流畅运行一个小型网站或博客,价格一般在每年几百元,新用户常有优惠,如果项目涉及图片处理、视频转码,建议直接上4核8G,带宽选3M到5M即可,单页请求够用,峰值流量不大时不会卡。
主流云厂商有简米云、酷番云、华为云,以及雨云、亿速云等中小平台,地域优先选离你的目标用户近的区域,国内网站选华东或华北节点,面向海外用户则选香港或新加坡节点,操作系统选Ubuntu 22.04 LTS或CentOS 7.9,社区资料多,遇到问题容易搜到解决方案。
本地需要装哪些工具
- 终端软件:Windows用Xshell、MobaXterm,macOS直接用自带终端
- 文件传输工具:WinSCP、FileZilla,用来上传代码包
- 代码版本工具:Git,方便从Gitee或GitHub拉取代码
新手怎么把web项目部署到云服务器上:完整步骤
第一步:登录服务器并创建运行环境
用终端SSH连接服务器,命令格式是ssh root@你的服务器公网IP,首次登录会提示输入密码,如果是密钥登录,提前把公钥配好。
连接成功后,先更新系统包:
apt update && apt upgrade -y # Ubuntu系统 yum update -y # CentOS系统
然后安装Web环境,不用自己一个个装,直接用宝塔面板(Linux面板)能省一大半时间,安装命令:
wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh
安装完成后,面板会输出访问地址和默认账号密码,在浏览器打开面板,登录后选择LNMP组合(Nginx + MySQL + PHP),等待自动安装完成,这套组合是当前web项目的主流运行环境,静态站点、WordPress、ThinkPHP、Laravel都能跑。
如果你的项目是Java或Node.js写的,需要额外安装JDK或PM2进程管理器,宝塔面板的软件商店里可以一键安装。
第二步:上传或拉取代码
把代码传到服务器,有两种常用方式:
- 通过面板文件上传:在宝塔文件管理器中,进到
/www/wwwroot/目录,新建站点文件夹,把本地压缩包上传后解压 - 通过Git拉取:在命令行执行
git clone 你的仓库地址,适合代码在Gitee/GitHub托管的场景
上传完成后,给项目目录设置正确的权限,一般755目录权限、644文件权限,运行目录要指向项目的public或dist文件夹,也就是入口文件所在位置。
第三步:配置域名和站点
如果你已有域名,先在DNS服务商处解析一条A记录,把域名指向服务器的公网IP,然后在宝塔面板中创建站点时,填上域名(不带www也可以,再填一条带www的),面板会自动生成Nginx配置,你只需要在“站点设置”里把运行目录选对,并加上伪静态规则。
没有域名时,可以直接用http://服务器IP地址访问,但部分浏览器会拦截非标准端口,建议把80端口打开,如果项目跑在8080或3000端口,需要在Nginx中做反向代理:
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
}
配置好后重载Nginx,网站就能通过域名访问了。
第四步:安装数据库并导入数据
大多数web项目依赖MySQL或Redis,在宝塔面板中“数据库”模块,添加一个MySQL数据库,记录好用户名和密码,然后将本地的SQL文件导入,方法有两种:
- 在面板的phpMyAdmin中,选择数据库,点击“导入”,上传SQL文件
- 用命令行导入:
mysql -u用户名 -p密码 数据库名 < 数据文件.sql
导入后,修改项目配置文件中的数据库连接信息,常见的文件有.env或config/database.php,改完记得重启PHP或Node服务。
部署web项目到云服务器多少钱:成本明细
费用由三部分组成:云服务器本身、域名、可选的安全或CDN服务。
- 服务器:新用户轻量应用服务器年付约100到300元,通用型云服务器年付约500到1500元
- 域名:
.com域名首年约60到80元,.cn域名约30元,续费会略贵
- 配套服务:免费SSL证书够用,CDN按流量计费,个人站基本花不了多少
对比一下,如果你长期只用一台低配服务器,整个部署成本控制在500元以内是完全可以做到的,如果是学生群体,很多云厂商有学生机优惠,甚至每月不到十块钱。
部署后必做的配置和安全加固
打开安全组端口
在云服务商控制台,找到“安全组”或“防火墙”设置,确保放行80(HTTP)、443(HTTPS)、22(SSH)端口,如果你要用宝塔面板,还需要放行8888端口,这个步骤容易忽略,导致网站打不开。
开启SSL证书
宝塔面板中“站点设置”里有一键申请Let’s Encrypt证书,申请成功后强制HTTPS跳转,这样浏览器地址栏会显示小锁标志,提高站点信任度,注意证书三个月会过期,面板一般会自动续期。
修改SSH默认端口和密码
把SSH端口从22改成其他高位端口,同时设置一个强密码或密钥登录,禁止root直接远程登录,新建一个普通用户赋sudo权限,这些操作能挡住绝大多数暴力破解攻击。
定期备份网站和数据库
用宝塔面板的“计划任务”功能,每天凌晨自动备份网站目录和数据库到本地磁盘或云存储,第一次部署后就把备份任务配置好,省得以后出问题手忙脚乱。
常见问题:为什么网站打不开
- 80端口被占用:检查Nginx是否启动,
netstat -tlnp | grep :80查看端口状态 - 域名解析未生效:用
ping 你的域名看返回的IP是否和服务器一致 - 数据库连接失败:检查配置文件里的数据库地址是不是
localhost,密码和用户名是否正确 - 目录权限不对:运行目录无读取权限时,Nginx会报403或404错误
- 防火墙拦截:云服务商控制台和服务器内部防火墙都要检查,
ufw status查看Ubuntu防火墙状态
当网站能正常打开,但样式丢失或图片不显示时,多半是伪静态规则没配好,或者静态资源路径写死了,检查Nginx里location对静态文件的匹配即可。
进阶:Node.js和前后端分离项目怎么部署
前后端分离项目,前端打包后是一个静态文件夹,直接扔到Nginx的根目录就行,后端是Node.js服务,用PM2管理:
npm install -g pm2 pm2 start app.js --name my-api pm2 save pm2 startup
这样服务器重启后,Node服务也会自动拉起,别忘了在Nginx中把/api路径反向代理到本地某个端口,比如3000或7001。
如果是Vue或React项目,构建时把base路径设为绝对路径,否则部署到子目录会出现资源404,构建命令一般是npm run build,生成的文件在dist目录里。
部署web项目到云服务器有哪些坑:经验总结
- 别用默认安全组:很多云厂商默认只开放22端口,你得手动加80和443
- 环境版本别乱升:PHP 8.0和7.4的语法有差异,老项目可能跑不起来
- 数据库编码要统一:导入SQL前确认
utf8mb4格式,避免中文乱码 - 日志一定要打开:Nginx的错误日志在
/var/log/nginx/error.log,排查问题靠它 - 配置修改后记得重载:改nginx.conf后执行
nginx -s reload,不重载无效
部署web项目到云服务器和本地部署有什么区别
本地部署只影响你自己的电脑,云服务器部署则面向全网,区别体现在三方面:IP是公网固定IP,别人随时随地能访问;硬件资源独享,性能稳定不受本机干扰;可扩展性强,流量大了能加带宽、加节点,另外云服务器自带公网带宽,本地部署还要折腾内网穿透,稳定性差不少。
Q&A:云服务器部署常见疑问
问:部署web项目到云服务器后,代码更新怎么同步?
用Git实现自动化是最省心的方式,在服务器项目目录执行git pull,拉取最新代码,想更省事的话,宝塔面板自带WebHook功能,推完代码自动拉取,前后不到一分钟。
问:一台云服务器能部署多个web项目吗?
可以,通过Nginx的多个server块,或者宝塔面板中创建多个站点,每个域名绑定不同的目录和端口,只要服务器配置够用,几十个项目也能共存,建议每个项目绑定独立域名,访问更清晰。
问:部署web项目到云服务器,选Windows还是Linux好?
Linux是绝大多数生产环境的默认选择,占内存少、稳定性高、命令操作高效,除非你的项目强依赖.NET或Windows组件,否则直接选Ubuntu或CentOS,行业共识认为,Linux服务器占比超过九成,遇到问题更容易找到社区支持。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/694223.html





