Nginx+frp 网站建设

4ogGZ9.png

需求

需要用 Tecent Cloud Server, Local Server, 域名实现:

  • WordPress
  • Overleaf
  • Git Server
  • SSH 域名连接

部署准备工作

注意持久化存储!!!

Tecent Cloud Server

  • Docker + Docker-Compose
  • 利用 docker-compose 部署 Nginx Proxy Manager
    • 创建 nginx-proxy-manager 文件夹

      mkdir ~/nginx-proxy-manager
      cd ~/nginx-proxy-manager
      vim docker-compose.yml
      
    • 配置 docker-compose.yml

      version: "3"
      services:
        nginx_manager:
          # network_mode: web
          image: 'jc21/nginx-proxy-manager:latest'
          restart: unless-stopped
          ports:
            - '80:80'
            - '443:443'
            - '81:81'
          environment:
            DB_MYSQL_HOST: "db"
            DB_MYSQL_PORT: 3306
            DB_MYSQL_USER: "npm"
            DB_MYSQL_PASSWORD: "npm"
            DB_MYSQL_NAME: "npm"
          volumes:
            - ./data:/data
            - ./letsencrypt:/etc/letsencrypt
          depends_on:
            - db
        db:
          # network_mode: web
          image: 'jc21/mariadb-aria:latest'
          restart: unless-stopped
          environment:
            MYSQL_ROOT_PASSWORD: 'npm'
            MYSQL_DATABASE: 'npm'
            MYSQL_USER: 'npm'
            MYSQL_PASSWORD: 'npm'
          volumes:
            - ./data/mysql:/var/lib/mysql
      
    • 启动服务

      docker-compose up -d
      
    • 打开 UI 界面 ${IP}:81 (注意此时需要将 81 添加到腾讯云防火墙策略,后面删除)
  • 利用 docker-compose 部署 frp-server
    • 创建 frps 文件夹

      mkdir frps
      cd frps
      vim docker-compose.yml
      
    • 配置 docker-compose.yml

      version: '3.3'
      services:
          frps:
              restart: always
              volumes:
                  - './frps.ini:/etc/frp/frps.ini'
              container_name: frps
              ports:
                  - 5443:5443
                  # 这里可以多暴露一些端口出来,当然这些端口都需要在Tencent Cloud 防火墙中设置一下
                  - 6000:6000
              image: snowdreamtech/frps
      # 将网络设置为nginx_proxy_manager_default
      networks:
        default:
          external:
            name: nginx_proxy_manager_default
      
    • 配置文件 frps.ini

      [common]
      
      # 5443 监听端口需要暴露出来
      bind_port= 5443
      kcp_bind_port = 5443
      
      dashboard_user= xxxxxxxxxxxxxxxxxxxx
      
      
      dashboard_pwd= xxxxxxxxxxxxxxxxxxxx
      # 这里的9527 是UI 端口不需要暴露出来,由于和Nginx Proxy Manager 在同一个网络下,可以直接用容器名访问
      dashboard_port=9527
      # 这里的token 和frp-client 对应就好,可以尽量设置复杂一些
      token = xxxxxxxxxxxxxxxxxxxx
      
      
    • 启动服务

      docker-compose up -d
      

Local Server

  • Docker + Docker-Compose
  • 利用 docker-compose 部署 frp-client
    • 创建 frpc 文件夹

      mkdir ~/frpc
      cd ~/frpc
      vim docker-compose.yml
      
    • 配置 docker-compose.yml

      version: '3.3'
      services:
          frpc:
              restart: always
              network_mode: host
              volumes:
                  - './frpc.ini:/etc/frp/frpc.ini'
              container_name: frpc
              image: snowdreamtech/frpc
      
    • 配置文件 frpc.ini

      # frpc.ini
      [common]
      server_addr = xx.xx.xx.xx # Cloud Server IP
      server_port = 5443 # 之前暴露出来的5443 端口
      token = xxxxxxxxxxxxxxxxxxxx # 之前frp-server 设置的token
      
      
      # 若果需要管理多个ssh ,[ssh] 需要改为[ssh2],[ssh3]...,对应的端口不要冲突即可
      [ssh]
      type = tcp
      local_ip = 127.0.0.1
      local_port = 22 # 这个服务的端口
      remote_port = 6000 # 这个可以随意设置,只要不冲突就可以
      
      
      [overleaf]
      type = tcp
      local_ip = 127.0.0.1
      local_port = 80
      remote_port = 20080 # overleaf 是一个UI 的形式,我们直接将这个端口在内部传给nginx proxy manager 即可 和9527 端口不暴露同理. 不用在frps 服务中暴露这个端口.
      
    • 启动服务

      docker-compose up -d
      

方案

WordPress

部署在 Tencent Cloud Server 上

Cloud Server

  • 创建 blog 文件夹

    mkdir ~/blog
    cd ~/blog
    vim docker-compose.yml
    
  • 配置 docker-compose.yml

    version: '3'
    services:
      wpdatabase:
        image: mysql:latest
        volumes:
          - ./db_data:/var/lib/mysql
          - ./db/mysql.cnf:/etc/my.cnf
        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: root
          MYSQL_DATABASE: wordpress
          MYSQL_USER: wordpress
          MYSQL_PASSWORD: xxxxxxxxxxxxxxxxxxxx # 注意和下面保持一致
    
      wordpress:
        #network_mode: web
        depends_on:
          - wpdatabase
        image: wordpress:latest
        volumes:
          - ./wordpress_data:/var/www/html
        restart: always
        ports:
          - 10080:80
        environment:
          WORDPRESS_DB_HOST: wpdatabase:3306
          WORDPRESS_DB_USER: wordpress # 上面配置的mysql用户
          WORDPRESS_DB_PASSWORD: xxxxxxxxxxxxxxxxxxxx
    
    networks:
      default:
        external:
          name: nginx_proxy_manager_default
    
  • 启动服务

    docker-compose up -d
    
  • Add Proxy Host (打开 https://nginx.mingzailao.live )
    • 将提前设置的域名解析 xxx.xx(mingzailao.live)映射到http://blog_wordpress_1 (端口 80)

      xjM5Fm.png

    • 配置 ssh 证书(可以自动申请 Let's Encrypt 证书也可以用 custom Tencent Cloud 证书)

      NSp9Fb.png

    • 添加 Save

Overleaf

Overleaf 相对的复杂一些,主要涉及到 frp 端口转发. 实际上就是 Cloud server 监听 Local server

在 Local Server 部署 overleaf 参见:

https://github.com/overleaf/toolkit/blob/master/doc/quick-start-guide.md

注意部署完升级下 texlive

https://github.com/overleaf/toolkit/blob/master/doc/ce-upgrading-texlive.md

这里 overleaf 的端口设置可以随意设置, 然后记得在本立的 frp-client 添加服务.也就是上面的 frpc.ini 中写过的 overleaf 服务.

[overleaf]
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port = 20080 # overleaf 是一个UI 的形式,我们直接将这个端口在内部传给nginx proxy manager 即可 和9527 端口不暴露同理. 不用在frps 服务中暴露这个端口.

通过二级域名的方式将 Cloud server 中的 9527 也可以分配给 frp.mingzailao.live(frp.xx.xx). 这样可以直接打开 https://frp.mingzailao.live 查看

GNk73H.png

然后通过二级域名的方式将 overleaf.mingzailao.live 分配给 frpc.ini 中的 remote_port 端口,此时的 container 名称 用frps 即可.

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇