用各种方法搭建自己的个人网页服务器
时间:2022-08-20 16:48:01 | 来源:网站运营
时间:2022-08-20 16:48:01 来源:网站运营
笔者就是从搭建web服务器开始真正入坑搞电脑的,虽然说被坑的非常惨,但是还是挺有意思的。后来又搭建其他服务器(Minecraft、KMS),学习Python和搞linux也积累了不少经验。
感觉自己的记性一天不如一天,于是写下记下笔记留给后浪参考学习。因为时间跨度太长,本文长期更新,笔者想到哪里就尽量写到哪里。
每个读者的起点可能不一样,尽量挑自己能理解的地方开始读,不懂的尽可能跳过,笔者自己并不是学计算机的,所以如果有错误也请大牛们批评指出。
目录
一、关于http、html、socket和TCP/ip协议
二、在windows上搭建服务器
1.使用HFS搭建服务器
三、内网穿透
1.花生壳内网穿透
2.ZeroTier内网穿透
3.使用apache搭建(略)
四、在linux上搭建服务器
五、用Python自己写一个服务器
六、用易语言自己写一个服务器
一、关于http、html、socket和TCP/ip协议
1.关于http协议
不知道小伙伴们在开心的上网冲浪的时候会不会有这样的疑惑,我在访问4399的时候浏览器为什么会自动补上了一个"http://"呢,这是因为这个前缀规定了我们浏览器与web服务器交互的时候使用http(超文本传输)协议,实际上浏览器可以有很多协议,比如还支持ftp(文件传输)协议,还有最新的websocket的协议(ws://)。
这是去小学的车某些浏览器支持ftp协议2.关于html
HTML称为超文本标记语言,既然http传输的是超文本,那么html自然是超文本了,比如我们把百度保存到硬盘里
用记事本打开,果然是文本
接下来我们不讨论这个文本怎么写的,我们只做个简单的,写个hellow world
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Title</title></head>Hellow World<body></body></html>
开个笔记本,粘一下代码,保存,注意文件名改成index.html,编码选UTF-8
打开看看
3.关于socket和TCP/ip协议
我们的网络通信都是建立在TCP/ip协议上,比如访问4399的时候其实访问的是DNS服务器解析出来的某个ip,看得出来图中访问的是4399的某个节点
而且我们每个计算机都有自己的ip地址
所以这些数据就像快递一样在世界上传送,不过的通过ip地址而不是地址找到数据包(快递包)的主人的。我们架设的web服务器的数据也通过TCP/IP协议发送到访问它的人
那么ip地址只有唯一的一个,我们每时每刻要接受和发送各种不同的数据包,为了运行不同的服务,我们采用不同的端口进行通信,我们有很多默认端口比如http是80端口,https(加密的http)是443,ftp是21端口,如果这些端口被封或者占用的话,我们也可以指定某个端口,接下的搭建服务器的环节我会为读者演示。
二、在windows上搭建服务器
windows可以说是笔者从小玩到大的好伙伴,相信读者们接触的最早最多的PC操作系统是windows,如果谁说自己没玩过windows只玩过linux,我敬他是条汉子。
1.使用HFS搭建
HFS是笔者第一个接触的http服务器软件,官网访问得挂加速网络不然太慢了,而且嘤文对新手不友好。我就贴个汉化版的下载链接,用起来感觉东西不错。
HFS打开后不会跳出来,安静的呆在win的右下角,得把它请出来,左键按两下
接下来把我们上一步写的index.html拖拽到虚拟文件系统里面,改一下ip地址,最好用192或者10开头的ip地址
我们成功的使用http协议传输了一个文件
三、内网穿透
当我兴冲冲的把链接发给基友的时候,他说我打不开这个链接,后来我才知道有内网这个东西。这个192.168.1.X的地址只有我们家的路由器下的设备才能互相访问的。
因为笔者基友的设备不可能连接的是我家的路由器,所以不可能访问到我们搭建的网站,那么要让他能访问怎么做呢?
1.花生壳内网穿透
我们先不讲原理,先搞起来,下载个花生壳,注册个帐号,申请个域名,配置一个映射
最好自检一下
然后我们访问花生壳给的域名,成功访问
把这个域名发给基友,基友也能正常访问,太开心了。
2.ZeroTier内网穿透(注:只适合基友们的操作)
花生壳虽然很好用,但是我和基友之间私人通信可能需要走很多流量,花生壳的1G流量是肯定不够的,而且我们对带宽和延迟要求很高,它给的1Mb流量也完全无法满足要求,有什么更好的解决方案呢?
参考文章
把前面的ip换成Zerotier给的ip然后访问一下
大功告成
3.使用Apache搭建
有同学说了,我没有公网的地址,但是有ipv6地址,ipconfig里面出来的有ipv6的公网地址(临时ipv6地址),不想用上面俩软件搭建,要怎么弄
笔者推荐使用Apache搭建,测试是确实是可以监听ipv6的,这里就不写那么多了,你们自己摸索吧
四、在Linux上搭建服务器
相对于windows的可视化,我更倾向于把各种服务器搭建在linux上,因为可以选择无桌面纯命令行,很多linux的开机内存可以在200M以内,相对于win10开机就用2G多简直不要太爽。而且linux用ssh也很方便管理服务器(吐槽一下win的命令行真的难用)
1.在debian系下运行服务器
debian系的系统很多,在我的映象中占据linux大半江山(排除android这个假linux),有著名的ubuntu,debian,armbian和树莓派的raspbian
只需要一句apt-get install apache2,弄完后把index.html丢到/var/www/html文件夹里面输入ip地址就能访问了
2.在安卓上运行
2.1各种各样的http服务器软件,apkpure上好评的有KSWEB、Servers Ultimate很多东西也好用,不一一介绍了
2.2使用Termux虚拟linux前端在安卓运行
pkg install apche2 注意网页文件的位置在/data/data/com.termux/files/usr/share/apache2/default-site/htdocs目录,端口是8080
五、用Python自己写一个服务器
笔者喜欢用Python处理http的请求,拿来做http操作感觉有点暴殄天物
需要pip3 install bottle
from bottle import route, run@route("/")def websit(): f=open("index.html","rb") b=f.read() f.close() return brun(host='192.168.X', port=80, debug=True) #开启服务,host自己改#如果需要多线程的话在上一个括号里加一个上‘,server="paste"’需要paste库
六、用易语言自己写一个服务器
用的socket直接写,只拿来讲http协议的原理,常量值网页就是网页的代码,用到了精易模块的函数
.版本 2.支持库 sock.程序集 程序集1.程序集变量 服务器, 网络服务器.程序集变量 客户句柄, 整数型.子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行服务器.启动 (80)标准输出 (, “等待客户进入” + #换行符).判断循环首 (真) 客户句柄 = 服务器.监听 (0) 子程序1 ().判断循环尾 ()返回 (0) ' 可以根据您的需要返回任意数值.子程序 子程序1.局部变量 字节, 字节集.局部变量 是否成功, 逻辑型.局部变量 网页, 文本型.局部变量 Headers, 文本型标准输出 (, “客户:” + 服务器.取客户IP (客户句柄) + “已进入” + #换行符)字节 = 服务器.接收 (客户句柄, 0, 是否成功)标准输出 (, “请求:” + 文本_取出中间文本 (到文本 (字节), “GET /”, “ HTTP”, , ) + #换行符)Headers = “HTTP/1.1 200 OK” + #换行符 + “Content-Length:”网页 = Headers + 到文本 (取文本长度 (#网页)) + #换行符 + #换行符 + #网页服务器.发送 (客户句柄, 编码_Ansi到Utf8 (网页), 0)标准输出 (, “客户:” + 服务器.取客户IP (客户句柄) + “已断开” + #换行符)服务器.断开连接 (客户句柄)