openfiler 移植记录

导读:本篇文章讲解 openfiler 移植记录,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一,需要安装的包:

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,哈哈,这次终于成功了!!微笑

 openfiler 移植记录

openfiler 移植记录

      可是,我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下的默认用户)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/82062.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!