2015年9月23日星期三

在windows上用IIS搭建memadmin站点

memcache是使用比较广泛的缓存应用,之前在使用时觉得想要查询之类的非常困难,必须要使用命令行或者写代码,所以想写一个管理的页面应用,但是正好发现了memadmin这个货,正好是做这个的,于是直接搬过来使用就好了,下面是我部署的步骤,记录一下备忘,本来想部署在linux主机上,但是领导非要部署在windows上,还指定必须IIS。。。
  1. 下载需要用到的东西 
    • php-5.6.13-nts-Win32-VC11-x86.zip 下载
    • php_memcache-3.0.8-5.6-nts-vc11-x86.zip 下载 
      解压放入php\ext目录
    • memadmin-1.0.12.tar.gz 下载
  2. 配置php 
    • \php.ini-development复制出一份命名为php.ini
    • 配置相关必要选项,具体见php文档
  3. 配置IIS 
    • 处理程序映射 - 添加模块映射 - 
      *.php FastCgiModule D:\php\php-cgi.exe PHP_via_FastCGI 
      请求限制 - 仅当请求映射至以下内容时才调用处理程序 - 文件或文件夹
  4. 配置memadmin站点 
    • \config.php文件中配置登录memadmin的管理员用户名密码
  5. IIS中添加站点,默认文档中添加index.php

这样就好了,做完回头一看其实很简单,只要php和php_memcache的版本不搞错就好 
其实用linux更简单,有机会再弄个linux版的

2015年9月5日星期六

学习部署flask站点

前段时间工作有点闲,抽出一天时间把之前的chageci的api站点用python代码重构了一遍,使用了简单的flask框架,代码量锐减,少的我都不好意思分模块了,直接在一个py文件中搞定。
但是由于自己没学明白,只会编码而不会部署,加上linux不熟练,所以写好了代码就一直放在那里没去管它,直到叶同学跟我唠叨说要一起弄个vps做东西,我只好硬着头皮去研究flask的部署问题,没想到居然也一天搞定了,下面说说步骤。
  1. 开虚拟机 
    我是在azure上开了一个ubuntu的A1主机,几乎是最低配置了,跑两个个超低流量的api站点够用了
  2. ssh 
    单位用的是windows电脑,客户端用的是securecrt(原谅我用的不是正版,只是找一个熟悉linux的同事要的);家里用的是mac电脑,直接命令行就可以ssh连接了:ssh -p port user@ip
  3. 部署python环境 
    虽然连上了linux服务器,但是对linux命令还是抓瞎,一边google一边做。ubuntu跟mac一样已经安装好了python环境,而且python3也有,挺不错。
    • 安装pip sudo apt-get install python3-pip
    • 安装virtualenv sudu pip3 install virtualenv
    • 到项目目录 cd myapp
    • 创建python3虚拟环境 
      virtualenv -p /usr/bin/python3 venv 
      source venv/bin/activate 
      pip3 install package-name 
      此时环境都安装完毕,用python3 app.py运行可以测试效果
  4. web容器gunicorn 
    gunicorn是运行python站点的容器,可以多线程运行,是专门处理web请求的,而我们的代码则只需要专注于处理逻辑。 
    安装 sudu apt-get install gunicorn 
    运行 gunicorn app.py 
    这样就默认运行在本地的8000端口了,访问http://127.0.0.1:8000就可以直接访问到我们的站点,而如果需要指定一些东西可以添加参数gunicorn -w 4 -b 0.0.0.0:8000 -p rocket.pid -D api:app,-w是指定线程数,-b是监听ip和端口,如果制定为0.0.0.0则可以外网访问,但是不建议这样做,最好用默认的127.0.0.1,然后前面再添加一层反代,-D是添加为守护进程,这样在ssh超时后仍然可以运行(就像winservice)
  5. 反向代理 
    以前用过nignx,配置比较容易,但是同学上的是apache,似乎比nignx难一些,于是让他帮我配好一个反代站点,我也没管了。
  6. 后续问题 
    程序在本地运行速度很快,可是到了服务器上却很慢,差不多要几十秒,后来发现我们的程序都需要发起http请求,看日志发现这个请求消耗了几乎全部的时间,但是直接在服务器的浏览器中请求该域名却很快,原来服务器默认开通了ipv6,所以解析域名时先进行ipv6的解析,时间都消耗在这里了,把ipv6禁用掉就好了

总结

linux还是很好用的,看着命令行界面下运行任何程序都那么快,心里还是有不小的快感,学会了一些常用的命令 lspskillrmtouch 
退出virtualenv环境的命令 deactivate 
使用了vim直接编辑代码测试问题,最常用的ddi-wq-q!
最后利用周末时间详细看了一遍一个flask的文档,以前看到过,觉得看不懂,没看下去,现在看几乎全是干货,受用匪浅,强烈推荐 
https://spacewander.github.io/explore-flask-zh/index.html

由于我的站点是很简单的微信公众账号的api,昨天看了一下,新增了4个用户:)