准备阶段
NAT穿透
1. 花生壳。
2. sunny ngrok [url](https://www.ngrok.cc/_book/start/ngrok_linux.html)(推荐)。
2.1 使用sunny-ngrok 注册、开通http/https隧道,映射到内网(192.168.1.107 eq. )的某端口(80 eq. )。
2.2 使用腾讯云购买 top域名、ssl,备案。
2.3 sunny-ngrok修改自定义域名为 主域名,客户端开启隧道使用服务即可。
<bash> sunny clientid your隧道id </bash>
2.4 APP开放端口使用,现在应该就可以访问自己的域名来实现功能了。
Nginx负载均衡 + 虚拟hosts
1. Nginx均衡 :
1.1 使用Nginx的负载均衡功能,可以有效利用空闲主机服务器进行分布式APP、网站部署。
1.2 安装gcc、pcre-devel、zlib-devel、openssl-devel 依赖项
1.3 官网安装 nginx 稳定版本
# 配置
cd nginx && \
./configure --prefix=/usr/local/nginx \ #这一个我觉得就够用了
--conf-path=/usr/local/nginx/conf/nginx.conf \
--pid-path=/usr/local/nginx/conf/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
# 安装 到指定目录
make
make install
# 如需要添加 nginx/sbin 到 .bashrc 。
# usage
./nginx #开启
./nginx -s stop #停止
./nginx -s quit
./nginx -s reload
ps aux|grep nginx
1.4 使用Nginx的负载均衡功能 : nginx.conf
http命名空间内:添加 负载后台子服务器n个。
upstream subServers {
ip_hash; # 根据客户端IP地址Hash值将请求分配给固定的一个服务器处理
# port transfer
server 192.168.31.105:80 weight=3; # 应用服务器1加权负载 default:1
server 192.168.31.101:80 ; # 应用服务器2
server 192.168.31.102:80 ; # 应用服务器3
server 192.168.31.179:80 ; # 应用服务器4
}
http命名空间 的 server 命名空间:
location / {
proxy_set_header X-Real-IP $remote_addr; # 迭代 获取上一个 ip地址 深度优先得到 first ip : real ip
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 迭代记录 中间 肉鸡的 IP 地址 :list
proxy_pass http://subServers; #请求转向mysvr 定义的服务器列表
deny 127.0.0.1; #拒绝的ip
# allow 172.18.5.54; #允许的ip
}
3. 虚拟host:一个端口号一般对应着一个app主进程。
用同一台主机进行的多项服务APP。
4. 永久生效
/etc/rc.d/rc.local 内添加二进制可执行文件路径nginx 和 sh sunny.sh
server {
listen 80 default_server;
server_name _; # 该配置还可以过滤有人恶意将某些域名指向你的主机ip服务器
return 501; # 过滤其他域名的请求,返回501 或其他的状态码
}
server {
listen 80;
server_name mail.xiaoxiaochenxu.top; # www.aaa.com域名
location / {
proxy_pass http://localhost:25; # 对应端口号25
}
}
server {
listen 80;
server_name www.xiaoxiaochenxu.top; # www.aaa.com域名
location / {
proxy_pass http://localhost:80; # 对应端口号8081
}
个人APP开发及其使用
微信官方教程 URL-LINK。
个人网站开发的使用
默认懂一丢丢网络编程 + C/python。
1. 使用 html5搭建网站主界面显示 + css优化界面 + JS优化复杂逻辑。
2. 简单快速使用web.py传递界面到用户的请求。
3. 重写 get post connect 等请求响应函数,得到具体APP逻辑功能。
4. github 上的 werobot 也可以采用。
wechat接口的使用
1. 加密解密接口
官方网站上有类 直接封装直接用。
2. tocken接口
本人使用继承线程类 重写run方法,后台自动间隔2h更新一次令牌。
3. 图像/文件上传、下载接口
mediaId:
mediaType:
accessToken:
4. mysql 接口调用
5. 公众号交互返回的响应体的内容
text:
<xml>
<ToUserName><![CDATA[{ToUserName}]]></ToUserName>
<FromUserName><![CDATA[{FromUserName}]]></FromUserName>
<CreateTime>{CreateTime}</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[{Content}]]></Content>
</xml>
image:
<xml>
<ToUserName><![CDATA[{ToUserName}]]></ToUserName>
<FromUserName><![CDATA[{FromUserName}]]></FromUserName>
<CreateTime>{CreateTime}</CreateTime>
<MsgType><![CDATA[image]]></MsgType>
<Image>
<MediaId><![CDATA[{MediaId}]]></MediaId>
</Image>
</xml>
5. Other开放接口详见官方文档