热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux和Solaris建立Apache的虚拟根环境

文章标题:Linux和Solaris建立Apache的虚拟根环境。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  摘要:在Linux上安装一个虚拟根环境化的Apache目录树是相当的简单的。这个例子使用的是Red Hat 6.*和Apache 1.3.12。同时,它也包含PHP4(作为一个Apache模块),以及在虚拟根环境化的目录树上的perl5的安装。另外还安装了mod-ssl和mod-perl
  
  介绍
  
  ??我曾经利用CERN httpd安装和使用了已经虚拟根环境下的Web服务器。对Web服务器建立虚拟根环境有各种各样的优点和缺点。在Web发展的早期阶段,这种技术还提供了额外的有价值的安全机制。但是在这个apache的领域中,这种技术似乎没有太大的用处,可它仍旧很有趣。
  
  ??我提供对apache在linux和soloris环境下实现虚拟根环境的安装的例子,它既可以做标准的编辑(在必要的时候被标记为non-DSO)或者做动态共享对象编辑(在必要时它将被标记为DSO)。选项为DSO的Solaris的例子还没有进行文档化,所以我没有测试它(我打算在测试时使用Solaris 8)。
  
  ??在Linux上安装一个虚拟根环境化的Apache目录树是相当的简单的。这个例子使用的是Red Hat 6.*和Apache 1.3.12。同时,它也包含PHP4(作为一个Apache模块),以及在虚拟根环境化的目录树上的perl5的安装。另外还安装了mod-ssl和mod-perl。
  
  ??该例也假定Red Hat 安装比较完整 (即:有足够的文件、库和开发工具)。注意,如果你安装Red Hat时用了custom(prefered)的配置,并且选择了development选项;或者你就是使用了服务器(server)配置,你都会有一个完全的开发环境。
  
  ??Mysql3.22.27并没有安装在实现了虚拟根环境目录树中,但是为了完整性我们在此将它包含进去。
  
  声明
  
  ??我并不是个专家:),尤其在加密方面(openssl、mod-ssl和company)我的水平更是有限。我也是个普通的人,也会犯错误,所以,如果你发现了什么或是有什么建设性的意见,请告诉我。
  
  ??我写这篇文章只是希望,你能从中学到一些东西,获得一些帮助。我也可以经常提供一些RPM,但如果你知道你可以从草图开始,独立的建一个自己的现代Web网站,那恐怕会更有趣些。但是,在当前的Internet上,学习、理解关于运行一个Web网站各种问题以及所冒的风险,都要靠你自己了。
  
  Solaris 例子
  ??对Web目录树进行虚拟根环境化的solaris的例子与Linux的例子十分相似。当然,如果你没有安装GNU开发环境,solaris的例子就不可能像Linux例子那样容易。
  
  ??Solaris的例子文档在另一个web页中。
  
  附加的注释
  
  使用工具ldd来发掘必要的共享库。
  在这个例子中,用户有这样的提示:
  root user:
  ROOT#
  ordinary user:
  $
  
  我基本上都是作为普通用户而不是root用户来编译和安装各种软件的。这有助于避免对文件系统(尤其是在使用不熟悉的软件时)造成的不必要的破坏。这也有助于在进行危险操作前给以警示,例如在已经安装的二进制文件上的“setuid"操作,以及在不寻常的地方安装文件的操作等危险操作前的警示。
  在这个例子中,我作为用户soft:soft来进行编译和安装等操作。
  
  其实,只要保证软件的所有者的身份ID与Apache目录树用户的ID(在本例中我们用的是888)不同就可以了。
  
  Red Hat的缺省root环境中,有一个交互式的开关-I被加在命令cp、mv和rm上。如果你的root环境中没有这些设置,建议你最好将它加上。你可以检查下面的文件:
  
  ROOT# alias |grep '-i'
  alias cp='cp -i'
  alias mv='mv -i'
  alias rm='rm -i'
  
  你应当使你的配置尽量的简单——不要安装那些用不到或根本不必要的模块。一般说来,一个标准的non-DSO(非动态共享对象)Apache,在安装一个perl,对大多数人都是足够的。
  关于DSO和mod-ssl需要注意的地方:
  如果你打算把任何东西都按照DSO模版进行编译,那你首先要建立mod-ssl,然后你确实要按照下面的顺序建立自己的Apache目录树。Mod-ssl会明显的修改Apache 建立的目录树,据我的经验,在使用我们刚才提到的软件版本的前提下,下面的顺序是做起来最简单的顺序:
  
  建立Apache
  在Apache中建立和增加mod-ssl
  在Apache中建立和增加php 和mod-perl。
  你应该在适当的地方记录下来你是如何编译你的目录树的,以便再做时参考。(你可以将其打印出来,并加上注释)
  安装了各种软件之后,最终的虚拟根环境化的目录树有23MB,其中包含了8MB的共享库和perl。下面是基于DSO安装的文件的总结(以KB表示):
  ROOT# pwd
  /www
  ROOT# du -s .
  22737 .
  ROOT# du -s *
  6832??apache
  0?? bin
  1?? dev
  7?? etc
  6679??lib
  1?? tmp
  9215??usr
  1?? webhome
  ROOT# du -s apache /*
  600?? apache /bin
  3?? apache /cgi-bin
  125?? apache /conf
  1560??apache /htdocs
  133?? apache /icons
  392?? apache /include
  3925??apache /libexec
  64?? apache /man
  29?? apache /var
  ROOT# du -s usr/*
  8410??usr/Local
  336?? usr/bin
  340?? usr/lib
  128?? usr/share
  1.获得源代码
  
  ??如果你想将一个包加入到你的虚拟根环境化的目录树中,那你必须获得这个包中任何一个文件的源代码。多数源文件都可以从相应的Linux版本的被称为SRPMs(RPM源代码包)的原码光盘中获取;当然也可从tarball文件(.tar.gz)中获取(这种方法很适合于你的带宽有限的情况)。
  
  ??在Red Hat 系统中你作为root用户安装Source:
  
  ??ROOT# rpm -i /path/to/SRPMfile.src.rpm
  
  ??然后,在/usr/src/redhat/SOURCES/目录中提取出源代码。
  
  ??在我们的例子中我将指出,在Internet上你可从何处获取这些源代码:
  
  ??软件包????版本号????????源代码??????????文档信息
  ??Apache??? 1.3.12????www.apache.org/dist/?????www.apache.org/docs/
  ??MySQL????3.22.27??? www.mysql.com/downloads???www.mysql.com/documentation/
  ??PHP?????4.0.2?????www.php.net/downloads.php??www.php.net/docs.php
  ??Perl???? 5.00503??? www.cpan.org/src/?????? www.cpan.org/doc/manual/html/index.html
  ??mod_perl??1.24????? perl.apache.org/dist/???? perl.apache.org/#docs
  ??Hello.pm?????????????????????????? perl.apache.org/dist/contrib/
  ??mod_ssl?? 2.6.6-1.3.12 ftp://ftp.modssl.org/source/?www.modssl.org/docs/2.6/
  ??OpenSSL?? 0.9.5a????ftp://ftp.openssl.org/source/?www.openssl.org/support/faq.html
  ??RSAref???2.0??????google search????????? google search
  
  2.步骤细节
  
  ??准备好一个虚拟根环境化后的文件系统
  
  2.1 在任何一个地方安装目录树
  
  ??注意:最好是在另一个磁盘上,或是在非系统分区上安装,这样可以避免别人从Web目录树以外建立到文件的连接,但是你可以使用symlink(例如:/www)连接来找到这棵目录树。
  
  ??ROOT# mkdir /export/misc/www
  ??ROOT# ln -s /export/misc/www /www
  
  2.2 生成基本的目录,bin将是usr/bin的连接
  
  ??注意: 在这些例子中(除了我直接从一般文件系统中拷贝的代码)我都省略了前导的“/”,所以,注意不要将你的虚拟根环境化的目录树与真正的“/”混淆。
  
  ??在下面我将用紫红色标记出虚拟根环境化的文件
  
  ??ROOT# cd /www
  ??ROOT# mkdir -p usr/bin usr/lib lib etc tmp dev webhome
  ??ROOT# ln -s usr/bin bin
  
  2.3 /tmp是假定的专用perms
  
  ??ROOT# chmod 777 tmp
  ??ROOT# chmod +t tmp
  
  2.4 构造特殊的装置 dev/null
  
  ??ROOT# mknod -m 666 dev/null c 1 3
  
  2.5 为你自己的时区设定时区信息(这里使用的是MET)
  
  ??ROOT# mkdir -p usr/share/zoneinfo
  ??ROOT# cp -pi /usr/share/zoneinfo/MET usr/share/zoneinfo/
  ??ROOT# cd etc
  ??ROOT# ln -s ../usr/share/zoneinfo/MET localtime
  ??ROOT# cd ..
  
  2.6 你会发现由于缺乏本地设置,perl和mod-perl多有不便,但你可以通过在实现了虚拟根环境目录树中安装本地文件来克服它:
  
  ??ROOT# set |grep LANG
  ??LANG=en_US
  ??ROOT# mkdir /www/usr/share/locale
  ??ROOT# cp -a /usr/share/locale/en_US /www/usr/share/locale/
  
  2.7 现在,在可以提供非常基础的虚拟根环境化的文件系统的共享库
  
  ??ROOT# cp -pi /lib/libtermcap.so.2 /lib/ld-linux.so.2 /lib/libc.so.6 lib/
  
  2.8 测试你的目录树(Apachect1后面将要用到“cat”,但也不是必需的)
  
  ??ROOT# cp -pi /bin/ls /bin/sh /bin/cat bin/
  ??ROOT# chroot /www /bin/ls -l /
  
  ??lrwxrwxrwx 1 0????0?????
推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 有关phpfgetss()函数的文章推荐10篇
    有关phpfgetss()函数的文章推荐10篇:了解如何使用PHP的各种文件函数。查看诸如fopen、fclose和feof之类的基本文件函数;了解诸如fgets、fgetss和f ... [详细]
author-avatar
吴雨醒
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有