企业微信内部网站集成部署

本指南用于服务器部署企业微信自建应用,配置 HTTPS 证书、Nginx、网页授权、JS-SDK、可信 IP、以及通过 JupyterLab 调试接口和 FRP 实现外网访问。


第一部分:HTTPS 证书申请与 Nginx 配置

1. 申请域名

可通过服务商(如阿里云、腾讯云、Cloudflare 等)注册一个用于内部系统的域名,例如:your-domain.com

2. 配置 DNS 解析

your-domain.com 的 A 记录指向你的服务器公网 IP。

3. 安装 Certbot 并申请 HTTPS 证书

sudo apt update
sudo apt install certbot python3-certbot-nginx -y

申请证书:

sudo certbot --nginx -d your-domain.com

证书默认会被安装到:

/etc/letsencrypt/live/your-domain.com/

PS:证书申请完成以后会添加默认的 Nginx 配置。

4. Certbot 申请证书后自动生成的 Nginx 配置在哪?

使用 sudo certbot --nginx -d your-domain.com 命令后,Certbot 会做两件事:

  1. 申请证书
  2. 自动修改 Nginx 配置 以启用 HTTPS 支持,并使用申请到的证书

通常会自动生成/修改以下两个位置的文件:

类型 路径 说明
主配置 /etc/nginx/sites-available/default 默认站点配置文件(已被 certbot 修改)
证书路径 /etc/letsencrypt/live/your-domain.com/ 证书文件目录,包含 .pem 文件
链接文件 /etc/nginx/sites-enabled/default 指向 sites-available/default 的软链接

5. 配置 Nginx

编辑 Nginx 配置文件(推荐单独建立):

# /etc/nginx/sites-available/yourapp
server {
    listen 443 ssl http2;
    server_name your-domain.com;

    ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

    location / {
        proxy_pass http://127.0.0.1:80;  # 转发到本地服务
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

server {
    listen 80;
    server_name your-domain.com;
    return 301 https://$host$request_uri;
}

启用配置并重启 Nginx:

sudo ln -s /etc/nginx/sites-available/yourapp /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl restart nginx

PS:如果之前没有创建 /etc/nginx/sites-available/yourapp 文件,那么会出现警告,并且使用的是申请证书默认追加的配置(/etc/nginx/sites-enabled/default),建议删除追加的 your-domain.com 配置。

6. 设置自动续期 & 重载 Nginx

Let’s Encrypt 的证书有效期是 90 天,Certbot 会自动续期,但你要确保续期后能让 nginx 重新加载。

手动测试续期任务是否正常:

sudo certbot renew --dry-run
配置 Nginx 自动 reload(只需一次):

创建一个钩子脚本:

sudo nano /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh

内容如下:

#!/bin/bash
systemctl reload nginx

保存后添加执行权限:

sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh

这样以后自动续期后 Nginx 会立即 reload。


第二部分:配置企业微信自建应用

1. 创建应用

企业微信后台 →【应用管理】→【创建应用】

  • 填写名称、上传图标、设置可见范围(不要选择个人,不然获取不到用户信息)

在这里插入图片描述

2. 设置网页授权及 JS-SDK

授权域名设置:

企业微信后台 →【应用管理】→ 选择应用 → 【网页授权及 JS-SDK】

  • 添加 your-domain.com

⚠️ 注意:必须先完成“域名验证”才能添加

在这里插入图片描述

3. 域名验证操作

下载验证文件(如 WW_verify_BSOkbabMjTbIiT0M.txt

上传到服务器域名根目录(默认是 /var/www/html),确保能访问:

http://your-domain.com/WW_verify_BSOkbabMjTbIiT0M.txt

Nginx 示例配置支持方式:

location ~* ^/WW_verify_.*\.txt$ {
    root /var/www/html;  # 替换为验证文件存放路径
    try_files $uri =404;
}

验证成功后,再次设置网页授权域名即可通过。

4. 设置可信 IP

企业微信后台 →【企业可信 IP】→ 添加你的服务器公网 IP

在这里插入图片描述

5. 设置 Web 网页授权回调域

授权回调域输入域名即可:

your-domain.com

可用于嵌入你部署的 Web 页面或系统界面。
在这里插入图片描述

6. 设置应用主页

设置该应用点击后的跳转页面:

https://your-domain.com/index.html

可用于嵌入你部署的 Web 页面或系统界面,也可以先输入其他网站测试。

在这里插入图片描述


第三部分:JupyterLab 调试企业微信 API

1. 安装 JupyterLab

pip install jupyterlab
jupyter lab --ip=0.0.0.0 --port=8888 --allow-root

2. 浏览器访问

http://your-domain.com:8888/?token=xxxxxx

或设置密码访问。

3. Python 调用企业微信接口

import requests
import json

# 企业微信的 CorpID 和 Secret
CORP_ID = '你的企业微信 CorpID'      # 企业微信 CorpID
SECRET = '你的企业微信 Secret'   	# 企业微信 Secret

# 获取 access_token 的 URL
url = f'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={
      
      CORP_ID}&corpsecret={
      
      SECRET}'

def get_access_token():
    response = requests.get(url)
    data = response.json()
    
    if 'access_token' in data:
        return data['access_token']
    else:
        print("Error:", data)
        return None

# 获取并打印 access_token
access_token = get_access_token()
if access_token:
    print("Access Token:", access_token)

# 发送消息
url = f"https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={
      
      access_token}"

data = {
    
    
    "touser": "@all",
    "msgtype": "text",
    "agentid": 1000002,
    "text": {
    
    
        "content": "Hello from Python!"
    },
    "safe": 0
}

resp = requests.post(url, json=data)
print(resp.json())

在这里插入图片描述


第四部分:通过 FRP 实现外网访问本地服务

适用于内网部署但需公网可访问的 Web 服务。

1. 服务端 frps(推荐使用 Docker)

docker run -d --name frps \
 -v /etc/frp/frps.ini:/etc/frp/frps.ini \
 -p 7000:7000 -p 7500:7500 \
 snowdreamtech/frps

2. 客户端 frpc(Windows 示例)

配置文件 frpc.ini 示例:

[common]
server_addr = your-frps-server.com
server_port = 7000
token = your_token

[web]
type = http
local_port = 8000
custom_domains = your-domain.com

通过 FRP,即可将本地端口 8000 映射为公网访问。


总结流程图(简要):

[域名注册 & HTTPS证书]
        ↓
[Nginx配置 + 反向代理]
        ↓
[企业微信创建应用]
        ↓
[验证域名 ➜ 设置网页授权 + 可信IP]
        ↓
[部署业务页面 ➜ 设置应用主页 URL]
        ↓
[JupyterLab 调试API / Python SDK]
        ↓
[使用 FRP 代理内网服务,如需]

如需对接扫码登录、打卡、消息推送等具体 API,可结合企业微信官方 API 文档继续开发。

猜你喜欢

转载自blog.csdn.net/m0_58648890/article/details/146601202
今日推荐