干货来了,分享一个自己用废弃笔记本制作服务器的过程。家里闲置了一台读书时候使用的笔记,已经很多年没有用过了,4G内存也不好用,扔掉又觉得可惜,卖也卖不掉,突然想到拿来制作一台服务器使用看行不行。
笔记本还是win7系统,要制作成linux系统来当作服务器更好使用
一. 安装linux系统
要安装系统我们可以使用u盘来制作一个系统启动盘
我使用的是Rufus - 轻松创建 USB 启动盘 这个工具制作启动盘
如果看文章的你此时已经无法访问这个网站了,我将下载好的工具包放到了csdn上你可以下载使用,或是去搜一下其他的工具。
地址:https://download.csdn.net/download/weixin_40754174/87760888
这个工具无需安装,双击即可使用
首先我们需要去下载linux系统镜像,我这里选择使用centos7的镜像,大家可以选择自己需要的系统镜像,不过安装过程可能有差别。
插入u盘,打开rufus软件
选择镜像文件->其他参数可以默认->点击开始
其他提示默认即可
开始制作:复制文件的过程比较久
复制完毕后关闭即可
u盘启动盘就制作好了,然后就可以把u盘插到我的旧笔记本上,启动电脑进入bios模式,每个品牌的电脑进去bios模式可能不一样,我这里是在启动界面按F2进入,进入后移动到boot页面
回车进入启动顺序调整页面
选择启动系统盘顺序,把u盘的选项放到前面,按F10保存重启即可进入u盘启动页面。
选择 Install CentOS 7 回车 安装开始
输出一大堆之后,进入系统配置页面,选择语言
然后选择要安装的系统磁盘
这里选择磁盘,第一个是u盘别选错了
提示磁盘空间不足,点击Reclaim space回收空间
删除全部
回到安装页面,点击开始安装
安装过程中,我们可以设置一下用户密码,这里我设置一下root用户密码即可
然后就等待安装完成。
二. 网络设置
安装完成后无法连接网络,在网上搜索各种解决方案,大概意思就是需要安装无线网卡、配置无线网卡,没有过多去研究这个,因为要用来做服务器,直接插网线会比较稳定,插入网线后可以正常上网。
如果你还是无法上网,通过ip addr命令可以查看有哪些网卡地址
我的是叫enp3s0,如果statue状态是DOWN的话,你可以输入ifup enp3s0 启动网卡。
你的网卡不会是这个名字,你可以根据ip地址192.168.xx.xx判断哪个是你联网线的地址。
进入/etc/sysconfig/network-scripts/ 目录下可以看到你的网卡配置文件
是以ifcfg-开头的配置文件
输入命令 vi ifcfg-enp3s0 编辑该配置文件,如图:
BOOTPROTO = static 表示静态ip,默认是动态的,你的电脑连上路由器后每次会动态分配ip地址,我们要做服务器肯定需要把ip固定下来,所以这里需要设置为静态ip
GATEWAY 是网关地址,需要登录路由器管理页面进行设置,在系统设置->局域网设置里面,路由器不同有些许不同,但目的就是设置一下路由器的ip,以及设置局域网内的ip地址范围:
IPADDR设置的地址需要在上图的ip地址分配范围内。
DNS可以设置多个,需要设置DNS才能上网,8.8.8.8是谷歌提供的DNS服务器
ONBOOT 表示开机启动该网卡。
这样就可以正常上网,且每次开机都是一个固定的局域网内ip地址了,现在你在局域网内就可以通过192.168.7.77来访问这台电脑。
三. 如何远程连接服务器
这里推荐使用FinalShell这个连接工具,比较好用。
你可能输入ip和端口却无法连接,不用慌,那是因为防火墙。
查看防火墙状态: systemctl status firewalld.service
绿色的running表示防火墙开启。
如果你不考虑其他安全问题,你可以直接关闭防火墙就能连接了。
关闭防火墙: systemctl stop firewalld.service
再次执行查看防火墙命令:systemctl status firewalld.service
执行开机禁用防火墙自启命令 : systemctl disable firewalld.service
但是建议大家还是开启防火墙,这是一道网络保护,因为我们后面还有映射到公网上去。
开启防火墙状态下就需要配置防火墙规则,添加可以访问的端口。
开放指定端口
firewall-cmd --zone=public --add-port=22/tcp --permanent
命令含义:
--zone #作用域
--add-port=22/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
重启防火墙 (添加端口后必须重启,不然你还是访问不了)
firewall-cmd --reload
删除端口 (删除的命令也写下来,如果添加错误了可以删除)
firewall-cmd --zone=public --remove-port=xxx/tcp --permanent
查看开启的端口: firewall-cmd --zone=public --list-ports
四. 如何在外网访问服务器
上面我们已经能够在局域网内访问自己的服务器了,但是还无法在外网访问,等于说你只能在你家里使用,而且部署了应用也只能在家里访问,那有什么意义呢,所以下面教大家如何拐个弯使用外网也能访问到,而且不需要你去搞比较贵的类似花生壳之类的内网穿透工具,而且还有流量限制,也不需要拉专线固定ip地址。
首先,我们需要宽带分配的ip地址是公网ip地址,因为现在很多宽带都是给的虚拟ip地址,虚拟ip是无法访问到的,电信宽带是可以打10000号要求客服修改为公网ip,我家里是用的电信,不知道其他运营商能不能给公网ip。
怎么看是否是公网ip呢,直接打开百度搜索ip,这个ip就是公网ip地址
再打开路由器管理页面查看WAN口ip
如果WAN口ip与百度搜索的公网ip地址一样,你的宽带分配的就是公网ip,否则就是虚拟ip。
有了公网ip后,我们需要设置内外网端口映射,进入宽带管理页面,将虚拟服务器中添加端口映射就可以了,比如你需要ssh到服务器上, 你就将外网端口22映射到你的这台电脑ip上的22端口即可。
我的路由器配置截图:
这样配置了后,就可以在外网通过公网ip地址进行ssh(22端口)连接了,我这里还配置了其他端口8000用于web服务,3306用于mysql数据库。
如图:用公网ip地址连接
但是普通宽带的公网ip地址是动态变化的,一段时间后即使你没有重启路由器他还是会变化,只有专线宽带的ip才是固定的,这样一旦ip地址变化了我们就无法连接和访问了,网上有很多内网穿透工具,比如收费的花生壳,还有免费的ngork,frp等等,大家都可以去试试,我用了ngork,之前也用过花生壳,但都觉得不爽,免费的不稳定,收费的又太贵。于是我想到一个方法,利用阿里云域名做自动的ddns解析。
五. 阿里云域名动态ddns
首先去阿里云买一个域名,可以买个便宜后缀的,比如.top
进入阿里云域名购买,输入你想要注册的域名
我买了个.top的域名,直接买了10年,才188。
买域名需要实名认证,然后才能解析,进入解析页面
添加一条记录,映射到你当前的ip地址,等解析正常了就可以用这个域名去访问你的服务器了。
如图:
也就是说,我们只要能实现,当ip地址变化后,能自己将变化后的ip地址解析到这个域名上,那我们就可以使用域名来访问服务器,使用域名来访问我们部署的服务页面等等。
正好,阿里云提供了这个接口来进行域名解析修改
文档地址:如何调用UpdateDomainRecord根据传入参数修改解析记录_云解析DNS-阿里云帮助中心
所以思路就是: 写一个程序放在我们的服务器上,定时去获取公网ip地址(时间间隔根据你自己需要来设定,经过我这几天的观察,其实公网ip地址变化频率并不高,有可能几天都不变化一次,也有几小时就变化一次的情况), 我设置了个5分钟的定时任务去获取公网ip地址,然后通过调用阿里云的api接口修改域名解析。
我这里使用的是java来开发定时任务。
关键代码如下:
public void refreshDdns(String currentIp) throws Exception {
// 获取解析记录
DescribeDomainRecordsResponseBody.DescribeDomainRecordsResponseBodyDomainRecordsRecord domainDnsRecord = this.getDomainDnsRecord();
String currentDdnsIp = "";
currentDdnsIp = domainDnsRecord.value;
if (!currentDdnsIp.equals(currentIp)){
// 刷新解析记录
this.updateDomainDnsRecord(domainDnsRecord,currentIp);
} else {
logger.info("无需修改解析记录,当前IP:{}",currentIp);
}
}文章来源:https://www.toymoban.com/news/detail-515866.html
private DescribeDomainRecordsResponseBody.DescribeDomainRecordsResponseBodyDomainRecordsRecord getDomainDnsRecord() throws Exception {
DescribeDomainRecordsRequest describeDomainRecordsRequest = new DescribeDomainRecordsRequest()
.setDomainName(domain);
// 获取记录详情
DescribeDomainRecordsResponse domainRecordsResponse = client.describeDomainRecords(describeDomainRecordsRequest);
List<DescribeDomainRecordsResponseBody.DescribeDomainRecordsResponseBodyDomainRecordsRecord> records = domainRecordsResponse.getBody().getDomainRecords().getRecord();
DescribeDomainRecordsResponseBody.DescribeDomainRecordsResponseBodyDomainRecordsRecord record = records.get(0);
logger.info("获取解析记录:{}", JSON.toJSONString(record));
return record;
}
private void updateDomainDnsRecord(DescribeDomainRecordsResponseBody.DescribeDomainRecordsResponseBodyDomainRecordsRecord domainDnsRecord,String newIp) throws Exception {
// 修改记录
UpdateDomainRecordRequest updateDomainRecordRequest = new UpdateDomainRecordRequest()
.setRecordId(domainDnsRecord.getRecordId())
.setRR(domainDnsRecord.getRR())
.setType(domainDnsRecord.getType())
.setValue(newIp);
// 修改记录
UpdateDomainRecordResponse updateDomainRecordResponse = client.updateDomainRecord(updateDomainRecordRequest);
logger.info("修改解析结果:{}",JSON.toJSONString(updateDomainRecordResponse));
}
运行下来结果很满意,能在外网随时访问到家里的服务器和应用。文章来源地址https://www.toymoban.com/news/detail-515866.html
到了这里,关于如何使用闲置电脑制作服务器并且外网可访问的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!