openfiler 移植记录

一,需要安装的包:

1,安装pam_auth.so:sudo apt-get install php5-auth-pam
2,安装xsl.so:sudo apt-get install php5-xsl
3,安装imap.so:sudo apt-get install php5-imap
4,安装ncurses.so:sudo apt-get install libncurses5-dev
       ncurses是字符终端下屏幕控制的基本库。可能很多新开发的程序都不使用了,不过如果要编译一些老程序,还经常遇得到。

5,安装php5-gmp包:apt-get install php5-gmp

       在volumes_editpartitions.html里有个函数gmp_intval(),需要此包。

6,安装mdadm: apt-get install mdadm

7,安装iscsi:apt-get install iscsitarget

       注意:安装完成后服务并没有启动,需要修改文件:/etc/default/iscsitarget 里的 ISCSITARGET_ENABLE=FALSE 改为 ISCSITARGET_ENABLE=TRUE。

8,安装open-iscsi:apt-get install open-iscsi

 二,需要修改的配置文件

1,将openfiler文件夹拷贝到/opt文件夹下

2,将 sysconfig拷到/etc下(否则System项会报错!!)

3,修改apache下配置文件(httpd.conf):

       修改/etc/apache2/apache2.conf:      ServerRoot "/opt/openfiler/etc/httpd"

       添加/etc/apache2/apache2.conf:      AddHandler php5-script .php .html .css
                                                                          AddType text/html .php

       修改/etc/apache2/sites-available/default:  DocumentRoot   /opt/openfiler/var/www/htdocs

4,修改php.ini(使其能通过$username这种方式接受参数):

       修改/etc/php5/apache2/php.ini:        register_globals = On        //使其能通过$username这种方式接受参数

       修改/etc/php5/apache2/php.ini:        include_path = ".:/opt/openfiler/var/www/includes:/usr/lib/php"           //修改php include_path的默认路径

三,修改源代码,跳过验证模块PAM

修改auth.inc文件

 

function check_authenticated($username, $password)
{
	/*if (pam_auth($username, $password))
	{
		if ($username == "openfiler")
		{
			$GLOBALS["authenticated"] = 1;
			$GLOBALS["authuser"] = $username;
		}
		else
		{
			$GLOBALS["authenticated"] = 0;
			$GLOBALS["userauthenticated"] = 1;
			$GLOBALS["authuser"] = $username;
		}
		
		
		
		setcookie("usercookie", $username, 0, "/", "", 1);
		setcookie("passcookie", $password, 0, "/", "", 1);
		
		return true;
	}
	else
	{
		$GLOBALS["authenticated"] = 0;
		$GLOBALS["authuser"] = "";

		setcookie("usercookie", $username, 0, "/", "", 1);
		setcookie("passcookie", "", 0, "/", "", 1);
		
		return false;
	}*/
	
	$GLOBALS["authenticated"] = 1;
	$GLOBALS["authuser"] = $username;
	
	setcookie("usercookie", $username, 0, "/", "", 1);
	setcookie("passcookie", $password, 0, "/", "", 1);
		
	return true;
	
}

修改authenticated.inc代码

文件开头添加 $GLOBALS["authenticated"] = 1; 代码

四,ubuntu下安装parted 1.6版本

ubuntu10.04下的parted是2.2版本的,由于openfiler里需要1.6.22版本的parted,所以我需要降低版本(由于2.2版本没有parted-fdisk命令)。

1,先删除parted2.2版本:apt-get remove parted

2,首先我在网上下载了一个1.6.22的版本ftp://ftp.pbone.net/mirror/ftp.turbolinux.com/pub/TurboLinux/stable/untested/Server/7/i586/parted-1.6.22-1.i586.rpm

       此文件是rpm的在redhat下可以安装,而ubuntu下要把rpm转换成deb形式的文件,需要的工具是alien。

       alien安装方法与转换步骤:

             sudo apt-get install alien #alien默认没有安装,所以首先要安装它

             sudo alien parted-1.6.22-1.i586.rpm #将rpm转换位deb,完成后会生成一个同名的parted-1.6.22-1.i386.deb

             sudo dpkg -i parted-1.6.22-1.i386.deb #安装

       在此强烈推荐一篇文章,非常好:http://blog.csdn.net/wangxiaoqin00007/article/details/7205191在ubuntu上软件安装的几种格式dev,rpm,bin,tar.gz)只是要注意:在ubuntu下安装rpm要用alien命令转换成deb文件。

3,安装完毕后,输入parted报错:

      bash:  /sbin/parted No such file or directory   应该是找不到parted命令,我在/sbin查找下确实没有找到,于是我sudo whereis parted 找到parted在/usr/sbin下。那怎么去/sbin下找去了,怎么不在/usr/sbin下找呢,我分析是不是环境变量的原因,于是我查询了下环境变量path,它包含/usr/sbin目录。不知道为什么找不到,还期待高手给予指点,谢谢!!

      我想了一个折中的办法,做一个软连接连接到/usr/sbin下面:

      ln -s /usr/sbin/parted /sbin/parted

      成功了!再次执行parted错误发生了变化,说是需要的libreadline.so.4文件找不到,我用搜索了下发现有libreadline.so.6文件,看来还是版本的问题,怎么办,上哪找libreadline.so.4去?找了半天还是没有找到,却找到一篇文章,意思还是用上面折中的办法,于是我还是这样做:

      ln -s /lib/libreadline.so.6 /lib/libreadline.so.4

      再次执行parted,哈哈,这次终于成功了!!微笑

 

      可是,我help一下仍然没有parted-fdisk命令,可是这个版本和openfiler下的parted一样一样的呀,不知道为什么,期待高手指点!!委屈

      下面用了个折中的办法解决了问题。

4,将原openfiler服务器里的parted和partprobe拷贝到/usr/sbin下,替换掉原先的文件

      运行parted,又缺少了libreadline.so.5文件,将原openfiler服务器里的libreadline.so.5.0拷到/lib文件夹下(libreadline.so.5考不了,因为他是软连接文件),再次做一个软连接:ln -s /lib/libreadline.so.5.0 /lib/libreadline.so.5

      再运行parted,哈哈大功告成!!大笑

5,修改list-disks.pl文件权限:chmod -R 755 /opt/openfiler/sbin/list-disks.pl (让此文件有执行的权限)

5,测试运行:export LANG=C; /usr/bin/sudo /opt/openfiler/sbin/list-disks.pl 输出信息为成功!

五,解决popen调用.pl文件不出信息的问题

     $disksp = popen("export LANG=C; /usr/bin/sudo /opt/openfiler/sbin/list-disks.pl", "r");没有返回信息,在命令行下执行export LANG=C; /usr/bin/sudo /opt/openfiler/sbin/list-disks.pl是没有问题,后来发现是/usr/bin/sudo问题,php执行不了sudo这个命令,因为执行sudo时是需要输入密码的,所以要关闭执行sudo时输入密码这个步骤,方法是:

     # visudo

     在最后一行加入www-data ALL=(ALL) NOPASSWD:ALL  (www-data是php在linux下的默认用户)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值