标签归档:CentOS

CentOS6.5尝试lwan

这些天看到了lwan官网上号称作者历经三年打造的高性能轻量级可扩展Web Server,号称具备了低内存占用、最小化的系统调用次数、对静态文件根据大小智能的处理,预缓存目录信息以及7200行主体代码等特点,到今天(2014年12月26日)为止,Github已经收集到了2000+个star。

其中最吸引我的就是静态文件能达到18w qps,加上它较小的代码体积,于是想要试用一下。

阅读Github上的说明可知,这一软件需要用cmake,无碍,自己手上这台CentOS 6.5的机器上有,不过看到编译参数里面的-flto之后心里凉了半截,这东西CentOS 6.5上带的GCC 4.4.7不能编译啊……

好吧,简直就是噩耗,更换GCC实在不是什么省心的事儿,主要是手上测试机性能实在太差(Pentium双核+2G RAM+160GB HDD,10年的台式机……),估计只编译C/C++支持的话就得一个多小时了,无碍,那么就编译吧。

本次使用的是GCC 4.8.4,使用了日本镜像,速度较快。GCC还依赖三个库:

这三个库安装顺序可以为gmp -> mpfr -> mpc,mpc依赖前两者。

同时,需要通过yum安装glibc-devel以及glibc-devel.i686两个包。

在开始config之前,需要添加环境变量:

否则之前安装的gmp等三个库是没法用上的。

之后便是配置安装:

漫长的编译之后,会在先前的gcc目录(/user/local/gcc)生成,备份原有gcc(需要mv操作)之后通过可以考虑通过

切换版本。

GCC准备好了之后自然就要开始编译,编译时原本出现了一些对于比如luajit以及sqlite3的版本要求,但是作者今天在一个issue中提到似乎已经解决这一问题,这里就先略过,实际出现的话,根据出现问题的cmake提示,将软件依赖改为全路径即可。

编译时需要编译安装luajit以及通过yum安装mysql-devel。

在顶级目录编译完成之后,可以看到在顶级目录下的lwan目录中会生成一个名为lwan的二进制文件,将其拷贝到顶级目录,启动之后就可以体验lwan了。

lwan

关于端口的问题,可以通过修改顶级目录下的lwan.conf修改监听端口。

不过,最后要说的是其实自己的测试结果并不尽如人意,ab并发过万会引起lwan不响应其他请求,而Nginx则没有这类问题,还需要再次试验,确定问题的原因。

CentOS装机

最近想要做一些实验,无奈自己手头上没有富余的机器,看到好几个同事都自带电脑,没有用公司发的台式机,于是打算用这些台式机来做做实验。

公司本身是有完整的LAMP/LNMP环境安装包的,但是基于一些原因是不能使用的,整套环境只能自行安装,综合了一下决定安装如下软件:

  • CentOS 6.5 64位(可以考虑使用 北理工 的源,速度很快)
  • Nginx 1.2.7
  • PHP 5.4

装机其实是一个很无聊的过程,然而每次都能出现新的状况,真是让人抓狂,写过好几次这样的笔记,但是这次却又遇到了各种情况。

CentOS

启动项问题

安装CentOS已经变得极为简便,由于安装的是公司的台式机,直接用UltraISO或者直接用dd将镜像写入U盘,再通过GUI完成安装即可(参考此处),不过这次用U盘安装倒是出了个不大不小的问题,即安装之后只要拔掉U盘就无法启动。

这个问题首先感觉应该是引导项写入的问题,前期安装的时候一阵无脑的下一步点选,没有注意到写入的设备居然是U盘,而且这台机器U盘被识别成了/dev/sda,并不是意想中的/dev/sdb,那么单纯把启动项写入/dev/sdb,也就是实际的机器磁盘之后仍然是不能启动的,因为启动之后机器硬盘就被识别为/dev/sda了……

关键地方在于设定写入的磁盘的时候,点击更改设备按钮(如果你用的是中文安装环境的话),同时还要设定BIOS驱动器顺序这一项目(这里是一个折叠的选项),将驱动器设定为机器磁盘,比如安装的时候U盘是/dev/sda,那么这个项目就要设定为/dev/sdb,这样之后的安装才能正确的完成,机器才会能够启动。

远程桌面

作为Server来说是不需要GUI界面的,但是首先来说,为了方便实验,同时后期可能会安装Oracle数据库,那么一个图形界面还是很需要的,安装的时候可以选择Basic Server,同时自行设定软件界面,在桌面选项卡中选择上需要的桌面软件,我自己是勾选了KDE以外的所有项目。

GUI界面虽好,但是好几台机器放在脚下,每台机器再接一个显示器,还得有键鼠等设备,我的桌面肯定是放不下了。这时候就需要用上远程桌面了。

因为是做实验,选择了一个自己觉得简单易用的远程桌面软件TigerVNC

安装上来说非常容易,使用yum就可以:

这个软件的配置文件也是很简单,编辑/etc/sysconfig/vncservers,设定一下即可

简单来说就是设定第1个可登陆用户为root,同时设定分辨率为1024X768。

之后su到root下,通过vncpasswd设定登录所需的密码,之后通过客户端连接的时候需要通过这个密码登录,之后通过vncserver启动服务,这个软件也把自己注册成了服务,可以考虑使用service启动。

连接的时候需要使用端口,这里比较有意思的是这个软件监听的端口与你设定的用户编号有关,也就是用户1是5901,用户2是5902.

连接的客户端可以考虑直接使用Chrome的VNC Viewer扩展

VNC Viewer

再也不用在桌面上摆上一堆显示器键鼠什么的了。

VNC Viewer connected

PHP

PHP真是没太多麻烦的地方,然后在装libmemcached的时候发现1.0.18版本的libmemcached依然没法在我的CentOS 6.5的机器上成功的安装,没想到上次在Ubuntu上配环境遇到的问题在又遇到了一次,老办法,换1.0.16版本解决问题。

其他

测试的机器使用路由器串联起来的,只需要在路由器上使用一个简单的端口转发配置(家用路由器应该都有),将制定的端口请求绑定到各台路由器已连接的机器上即可。

端口转发

SSH的话需要多监听一个端口,CentOS的话修改/etc/ssh/sshd_config,解除对Port 22这一行的注释,同时加上想要监听的端口即可,即增加一行Port your-port,之后重启sshd服务。

同时配置上一条端口转发规则即可,之后用

即可。即所有的请求都发向路由器IP就好。