12/08/2007

在Leopard里配置rails+php+apache+mysql

在Leopard里,很多开源代码都升级到了最新版,比如Python 2.5.1,PHP 5.2.4,Ruby 1.8.6,Apache 2.2,更棒的是,这次系统里直接集成了ruby on rails,包括Mongrel和Capistrano,据说还做过优化……
以前在mac里配置ROR,我是按照Dan Benjamin的《Building Ruby, Rails, Subversion, Mongrel, and MySQL on Mac OS X》来做的,安装ruby,gem之类的东西都是依靠MacPorts(osx里的包管理系统),而MacPorts安装的程序都在/opt/local里,独立于系统环境……
作为一个完美主义者,一定不能容忍自己心爱的系统里有任何兀余的代码,所以,这一次我希望能在leopard已经集成的代码基础上,搭建rails+php+apache+mysql的开发环境……
————————————————完美主义者的分割线——————————————————-
首先搞定apache,在配置面板里的“共享”中,选中”web共享”,就可以启动apache。默认的http://localhost指向/Library/WebServer/Documents,如果想修改成自己的目录,比如/Users/dexteryy/Sites/www,最简单的方法是直接改掉httpd.conf里的DocumentRoot
httpd.conf是放在/etc/apache2/里的,除了DocumentRoot,还要记得把下面两行代码前的注释删掉:
LoadModule php5_module libexec/apache2/libphp5.soLoadModule fastcgi_module libexec/apache2/mod_fastcgi.so
————————————————完美主义者的分割线——————————————————-
然后是php.ini,系统默认在/etc里放了一个php.ini.default,把它copy一份,改名为php.ini
php.ini里有一个关于mysql的地方要注意,leopard好像修改过mysql.sock的位置,所以要修改以下两行:
mysql.default_socket = /private/tmp/mysql.sock
mysqli.default_socket = /private/tmp/mysql.sock
————————————————完美主义者的分割线——————————————————-
然后安装最新的mysql,我下载的是mysql-5.0.45-osx10.4-i686.dmg。其中的MySQLStartupItem.pkg和mysql.prefpane都不用安装了,因为这两个东西目前都不起作用-___-b
以前启动mysql都是用这个命令:
sudo /Library/StartupItems/MySQLCOM/MySQLCOM start
但是在leopard里,这个东西好像失效了,只好用这个命令来启动
sudo /usr/local/mysql/bin/safe_mysqld
如果要自动启动mysql,可以用以下方法:
在/Library/LaunchDaemons/里新建一个叫com.mysql.mysqld.plist的文件:




KeepAlive

Label
com.mysql.mysqld
Program
/usr/local/mysql/bin/mysqld_safe
RunAtLoad



修改权限:sudo chown root /Library/LaunchDaemons/com.mysql.mysqld.plist
ok了……注意,如果安装过MySQLStartupItem.pkg,最好把MYSQLCOM直接删掉:
sudo rm -R /Library/StartupItems/MYSQLCOM
————————————————完美主义者的分割线——————————————————-
ruby on rails已经完美的集成了,不需要做任何设置,除了跟mysql的绑定……
sudo gem install mysql — –with-mysql-dir=/usr/local/mysql
选择3……
————————————————完美主义者的分割线——————————————————-
现在可以新建rails的项目了,在终端里进入刚才设置的DocumentRoot目录,输入/rails rails_test
然后启动服务器:rails_test/script/server
命令执行后不要关闭终端窗口(会关闭服务器),leopard的终端现在支持标签了,苹果键+T,继续做别的事情……
现在访问http://localhost:3000/ ,就可以看到rails项目的页面了……
这里启动的服务器是Mongrel,实际上可以把它跟apache整合到一起,用apache接受浏览器的请求,利用反向代理功能转发给Mongrel,这样就不需要用3000端口,直接用这样的地址就可以访问rails的页面:http://localhost/rails_test
方法很简单,找到刚才的httpd.conf,在最下面加入:
ProxyPass /rails_test http://localhost:3000
————————————————完美主义者的分割线——————————————————-
以上是我目前搭建的一个简单的rails+php+apache+mysql开发环境,可能还有其他问题,在具体使用中慢慢改……

12/01/2007

useing PHP to read MSSQL ntext fields

set php.ini
mssql.textlimit = 40960000
mssql.textsize = 40960000
restart IIS

Solution for the following Error:
Warning: mssql_query() [function.mssql-query]: message: Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier.
This is because you are using column types of like ntext instead of text. There are 2 solutions.
1. Change all ntext column types to text or
2. Your query must look like: SELECT CAST(field1 AS TEXT) AS field1 FROM table

Another Error:
Allowed memory size of 134217728 bytes exhausted

@ini_set('memory_limit','1024M');
all done!