免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2446 | 回复: 5
打印 上一主题 下一主题

[Web] redlinux 9.0 安装 apache 问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-08-28 10:18 |只看该作者 |倒序浏览
安装(ctrl+ait +f1)  安装提示框
# >;tar zxvf httpd-2.0.49.tar.gz
# >;cd httpd-2.0.49
# >;./configure --prefix=/usr/local/apache2 --enable-so --enable-ssl
(--prefix=/usr/local/apache2 为安装路径,--enable-so支持模块,--enable-ssl支持ssl)
就是提示 安装 路进错误  $pach

论坛徽章:
0
2 [报告]
发表于 2004-08-28 10:20 |只看该作者

redlinux 9.0 安装 apache 问题

本人刚接触linux 谢谢 大侠了 !!!!

论坛徽章:
0
3 [报告]
发表于 2004-08-28 10:43 |只看该作者

redlinux 9.0 安装 apache 问题

1、前言:
对于unix(linux)来说,apache+php是个不错的选择。对于小型的网站,比较通用的是apache+php+mysql,优点不比说了。但是,对于大型的网站,需要对数据库检索和连接请求高的站点,mysql还是出现了他的局限性。很多门户网站,例如:sina、tom、sohu、china等,都是用了新闻发稿器的生成静态页面。但是这个新闻发稿器,很多都是通过apache+php来完成,大量的资料放在数据库中,用户访问的时候,在由程序生成静态页面。所以,apache+php+oracle是比较合理的选择。

由于平时都是用的sun的sparc机器,这个环境是临时搭建,用的是redhat9,如果有喜欢用redhat ad的朋友,需要自己先测试一下。

2、结构:
主机两台:
odb --安装oracle server,作为数据存储。
webapp ---安装oracle client和apache+php,php通过oracle client来访问oracle。
odb ip:192.168.1.2
webapp ip: 192.168.1.3 211.11.11.11
优点:安全,odb可以用内网ip,还能实现降低webapp的负载。

3、主机系统相关软件:
redhat9
oacle9 for liunx
httpd2.0.50
php-4.32

4、安装软件:
4.1、odb的安装:
这里关于oracle9的redhat9上的安装,大家查看论坛响应的其他文章,这里就不过多写了。为了上下文,这里建立库为odb。

4.2、apache2的安装:

# tar zxvf httpd-2.0.49.tar.gz
# cd httpd-2.0.49
# ./configure --prefix=/opt/apache --enable-so --with-mpm=worker
# make
# make install

4.3、webapp主机上的oracle client安装:

4.3.1 安装好RedHat9.0操作系统,确保安装了以下的RPM开发包
gcc
cpp
glibc-devel
compat-libstdc++
glibc-kernheaders
binutils
可以使用命令来查看是否已安装了这些包
rpm –q gcc cpp compat-libstdc++ glibc-devel glibc-kernheaders binutils

4.3.2、从Oracle官方网站下载Oracle9i安装文件并使用如下命令解包

# zcat lnx_920_disk1.cpio.gz | cpio –idmv
# zcat lnx_920_disk2.cpio.gz | cpio –idmv
# zcat lnx_920_disk3.cpio.gz | cpio –idmv
然后会有Disk1 Disk2 Disk3三个子目录。

4.3.3、设置内核参数
# echo 4294967295 >; /proc/sys/kernel/shmmax,建议放到/etc/rc.local文件里。
或编辑/etc/sysctl.conf
kernel.shmmax=4294967295
我有512MB内存,所以设置这个数值。可根据实际情况设置。

4.3.4、创建Oracle用户帐号和安装目录
在shell下,作为root
# groupadd dba
# groupadd oinstall
# useradd –g oinstall –G dba oracle
# passwd oracle

# mkdir /opt/oracle
# mkdir /opt/oracle/product
# mkdir /opt/oracle/product/9.2.0
# chown –R oracle.oinstall /opt/oracle
# mkdir /var/oracle
# chown oracle.dba /var/oracle
# chmod 755 /var/oracle

4.3.5、设置环境变量

# vi /home/oracle/.bash_profile文件,添加下列行
----------
export LD_ASSUME_KERNEL=2.4.1
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/9.2.0
NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK";export NLS_LANG
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS33
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;export LD_LIBRARY_PATH
PATH=$PATHORACLE_HOME/bin;export PATH

--------------

4.3.6、安装
可以重新启动机器,让设置的参数生效,让后用oracle用户登陆,安装oracle。

# ~Disk1
# ./runInstaller

安装的时候,选择安装client。
有提示你用root用户执行几个脚本,按照提示做就可以了。

4.4、 php安装
在安装php的时候,php调用oracle9(9.0.2 --10 )的时候需要安装一个patch,不然会出现问题。但是oracle8的版本没有问题。oracle的官方网站上有下载,地址如下:

http://otn.oracle.com/products/ias/ohs/htdocs/ociheaders.tar

# cp ociheaders.tar /opt/oracle/product/9.2.0/network/rdbms/demo/
# cd cd /opt/oracle/product/9.2.0/network/rdbms/demo
# tar xvf ociheaders.tar

# tar zxvf php-4.3.2.tar.gz
# cd php-4.3.2
# ./configure --prefix=/opt/php --with-zlib
--with-apxs2=/opt/apache/bin/apxs --disable-xml --without-mysql
--with-oci8=/opt/oracle/product/9.2.0
--with-config-file-path=/opt/php/etc/php.ini
--disable-rpath --without-pear
# make
# make install
# mkdir /usr/local/php/etc
# cp /home/peng/php-4.3.2/etc/php.ini-disk /usr/local/php/etc/php.ini/php.ini
# vi /usr/local/php/etc/php.ini/php.ini

5 配置软件:

5.1、启动odb主机上的oracle:
以oracle用户登陆:

启动数据库
$ Sqlplus “ / as sysdba”
SQL>;startup

启动监听程序
$ lsnrctl

5.2、配置apache2:

# vi /opt/apache/conf/httpd.conf

添加:AddType application/x-httpd-php .php
更改下列选项如下:
Listen 211.11.11.11:80 --你的发布主机ip
User nobody
Group nobody
DirectoryIndex index.html index.php
AddDefaultCharset Off

5.3 配置php:

# vi /usr/local/php/etc/php.ini/php.ini
更改:
register_global =Off 为 register_global =On

5.4 配置oracle client:
# vi /opt/oracle/product/9.2.0/network/admin/tnsnames.ora

-------------
odb =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = odb)
)
)

--------------

到这里,系统已经全部安装成功,需要根据自己情况,配置apache的具体主机设置。


总结:
apche+php+oracle一般的应用情况都是针对数据库访问量比较大,或者经常用到数据库检索的应用。很多都是为应用服务器而搭建的环境。

这里注意一点就是,这个环境的搭建,同样适合oracle10的版本。如果用oracle817以下的版本,是不需要安装ociheaders这个补丁的。对于oracle7,php要用--with-oracle=的参数。

声明:
写文章的时候,难免参考很多网友资料,如有雷同,不一定纯属巧合。
本着自由、共享的精神,网友可以任意转贴,转贴时请注明作者、出处。

论坛徽章:
0
4 [报告]
发表于 2004-08-28 12:06 |只看该作者

redlinux 9.0 安装 apache 问题

[系列.原创]Linux不完全攻略_x
http://www.chinaunix.net 作者:自由狼-台风0  发表于:2004-06-28 04:25:08

所有回复,请贴到 http://bbs.chinaunix.net/forum/viewtopic.php?p=5899 。

我没空了。只好先把这些没整理的发上来。

Web:

  1. xx. 搭建网页服务器
  2. 版本:2004-06-27-01

  3.     网页服务器=IIS?错啦!
  4.     网页服务器首选Apache。用Google查查,优秀的多平台支持、良好的安全性和高度的可定制能力性使它差不多占据了网页服务器7成份额。

  5. xx.1 准备工作

  6.     去http://www.apache.org,在那里找一个叫httpd的东东下载。要source,不要binary的。
  7.     我下载的是此时的最新版本,“httpd-2.0.49.tar.gz”。还有一个很小的验证码文件,“httpd-2.0.94.tar.gz.md5”,一起下回来。
  8.     对“httpd-2.0.49.tar.gz”执行“md5sum ”,看看得出的字符串是否和“httpd-2.0.94.tar.gz.md5”里的一致,不一致请重新下载。“httpd-2.0.94.tar.gz.md5”里的字母可能是大写的,这无所谓。要注意的是,“httpd-2.0.94.tar.gz.md5”里的字符串很可能是以两位一组分开的,以致于我以为下回来的文件是坏的。

  9. xx.2 安装

  10.     我安装Apache的路径是“/opt/prog/c/apache”。先把“httpd-2.0.49.tar.gz”丢到装临时文件的目录“/opt/prog/tmp”里。开终端,进这个目录:
  11. [root@TFW-RFL40 root]# cd /opt/prog/tmp
  12. [root@TFW-RFL40 tmp]#

  13.     解压缩:
  14. [root@TFW-RFL40 tmp]# tar zxvf ./httpd-2.0.49.tar.gz
  15. ……
  16. ……
  17. ……
  18. [root@TFW-RFL40 tmp]#
  19.     得到Apache的源代码目录“httpd-2.0.49”。

  20.     进这个目录:
  21. [root@TFW-RFL40 tmp]# cd httpd-2.0.49
  22. [root@TFW-RFL40 httpd-2.0.49]#

  23.     配置,生成编译选项:
  24. [root@TFW-RFL40 httpd-2.0.49]# ./configure --prefix="/opt/prog/c/apache" --enable-module=so
  25. ……
  26. ……
  27. ……
  28. [root@TFW-RFL40 httpd-2.0.49]#
  29.     “ --prefix=”用来指定软件的安装路径。
  30.     “ --enable-module=”使Apache编译、安装完成后能够随时加载其所指类型的外部模块。可以用多个“ --enable-module=”指定支持多种模块。
  31.     更多的参数,在此暂不列举。

  32.     编译、连接,把源代码变成本地二进制码:
  33. [root@TFW-RFL40 httpd-2.0.49]# make
  34. ……
  35. ……
  36. ……
  37. [root@TFW-RFL40 httpd-2.0.49]#

  38.     安装,把对应的文件送到相应的地方。
  39. [root@TFW-RFL40 httpd-2.0.49]# make install
  40. ……
  41. ……
  42. ……
  43. [root@TFW-RFL40 httpd-2.0.49]#

  44. xx.3 运行

  45.     现在去软件安装的地方:
  46. [root@TFW-RFL40 httpd-2.0.49]# cd /opt/prog/c/apache
  47. [root@TFW-RFL40 apache]#


  48.     启动网页服务器:
  49. [root@TFW-RFL40 apache]# ./bin/apachectl start
  50. [root@TFW-RFL40 apache]#

  51.     开启浏览器,访问url“localhost”。如果你的计算机已经接入以太网,你可以在另外一台计算机的浏览器里用IP地址访问你自己的计算机。由物理主机和虚拟机构成的以太网环境同样适合。能看到绘有一支大羽毛的Apache测试页即告成功。

  52.     重新启动网页服务器:
  53. [root@TFW-RFL40 apache]# ./bin/apachectl restart
  54. [root@TFW-RFL40 apache]#

  55.     关闭网页服务器:
  56. [root@TFW-RFL40 apache]# ./bin/apachectl stop
  57. [root@TFW-RFL40 apache]#

  58. xx.4 更高的要求

  59. xx.4.1 ……

  60.     ……
  61.     ……
  62.     ……

  63. xx.4.2 中文支持

  64.     ……
  65.     ……
  66.     ……
复制代码


JSP:

  1. xx. 搭建JSP服务器
  2. 版本:2004-06-13-01

  3.     JSP是一项很有前途的站点动态网页技术,如果你把握得当,也很有钱途。Tomcat是Apache基金Jakart项目的产品,曾经被SUN推荐来做JSP容器,搭建JSP服务器的首选。
  4.     Tomcat可以充当Apache的JSP扩展插件,也可以独立运行,充当网页服务器。如果你的站点访问量比较小,你甚至可以不装Apache。

  5. xx.1 准备工作

  6.     去http://www.apache.org,在那里找一个叫jakart-tomcat的东东下载。要binary,不要source的。

  7.     我下载的是此时稳定的最新版本,“jakart-tomcat-4.1.30.tar.gz”。还有一个很小的验证码文件,“jakart-tomcat-4.1.30.tar.gz.md5”,一起下回来。
  8.     对“jakart-tomcat-4.1.30.tar.gz”执行“md5sum ”,看看得出的字符串是否和“jakart-tomcat-4.1.30.tar.gz.md5”里的一致,不一致请重新下载。“jakart-tomcat-4.1.30.tar.gz.md5”里的字母可能是大写的,这无所谓。要注意的是,“httpd-2.0.94.tar.gz.md5”里的字符串很可能是以两位一组分开的,以致于我以为下回来的文件是坏的。

  9.     Tomcat运行需要J2SDK支持。如果没有安装J2SDK,请先安装J2SDK。

  10. xx.2 安装

  11.     我安装Tomcat的路径是“/opt/prog/m/tomcat”。把“jakart-tomcat-4.1.30.tar.gz”丢到装临时文件的目录“/opt/prog/tmp”里。开终端,进要安装软件的目录:
  12. [root@TFW-RFL40 root]# cd /opt/prog/m
  13. [root@TFW-RFL40 m]#

  14.     解压缩:
  15. [root@TFW-RFL40 m]# tar zxvf /opt/prog/tmp/jakart-tomcat-4.1.30.tar.gz
  16. ……
  17. ……
  18. ……
  19. [root@TFW-RFL40 m]#

  20.     做一个没有版本号的链接,这样Tomcat的内容也可以被看成安装在“/opt/prog/m/tomcat”里,以后升级方便:
  21. [root@TFW-RFL40 m]# ln -s ./jakart-tomcat-4.1.30 ./tomcat
  22. [root@TFW-RFL40 m]#
  23.     主要安装完成。

  24.     修改环境变量文件。我改的是“/etc/profile”。在文件的末尾添加如下9行内容:
  25. ########################################
  26. # Tomcat
  27. CATALINA_BASE="/opt/prog/m/tomcat"
  28. CATALINA_HOME="/opt/prog/m/tomcat"
  29. JAVA_HOME="/opt/prog/m/java/j2sdk1.4.1_02"
  30. CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
  31. PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$HOME/bin:$CATALINA_HOME/bin
  32. export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC JAVA_HOME CLASSPATH CATALINA_BASE CATALINA_HOME
  33. ########################################
  34.     CATALINA_BASE、CATALINA_HOME应该就是Tomcat的安装位置了。JAVA_HOME是J2SDK的安装位置。
  35.     由于我有一个不带版本号的链接,我用4.1.30替换4.1.27时只是删除旧的链接和重做一个链接,不必来改这个文件。

  36. xx.3 运行

  37.     现在去软件安装的地方:
  38. [root@TFW-RFL40 m]# cd tomcat
  39. [root@TFW-RFL40 tomcat]#

  40. 启动JSP服务器:
  41. [root@TFW-RFL40 tomcat]# ./bin/startup.sh
  42. [root@TFW-RFL40 tomcat]#

  43.     开启浏览器,访问url“localhost:8080”。如果你的计算机已经接入以太网,你可以在另外一台计算机的浏览器里用IP地址访问你自己的计算机。由物理主机和虚拟机构成的以太网环境同样适合。此时应该能看到画着一只黄猫的Tomcat测试页。再访问“localhost:8080/examples/jsp/”,看里面的动态网页,如果能正常工作,即告成功。

  44.     关闭网页服务器:
  45. [root@TFW-RFL40 tomcat]# ./bin/shutdown.sh
  46. [root@TFW-RFL40 tomcat]#

  47. xx.4 更高的要求

  48. xx.4.1 定义

  49.     进Tomcat的安装目录。我的是“/opt/prog/m/tomcat”。
  50.     再进“webapps”目录。
  51.     再进“examples”目录。
  52.     再进“jsp”目录。看到一个文件“index.html”,这就是“localhost:8080/examples/jsp/”里那些动态网页的索引。

  53.     退回一点。注意,目录“examples”有直接的子目录WEB-INF,这个子目录又直接包含一个应用配置文件“web.xml”。“examples”里还有其他目录和文件,用于实现浏览器中不变的和变化的前台用户界面。

  54.     为了方便继续描述,在此定义两个概念“Web应用(或者叫Web应用程序)”和“Web应用主目录”。
  55.    
  56.     当一个目录像上述的“examples”那样包含一个直接子目录“WEB-INF”,而这个“WEB-INF”又直接包含一个应用配置文件“web.xml”时,称这个目录为“Web应用主目录”;
  57.     一个“Web应用主目录”及其内部的所有文件、目录的集合称为“Web应用(或者叫Web应用程序)”。
  58.     像examples一样,一般的Web应用主目录内除了“WEB-INF”外,还有其他一些目录、文件,用来实现前台浏览器中变化的或不变的用户界面,而“WEB-INF”里除了“web.xml”,往往还有其他目录、文件,用于在后台完成对前台界面的控制。

  59. xx.4.2 现状

  60.     目前你的目前Tomcat能供外界供访问的Web应用只有“http://主机(主机名或IP):8080/examples/”。从应用的角度来看,在稍微正式一点的场合中,单一的、名字死板的Web应用总不太好,互相没什么关联的功能或内容,最好由不同的Web应用提供;从开发的角度来看,“examples”里面满是原装的例子,一大堆文件,在这里面继续开发,文件更多,更乱,也难于管理。

  61. xx.4.3 初步目标

  62.     初步的目标是实现大致如下的布局:

  63.     有若干个目录,分别装着包括调试的和对外的Web应用,并充当各应用的主目录,暂且命名为“app_1”、“app2”……“app_x”……“app_n”,当然那个“examples”也可以位列其中;
  64.     用某目录“A”充当Web应用的根目录,将Web应用主目录“app_1”、“app2”……“app_n”都放置其中;
  65.     以“http://主机/app_x/”作为url即可使用相应Web应用主目录“app_x”中的内容。

  66.     在我的机上,Web应用根目录是“/opt/prog/m/webapps”。供学习、调试用的Web应用有“root.web_00”、“typhoon.anti”、“typhoon.study”、“typhoon.web_00”,对外的有“examples”、“exampless”和“typhoon.school”。

  67. xx.4.4 修改

  68.     到Tomcat的安装目录“/opt/prog/m/tomcat”,进配置文件目录“conf”,找到文件“server.xml”。用文本编辑器打开“server.xml”,在其中找到如下内容:
  69.       <Host name="localhost" debug="0" appBase="webapps"
  70.        unpackWARs="true" autoDeploy="true">;
  71.     将“appBase”对应的“webapps”是默认的Web应用根目录。把它修改为欲用做Web应用根目录的目录“A”。注意要写明“A”的全路径。我填写的是“/opt/prog/m/webapps”。再找如下内容:
  72.         <Context path="/examples" docBase="examples" debug="0"
  73.                  reloadable="true" crossContext="true">;
  74.     “Context path”似乎是指JSP容器,“docBase”含义也没弄清,不过按默认内容是不行的。把“Context path”对应的内容修“/examples”改为“/”。把“docBase”对应的内容修“examples”改为与前面提到的“appBase”相同。再把配置文件“web.xml”改名,改名前先向每个Web应用的“WEB-INF”目录里复制一份,以替代“WEB-INF”里的“web.xml”。

  75.     重新启动Tomcat,用url“http://主机:8080/app_x/”,Web应用里的内容都能用了。目标达到。

  76.     如果希望直接用Tomcat充当Web服务器,“http://主机:8080/app_x/”不太好。打开“server.xml”,找到下面一段:
  77.     <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
  78.                port="8080" minProcessors="5" maxProcessors="75"
  79.                enableLookups="true" redirectPort="8443"
  80.                acceptCount="100" debug="0" connectionTimeout="20000"
  81.                useURIValidationHack="false" disableUploadTimeout="true" />;
  82.     这段将8080端口定义为Tomcat默认的HTTP端口。将“8080”修改为“80”即可以“http://主机/app_x/”方式访问各Web应用。
复制代码


整合:

  1. xx. 整合Web服务器与JSP服务器
  2. 版本:2004-06-13-02

  3.     Apache是专业的Web服务器,专注于它的本行,而碰到JSP、PHP、ASP类的动态网页,它只能干瞪眼;Tomcat主要是个JSP引擎,充当Web服务器只是兼职,静态页面处理能力不足,也无法应对大量HTTP访问。但是Apache能够把不认识的网页提交给其他服务器处理并接受处理结果,而Tomcat也能够处理其他服务器提交的JSP页并返回处理结果,两者一拍即合,分工明确,合作愉快。

  4.     下面的说明中,软件版本和Apache、Tomcat的安装路径以你的实际情况为准。

  5. xx.1 早期的module_webapp方式

  6. xx.1.1 准备工作

  7.     去http://www.apache.org,在那里找apr和对应你Tomcat版本的jakarta-tomcat-connectors-4.1.30-src下载。都要source的。我下的是“apr-0.9.4.tar.gz”和“jakarta-tomcat-connectors-4.1.30-src.tar.gz”。把它们对应的md5校验码文件一起下回来。
  8.     分别对下回来的文件执行“md5sum”,把结果与各自校验码文件里的内容对比,如果对不上请重新下载。

  9. xx.1.2 安装整合插件

  10.     把“jakarta-tomcat-connectors-4.1.30-src.tar.gz”丢进装临时文件的目录“/opt/prog/tmp”,并解压缩到此。
  11.     进入解压缩生成的目录“jakarta-tomcat-connectors-4.1.30-src”。注意到里面的“webapp”目录了吧?把“apr-0.9.4.tar.gz”丢进去,并解压缩到那里。
  12.     进“webapp”,把新生成的目录“apr-0.9.4”更名或链接为“apr”。

  13.     开终端,进这个目录:
  14. [root@TFW-RFL40 root]# cd /opt/prog/tmp/jakarta-tomcat-connectors-4.1.30/webapp/apr
  15. [root@TFW-RFL40 apr]#

  16.     生成编译配置文件:
  17. [root@TFW-RFL40 apr]# ./support/buildconf.sh
  18. ……
  19. ……
  20. ……
  21. [root@TFW-RFL40 apr]#

  22.     配置,生成编译选项:
  23. [root@TFW-RFL40 apr]# ./configure --with-apxs="/opt/prog/c/apache/bin/apxs"
  24. ……
  25. ……
  26. ……
  27. [root@TFW-RFL40 apr]#

  28.     编译、连接,把源代码变成本地二进制码:
  29. [root@TFW-RFL40 apr]# make
  30. ……
  31. ……
  32. ……
  33. [root@TFW-RFL40 apr]#

  34.     进目录“Apache-2.0”,如果前面没出差错,这里会有“mod_webapp.so”,这就是所需要的整合插件。如果你的Apache版本是是1.3.x,整合插件应该在“Apache-1.3”里。把“mod_webapp.so”属性修改为所有者可执行。

  35.     去Apache的安装目录“/opt/prog/c/apache”,把整合插件复制或移动到目录“modules”里。如果Apache版本是是1.3.x,整合插件复制或移动到目录“libexec”里。

  36. xx.1.3 整合

  37.     最后一步,让Apache与Tomcat携手工作,需要修改配置文件。

  38. xx.1.3.1 Apache

  39.     编辑Apache的配置文件“http.conf”,在其最后添加如下一行:
  40. LoadModule?webapp_module?modules/mod_webapp.so
  41.     如果Apache版本是是1.3.x,添加这行:
  42. LoadModule?webapp_module?libexec/mod_webapp.so
  43.     保存修改。

  44.     在终端里检查插件模块是否能正常加载:
  45. [root@TFW-RFL40 apr]# cd /opt/prog/c/apache
  46. [root@TFW-RFL40 apache]# ./bin/apachectl -configtest
  47.     如果能正常加载,会出现:
  48. Syntax?OK
  49. [root@TFW-RFL40 apr]#
  50.     否则请检查前面是否有差错,或查找其他资料。

  51.     再次编辑“http.conf”,继续在最后添加如下两行:
  52. ServerName localhost:8008
  53. WebAppConnection warpConnection warp localhost:8008

  54.     去Tomcat的Web应用根目录瞧瞧,看哪Web应用些是需要对外开放的,把它们以“WebAppDeploy examples warpConnection /app_x”形式逐行添加在配置文件“httpd.conf”末尾。我添加的有:
  55. WebAppDeploy examples warpConnection /examples
  56. WebAppDeploy examples warpConnection /exampless
  57. WebAppDeploy examples warpConnection /typhoon.school

  58. xx.1.3.2 Tomcat

  59.     到Tomcat的配置文件目录“/opt/prog/m/tomcat/conf”,用文本编辑器打开“server.xml”。如果从前没有改动过这个文件,能找到这样一段,或者类似的段:
  60.     <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
  61.                port="8080" minProcessors="5" maxProcessors="75"
  62.                enableLookups="true" redirectPort="8443"
  63.                acceptCount="100" debug="0" connectionTimeout="20000"
  64.                useURIValidationHack="false" disableUploadTimeout="true" />;

  65.     把这段添加在上面一段之前:
  66.     <Connector className="org.apache.catalina.connector.warp.WarpConnector"
  67.                port="8008" minProcessors="5" maxProcessors="75"
  68.                enableLookups="true"
  69.                acceptCount="10" debug="0"/>;
  70.     连接插件“mod_webapp.so”默认使用8008端口,这段是对8008端口的定义,可以在“server-noexamples.xml.config”里找到。如果Tomcat是4.1.18/4.1.19版本,请注意“server.xml”里是否已经有8008端口的说明,如果有,就不必再添加。

  71. xx.2 更新的module_jk2方式

  72. xx.2.1 准备工作

  73.     去http://www.apache.org,在那里找jakarta-tomcat-connectors-jk2-src-current,要source,不要binary的。把它的md5校验码文件也找出来,都下载。我下的是“jakarta-tomcat-connectors-jk2-src-current.tar.gz”和“jakarta-tomcat-connectors-jk2-src-current.tar.gz.md5”。
  74.     分别对下回来的文件执行“md5sum”,把结果与各自校验码文件里的内容对比,如果对不上请重新下载。

  75. xx.2.2 安装整合插件

  76.     把“jakarta-tomcat-connectors-jk2-src-current.tar.gz”丢进装临时文件的目录“/opt/prog/tmp”。

  77.     开终端,进这个目录:
  78. [root@TFW-RFL40 root]# cd /opt/prog/tmp
  79. [root@TFW-RFL40 tmp]#

  80.     解压缩:
  81. [root@TFW-RFL40 tmp]# tar zxvf jakarta-tomcat-connectors-jk2-src-current.tar.gz
  82. ……
  83. ……
  84. ……
  85. [root@TFW-RFL40 tmp]#

  86.     生成编译配置文件:
  87. [root@TFW-RFL40 tmp]# cd jakarta-tomcat-connectors-jk2-src-current
  88. [root@TFW-RFL40 jakarta-tomcat-connectors-jk2-src-current]# cd jk
  89. [root@TFW-RFL40 jk]# cd native2
  90. [root@TFW-RFL40 natave2]# sh ./buildconf.sh
  91. ……
  92. ……
  93. ……
  94. [root@TFW-RFL40 native2]#

  95.     配置,生成编译选项:
  96. [root@TFW-RFL40 apr]# ./configure --with-apxs2="/opt/prog/c/apache/bin/apxs" -enable-EAPI
  97. ……
  98. ……
  99. ……
  100. [root@TFW-RFL40 native2]#
  101.     我不清楚这个EAPI是什么,但是我把这个参数加上后编译就成功了。

  102.     编译、连接,把源代码变成本地二进制码:
  103. [root@TFW-RFL40 apr]# make
  104. ……
  105. ……
  106. ……
  107. [root@TFW-RFL40 native2]#

  108.     进目录“jakarta-tomcat-connectors-jk2-src-current/build/jk2/apache2 ”,如果前面没出差错,这里会有“mod_jk2.so”,这就是所需要的整合插件。如果你的Apache版本是是1.3.x,整合插件可能在“jakarta-tomcat-connectors-jk2-src-current/build/jk2/apache”里。把“mod_jk2.so”属性修改为所有者可执行。

  109.     去Apache的安装目录“/opt/prog/c/apache”,把整合插件复制或移动到目录“modules”里。如果Apache版本是是1.3.x,整合插件复制或移动到目录“libexec”里。

  110. xx.2.3 整合

  111.     最后一步,让Apache与Tomcat携手工作,需要修改配置文件。

  112. xx.2.3.1 Apache

  113.     编辑Apache的配置文件“http.conf”,在其最后添加如下一行:
  114. LoadModule?webapp_module?modules/mod_jk2.so
  115.     如果Apache版本是是1.3.x,添加这行:
  116. LoadModule?webapp_module?libexec/mod_jk2.so
  117.     保存修改。

  118.     在终端里检查插件模块是否能正常加载:
  119. [root@TFW-RFL40 apr]# cd /opt/prog/c/apache
  120. [root@TFW-RFL40 apache]# ./bin/apachectl -configtest
  121.     如果能正常加载,会出现:
  122. Syntax?OK
  123. [root@TFW-RFL40 apr]#
  124.     否则请检查前面是否有差错,或查找其他资料。

  125.     打开“worker2.properties”。如果Apache版本不是2.0.49,请将其内容替换为以下21行:
  126. [shm]
  127. info=Scoreboard. Requried for reconfiguration and status with multiprocess servers.
  128. file=anon
  129. # Defines a load balancer named lb. Use even if you only have one machine.
  130. [lb]
  131. # Example socket channel, override port and host.
  132. [channel.socket]
  133. port=8009
  134. host=127.0.0.1
  135. # define the worker
  136. [ajp13]
  137. channel=channel.socket:localhost:8009
  138. group=lb
  139. # Map the Tomcat examples webapp to the Web server uri space
  140. [uri:/examples/*]
  141. group=lb
  142. [status:]
  143. info=Status worker, displays runtime information
  144. [uri:/jkstatus/*]
  145. info=The Tomcat /jkstatus handler
  146. group=status:
  147.     上述为2.0.49版Apache的“worker2.properties”内容。将上述文字置入文件时,为了便于阅读,允许用回车拉大行距。
  148.     去Tomcat的Web应用根目录瞧瞧,看哪Web应用些是需要对外开放的,把它们逐行添加在“# Map the Tomcat examples webapp to the Web server uri space
  149. ”下方,替代原有的“[uri:/examples/*]”。
  150.     我添加的有:
  151. [uri:/examples/*]
  152. [uri:/exampless/*]
  153. [uri:/typhoon.school/*]

  154. xx.2.3.2 Tomcat

  155.     到Tomcat的配置文件目录“/opt/prog/m/tomcat/conf”,用文本编辑器打开“server.xml”。如果从前没有改动过这个文件,能找到这样一段,或者类似的段:
  156.     <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
  157.                port="8080" minProcessors="5" maxProcessors="75"
  158.                enableLookups="true" redirectPort="8443"
  159.                acceptCount="100" debug="0" connectionTimeout="20000"
  160.                useURIValidationHack="false" disableUploadTimeout="true" />;

  161.     再检查一下,看是否有这段对8009端口的定义:
  162.     <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
  163.                port="8009" minProcessors="5" maxProcessors="75"
  164.                enableLookups="true" redirectPort="8443"
  165.                acceptCount="10" debug="0" connectionTimeout="0"
  166.                useURIValidationHack="false"
  167.                protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>;
  168.     连接插件“mod_jk2.so”默认使用8009端口,如果文件里没有这段,需要把它添加在上一段之前。

  169. xx.3 联合测试

  170.     注意,“mod_webapp.so”和“mod_jk2.so”最好不要一起用,只用其中一个。重新启动Apache和Tomcat。再用url“http://主机/app_x/”试试,应该一切OK了。以后做JSP开发的时候可以只用Tomcat,并且能以“http://主机:8080/app_x/”使用所有的Web应用。承担外界访问的时候Apache和Tomcat一起跑,外界如果从80端口访问,只能使用“httpd.conf”或“worker2.properties”里提到的Web应用。

  171.     再改一点。打开Tomcat配置文件“server.xml”,还找这段:
  172.     <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
  173.                port="8080" minProcessors="5" maxProcessors="75"
  174.                enableLookups="true" redirectPort="8443"
  175.                acceptCount="100" debug="0" connectionTimeout="20000"
  176.                useURIValidationHack="false" disableUploadTimeout="true" />;
  177.     很多人已经知道Tomcat的HTTP管理端口是8080,你可以把里面的“8080”改成别人不知道的,比如“8088”。不要改成已经被占用的端口。修改后你能以“http://主机:8088/app_x/”使用所有的Web应用。

  178.     从现在起,所有非JSP的内容由Apache处理,JSP的东东都通过8008或8009端口发给Tomcat,各得其所。
复制代码


数据库:

  1. 实践:Typhoon.Free.Wolf
  2. 声明:不承担由此产生的不良后果
  3. 版本:V0.9.3+++ 2004-03-30-01
  4. 本文(不包含链接)可以以非商业目的任意转载。
  5. 下面是我安装和初步试用PostgreSQL的经历,集中在这里。


  6. 安装篇


  7. 我下载了PostgreSQL7.3.4,是源代码,保存为“/opt/lin_app02/tmp/download/PostgreSQL/R1/postgresql-7.3.4.tar.gz”。下载后,我在这个目录下开了终端(rxvt),执行命令:
  8. [code]
  9. [root@TFW-RFL40F R1]# tar zxvfp ./postgresql-7.3.4.tar.gz
复制代码

得到一个目录“postgresql-7.3.4”。

  1. [root@TFW-RFL40F R1]# cd postgresql-7.3.4
  2. [root@TFW-RFL40F postgresql-7.3.4]# ./configure --prefix=/opt/lin_app02/postgres --enable-locale --enable-multibyte --with-perl --with-odbc --with-tcl
复制代码

......
对上面一步的说明:
./configure
configure不加任何选项,系统将按默认的设置安装postgresql,查看configre的相关选项可以使用:configure -help

一些最常用的如下:

--prefix=BASEDIR
为安装 PostgreSQL 选择一个不同的基础路径。缺省是 /usr/local/pgsql。

--enable-locale
如果你想用本地化支持。

--enable-multibyte
允许使用多字节字符编码。这个选项主要用于象日语,韩语或中文这样的语言。

--with-perl
添加 Perl 模块接口。请注意 Perl 接口将安装到 Perl 模块的常用位置(典型的是在 /usr/lib/perl),所以要成功使用这个选项,你必须有 root 权限。

--with-odbc
制作 ODBC 驱动包。

--with-tcl
制作 Tcl/Tk 需要的接口库和程序,包括 libpgtcl,pgtclsh,和 pgtksh。

这些编译参数告诉编译器如何编译PostgreSQL:

  1. [root@TFW-RFL40F postgresql-7.3.4]# make
复制代码

......

  1. [root@TFW-RFL40F postgresql-7.3.4]# make install
复制代码

......
中间不报错的话,安装就完成了。


初始化


创建一个存放数据库文件的目录:

  1. [root@TFW-RFL40F postgresql-7.3.4]# mkdir /opt/lin_app02/postgre-data
复制代码


下面要设置环境变量。由于安全原因,PostgreSQL是不让“root”等特权用户用的。为了方便,我就用日常工作的“typhoon”身份管理PostgreSQL,但是建议大家为管理PostgreSQL新创建一个用户。为了方便,我直接修改了“/etc/profile”,但是建议修改个人主目录下的“.bash_profile”。

我在环境变量文件里添加了如下内容:

  1. ########################################
  2. # PostgreSQL
  3. LD_LIBRARY_PATH=/opt/lin_app02/postgres/lib
  4. export LD_LIBRARY_PATH
  5. PGLIB=/opt/lin_app02/postgres/lib
  6. PGDATA=/opt/lin_app02/postgre-data
  7. PATH=$PATH:/opt/lin_app02/postgres/bin
  8. MANPATH=$MANPATH:/opt/lin_app02/postgres/man
  9. export PGLIB PGDATA PATH MANPATH
  10. ########################################
复制代码

看着挺麻烦,其实就是下面的格式:
LD_LIBRARY_PATH=<--prefix所指的地方>;/lib
export LD_LIBRARY_PATH
PGLIB=<--prefix所指的地方>;/lib
PGDATA=<你放数据库文件的地方>;
PATH=$PATH:<--prefix所指的地方>;/bin
MANPATH=$MANPATH:<--prefix所指的地方>;/man
export PGLIB PGDATA PATH MANPATH

刚才提到的那些目录都是在“root”身份下创建的,要让它们能为“typhoon”所用,还得改权限:

  1. [root@TFW-RFL40F postgresql-7.3.4]# chown -R typhoon.typhoon /opt/lin_app02/postgre*
复制代码

即:
chown -R <ostgreSQL管理员所在组>;.<ostgreSQL管理员用户名>; <--prefix所指的地方>;
chown -R <ostgreSQL管理员所在组>;.<ostgreSQL管理员用户名>; <你放数据库文件的地方>;

然后我关闭了X,并注销,再重新登录,以使环境变量生效。


  1. [typhoon@TFW-RFL40F typhoon]$ initdb
复制代码

这个命令用来初始化PostgreSQL。请确保执行前你放数据库文件的地方是空的。

初始化后会自动创建数据库的超级用户,用户名与安装、执行初始化的操作系统用户同名。可能还会自动创建一个与用户名同名的数据库。在我这里就是用户“typhoon”和数据库“typhoon”。直接执行“<--prefix所指的地方>;/bin/psql”就能登录进去。“\q”可以退回操作系统的shell。如果这个数据库没有自动生成,请执行“<--prefix所指的地方>;/bin/createdb [用户名]”,即以你的用户名创建一个数据库。这个数据库就相当于你的“Home”,没这个数据库,做某些事情就不方便。


启停方法



  1. [typhoon@TFW-RFL40F typhoon]$ postmaster -i -D ./postgre-data/&
复制代码

postmaster -i -D <database-path>;&
......
这是开始数据库系统的服务。后面那个“&”最好带上,否则,......:-D

上面说的启动方法是正规方法,PostgreSQL还提供了封装的控制脚本“<--prefix所指的地方>;/bin/pg_ctl”。

  1. [typhoon@TFW-RFL40F typhoon]$ pg_ctl -l ./123/pg.log start
复制代码

如果有“-l 文件名”这个参数,所有的错误都会被记录到这个文件里。


  1. [typhoon@TFW-RFL40F typhoon]$ pg_ctl stop
复制代码

停止服务。既然是停止,就别管什么记录文件了。


  1. [typhoon@TFW-RFL40F typhoon]$ pg_ctl -l ./123/pg.log restart
复制代码

相当于先“stop”再“start”。


  1. [typhoon@TFW-RFL40F typhoon]$ pg_ctl reload
复制代码

如果对配置文件做了修改,想不中断服务而立即生效,就这样。

注意:PostgreSQL管理员最好从“Login:”、xdm或kdm登录系统,因为如果“su”过去操作将不能正常执行。

和大家共同进步。下面是我安装时参考的帖子:
http://www.freelamp.com/new/publish/1022414614/index_html
http://chinaunix.net/jh/18/546.html
http://chinaunix.net/jh/18/548.html
我四处查找链接里所说的“egcs-c++”,也没下载到,后来才知道“egcs-c++”已经被整合进高版本的“gcc”里了。我的“gcc”是3.2的。大家的“gcc”如果高于2.8,也就不要再到处找“egcs-c++”了。


安全管理


初始化后,在数据库目录里会有这样两个文件:“postgresql.conf”和“pg_hba.conf”。

修改“postgresql.conf”第30行左右的地方为顶格“tcpip_socket = true”,以允许网络访问。

“pg_hba.conf”,基于主机的访问控制(Host Based Access)。左边有“#”的内容都是被注释掉的,起说明或参考等作用。

我以我现在的文件为例做说明(里面的中文为我的说明):

  1. # PostgreSQL Client Authentication Configuration File
  2. # ===================================================
  3. #
  4. # Refer to the PostgreSQL Administrator's Guide, chapter "Client
  5. # Authentication" for a complete description.  A short synopsis
  6. # follows.
  7. #
  8. # This file controls: which hosts are allowed to connect, how clients
  9. # are authenticated, which PostgreSQL user names they can use, which
  10. # databases they can access.  Records take one of three forms:
  11. #
  12. # local    DATABASE  USER  METHOD  [OPTION]
  13. # host     DATABASE  USER  IP-ADDRESS  IP-MASK  METHOD  [OPTION]
  14. # hostssl  DATABASE  USER  IP-ADDRESS  IP-MASK  METHOD  [OPTION]
  15. #
  16. # (The uppercase quantities should be replaced by actual values.)
  17. # DATABASE can be "all", "sameuser", "samegroup", a database name (or
  18. # a comma-separated list thereof), or a file name prefixed with "@".
  19. # USER can be "all", an actual user name or a group name prefixed with
  20. # "+" or a list containing either.  IP-ADDRESS and IP-MASK specify the
  21. # set of hosts the record matches.  METHOD can be "trust", "reject",
  22. # "md5", "crypt", "password", "krb4", "krb5", "ident", or "pam".  Note
  23. # that "password" uses clear-text passwords; "md5" is preferred for
  24. # encrypted passwords.  OPTION is the ident map or the name of the PAM
  25. # service.
  26. #
  27. # This file is read on server startup and when the postmaster receives
  28. # a SIGHUP signal.  If you edit the file on a running system, you have
  29. # to SIGHUP the postmaster for the changes to take effect, or use
  30. # "pg_ctl reload".

  31. # Put your actual configuration here
  32. # ----------------------------------
  33. #
  34. # CAUTION: The default configuration allows any local user to connect
  35. # using any PostgreSQL user name, including the superuser, over either
  36. # Unix-domain sockets or TCP/IP.  If you are on a multiple-user
  37. # machine, the default configuration is probably too liberal for you.
  38. # Change it to use something other than "trust" authentication.
  39. #
  40. # If you want to allow non-local connections, you need to add more
  41. # "host" records.  Also, remember TCP/IP connections are only enabled
  42. # if you enable "tcpip_socket" in postgresql.conf.

  43. # TYPE  DATABASE    USER        IP-ADDRESS        IP-MASK           METHOD
  44. #访问来源 数据库    用户        IP-地址           子网掩码          认证方式

  45. local   typhoon     typhoon                                         md5
  46. #对于来自本地的访问,数据库“typhoon”对用户“typhoon”采用“md5”加密口令认证

  47. local   typhoon     all                                             reject
  48. #对于来自本地的访问,数据库“typhoon”对上面没提到的所有用户无条件拒绝认证

  49. host    typhoon     typhoon     255.255.255.255   127.0.0.1         md5
  50. #对于来网络的访问,数据库“typhoon”对用户“typhoon”,如果提出访问的是本机,采用“md5”加密口令认证

  51. host    typhoon     all         0.0.0.0           0.0.0.0           reject
  52. #对于来网络的访问,数据库“typhoon”对上面没提到的所有用户,不管提出访问的哪台机器,也不管它来自哪个子网,无条件拒绝认证

  53. local   all         all                                             md5
  54. #对于来自本地的访问,上面没提到的数据库对上面没提到的所有用户采用“md5”加密口令认证
  55. host    all         all         0.0.0.0           0.0.0.0           md5
  56. #对于来网络的访问,数上面没提到的数据库对上面没提到的所有用户,不管提出访问的哪台机器,也不管它来自哪个子网,采用“md5”加密口令认证

  57. ########################################
  58. # Others are all denied 其他访问一概无条件拒绝
  59. local   all         all                                             reject
  60. host    all         all         0.0.0.0           0.0.0.0           teject
  61. ########################################

  62. ########################################
  63. # All denied permissed, not safe
  64. # 对所有访问都信任,太不安全,被我禁止掉了,只作为参考
  65. #local   all         all                                             trust
  66. #host    all         all         0.0.0.0           0.0.0.0           trust
  67. ########################################
复制代码

这些认证的规则是从上到下一条一条加载的,要注意的是,里面的“all”并不是真正意义上的“所有”,只是前面的规定中没有提到的那部分。个人感觉用“other”也许更恰当。

这样,最终的结果是:
所有用户都能通过加密口令访问“typhoon”以外的数据库,但是只有用户“typhoon”能以加密口令访问数据库“typhoon”。


操作篇


[客户端基本连接操作]====================
*查看PostgreSQL的系统表:
(摸索/查找中)

*终端登录:
psql -l[主机名/IP] -d[数据库名] -U[用户名]

*连接到另外一个数据库:
\c [数据库名]

*断开终端:
\q
========================================

[基本用户管理]==========================
*添加用户:
create user [用户名];

*修改用户密码:
alter user [用户名] with password [口令];

*删除用户:
drop user [用户名];

*查看用户信息:
(摸索/查找中)
========================================

[基本数据库操作]========================
*创建数据库:
create database [数据库名];

*查看数据库列表:
\d

*删除数据库:
drop database [数据库名];

*修改数据库的所有者:
(摸索/查找中)
========================================

[数据库内基本操作]======================
*给予某用户在某数据库创建表的授权:
(摸索/查找中)

*收回某用户在某数据库创建表的授权:
(摸索/查找中)

创建表:
create table ([字段名1] [类型1] <references 关联表名(关联的字段名)>;,[字段名2] [类型2],......<,primary key (字段名m,字段名n,...)>;

*查看表名列表:
\d

*查看某个表的状况:
\d [表名]

*重命名一个表:
alter table [表名A] rename to [表名B];

*修改表的所有者:
(摸索/查找中)

*删除一个表:
drop table [表名];
========================================

[表内基本操作]==========================
*在已有的表里添加字段:
alter table [表名] add column [字段名] [类型];

*删除表中的字段:
alter table [表名] drop column [字段名];

*重命名一个字段:
alter table [表名] rename column [字段名A] to [字段名B];

*给一个字段设置缺省值:
alter table [表名] alter column [字段名] set default [新的默认值];

*去除缺省值:
alter table [表名] alter column [字段名] drop default;

*将已存在的表里某列设置为主码:
(摸索/查找中)

*将已存在的表里某几列设置为主码:
(摸索/查找中)

*取消某列的主码资格:
(摸索/查找中)

在表中插入数据:
insert into 表名 ([字段名m],[字段名n],......) values ([列m的值],[列n的值],......);

修改表中的某行某列的数据:
update [表名] set [目标字段名]=[目标值] where [该行特征];

删除表中某行数据:
delete from [表名] where [该行特征];
delete from [表名];--删空整个表
========================================

[备份]==================================
备份一个数据库:
pg_dump 数据库名 >; 备份文件

把备份文件导回原数据库或导入新数据库:
cat 备份文件 | psql 数据库名
最好先把这个数据库的认证改为“trust”。

备份一个表:
pg_dump -t table1 dbname >; bk1.sql
========================================


ADD


摘自[http://cn.tech.yahoo.com/031118/142/1w6ex_3.html]:
你需要为psql程序带入参数:psql -d databasename -U username -W。-d用来指定数据库,-U指定用户名,而-W要求psql提示你输入一个口令。当你成功地运行了psql以后,将每个CREATE TABLE查询单独地粘贴到psql中并按回车键。如果在你的SQL语句中有错误,psql会给出相应提示。通过逐一地加入每一个表,你会得到每一个表的调试信息,这样做起来相当简单。如果,在你输入了表的定义之后,你发现遗漏了一两个字段,有两种方法能
[/code]

所有回复,请贴到 http://bbs.chinaunix.net/forum/viewtopic.php?p=5899 。

【发表回复】【查看论坛原帖】【添加到收藏夹】【关闭】
双眼皮的猪 回复于:2004-06-28 20:02:38
8错.挺好

xieweihua 回复于:2004-06-30 13:23:54
东西不错
楼主辛苦了

jby365 回复于:2004-07-04 18:12:30
二进制与source有什么区别呢?

aaccdd 回复于:2004-07-04 19:33:57
谢谢楼主,有空试试。

论坛徽章:
0
5 [报告]
发表于 2004-08-31 08:56 |只看该作者

redlinux 9.0 安装 apache 问题

很好,收了

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2004-08-31 22:49 |只看该作者

redlinux 9.0 安装 apache 问题

能不能贴出原始的错误提示。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP