对于站长来说,服务器一直都是投入最大的一块,那么我们自己的家用电脑可不可以作为服务器呢,答案是当然可以 ,其实服务器相比于我们的家用电脑,最大的区别就是服务器可以364×24的工作模式,常年不关机的稳定运行,而我们的家用电脑就不行了,稳定性达不到,说到这你是不是已经想到电脑蓝屏的画面了?当然也没有我们想的那么脆弱,通常来说,服务器的话 很少用Windows系统,大部分都是选择稳定性更高的Linux系统,如果你对稳定性没有过高的要求,那么家用电脑当做笔记本就是可行的,就比如小编今天所要讲的,就是利用退休的笔记本搭建个人服务器,为什么选择用笔记本呢,当然是笔记本的耗电量更低,如果用无线链接的话,那就更方便了。
首先,想让笔记本当做服务器,我们要解决的第一个问题就是网络问题,众所周知,我们家用的宽带都是阉割过的,比如网站常用的80端口和443端口,都是封闭的,所以我们要绕过端口问题,这个我们用端口映射很轻松就能解决,解决了端口问题,下一个问题就是IP问题,对于服务器来说,IP都是固定的,这样就可以解析域名到固定的服务器IP,我们就可以正常访问网站了,但是我们家用的宽带是没有固定IP的,随着网络设备的不断发展,现在想获取一个公网IP越来越困难,很多都是一个小区或者一个片区公用一个IP,这样我们就无法直接使用我们这个IP了,所以我们就可以利用我们手中其他有固定IP的VPS做一个中转,我们把域名解析到这个固定IP的服务器上,然后服务器上做一个中转,转到我们的笔记本服务器上,这样整个网络就通了。
原理跑通了,我们就开始进入实战
准备:
一个域名,解析到公网IP
一台本地服务器(笔记本或者家用电脑)
一台具有公网IP的VPS
系统,我们用的Linux系统,服务器专用系统,当然也可以用Windows,就是选择软件客户端不同,其他的都一样
搭建服务端
服务端就是我们提前准备的具有公网的VPS,我们要在服务器上搭建frp服务,frp在服务端就是frps,在客户端就是frpc,都是这一个软件的不同称呼,不要乱。
下载frp文件,放置服务器的任意目录下(自己方便找到的),本人放在默认的root目录
解压:tar -zxvf frp_0.48.0_linux_amd64.tar.gz
进入解压的文件夹:cd frp_0.48.0_linux_amd64
这里frp_0.48.0_linux_amd64是我现在用的版本,软件都是随着更新的,可能你下载的时候软件已经更新了,这里这个名字就需要换成你自己下载的软件版本名字,操作都一样,一定要会变通,进去之后注意这四个文件,其他不用管,也不用动:
frps.ini: 服务端配置文件
frps: 服务端软件
frps_full.ini:配置示例,用不到
frpc.ini: 客户端配置文件
frpc: 客户端软件
frpc_full.ini:配置示例,用不到
服务端我们主要是是frps.ini和frps这两个文件,一个执行文件,一个配置文件
将 frps.ini 文件修改为如下内容
[common] bind_port = 5443 vhost_http_port = 808 vhost_https_port = 909 dashboard_user = admin dashboard_pwd = admin token=yourpassword
这里的5443是frp服务端口,808是http服务端口,909是https服务端口。之所以这样做,是因为我的服务器本身用了宝塔面板搭建了网站,因此为了错开80端口和443端口进行了这样的设置。
以上端口需要在宝塔面板中打开防火墙放行,也需要在服务器的防火墙管理面板中放行(这里需要看我们自己选择的服务器厂商,都有所不同)。
在宝塔面板中新建网站,输入刚才解析的域名,建立的时候只需要修改一个地方,即PHP版本处,修改为“静态”。然后在“反向代理”处进行修改,对于访问http的话,修改为 “http://127.0.0.1:808”,访问https的话修改为“https://127.0.0.1:909”。
SSH进入服务器,输入
./frps -c frps.ini
就会启动服务。
服务端配置开机自启
创建服务脚本并编辑
vi /etc/systemd/system/frps.service
内容如下:(注意,代码中的frps.ini是服务端配置文件,请依据自己的实际情况做相应修改,ExecStart和ExecStart这里是frp软件的地址,需要改成自己的)
[Unit] Dcription=The nginx HTTP and reverse proxy server After=network.target remote-fs.target nss-lookup.target [Service] Type=simple User=root Restart=on-failure ExecStart=/root/frp/frps -c /root/frp/frps.ini ExecReload=/root/frp/frps -c /root/frp/frps.ini KillSignal=SIGQUIT TimeoutStopSec=5 KillMode=process PrivateTmp=true StandardOutput=syslog StandardError=inherit [Install] WantedBy=multi-user.target
加入服务列表并设置自启动
#重新加载服务列表 systemctl daemon-reload #将frps加入开机自启动 systemctl enable frps.service #启动服务 systemctl start frps.service #以下是其他常用命令 #关闭服务 systemctl stop frps.service #重启服务 systemctl restart frps.service #显示服务的状态 systemctl status frps.service #禁用服务开机启动 systemctl disable frps.service #查看服务是否开机启动 systemctl is-enabled frps.service #查看已经启动的服务列表 systemctl list-unit-files|grep enable #查看启动失败的服务列表 systemctl --failed配置和自启动设置
搭建客户端
[common] server_addr = 替换为你的服务器IP地址 server_port = 5443 tls_enable = true token=yourpassword [EXSI] type = https local_ip = 192.168.5.200 local_port = 80 remote_port = 909 custom_domains = exsi.abc.com [NAS] type = http local_ip = 192.168.5.189 local_port = 5000 remote_port = 808 custom_domains = nas.abc.com [localblog] type = http local_ip = 192.168.5.188 local_port = 8888 remote_port = 808 custom_domains = www.abc.com [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000
和服务端一样,下载一样的软件,不过我们用的是frpc.ini和frpc这两个文件,一个执行文件,一个配置文件
以上的内网IP地址、端口和域名相应的替换为你的即可,这里一定要理解透。
[common] 部分为客户端的初始化板块,包括了服务端的ip地址,服务端口,tls是否启动,token密码等内容,一次设置,全局有效。
除了[common]部分外,以上配置文件中,每一个 [ ] 板块下的一段,对应着一个你需要内网穿透的应用。如果你只有一个网站需要内网穿透,则只保留一个板块就可以。里面的 [ ] 是服务标识符,其下对应的代码含义如下:
type 表示服务类型,包括了http、https、tcp、udp等服务,比如搭建网站的话就用http或https服务。
local_ip 表示你的内网网站的ip地址,比如我的测试博客www.abc.com 在内网访问就可以输入 http://192.168.5.188:端口号 来访问。端口号就是你的内网网站设置的端口号,默认是80。
local_port 表示你的内网网站的网站端口,默认是80,你也可以改成你要的端口号,比如上述的 http://www.abc.com 如果把网站端口设置为了8888,那么内网网站访问地址就是:http://192.168.5.189:8888
remote_port 表示frp服务中http网站所用的端口,本配置文件用的808,服务端也是808,如果是https网站的话,那么就得用909(因为服务端配置的是909)。
custom_domains 是访问该服务的域名,只对网站有用,tcp服务不需要这一项。
配置完毕后保存。然后运行
客户端配置和自动设置
客户端与服务端配置方法完全一致,代码如下:
创建服务脚本并编辑 vi /etc/systemd/system/frpc.service
内容如下:(注意,代码中的frpc.ini是服务端配置文件,请依据自己的实际情况做相应修改,ExecStart和ExecStart这里是frp软件的地址,需要改成自己的)
[Unit] Dcription=The nginx HTTP and reverse proxy server After=network.target remote-fs.target nss-lookup.target [Service] Type=simple User=root Restart=on-failure ExecStart=/root/frp/frpc -c /root/frp/frpc.ini ExecReload=/root/frp/frpc -c /root/frp/frpc.ini KillSignal=SIGQUIT TimeoutStopSec=5 KillMode=process PrivateTmp=true StandardOutput=syslog StandardError=inherit [Install] WantedBy=multi-user.target
加入服务列表并设置自启动
#重新加载服务列表 systemctl daemon-reload #将frpc加入开机自启动 systemctl enable frpc.service #启动服务 systemctl start frpc.service #以下是其他常用命令 #关闭服务 systemctl stop frpc.service #重启服务 systemctl restart frpc.service #显示服务的状态 systemctl status frpc.service #禁用服务开机启动 systemctl disable frpc.service #查看服务是否开机启动 systemctl is-enabled frpc.service #查看已经启动的服务列表 systemctl list-unit-files|grep enable #查看启动失败的服务列表 systemctl --failed
通常通过上面得步骤,你就已经可以使用frp了,下面你就不用看了,如果你和小编一样,遇到开机自启失败,那么就继续往下看,小编遇到的情况是,笔记本服务器重启后,frpc服务无法正常自启,需要手动输入systemctl start frpc.service命令才能启动,如果你也是这种情况,我们只需要修改frpc.service文件,直接设置为
After=multi-user.target
即系统启动完成之后再启动frpc服务,便能正常开机后自动启动frpc服务。