好久没写博了,一方面呢,LP对于我博客上的琐事记录表示了抗议,另一方面,最近杂事比较多,工作发生失误,生活有些凌乱,无暇记录。
还是继续研究linux上的ROR部署吧。
一、ROR相关
其实前阵子本应继续的,可是不料虚拟机中的Linux发疯了,好多东西安装失败(具体从哪个开始的,我已经不记得了,总之是无法进行下去了),最后索性重 新安装了一遍Linux(系统居然也装了N遍,原因是认为单系统,就没有选那个GRUB,结果无法引导,浪费N多时间),然后又把ruby、rails等 等重新安装一遍,其间又有些许反复(崩溃ing)。最后终于装好,顺便把mongrel、capistrano也装上了,而SVN是在装系统时带上的。
其中装mongrel时有个需要注意的地方,由于我装的ruby是最新的1.9.1版,在运行ruby setup.rb后,会报一堆ptr指针相关的错误,在网上找了半天,终于旮旯处找到了解决方案(由http://groups.google.com /group/rubyonrails-talk/browse_thread/thread/b5da5cda5137f001 /c0595992a2bb7ad3?#c0595992a2bb7ad3找到http://isitruby19.com/mongrel):
在解压后的mongrel的目录下,ext/http11/http11.c文件需要作一些修改:
replace line 77 with
for(ch = RSTRING_PTR(f), end = ch + RSTRING_LEN(f); ch < end; ch++) {
replace line 172 with
colon = strchr(RSTRING_PTR(temp), ':');
replace line 174 with
rb_hash_aset(req, global_server_name, rb_str_substr(temp, 0, colon - RSTRING_PTR(temp)));
replce line 176,177
rb_str_substr(temp, colon - RSTRING_PTR(temp)+1,
RSTRING_LEN(temp)));
replace lines 298 299
dptr = RSTRING_PTR(data);
dlen = RSTRING_LEN(data);
也就是把代码中的关于length和ptr的写法都改一下。
这样修改之后,安装成功了,但是该帖子中还有以下几句:
5) cd ../../lib/mongrel
(or the full path "/usr/local/lib/ruby/gems/1.9.1/gems/mongrel-1.1.5/lib/mongrel"
6) mate / sudo vi handlers.rb
7) fix the case statements in
On lines 208-212, change instances of ": false" to "then false"
8) sudo gem install gem_plugin (else mongrel may hang)
done!
这些是否是启动mongrel时需要的修改,由于我还未走到那步,有待于验证。
二、MYSQL
后来下载了个mysql最新版的rpm安装,安装倒是没什么问题,只是安装之后不知道都装到哪里了,尤其是数据库数据的目录。无奈,把rpm的安装卸载,又找了个已编译过的代码下载下来,这个倒是方便,解压后拷贝到指定位置,做一些配置就行了。
操作参考(http://linux.chinaunix.net/bbs/thread-1098235-2-1.html):
网上一找一大堆:
# tar –zxvf mysql-standard-5.0.27-linux-i686-glibc23.tar.gz
# cp –rf mysql-standard-5.0.27-linux-i686-glibc23 /usr/local/
//建立符号链接,如果以后有新版本的MySQL的话,你可以仅仅将源码解压到新的路径,然后重新做一个符号链接就可以了。这样非常方便,数据也更加安全。
# ln –s mysql-standard-5.0.27-linux-i686-glibc23 /usr/local/mysql
//添加用于启动MySQL的用户及用户组(如果以前安装过MySQl,用户及用户组可能已存在)。
# useradd mysql
# groupadd mysql
//初始化授权表
# cd /usr/local/mysql
# scripts/mysql_install_db
//修改MySQl目录的所有权
# cd /usr/local
# chgrp –R mysql mysql-standard-5.0.27-linux-i686-glibc23
# chgrp –R mysql
# chown –R mysql mysql-standard-5.0.27-linux-i686-glibc23/data
# chown –R mysql mysql/data
# ln –s /usr/local/mysql/bin/* /usr/local/bin/
//启动Mysql
# bin/safe_mysqld
--user=mysql &
你按照你的文件改下吧!
MYSQL自动启动操作参考(http://blog.163.com/hxf78/blog/static/12231985200702403953148/):
在MySQL安装程序的解压包/usr/local/mysql/support-files有一个叫myslq.server的启动脚本程序。把它复制到/etc/rc.d/init.d目录里面:
# cd /etc/rc.d/init.d
# cp /usr/local/mysql/support-files/mysql.server mysql
接着把它的属性改为“x”(executable,可执行)
# chmod +x mysql
最后,运行chkconfig把MySQL添加到你系统的启动服务组里面去。
执行chkconfig --add mysql
三、APACHE
这个要说的不多,下载了源码,编译安装,没什么问题。记录一下把APACHE注册为系统服务的操作参考吧(http://hi.baidu.com/sky_insect/blog/item/ae515cd4d5345ccc50da4b6d.html):
在Linux系统中我一般采用编译源码的方式来安装Apache,有两种方法可以让Apache在系统启动时自动启动。
1. 在/etc/rc.d/rc.local中增加启动apache的命令,例如:/usr/local/httpd/bin/apachectl start
2. 将apache注册为系统服务
首先将apachectl命令拷贝至/etc/rc.d/init.d目录下,改名为httpd
使用编辑器打开httpd文件,并在第一行#!/bin/sh下增加两行文字如下
# chkconfig: 35 70 30
# description: Apache
接着注册该服务
chkconfig --add httpd
一切OK了,启动服务
service httpd start
其中所增加的第二行中三个数字第一个表示在运行级别3和5下启动apache,第二、三是关于启动和停止的优先级配置,无关紧要。
启动后,在浏览器中输入http://localhost,一个页面,显示It works!,说明WEB服务没问题了。再到apache的安装目录下看看,有一个htdocs目录,里面有一个index.html,就是这个页面了。至于如何像IIS那样配置其它目录下的站点,有待学习。
看了一些书籍、资料,里面提到的一些东东,比如capistrano,已经装上了,还未使用过。可是这两天忽然想到,我用SVN直接从代码库中下载,然后用生产方式启动项目,不就可以了吗?目前的状况,一切应以简单有效为原则。