微信公众号开发――服务器配置

匿名 (未验证) 提交于 2019-12-03 00:33:02

[前言]:因为自己第一次配置开发者模式是2015年底,当时是SAE的应用,现在申请了一个阿里云的服务器,根据官方文档尝试一晚上无果,自己又找资料成功完成启用微信公众号后台开发者模式的服务器设置。

一、前提

1、购买一台云服务器

公网IP,可以没有域名,我选择安装的是CentOS 7.5的系统。(这里我是用的最后一个月的学生优惠9.9买了台阿里云玩玩);

2、配置安全组


添加一条可以访问80端口的安全规则。

3、远程连接

(1)在阿里云的管理平台上直接登入


用户名默认root

密码是购买的时候设置的用户密码,忘记的话可以在控制台重置密码。

(2)使用Xshell、SecureCRT、Putty等软件远程登入

这里推荐使用Xshell,用户名密码同上。

4、搭建服务

以下是远程登入后,在命令行中操作。全部在命令行中操作完成的。

(1)安装python2.7以上版本

readline-devel 如果没有安装的话,会造成进入python解释器上下左右回退键都输入不正常。

yum install -y readline-devel

如果缺少openssl-devel的话,访问https会无法工作。

yum install -y openssl-devel

下载

cd /tmp wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tar.xz

解压缩

tar -xJvf Python-2.7.12.tar.xz

编译

cd Python-2.7.12/ ./configure --prefix=/usr/local/python2.7 make make install

链接

ln -s /usr/local/python2.7/bin/python2.7 /usr/local/bin/python

由于系统自带的python路径是/usr/bin/python。PATH中,/usr/local/bin比/usr/bin靠前,所以当你输入python,系统会自动启动你安装的python2.7.12。

echo $PATH /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

#!/bin/env python

这样,CentOS7.2调用的也是你安装的2.7.12。好处是当你在别的环境里运行,不需要改第一行也能执行。当然你也可以使用绝对路径:

#!/usr/local/bin/python

这样当在别的环境中执行,你需要用sed把第一行的路径替换下。

(2)安装web.py

先安装 easy install:

yum install python-setuptools

安装完成,输入:

easy_install web.py

(3)安装libxml2, libxslt, lxml python

yum install libxml2 yum install libxslt yum install lxml python

(4)编辑代码,如果不懂python 语法,请到python官方文档查询说明。

vim main.py

点击“i”,进入编辑模式,输入以下代码:

# -*- coding: utf-8 -*- # filename: main.py import web  urls = (     '/wx', 'Handle', )  class Handle(object):     def GET(self):         return "hello, this is a test"  if __name__ == '__main__':     app = web.application(urls, globals())     app.run() 

(5)开启服务

如果出现“socket.error: No socket could be created“错误信息,可能为80端口号被占用,可能是没有权限,请自行查询解决办法。如果遇见其他错误信息,请到web.py官方文档,学习webpy 框架3执行命令:

sudo python main.py 80 

(6)测试

在浏览器输入http://外网IP:80/wx,可以看到类似于如下的页面:


这表明一个简单的web应用已搭建完成。

5、部署LAMP

Linux+Apache+MySQL/MariaDB+Perl/PHP/Python,

参考阿里云官方文档

https://help.aliyun.com/document_detail/50774.html?spm=5176.doc52954.6.722.t92kLG

完成LAMP的部署;

6、修改index.php

代码参考官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319

如下:

<?php     /**      * wechat php test      */          //define your token     define("TOKEN", "weixin");     $wechatObj = new wechatCallbackapiTest();     $wechatObj->valid();          class wechatCallbackapiTest     {         public function valid()         {             $echoStr = $_GET["echostr"];                  //valid signature , option             if($this->checkSignature()){                 echo $echoStr;                 exit;             }         }              public function responseMsg()         {             //get post data, May be due to the different environments             $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];                  //extract post data             if (!empty($postStr)){                                          $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);                     $fromUsername = $postObj->FromUserName;                     $toUsername = $postObj->ToUserName;                     $keyword = trim($postObj->Content);                     $time = time();                     $textTpl = "<xml>                                 <ToUserName><![CDATA[%s]]></ToUserName>                                 <FromUserName><![CDATA[%s]]></FromUserName>                                 <CreateTime>%s</CreateTime>                                 <MsgType><![CDATA[%s]]></MsgType>                                 <Content><![CDATA[%s]]></Content>                                 <FuncFlag>0</FuncFlag>                                 </xml>";                                  if(!empty( $keyword ))                     {                         $msgType = "text";                         $contentStr = "Welcome to wechat world!";                         $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);                         echo $resultStr;                     }else{                         echo "Input something...";                     }                  }else {                 echo "";                 exit;             }         }                      private function checkSignature()         {             $signature = $_GET["signature"];             $timestamp = $_GET["timestamp"];             $nonce = $_GET["nonce"];                                      $token = TOKEN;             $tmpArr = array($token, $timestamp, $nonce);             sort($tmpArr);             $tmpStr = implode( $tmpArr );             $tmpStr = sha1( $tmpStr );                          if( $tmpStr == $signature ){                 return true;             }else{                 return false;             }         }     }          ?>    
其中:
define("TOKEN", "weixin");   

第7行是用户定义的“token”,需要与下面将会提及的令牌(Token)相同。

二、公众号开发信息

1、启用开发者密码(AppSecret)


直接扫码完成验证,开启后保存好密码即可。

2、IP白名单

将自己的云服务器的公网IP地址添加到IP白名单中。

三、服务器配置

填写完毕后,提交即可完成服务器配置的启用。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!