Chinaunix
标题:
apache+mysql+perl
[打印本页]
作者:
so_brave
时间:
2011-12-13 22:32
标题:
apache+mysql+perl
apache+mysql+perl
相比于nginx,apache对perl的支持要更好一些(nginx需要自己写一个wrapper,而且网上down下来的wrapper的版本在post MIME类型的文件时会有问题)。在配置上,从我这个新手的角度来看,apache也是同样简单。
首先从apache官网
http://apache.org/
上下载httpd模块。用源文件编译就好,没有问题。安装后httpd命令启动http服务器进程。
接着去mysql官网
http://mysql.cn/
上下载binary或源码。
编译源码的方法如下(参考
http://doc.mysql.cn/mysql5/refma ... l#installing-source
):
view plaincopy to clipboard
01.shell> groupadd mysql
02.shell> useradd -g mysql mysql
03.shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
04.shell> cd mysql-VERSION
05.shell> ./configure --prefix=/usr/local/mysql
06.shell> make
07.shell> make install
08.shell> cp support-files/my-medium.cnf /etc/my.cnf
09.shell> cd /usr/local/mysql
10.shell> bin/mysql_install_db --user=mysql
11.shell> chown -R root .
12.shell> chown -R mysql var
13.shell> chgrp -R mysql .
14.shell> bin/mysqld_safe --user=mysql &
复制代码
源码编译出来的东西基本上是不给力的。我在其中一台(ubuntu)机器上编译源码后,服务器端运行的没问题,但客户端运行命令mysql时就hang住了,我的解决方法是用client安装包里的binary替换现有的编译好的binary。另一台untuntu上编译出来的东西根本不能用,运行myqsl_install_db命令时就hang住,所以在这台机器上我使用的是安装包。
下载的安装包是mysql-server-VERSION.rpm和mysql-client-VERSION.rmp。在ubuntu上用alien命令转成deb文件再用dkpg命令安装就可以了。这种安装出来的东西是比较靠谱的。在使用前记得运行mysql_install_db(如果数据库里没有mysql数据库)。
用源码或安装包安装好后,运行/usr/local/mysql/mysqld_safe --usr=mysql &启动mysql服务进程。用mysqladmin -s (ping|shutdown|reload)等命令控制服务进程。在mysql服务进程正确启动后,输入命令mysql可以启动客户端输入sql语句。
要用perl连接mysql数据库,需要安装DBI和DBD::mysql两个模块,上CPAN上可以找到。在安装DBD::mysql时,如果用的mysql是用安装包安装的话,需要去下载mysql-devel-VERSION.rpm并安装。而且在安装完DBD::mysql后,在用代码连接数据库时可能会遇到这种错误:undefined symbol: __pure_virtual DynaLoader.pm line 230 mysql.so。解决方法是在编译DBD::mysql的模块前,做下面的事情(/usr/local/mysql部分取决于你实际的安装路径):
view plaincopy to clipboard
01.The following changes make the compilation of DBD-mysql-4.005 work with no problems on my Debian Etch servers using MySQL 5.0.[27|41]:
02.
03.Edit /usr/local/mysql/bin/mysql_config.
04.
05.Fix old arch declarations to new form. Change any occurance of "-mcpu" to "-march".
06.
07.Add -lmygcc declaration. Change the line that contains:
08.
09.libs=" $ldflags -L$pkglibdir -lmysqlclient -lz -lcrypt -lnsl -lm "
10.
11.To: libs=" $ldflags -L$pkglibdir -lmysqlclient -lz -lcrypt -lnsl -lm -lmygcc "
12.
13.Remove erroneous extra "/mysql" from libdir. Change the line that contains:
14.
15.pkglibdir='/usr/local/mysql/lib/mysql'
16.
17.To: pkglibdir='/usr/local/mysql/lib'
18.
19.Remove erroneous extra "/mysql" from includedir. Change the line that contains:
20.
21.pkgincludedir='/usr/local/mysql/include/mysql'
22.
23.To: pkgincludedir='/usr/local/mysql/include'
24.
25.Then everything works as expected wiht a standard compile.
26.
27.perl Makefile.PL --testuser=[testuser] --testdb=test --testpassword=[testpassword]
28.
29.make
30.
31.make test
32.
33.make install
复制代码
至于怎么在服务器上运行perl脚本,参考
http://httpd.apache.org/docs/2.2/howto/cgi.html
。
至此,一切OK。(虽然在此轻描淡写几句话,但是为了在两台机器安装好mysql和DBD::mysql,我花了近两天的时间……)
顺带补充,apache支持同一台服务器上存放多个用户的网站。在conf/httpd.conf里编辑加入下面两行:
view plaincopy to clipboard
01.UserDir /home/tommy/somewhere
02.UserDir enabled username
复制代码
这样下列类型的域名
http://your-webisite.net/~username
就会解析到/home/tommy/somewhere/username/下。参考
http://httpd.apache.org/docs/2.2/howto/public_html.html
。对于不同的目录,可以使用.htaccess文件进行单独配置,具体参考
http://httpd.apache.org/docs/2.2/howto/htaccess.html
。
作者:
我是软件狂
时间:
2011-12-21 21:46
学习鸟 谢谢分享
作者:
webdna
时间:
2013-04-02 21:16
说什么呀?
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2