美文网首页aws微信公众号开发杂项
微信个人公众号开发-先搭个免费的服务器吧(AWS EC2)

微信个人公众号开发-先搭个免费的服务器吧(AWS EC2)

作者: 奔IV程序猿 | 来源:发表于2017-10-26 14:42 被阅读360次

    Python + Flask + Nginx 搭建免费微信公众号服务器

    最近帮朋友做了个个人公众号, 一直也想研究下公众号开发, 免费帮忙, 不能再贴钱搞服务器吧, 于是就想到了免费的服务器资源 亚马逊的AWS EC2.

    说是免费, 也就是给你一个低配虚拟服务器用来练手, 时间是一年.后面就是按需收费了. 不过咱也可以赖皮,一年过后把这个服务器干掉, 换个邮箱重新注册一个继续玩. 如果你微信公众号用户成规模的,估计得考虑花钱整个国内的了, 大概看了下也不贵.

    额...扯远了, 下面正式进入主题: 标题30字限制不足以表达,其实我想写的标题还要加上 Python + Flask + Nginx.(现在干啥都扯上Python哈, 没办法, 最近这个热乎.)

    1.在亚马逊aws创建新用户.

    相关教程网上很多很全, 而且界面也有中文,所以此处省略若干URL, 还请客观在搜索引擎里小手抖一抖,搜索相关教程.

    需要注意的是, 注册时你得有张visa 或 MasterCard 信用卡来绑定账户, 亚马逊到时候会砍你一刀1$作为认证,好像实际没有砍,只是做认证而已.

    2. 选择服务器区域然后创建的操作系统.

    系统我选的Ubuntu, 其实linux的都差不多, 之前用过aws linux, 这次试试Ubuntu, 发现没什么发现.

    此处可能有坑,需注意: 选择服务器区域(也称"节点")的时候,一般都是选响应最快的, 可以在http://www.cloudping.info/ 查询. 但是但是但是, 之前一直最快的东京服务器好像无法远程ssh, 不知是我rp问题还是其他,于是我选择韩国首尔就没啥问题.

    3. 开始部署Flask应用程序.(终于步入最核心主题)

    3.1 先写个简单Flask应用程序在你本地跑跑.

    首先得先把Flask装在本地:

    pip install flask

    这里之所以建议现在本地创建,原因是在服务器上编写或调试都不方便, 当然是针对我这种新手而言.

    fs在本地新建一个文件夹 flaskserver 用来存放代码文件.

    在文件夹内新建文件 flaskserver.py

    在终端输入下面的命令,测试你的Flask应用:

    python flaskserver.py

    可以看到服务以及运行起来了

    浏览器输入http://0.0.0.0:5000, 可以看到运行效果

    创建WSGI入口点文件wsgi.py, 这个文件用在后面服务器部署时候用.

    创建USGI配置文件flaskserver.ini,部署的时候用.

    3.2 服务器环境安装.

    好了,现在该ssh到亚马逊服务器上配置下环境了。(关于如何配置ssh到服务器的过程,这里就不详细敷出)

    首先安装NginxFlask,uWSGI

    pip install uwsgi flask nginx

    注意:如果提醒权限不足请加 sudo

    3.3 部署代码及服务配置.

    1)安装完毕后在服务器上创建个文件夹

    mkdir /var/www/flaskserver/

    然后将本地创建的那3个文件(flaskserver.py,wsgi.py, flaskserver.ini)copy到此文件夹中.如果手头没有sftp工具,直接在此文件夹下创建文件也行,反正没多少代码,而且代码都是测试过了的。

    给用户www-data程序访问权限:

    sudo chown www-data:www-data /var/www/flaskserver

    2)键入以下命令创建uWSGI启动服务

    nano /etc/systemd/system/uwsgi.service

    3)配置Nginx代理:

    接下来我们需要配置Nginx使用uwsgi协议向socket转发web请求.

    首先在使用以下命令在Nginx的sites-available目录下新建一个服务配置文件:

    sudo nano /etc/nginx/sites-available/flaskserver

    内容为:

    注意要将你aws ec2 服务器的公网IP或者DNS 配置到上面代码里(server_name 项), 这个值应该在aws控制台这个界面上找:

    然后将上面的Nginx配置文件链接到sites-enabled目录下:

    sudo ln -s /etc/nginx/sites-available/falskserver/flaskserver /etc/nginx/sites-enabled

    就快大功告成了, 先测试下nginx 配置是否ok

    sudo nginx -t

    如果没啥问题, 就把Nginx 服务重启应用新的配置文件.

    sudo service nginx restart

    重启uwsgi服务

    sudo systemctl restart uwsgi.service

    如果不出意外的话, 在浏览器里访问你aws服务器的公网IP, 应该可以看到web页面可以正常工作了.

    4. 错误排查

    做了这么多工作, 到头来一访问发现不行. 耐心点, 新手就是个踩坑的过程, 以下是我踩过的坑:

    访问公网IP, 没有响应

    去检查下aws的入站规则,是不是没有开放给外部访问

    有响应,但是返回错误

    这个错误可能由很多原因导致的

    1) 配置有误

    2)代码有误

    3)权限配置有误

    这个只能查看日志找原因, 日志一般在以下下几个目录:

    /var/log/nginx/

    /var/log/uwsgi/

    5. 服务器其他设置

    入站规则

    当你的服务运行正常的时候,你会发现每天会有N多恶意爬虫来扫描你的ip, 不断地尝试你网站的突破口,看起来好怕怕.

    虽然我们的应用他可能没法攻破, 但就这么天天不断地爬, 免费服务器受不了, 日志记录也受不了. 所以安全起见,设置入站规则, 列出可以访问你网站的白名单. 这个在微信公众号开发的时候同样适用, 我能可以拿到微信服务器所有的ip,然后添加到入站规则里就好了.

    结语

    看到这里有人可能会说, 上面这一通和微信公众号开发有毛线关系? 不要急嘛, 服务器的搭建是公众号开发的重点, 而有了后台服务器的公众号, 公众号便沦为了一个前端UI, 大部分功能逻辑都要在服务器端搞定. 所以下篇文章应该是如何将公众号和我们搭建的服务器关联起来.

    有问题请留言, 有错误请拍砖, 交流愉快:)

    相关文章

      网友评论

        本文标题:微信个人公众号开发-先搭个免费的服务器吧(AWS EC2)

        本文链接:https://www.haomeiwen.com/subject/blhkpxtx.html