干货来了,分享一个自己用废弃笔记本制作服务器的过程。家里闲置了一台读书时候使用的笔记,已经很多年没有用过了,4G内存也不好用,扔掉又觉得可惜,卖也卖不掉,突然想到拿来制作一台服务器使用看行不行。
笔记本还是win7系统,要制作成linux系统来当作服务器更好使用
我使用的是Rufus – 轻松创建 USB 启动盘 这个工具制作启动盘
如果看文章的你此时已经无法访问这个网站了,我将下载好的工具包放到了csdn上你可以下载使用,或是去搜一下其他的工具。
地址:https://download.csdn.net/download/weixin_40754174/87760888
首先我们需要去下载linux系统镜像,我这里选择使用centos7的镜像,大家可以选择自己需要的系统镜像,不过安装过程可能有差别。
u盘启动盘就制作好了,然后就可以把u盘插到我的旧笔记本上,启动电脑进入bios模式,每个品牌的电脑进去bios模式可能不一样,我这里是在启动界面按F2进入,进入后移动到boot页面
选择启动系统盘顺序,把u盘的选项放到前面,按F10保存重启即可进入u盘启动页面。
安装过程中,我们可以设置一下用户密码,这里我设置一下root用户密码即可
安装完成后无法连接网络,在网上搜索各种解决方案,大概意思就是需要安装无线网卡、配置无线网卡,没有过多去研究这个,因为要用来做服务器,直接插网线会比较稳定,插入网线后可以正常上网。
如果你还是无法上网,通过ip addr命令可以查看有哪些网卡地址
我的是叫enp3s0,如果statue状态是DOWN的话,你可以输入ifup enp3s0 启动网卡。
你的网卡不会是这个名字,你可以根据ip地址192.168.xx.xx判断哪个是你联网线的地址。
进入/etc/sysconfig/network-scripts/ 目录下可以看到你的网卡配置文件
输入命令 vi ifcfg-enp3s0 编辑该配置文件,如图:
BOOTPROTO = static 表示静态ip,默认是动态的,你的电脑连上路由器后每次会动态分配ip地址,我们要做服务器肯定需要把ip固定下来,所以这里需要设置为静态ip
GATEWAY 是网关地址,需要登录路由器管理页面进行设置,在系统设置->局域网设置里面,路由器不同有些许不同,但目的就是设置一下路由器的ip,以及设置局域网内的ip地址范围:
DNS可以设置多个,需要设置DNS才能上网,8.8.8.8是谷歌提供的DNS服务器
这样就可以正常上网,且每次开机都是一个固定的局域网内ip地址了,现在你在局域网内就可以通过192.168.7.77来访问这台电脑。
查看防火墙状态: systemctl status firewalld.service
关闭防火墙: systemctl stop firewalld.service
再次执行查看防火墙命令:systemctl status firewalld.service
执行开机禁用防火墙自启命令 : systemctl disable firewalld.service
但是建议大家还是开启防火墙,这是一道网络保护,因为我们后面还有映射到公网上去。
firewall-cmd –zone=public –add-port=22/tcp –permanent
–add-port=22/tcp #添加端口,格式为:端口/通讯协议
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与百度搜索的公网ip地址一样,你的宽带分配的就是公网ip,否则就是虚拟ip。
有了公网ip后,我们需要设置内外网端口映射,进入宽带管理页面,将虚拟服务器中添加端口映射就可以了,比如你需要ssh到服务器上, 你就将外网端口22映射到你的这台电脑ip上的22端口即可。
这样配置了后,就可以在外网通过公网ip地址进行ssh(22端口)连接了,我这里还配置了其他端口8000用于web服务,3306用于mysql数据库。
但是普通宽带的公网ip地址是动态变化的,一段时间后即使你没有重启路由器他还是会变化,只有专线宽带的ip才是固定的,这样一旦ip地址变化了我们就无法连接和访问了,网上有很多内网穿透工具,比如收费的花生壳,还有免费的ngork,frp等等,大家都可以去试试,我用了ngork,之前也用过花生壳,但都觉得不爽,免费的不稳定,收费的又太贵。于是我想到一个方法,利用阿里云域名做自动的ddns解析。
添加一条记录,映射到你当前的ip地址,等解析正常了就可以用这个域名去访问你的服务器了。
也就是说,我们只要能实现,当ip地址变化后,能自己将变化后的ip地址解析到这个域名上,那我们就可以使用域名来访问服务器,使用域名来访问我们部署的服务页面等等。
文档地址:如何调用UpdateDomainRecord根据传入参数修改解析记录_云解析DNS-阿里云帮助中心
所以思路就是: 写一个程序放在我们的服务器上,定时去获取公网ip地址(时间间隔根据你自己需要来设定,经过我这几天的观察,其实公网ip地址变化频率并不高,有可能几天都不变化一次,也有几小时就变化一次的情况), 我设置了个5分钟的定时任务去获取公网ip地址,然后通过调用阿里云的api接口修改域名解析。
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);
}
}
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));
}
版权声明:本文为博主作者:felin7原创文章,版权归属原作者,如果侵权,请联系我们删除!
原文链接:https://blog.csdn.net/weixin_40754174/article/details/130573344