利用frp,docker,nginx 搭建web服务器

功能实现:通过阿里云作为跳板服务器,通过frp实现公网ip远程访问部署到本地内网的web项目

安装frp

认识FRP

FRP 是 Fast Reverse Proxy 的缩写,一款支持 TCP/UDP 快速反向代理的开源软件,可以很方便的内网穿透。和花生壳Ngrok 等不同,FRP 客户端和服务端的控制权都在自己手中,这也意味着你需要准备一台有公网IP 的 VPS 运行服务端程序。

参考文档

  • https://github.com/fatedier/frp#access-your-computer-in-lan-by-ssh
  • https://github.com/fatedier/frp/releases

FRP公网服务器配置(centos)

下载对应的版本:https://github.com/fatedier/frp/releases/download/v0.34.0/frp_0.34.0_linux_amd64.tar.gzgz

解压

sudo tar -zxvf rp_0.34.0_linux_amd64.tar.gz

修改配置文件

#选择文件夹
cd frp_0.34.0_linux_amd64
#frp 的服务器端,一般名为 frps,配置文件是 frps.ini
vim frps.ini
# frps.ini
[common]
bind_port = 7000
vhost_http_port = 8000

参数说明

  • bind_port:绑定的端口,需要与客户端中 server_port 参数保持一致
  • vhost_http_port:虚拟主机运行在本机的端口,如果 vps 有服务占用了端口,应当更换
  • dashboard_port:frp 后台服务页面的端口,如果设置 8000,便可通过 http://yourip:8000 来访问 frps 的后台页面
  • dashboard_user:frp 后台服务页面的管理员用户名
  • dashboard_pwd:frp 后台服务页面的管理员密码
  • privilege_token:自定义值,必须与客户端中的 privilege_token 保持一致

启动 frps服务端

┌─[root ~/frp_0.34.0_linux_amd64]
└──── www.ilesterzhou.top # ./frps -c ./frps.ini
2020/09/27 22:58:20 [I] [service.go:190] frps tcp listen on 0.0.0.0:7000
2020/09/27 22:58:20 [I] [root.go:212] start frps success

加入开机启动

sudo vi /usr/lib/systemd/system/frps.service
# /usr/lib/systemd/system/frps.service
[Unit]
Description=frps
After=network.target
[Service]
TimeoutStartSec=30
WorkingDirectory=/root/frp_0.34.0_linux_amd64 #frp安装目录
ExecStart=/root/frp_0.34.0_linux_amd64/frps -c /root/frp_0.34.0_linux_amd64/frps.ini
Restart=on-failure
[Install]
WantedBy=multi-user.target

相关指令

# 刷新服务
sudo systemctl daemon-reload
# 允许开机启动
sudo systemctl enable frps.service
# 运行服务
sudo systemctl start frps.service
# 查看状态
sudo systemctl status frps.service

内网客户端配置(ubuntu)

下载对应版本:https://github.com/fatedier/frp/releases/download/v0.34.0/frp_0.34.0_linux_amd64.tar.gz

修改配置文件

#frpc.ini,frp 的客户端,一般名为 frpc,配置文件是 frpc.ini
[common]
# 公网服务器的 IP
server_addr = x.x.x.x
# 公网服务器监听的端口
server_port = 7000

[web]
type = http
local_port = 8080
#域名
custom_domains = www.ilesterzhou.top                                      

参数说明

  • server_addr:服务器端的 ip
  • server_port:服务器端的端口,即 bind_port
  • privilege_token:同服务器端的 privilege_token 保持一致
  • login_fail_exit:失败时自动重连
  • remote_port:远程端口,即 ssh 连接树莓派时的端口

启动 frpc.ini

root@raspberrypi:~/frp_0.34.0_linux_amd64# ./frpc -c ./frpc.ini
2020/09/27 15:08:19 [I] [service.go:288] [fd65ee6a22a1cb77] login to server success, get run id [fd65ee6a22a1cb77], server udp port [0]
2020/09/27 15:08:19 [I] [proxy_manager.go:144] [fd65ee6a22a1cb77] proxy added: [ssh]
2020/09/27 15:08:20 [I] [control.go:180] [fd65ee6a22a1cb77] [ssh] start proxy success

加入开机启动

sudo vi /etc/systemd/system/frpc.service
# /etc/systemd/system/frpc.service
[Unit]
Description=frpc
After=network.target
[Service]
TimeoutStartSec=30
#客户端frp安装路径
WorkingDirectory=/root/frp_0.34.0_linux_amd64
ExecStart=/root/frp_0.34.0_linux_amd64/frpc -c /root/frp_0.34.0_linux_amd64/frpc.ini
Restart=on-failure
[Install]
WantedBy=multi-user.target

服务相关指令

# 刷新服务
sudo systemctl daemon-reload
# 允许开机启动
sudo systemctl enable frpc.service
# 运行服务
sudo systemctl start frpc.service
# 查看状态
sudo systemctl status frpc.service

安装docker

ubuntu 安装docker

卸载旧版本

$ sudo apt-get remove docker docker-engine docker.io containerd runc

设置存储库

$ sudo apt-get update

$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

添加Docker的官方GPG密钥

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

验证秘钥

$ sudo apt-key fingerprint 0EBFCD88

$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

安装docker引擎

$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io

测试

#下载镜像
$ sudo docker pull hello-world
#查看已下载的镜像
$ sudo docker images
#运行镜像
$ sudo docker run hello-world

安装nginx

拉取nginx镜像

$ sudo docker pull nginx

查看本地镜像

$ sudo docker images

运行容器

$ sudo docker run --name nginx -p 8080:80 -d id

安装成功

可以通过浏览器输入本机ip:8080可以直接访问nginx 服务

部署web项目

之前发现一个有趣的网站 mikutap,发现个有趣的音乐网站,叫做Mikutap,按照自己想要的节奏按住鼠标拖拽,或者点击键盘会有音乐.而且网站图案也会随之变化,音源应该是miku,

演示网站: https://aidn.jp/mikutap/

项目源码:https://github.com/HFIProgramming/mikutap

利用frp,docker,nginx 搭建web服务器_第1张图片

将项目源码先copy到本机,然后将本地文件拷贝到docker nginx容器的/usr/share/nginx/html 目录下

#我的项目源码位置在本机的/var/www/html下的mikutap文件夹中
# docker cp 本地路径 容器Id或name:容器目录
$ sudo docker cp /var/www/html/mikutap nginx:/usr/share/nginx/html/

然后就可以通过 www.ilesterzhou.top:8000/mikutap 访问到我内网本机上的mikutap 项目

利用frp,docker,nginx 搭建web服务器_第2张图片

然后就可以开心的玩耍了

#我的项目源码位置在本机的/var/www/html下的mikutap文件夹中

docker cp 本地路径 容器Id或name:容器目录

$ sudo docker cp /var/www/html/mikutap nginx:/usr/share/nginx/html/


然后就可以通过 www.ilesterzhou.top:8000/mikutap 访问到我内网本机上的mikutap 项目

[外链图片转存中...(img-AtYIK48k-1612410020829)]

然后就可以开心的玩耍了

你可能感兴趣的:(云服务器,docker,nginx)