自建本地服务器,自建Web服务器——保姆级教程!
搭建本地服务器,Web服务器——保姆级教程!
本文首发于https://blog.chens.life/How-to-build-your-own-server.html。
先上图!大致思路就是如此。

前言
暑假因为疫情在家无事可做,便白嫖了阿里云大半年的虚拟主机。虽然它只有1核2G,1M的带宽,但也给了我一个实践的机会,让我有机会了解学习apache、php、js、Linux等等······
显然!我们已经不再满足于一百多KB的带宽,缓慢的cpu速度和狭小的50G系统盘了!自建一个性能强大,带宽300M(这取决于自己的宽带),硬盘容量随意增加的本地服务器势在必得!终于,功夫不负有心人,我在折腾了一个通宵之后就肝了出来,于此将我的经验分享出来,希望能帮助到大家。
本地服务器的好处
毋庸置疑,那就是可操控性、可拓展性和极致性价比。相比于各类云服务厂商(阿里云、腾讯云等)动辄一年好几千的“高端”配置,我这个穷人还是老实折腾我的本地服务器吧(不争气的眼泪流了下来,呜呜呜~~)
本地服务器的弊端
当然了,本地服务器毕竟不是专业的服务器。况且国家对于互联网的管控还是很严格的,所以这就导致了本地服务器的一些弊端。例如,
- 本地服务器不够稳定,容易受到停电、机器故障、网络故障等各类不可控因素的影响;
- 我们所部署的本地服务器并不是专业的服务器,本身的并发能力不强,所以不适合用户数量特别巨大的人;
- 电信运营商对于家用宽带做了诸多限制,封禁了80,22等常用端口。虽然能够通过端口映射或修改端口来解决,但还是不太美观。幸运的是,我这里的443端口没有被封,不要太开心~~
前提准备
公网IP
这是至关重要的一项。打开http://ip.3322.net,查看返回的IP地址与光猫普通用户后台的IP地址是否相同,如果相同,则当前IP为公网IP。如果不相同,则需要向电信运营商申请公网IP。打给自己的运营商客服,告诉她家里要装NAS或者监控,申请公网IP。
路由器改为桥接
一般我们安装的光猫都自带路由器和拨号功能,但是不具有端口映射功能,无法将本地局域网内的服务器映射到公网上面。所以我们需要让路由器来进行拨号任务,而光猫单独进行光电信号转换。
将光猫改为桥接需要用超级管理员登录光猫后台,一般为192.168.1.1/admin,不同的光猫情况不同,去百度搜搜自己的光猫型号。另外超级管理员密码要找装机师傅要,他们一般以各种理由推辞,难搞哦。如果搞不定就去万能的淘宝吧!(别怪我没提示哦)我自己也是找的淘宝。。。
一台旧电脑
我是用的是一台老式的Dell灵越笔记本,4G RAM,i5 八代U,500G HDD。这对于个人博客服务器来说是绰绰有余了,足以抵得上阿里云好几千的服务器了。
一个域名
为什么需要域名
在这里我说一下为什么我们还需要一个域名呢?直接适用IP地址访问不就好了?反正是自己使用的。
因为我们向电信运营商申请的公网IP是动态的,也就是说隔一段时间就会改变,不是固定的IP地址。那么能不能申请固定的IP地址呢?答案是可以,但是非常贵,面对大性企业的。我这种穷学生就算了吧。
所以,在有个一个域名之后就可以使用动态域名解析,将域名解析到变化的IP地址上,这样不论IP地址如何变化,我们总是能够访问得到本地的服务器。况且,如果是想做个人博客,只有域名才能够被百度和谷歌收录,才有机会被别人看见。
申请域名
注册域名可以去阿里云万网,也可以去腾讯云,找个合适的域名即可。直接买,即可直接开始使用。
备案
不过我建议,有空的时候去备个案,也不麻烦,时间也不长。况且这样能为以后免去很多麻烦。
各大云服务厂商都有提供代备案服务,直接按照流程走即可。都是免费的,不收取任何费用。
中间部署
安装CentOS 7 操作系统
市面上有很多可供选择的服务器系统,Linux是毋庸置疑必选的——由于它的稳定性。至于为何选CentOS 7,当然是因为我对它熟悉啊~~ 咳咳,那当然是因为CentOS本身就很适合做web服务器,况且用户多,问题容易解决。
具体安装步骤见另一篇文章https://blog.chens.life/how-to-install-CentOS.html。
在这里, 我们需要选择安装 基本的网页服务器,我们不需要图形界面,这将会更加省电和高效。

配置网卡驱动
刚安装好的 基本网页服务器可能无法连接外网,在Linux终端上使用ping baidu.com测试一下,如果不通,则需要配置一下相关文件。参考这篇文章https://www.php.cn/centos/445305.html。这里是有线网络的配置方法,至于无线网卡如何驱动,请自行百度Google。
更换国内yum源
国内速度太慢,目前国内的大公司有许多开源镜像站,例如阿里云、网易、清华大学、华为等等,这里使用阿里云的yum源。
参考官方文档https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11bXrW8A,依次执行
su
输入root密码
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
安装ssh
sudo yum install oppenssh -y
启动ssh的服务:
systemctl start sshd.service
设置开机自动启动ssh服务
systemctl enable sshd.service
配置文件在/etc/ssh/sshd_config,一般不用修改。
安装ftp
sudo yum install ftp -y
ssh和ftp服务都是22端口的,我们目前在内网进行部署,所以不必更改端口,后面会进行端口映射,已解决运营商封禁22端口的问题。
至此,我们就可以使用shell和ftp软件进行远程连接了,推荐xftp和xshell,学生和家庭用户免费,在这里申请,https://www.netsarang.com/zh/free-for-home-school/。也可使用免费版的FinalShell,私有云,密码:chens.life。
安装宝塔面板
宝塔面板可以更简单明了的进行网站的部署和服务器的监控,非常值得推荐。参考官方网站https://www.bt.cn/bbs/thread-19376-1-1.html
一键安装命令
sudo yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
耐心等待其安装完成,之后会得到一个访问地址和账户密码,我们先使用内网访问地址进行操作。

第一次配置
使用内网登录面板,同意使用条款后进入界面。选择LNMP方案安装web环境,极速安装。注意!php版本选择7.2版本,以后许多开源好用的软件必须高版本php的支持,例如nextcloud。

耐心等待安装完成。
修改安全设置
安装完成之后会提醒你
当前面板使用的是默认端口[8888],有安全隐患,请到面板设置中修改面板端口!
所以我们到 面板设置中修改面板端口、安全入口、面板用户、面板密码,按照自己的需求修改。,例如我将端口修改为5656,安全入口修改为blogtest。这样设置之后就避免了面板被暴力破解的几率,更加的安全。

修改默认建站目录
如果/目录容量太小,而其他目录空间较大,就可以将默认建站目录修改为自己想要的位置。在面板设置 -> 默认建站目录修改。本例中只有/目录,所以不再演示。
配置路由器端口映射
到了这一步就基本完成了服务器环境的搭建,最重要的一步就是如何让外网能够访问自己的服务器,并打开宝塔面板。
首先我们登录自己的路由器控制台,绑定自己服务器的内网IP地址,这样防止了端口映射因为服务器内网IP地址变动而出错。之后,我们需要进入端口映射这一高级功能,填上要映射的外网端口和内网IP和端口,即可使用自己的公网IP加端口访问到宝塔面板,证明端口映射成功。例如这样


宝塔面板的外部和内部端口可以相同,这主要看自己的电信运营商有没有封禁使用的端口。例如要想访问80端口的web服务器,我们只能把99(举个例)映射到内网IP的80端口,这样就实现了外网访问。就是有点难看罢了。
不过,如果你所在的电信运营商没有封禁443端口,就可以使用https加密来不加端口访问自己的网页了。这需要在端口映射中添加转发规则.

而你的网址也要申请ssl证书,才能开启https加密。我们后面会讲到,直接使用宝塔的一键部署功能。
dns解析
登录dns解析管理后台,把域名解析到自己当前的公网IP。即可通过域名加端口的方式访问自己的网站。
后期完善
动态域名解析
关于动态域名解析,虽然有花生壳等服务商,但都是收钱的,况且自定义域名也是收费的。我目前再用GitHub上的一个开源项目https://github.com/NewFuture/DDNS,根据相关说明配置好以后,让宝塔计划任务每10分钟执行一次,即可实现动态域名解析。

ssl证书部署
在宝塔面板网站设置的ssl中,申请Let's Encrype证书,选择阿里云ddns验证(根据自己的云服务商)。宝塔ssl证书在自建服务器的条件下不可用。

笔记本禁止盒盖休眠
vim /etc/systemd/logind.conf,将HandleLidSwitch:后面改为ignore,将前面的#去掉。保存退出。然后执行systemctl restart systemd-logind即可生效。
常见错误
https无法访问
只设置了80端口的映射,没有设置443端口的映射。或者设置了,但是没有点击 立即生效。
CentOS无法ping通,无法连接外网
参考这篇文章即可解决https://blog.csdn.net/sinat_32079337/article/details/70238107
结尾
这就是我自建web服务器的大致过程了,因为使用了虚拟机模拟的一部分内容,所以可能不是100%的信息一致。但是,道理都是一样的,我们也要合理的利用百度和Google。希望这会对你有所帮助。
欢迎在下方留言,或者给我发邮件:956902354@qq.com。
欢迎访问我的个人博客https://blog.chens.life。
自建本地服务器,自建Web服务器——保姆级教程!的更多相关文章
- Tomcat Web服务器与常用Web服务器
一.常用Web服务器 Tomcat 由Apache组织提供的一种Web服务器,提供对jsp和servlet的支持.它是一种轻量级的javaWeb容器服务器.也是当前应用最广的JavaWeb服务器( ...
- 使用 acl_cpp 的 HttpServlet 类及服务器框架编写WEB服务器程序(系列文章)
在 <用C++实现类似于JAVA HttpServlet 的编程接口 > 文章中讲了如何用 HttpServlet 等相关类编写 CGI 程序,于是有网友提出了 CGI 程序低效性,不错, ...
- Linux 服务器作为Nginx web服务器常见优化参数
内核参数调整cat /etc/sysctl.conf# sysctl settings are defined through files in # /usr/lib/sysctl.d/, /run/ ...
- 搭建一套简单的web服务器,记录实验过程
搭建web服务器 一.实验内容: 实验要求: 1.完成一个简单的web服务器,web服务器从mysql里读取数据进行返回 2.Mysql需要有一个单独的数据盘,每个mysql虚拟机的磁盘挂载方式需要都 ...
- Servlet学习之web服务器Tomcat 详解
Web服务器是什么 Web服务器是指驻留于因特网上某种类型计算机的程序.当Web浏览器(客户端)连到服务器上并请求文件时,服务器将处理该请求并将文件发送到该浏览器上,附带的信息会告诉浏览器如何查看该文 ...
- web服务器集群session同步
在做了web集群后,你肯定会首先考虑session同步问题,因为通过负载均衡后,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,一个登录用户,一会是登录状态,一会又不是 ...
- 闲来无聊,研究一下Web服务器 的源程序
web服务器是如何工作的 1989年的夏天,蒂姆.博纳斯-李开发了世界上第一个web服务器和web客户机.这个浏览器程序是一个简单的电话号码查询软件.最初的web服务器程序就是一个利用浏览器和web服 ...
- 前端学HTTP之WEB服务器
前面的话 Web服务器每天会分发出数以亿计的Web页面,它是万维网的骨干.本文主要介绍WEB服务器的相关内容 总括 Web服务器会对HTTP请求进行处理并提供响应.术语“Web服务器”可以用来表示We ...
- 如何配置web服务器
如何配置web服务器 (1)了解DNS主机名和IP地址.如果此WEB服务器在Internet上,需向ISP申请和注册此服务器的DNS主机名和IP地址.如果此服务器只在企业网内使用,则在内部的DNS服务 ...
随机推荐
- 高精度进制转换(poj1220)
常规短除法原理 高精度进制转换是对于特别大的数字来说的,当数字特别大时,难以进行除法和取余的操作,此时通过字符串模拟的办法可以解决. #include <iostream> #includ ...
- 第【7】章: 数递归、DFS、剪枝、回溯等问题 学习报告
(7.2)节: 递归问题 1.题干: 递归方便表达,但是性能上消耗过多 1.有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶.2阶.3阶. 请实现一个方法,计算小孩有多少种上楼的方式. ...
- 题解 P1201 【[USACO1.1]贪婪的送礼者Greedy Gift Givers】
这一题挺简单的,但是如果是纯模拟的话.会十分麻烦 这里介绍一个\(STL\)映射\(map\) \(map\)的最大优点是可以使用任意数据类型作为数组的下标 \(map\)的定义形式为 map< ...
- Mybatis开启二级缓存(全局缓存)的方法
Mybatis开启二级缓存的方法 开启步骤 1.在 mybatis-config.xml 的配置文件中进行显示配置,开启二级缓存(全局缓存) 2.在 Mapper.xml 文件中添加cache标签 一 ...
- Python os.removedirs() 方法
概述 os.removedirs() 方法用于递归删除目录.像rmdir(), 如果子文件夹成功删除, removedirs()才尝试它们的父文件夹,直到抛出一个error(它基本上被忽略,因为它一般 ...
- Blob分析之board.hdev
* board.hdev: Detection of missing solder* 获取当前系统参数get_system ('clip_region', Information)*设置当前系统参数s ...
- 6.6 省选模拟赛 线段 二维数点问题 树套树 CDQ分治
LINK:线段 还是太菜了 没看出这道题真正的模型 我真是一个典型的没脑子选手. 考虑如何查询答案. 每次在一个线段x的状态被更改后 可以发现有影响的是 和x相连那段极长连续1子段. 设这个子段左端点 ...
- jmeter中使用jdbc参数化
以读取mysql数据库为例 1.下载一个mysql驱动包,最好去mysql官网下载 下载网址:https://dev.mysql.com/downloads/connector/j/ Select O ...
- 题解 Luogu P1514 【引水入城】
有一种神奇的算法叫做floodfill 就是一个n*m的矩阵,a[i][j]为当前高度,我们可以任选一个点倒水,开始bfs,如果要搜的点没有被搜到过,并且高度小于当前的点,我们就把这个点加入队列中 而 ...
- Pytorch Autograd (自动求导机制)
Pytorch Autograd (自动求导机制) Introduce Pytorch Autograd库 (自动求导机制) 是训练神经网络时,反向误差传播(BP)算法的核心. 本文通过logisti ...