做一个简单的web服务器,最直接的答案是:用Python内置的http.server模块,一条命令就能在本地把文件夹变成可访问的网页服务。
很多朋友第一次接触web服务器,以为要花钱买设备、配环境、写复杂配置,个人学习、本地调试或临时分享文件,用系统自带的工具就够了,下面我从最轻量的方案讲起,再逐步对比不同场景下怎么选、怎么做,以及搭建网站服务器大概需要多少钱。
怎么做一个简单的web服务器:先用Python命令跑起来
无论你用的是Windows、macOS还是Linux,只要装了Python 3,就能用最基础的方式启动服务,操作路径是打开终端,进入你想共享的文件夹,执行命令:
python3 -m http.server 8080
Windows系统如果命令没反应,试试python -m http.server 8080,看到Serving HTTP on 0.0.0.0 port 8080这样的提示,就说明成功了,此时在浏览器地址栏输入http://localhost:8080,就能看到文件夹里的文件列表。
这个简易服务器做了什么
- 把当前目录变成网站的根目录
- 自动列出目录下的文件和子文件夹
- 支持基本的静态文件访问,比如HTML、CSS、图片
- 同一局域网内,别人用你的IP加端口也能访问,比如
http://192.168.1.5:8080
看清楚,这种方式适合临时用,它不支持PHP、Python等后端脚本,也不适合直接暴露到公网,想长期上线给外人访问,得换更正式的工具。
比一比:用nginx还是apache建服务器更省心
当你准备把网站放到公网上,面临的第一道选择题就是:用nginx还是apache,行业共识认为,新手做静态网站或简单反向代理,nginx更友好;老手维护传统动态站点,apache更习惯。
nginx的优势
- 配置语法清晰,一个
server{}块就是一个站点 - 静态文件处理效率高,内存占用少
- 反向代理和负载均衡配置简单,适合挂多个应用
- 处理高并发连接时表现更稳
apache的优势
- 拥有
.htaccess文件,可以在目录级覆盖配置 - 支持模块多,兼容老项目方便
- 文档和社区资料非常多,遇到问题容易搜到答案
新手选择建议
如果只是搭建个人博客、展示页或给微信小程序做接口中转,用nginx,如果学校或公司老系统明确要求apache环境,那就别纠结。
安装方面,Ubuntu系统分别是sudo apt install nginx和sudo apt install apache2,装完启动服务后,默认页面能打开就算成功了一半。
本地调试与公网发布,两个场景操作路径不同
很多朋友问“怎么做一个简单的web服务器”时,其实还没分清自己是要本地玩,还是要上线,这两条路差别挺大。
本地调试场景:能跑代码就行
本地开发前端项目时,我常用Node.js自带的npx serve命令,或者Python的Flask框架,操作方式如下:
npx serve . -l 3000
Flask写法更符合代码习惯:
from flask import Flask, send_from_directory
app = Flask(__name__)
@app.route('/')
def index():
return send_from_directory('.', 'index.html')
app.run(host='0.0.0.0', port=5000)
本地调试的关键是改完代码保存,浏览器刷新就能看到效果,用Python的http.server就够,没必要为了改一行样式去重启nginx。
公网发布场景:认证和域名配置躲不开
想让外网稳定访问,需要三样东西:一台有公网IP的服务器、一个解析好的域名、配置正确的web服务,据工信部统计,国内网站服务器备案是必经环节,绑定域名后就得在服务商后台提交备案。
发布步骤大致是:
- 买一台云服务器,比如简米云或酷番云的轻量应用服务器,价格较低,几十块钱一个月的配置够用
- 安装nginx,把项目文件上传到
/var/www/html目录 - 修改
/etc/nginx/sites-available/default,把root指向你的项目文件夹 - 执行
nginx -t检查配置语法 - 执行
systemctl reload nginx让配置生效 - 在域名服务商解析一条A记录到服务器IP
- 等备案审核通过,就能通过域名访问
不少朋友卡在防火墙这一步,云服务商的控制台和系统内部的防火墙都要放行80和443端口,Ubuntu系统用sudo ufw allow 80和sudo ufw allow 443放行。
搭建简单网站服务器需要多少钱:从零成本到低成本过渡
关于搭建网站服务器的价格,市面上说法比较多,我按自己的使用经历拆解一下:
零成本方案
- 自己电脑装Python或Node.js,只在本机跑
- 用内网穿透工具,比如cloudflared临时把本地服务映射到公网,适合演示项目
- GitHub Pages免费托管静态网页,不需要自己维护服务器
低成本方案
- 云服务器入门款,一年价格大约一顿聚餐费用,具体看活动
- 免费的HTTPS证书,Let’s Encrypt或简米云免费证书都能签
- 域名首年注册费,选常见的后缀,续费价格提前看清
整体算下来,非营利性质的个人网站,一年服务器加域名成本能控制在几百元以内,想省心就买云厂商的轻量应用服务器,自带镜像能一键装好nginx环境,省去配置系统的时间。
进阶一点:给web服务器加HTTPS和访问日志
一个能用的服务器和好用的服务器,差距在这两点,HTTPS是浏览器的信任基础,没加密的网站会被提示“不安全”。
用certbot签发免费证书
安装certbot后,执行:
sudo certbot --nginx -d 你的域名.com
certbot会自动改nginx配置并续签证书,之后访问网站就带绿锁了。
开启访问日志便于排错
nginx默认日志路径是/var/log/nginx/access.log,想查看实时访问情况,执行:
tail -f /var/log/nginx/access.log
看到陌生IP密集请求某个路径,基本就是在扫描漏洞,此时可以结合fail2ban工具做简单封禁。
怎么做一个简单的web服务器:新手常问的三个问题
问:本地用Python起的服务,手机电脑怎么打不开
先确认启动时用的是0.0.0而不是0.0.1,再查系统防火墙有没有放行端口,最后确认手机和电脑连的是同一个Wi-Fi,路由器开了AP隔离也会导致互访失败。
问:nginx配置改了没生效是怎么回事
八成是改了配置文件没做语法检查就重启,语法错误导致nginx没起来,另外sites-available里的配置需要软链接到sites-enabled才生效,很多新手只改了前者忘了后者,执行nginx -t能看到具体报错行号。
问:内网穿透和云服务器哪个更适合临时演示
只演示一两天,用内网穿透工具免费版本就够了,配置简单,不需要备案,打算长期跑业务,云服务器更稳定,域名和备案迟早要办,内网穿透免费版常有速率限制和随机域名,不适合正式环境。
回到最初的问题,做一个简单的web服务器不是难事,先明确本地调试还是公网上线,再选Python内置模块或者nginx,最后按步骤加固安全、配上HTTPS,整个过程动手敲一遍最长也就半天时间,这篇文章里的命令和路径你可以直接复制去验证,跑通了自然就理解web服务器是怎么回事了。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/702957.html





