俗话说 工欲善其事 必先利其器
这个链接是使用Intellij IDEA 13.0.1 来写lua
http://note.youdao.com/share/?id=9cf7b77500457cb0db09500f8b6f5d3d&type=note
第一部分 环境安装
-前言
下面在文章是个人便研究kepler系列框架 中间遇到在各种问题 以及解决方法 从零开始 到最终把官方提供的所有例子跑通全过程 文章有些散 有时间慢慢整理
文章排版不好看,给那些在研究kepler的luaer一些参考,用了lua开发web框架,总体给我的感觉是开发调试速度提高,项目占用内存降低好多倍,处理高并发能力提高几倍,
究其原因是我们在使用相当于在用一个c语言编写的框架,加上lua本身就几百k,较之其他语言几十M,自然是便捷迅速
美中不足的一点是 lua用的人不多,没那么多像java高级语言强大功能,有点可惜,可能跟他的定位有关,不过做日常的web软件和网站绰绰有余,你要是想来个桌面软件
那真没有
-- 适应场景
如果你的项目组核心功能遇到性能瓶颈,不妨把这个核心的东西交给lua
如果哪个模块遭遇高并发访问,不妨试试lua web重写
-正文
1 先安装lua 这里还是不采用 apt-get install lua5.1 否则安装完成 kepler无法安装 比较麻烦 各种路径要手动设置 对于新手的我们 非常的麻烦 直接进入方式2
2 采用安装包的方式 安装lua
a 安装readline
wget http://fossies.org/linux/misc/readline-6.3.tar.gz
##wget http://www.sfr-fresh.com/unix/misc/readline-6.1.tar.gz 这个链接废弃了 使用上面6.3版本
tar -zxvf readline-6.1.tar.gz
cd ~~ ./configure && make && make install
sudo ldconfig
b 安装ncurses
wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.7.tar.gz
tar -xvf ncurses -5.7.tar.gz
然后 cd ncurses-5.7
./configure,make,make install
c 安装lua
1)先去Lua的官网(http://www.lua.org/ftp/)下载最新发布包,我选择的是 lua-5.1.4.tar.gz
2)使用命令tar -xzvf lua-5.1.4.tar.gz
3)cd lua-5.1.4, 然后执行make,会提示让你输入make 系统,因为我的系统是linux的,因此我输入
make linux
make install
3 开始安装 kepler系列
a 先安装luarocks 那luarocks是个什么东西呢 他类似java的maven+nexus仓库 管理jar包的 你需要的第三方lua工具包 都要以
luarocks install json4lua 这种命令方式去下载使用 否则无法用了
包括后面讲的 下载安装 WSAPI Xavante 等等
http://luarocks.org/releases/
下载 具体安装也可以参考官网
luarocks-2.2.0.tar.gz |
cd /usr/local cp luarocks-2.2.0.tar.gz
tar zxvf luarocks-2.2.0.tar.gz
cd luarocks-2.2.0
./configure
make
make install
第二部分 kepler项目搭建
4 至此我们先来安装一个kepler的web环境 跑个工程看看
https://github.com/keplerproject 这个是kepler的很多项目地址 找个orbit项目
git clone https://github.com/keplerproject/orbit
cd orbit/samples 注意要先到这个文件夹下
运行命令: wsapi -p8090
然后在浏览器敲命令http://10.63.2.19:8090/hello/hello.lua
到这里你肯定报错,wsapi是什么命令 好吧 我们继续安装环境 因为环境根本没装完 你这命令当然找不到
更多内容参考这个英文网站http://www.keplerproject.org/ ,当然你肯定不会去看 ,都是英文 看着累 哎没办法,我搜了很多资料
发现kepler中文的资料太少,硬着头皮去看 居然能看懂 到最终把linux环境下部署成功了orbit的samples项目 话说 那速度真的太快 连眨眼都没眨眼
页面就出来了 比较相当于使用一个c语言的后端服务器 这能不快吗 这也是lua这么吸引我的原因 我java使用的很熟练 总感觉要突破点什么 lua是个不错的选择
好闲话少说,咱们来安装安装wsapi xavante和orbit
orbit是啥?就是类似struts springMvc这种框架呗 那可跟加jar包不一样
wsapi是啥 xavante 是啥
wsapi 那去看官网介绍吧
xavante就是tomcat nginx apache这种服务器 超级小
luarocks install wsapi-xavante
luarocks install orbit
看到了吧 luarocks命令 就是刚刚咱们安装过的 以后很多东西都得这么安装 安装需要一点时间 下载网速慢 都是国外的地址
好到此就算安装完毕环境 需要其他的东西 就继续研究吧
我们来运行下项目
注意一定要cd到samples文件夹下 运行wsapi或者orbit命令 系统就会自动把这个当成当前环境变量 根目录 否则是找不到lua文件的 (确实很方便 就跟tomcat的webapps一样)
cd orbit/samples
wsapi -p8090
访问
http://10.63.2.19:8090/hello/hello.lua
如果要结束掉wsapi 那就只能去kill进程号了 ps-ef|grep wsapi 找到进程 kill掉
wsapi -p8090 &
加个&就可以使你的服务器关掉终端也继续运行
当然你也可以使用orbit -p8090 hello.lua
不过发现这种方式每次改完还得重启
现在应该都出来了 试着改改hello.lua里面的函数 新加个函数 删除个函数,居然不用重启服务 立马就生效 这这脚本语言就这样任性 太好了
还有其他项目都可以试试 不过要安装其他依赖 我继续研究了 有空再补充
学一门语言和技术是简单的 但是难就难在开头,环境搭建太痛苦 比较难弄 希望能给你一点帮助
安装 mysql依赖 这过程真是遇到挫折
提示mysql.h找不到 安装 apt-get install libmysqlclient-dev
出现下面错误
Depends: xxx(< 1.2.1) but xxx is to be installed
于是执行 apt-get install libmariadbclient-dev
解决
luarocks install luasql-mysql MYSQL_INCDIR=/usr/include/mysql
终于安装成功
安装 sqlite3
apt-get install sqlite3
apt-get install libsqlite3-dev
运行时候发现下面错误
今天运行lua的时候出现了 "lua: symbol lookup error: /usr/local/lib/libreadline.so.6: undefined symbol: PC"的错误, google了一下找到了解决的办法, cd /usr/local/lib
然后 sqlite3 obit/samles/blog/blog.db
就可以了
但是http://10.63.2.19:8090/blog/blog.lua/ 访问出现post表 找不到 改改源码里面的表名
vi blog.lua
===========修改成如下
pages = blog:model "blog_post"
pages = blog:model "blog_page"
pages = blog:model "blog_comment"
=========blog_config.lua=======
database = {
--driver = "mysql",
--conn_data = { "blog", "root", "root123" }
--"blog", "root", "root123", "localhost", 3306
driver = "sqlite3",
conn_data = { "/home/hzhedongyu/lua/webapps/orbit/samples/blog" .. "/blog.db" }
}
================现在就可以访问了
第三部分 项目开发常见问题
1 链接mysql数据库乱码 解决方法
mapper.conn:execute"SET NAMES utf8"