明:剛開始用虛擬主機(jī)建站的時(shí)候我們總是習(xí)慣用ftp或者WinSCP工具上傳網(wǎng)站源文件,一個(gè)文件夾里的東西全部上傳雖然有的程序不大,但是文件比較多比較碎上傳起來就比較慢。等到我們漸漸的擺脫虛擬主機(jī)開始用vps以后就不用再這樣了,用的比較多的web程序如wordpress官網(wǎng)都有在線下載的壓縮包。只需要下載到web目錄解壓就行了,速度比你通過ftp上傳快多了。這里以軍哥的LNMP為例,新建虛擬主機(jī),例如xx.com。
1、下載解壓wordpress
我們來到網(wǎng)站目錄
cd /home/wwwroot/xx.com
然后下載wp安裝壓縮包
wget https://cn.wordpress.org/wordpress-4.5.2-zh_CN.tar.gz
解壓
tar xzvf wordpress-4.5.2-zh_CN.tar.gz
這時(shí)候能看到解壓出來個(gè)wordpress目錄,我們要把目錄里的文件都移到網(wǎng)站根目錄,執(zhí)行命令:
cd wordpress mv * ../ cd ..
2、修改目錄權(quán)限
如果你不修改一下目錄權(quán)限可能會(huì)出現(xiàn)一些錯(cuò)誤,要保證網(wǎng)站目錄下所有文件都是www所屬,要不然會(huì)顯示nobody
回到上層目錄cd ..亦即/home/wwwroot目錄,運(yùn)行命令:chown www:www xx.com -R即可。
或者直接進(jìn)入WinSCP里面修改
frp(fast reverse proxy)是一款高性能的反向代理應(yīng)用,專注于內(nèi)網(wǎng)穿透。它支持多種協(xié)議,包括 TCP、UDP、KCP、HTTP、HTTPS 等,并且具備 P2P 通信功能。使用 frp,您可以安全、便捷地將內(nèi)網(wǎng)服務(wù)暴露到公網(wǎng),通過擁有公網(wǎng) IP 的節(jié)點(diǎn)進(jìn)行中轉(zhuǎn)。
1. 遠(yuǎn)程桌面或者是訪問內(nèi)網(wǎng)服務(wù)
個(gè)人覺得這個(gè)需求應(yīng)該是最強(qiáng)烈的,有時(shí)需要遠(yuǎn)程桌面連接公司自己的電腦處理問題或者自己家里連著寬帶的電腦,沒有 frp 以前只能找類似花生殼提供的解決方案。
2. webhook 接收
接收類似 Github 或者第三方提供 Webhook 的場景。
3. 反向代理
有些國外 vps 被 gfw 墻了不能 ssh 連接,也可以通過frp 進(jìn)行訪問
frp 主要由兩個(gè)組件組成:客戶端(frpc) 和 服務(wù)端(frps)。通常情況下,服務(wù)端部署在具有公網(wǎng) IP 地址的機(jī)器上,而客戶端部署在需要穿透的內(nèi)網(wǎng)服務(wù)所在的機(jī)器上。
由于內(nèi)網(wǎng)服務(wù)缺乏公網(wǎng) IP 地址或者某些原因用戶不能直接訪問,用戶通過訪問服務(wù)端的 frps,frp 負(fù)責(zé)根據(jù)請求的端口或其他信息將請求路由到相應(yīng)的內(nèi)網(wǎng)機(jī)器,從而實(shí)現(xiàn)通信。實(shí)際流量會(huì)變成 client->frps->frpc
frp 架構(gòu)圖
我們需要有一臺公網(wǎng) ip 的服務(wù)器作為 frps 服務(wù)端,這里我使用自己購買的阿里云服務(wù)器,一臺實(shí)現(xiàn)內(nèi)網(wǎng)穿透的windows pc作為 frpc 客戶端。下表是實(shí)驗(yàn)環(huán)境:
# | OS | frps/frpc監(jiān)聽端口 | 內(nèi)網(wǎng)穿透服務(wù)和監(jiān)聽端口 |
frps | centos8 | 17000 | N/A |
frpc | win10 | 60002 | 遠(yuǎn)程桌面/3389 |
frps 和 frpc 服務(wù)配置完成后,用戶可以使用frps_ip:60002 地址遠(yuǎn)程桌面連接到內(nèi)網(wǎng) win10 pc。
win10 pc 開啟遠(yuǎn)程桌面和檢查防火墻規(guī)則
右擊我的電腦->屬性->遠(yuǎn)程桌面->啟用遠(yuǎn)程桌面
開啟遠(yuǎn)程桌面
另外還需要檢查 win10防火墻的入站規(guī)則有沒遠(yuǎn)程桌面策略或者選擇關(guān)閉防火墻,還可以在跟 win10 相同的內(nèi)網(wǎng)其他機(jī)器測試網(wǎng)絡(luò)連通性。
防火墻規(guī)則檢查
frps server 檢查 selinux 和防火墻
frps server 如果是在公有云,還要在公有云上防火墻放行相關(guān)策略
云上防火墻策略
frps server上的centos 需要檢查 selinux 和防火墻iptables 或者 firewalld
注:在國內(nèi)公有云上如果使用域名,請確認(rèn)域名有備案,要不然還是建議使用 ip 連接,要不然會(huì)有意想不到的連接錯(cuò)誤。
frp 采用 Go 語言編寫,只需下載對應(yīng)平臺的二進(jìn)制文件即可執(zhí)行
frps安裝
下載linux frp 對應(yīng)二進(jìn)制包到 frps server,解壓到對應(yīng)目錄上
# 下載 frp 二進(jìn)制壓縮包
wget https://github.com/fatedier/frp/releases/download/v0.57.0/frp_0.57.0_linux_amd64.tar.gz
# 解壓
tar xf frp_0.57.0_linux_amd64.tar.gz -C /usr/local/
cd /usr/local/frp_0.57.0_linux_amd64/
frp程序目錄
frps server的配置文件是frps.toml,frpc client的配置文件是frpc.toml,下面配置frps.toml
# 可以參考官方配置frps_full_example.toml,里面有詳細(xì)配置說明
# https://github.com/fatedier/frp/blob/405969085fb6b5c8058c88ca250e930ba6092153/conf/frps_full_example.toml
#frps監(jiān)聽端口
bindPort = 17000
# 配置 frp dashboard
webServer.addr = "127.0.0.1"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "*******"
# 配置 token 認(rèn)證,frpc 客戶端也需指定一樣的token
auth.method = "token"
auth.token = "abc123jki"
# 只允許frpc綁定指定ports.
allowPorts = [
{ start = 60000, end = 60500 }
]
使用 systemd 來管理 frps 服務(wù),并設(shè)置開機(jī)自啟,創(chuàng)建frps.service文件
vim /etc/systemd/system/frps.service
寫入frps.service內(nèi)容如下:
[Unit]
Description=FRP Server
After=network.target
[Service]
# 啟動(dòng)frps的命令,需修改為您的frps的安裝路徑
ExecStart=/usr/local/frp_0.57.0_linux_amd64/frps -c /usr/local/frp_0.57.0_linux_amd64/frps.toml
Type=simple
[Install]
WantedBy=multi-user.target
設(shè)置frps開機(jī)啟動(dòng),并啟動(dòng) frps
# 設(shè)置frps開機(jī)啟動(dòng)
systemctl enable frps
# 啟動(dòng)frps
systemctl start frps
# 查看frps服務(wù)狀態(tài)
systemctl status frps
frpc安裝
下載windows frp 對應(yīng)二進(jìn)制包到 frpc client,解壓到對應(yīng)目錄上,下載地址https://github.com/fatedier/frp/releases/download/v0.57.0/frp_0.57.0_windows_amd64.zip
frpc client的配置文件是frpc.toml,編輯frpc.toml
# 可以參考官方配置frpc_full_example.toml,里面有詳細(xì)配置說明
# https://github.com/fatedier/frp/blob/405969085fb6b5c8058c88ca250e930ba6092153/conf/frpc_full_example.toml
# 填寫你的frps server的ip 和 port
serverAddr = "1.1.1.1"
serverPort = 17000
# 配置 token 認(rèn)證,frpc 客戶端需指定frps一樣的token
auth.method = "token"
auth.token = "abc123jki"
# 在 frp 中,一個(gè)代理對應(yīng)一個(gè)需要公開訪問的內(nèi)網(wǎng)服務(wù)。
# 一個(gè)客戶端可以同時(shí)配置多個(gè)代理,以滿足不同的需求。
# 下面配置的是將 win10 遠(yuǎn)程桌面暴露到 frps_ip 60002端口上
[[proxies]]
name = "windows remote desktop"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3389
remotePort = 60002
使用NSSM - the Non-Sucking Service Manager將frpc注冊成windows服務(wù)并設(shè)置開機(jī)啟動(dòng)
在nssm 官網(wǎng)下載 nssm 程序,地址 https://nssm.cc/release/nssm-2.24.zip,解壓壓縮包,win64下面會(huì)有 nssm 程序,程序可以放在任何位置都可以。
以管理員權(quán)限運(yùn)行cmd,切換到 nssm 程序目錄,執(zhí)行下面命令
nssm install frpc
命令執(zhí)行后,它會(huì)以 GUI顯示服務(wù)安裝窗口,填寫 frpc 程序的路徑和啟動(dòng)參數(shù),點(diǎn)擊 Install service 即可
配置 frpc service
在上面打開的管理員cmd 窗口,啟動(dòng) frpc 服務(wù)
nssm start frpc #或者可以使用net start frpc
可以看到frpc 進(jìn)程已經(jīng)啟動(dòng)
檢查 frpc 啟動(dòng)
這時(shí)候可以在frps dashboard(這里可以配置nginx反向代理訪問)查看frpc客戶端是否注冊上,注冊上 status 會(huì)顯示 online
frps dashboard
client通過frps_ip:60002 遠(yuǎn)程桌面到 frpc win10 pc 上
遠(yuǎn)程桌面 win10 pc