使用 JCL 过程启动 IBM HTTP Server on z/OS

您可以编写 JCL 程序,从 MVS 系统控制台启动和停止IBM® HTTP Server。

通过使用 JCL 编目过程来发出 apachectl 启动和停止命令,可以从 MVS 系统控制台启动和停止 IBM HTTP Server 实例。 可以使用同一过程从 MVS 系统控制台发出其他 apachectl 命令。

将以下样本 JCL 过程从 HAP.SHAPJCL3(HAPCPROC) 成员复制到系统过程库,并使用系统安装上的高级限定符替换 HAP 值:

//*---------------------------------------------------------
//IHSAPACH PROC ACTION='start',
//          DIR='/path/to/IHS/runtime/directory',
//          CONF='conf/httpd.conf'
//*---------------------------------------------------------
//IHS      EXEC PGM=BPXBATCH,REGION=0K,TIME=NOLIMIT
// PARM='SH &DIR/bin/apachectl -k &ACTION -f &CONF -DNO_DETACH',
// MEMLIMIT=2048M
//STDOUT   DD		PATH='&DIR/logs/proc.output',
//				PATHOPTS=(OWRONLY,OCREAT,OTRUNC),
//				PATHMODE=(SIRUSR,SIWUSR,SIRGRP,SIWGRP)
//STDERR   DD		PATH='&DIR/logs/proc.errors',
//				PATHOPTS=(OWRONLY,OCREAT,OTRUNC),
//				PATHMODE=(SIRUSR,SIWUSR,SIRGRP,SIWGRP)
//* SYSMDUMP DD ...
//         PEND
//* ==========================================================/
//PROPRIETARY-STATEMENT:/
//Licensed Material - Property of IBM/
// /
//5724-I63, 5724-H88, 5655-N01, 5733-W61, 5655-M23/
//(C) Copyright IBM Corp. 2006/
//All RIghts Reserved/
//US Government Users Restricted Rights - Use, duplication or/
//disclosure restricted by GSA ADP Schedule Contract with IBM Corp./
//===========================================================*/
警告: PARM 值限制为 100 个字符。 Since the PARM value contains the installation directory (&DIR), the total length could exceed the 100 character limit if the directory path is too long. 在选择安装目录时,需要考虑路径名长度。 如果安装目录路径名太长,那么 JCL 中可能会使用以符号方式链接至原始安装目录路径名的较短已命名路径。
如果需要大于 100 个字符的 PARM 值,那么可以使用 /PARMIN DD *,SYMBOLS=JCLONLY JCL 卡,如以下示例中所示:
/*------------------------------------------------------
//WEBFTNEI JOB (KOMA-Y98),'Apache NZX2      ',MSGCLASS=T,
//  TIME=NOLIMIT                                        
//         EXPORT SYMLIST=*                             
//*-------------------------------------                
//  SET  ACTION='start'                                 
//  SET  DIR='/home/ihsa/install/webft'                 
//  SET  CONF='../../httpd/webftnei.conf'               
//*-----------------------------------------------------
//IHS EXEC PGM=BPXBATCH,PARMDD=PARMIN,                  
// MEMLIMIT=2048M                                        
//PARMIN   DD *,SYMBOLS=JCLONLY                         
PGM &DIR/bin/apachectl                                  
   -k &ACTION
   -f &CONF
   -DNO_DETACH
//*-------------------------------------------------------
//STDOUT   DD SYSOUT=T                                    
//*                                                        
//STDERR   DD SYSOUT=T                                     
//*                                                       
//                                                        
//STDOUT   DD PATH='&DIR/logs/proc.output',               
//         PATHOPTS=(OWRONLY,OCREAT,OTRUNC),               
//         PATHMODE=(SIRUSR,SIWUSR,SIRGRP,SIWGRP)        
//*                                                      
//STDERR   DD PATH='&DIR/logs/proc.errors',               
//         PATHOPTS=(OWRONLY,OCREAT,OTRUNC),             
//         PATHMODE=(SIRUSR,SIWUSR,SIRGRP,SIWGRP)        
//                                                        
/*---------------------------------------------------------- 

可以在 Apache HTTP Server 控制接口 Web 站点上找到样本 JCL 中使用的 apachectl 命令的描述。

IBM HTTP Server 实例的缺省作业名将与已编目过程的成员名相同。 Web 服务器是多进程服务器,所创建的每个额外进程都具有基于原始作业名生成的作业名。 如果原始作业名的长度为 8 个字符,那么所有额外进程将具有相同的作用名。 如果原始作业名的长度少于 8 个字符,那么额外进程的作业名将由添加了数字作为后缀的原始作业名组成。 如果 Web 服务器是在 UNIX 环境中使用 bin/apachectl 命令启动的,那么缺省作业名将是用来运行该命令的用户标识。 与作业名一样,如果该用户标识的长度为 8 个字符,那么所有额外进程将具有相同的作业名。 如果用户标识的长度少于 8 个字符,那么进程的作业名将由添加了数字作为后缀的用户标识组成。

在下列示例中,使用了过程名称 WEBSRV1。 通过将 /path/to/IHS/runtime/directory 替换为此 IBM HTTP Server实例的实际安装目录来编辑新的编目过程。 创建 SAF STARTED 概要文件,以使服务器用户标识和组与 Web 服务器启动式任务相关联:
RDEFINE STARTED WEBSRV1.* STDATA(USER(WWWSERV) GROUP(WWWGROUP) TRACE(YES))
SETROPTS RACLIST(STARTED) GENERIC(STARTED) REFRESH
  • 要从 MVS 系统控制台启动服务器,请输入:
    S WEBSRV1
    注: 可以通过将 jobname 添加到启动命令来更改 Web 服务器作业名,例如:
    S WEBSRV1,JOBNAME=HTTPDWS1
    最佳实践 1: 使用 8 个字符的作业名。 使用 8 个字符的作业名可确保为此 Web 服务器实例创建的所有进程具有相同的作业名。
    要停止服务器,请输入:
    P WEBSRV1
    注: 使用 System Display and Search Facility (SDSF)时,必须使用 "系统命令扩展 (命令输入)" 屏幕来输入用于停止服务器的命令。
    • 在命令提示符处,输入正斜杠 (/),然后单击 Enter 键以访问“系统命令扩展”窗口。
    • 在“系统命令扩展”窗口中,输入命令 S WEBSRV1,ACTION='stop'。 请确保 stop 为小写形式。
  • 要发出其他 apachectl 命令,请输入:
    S WEBSRV1,ACTION='<command>'
  • 要重新启动服务器,请输入:
    S WEBSRV1,ACTION=restart
    您可以从 z/OS® 控制台重新启动服务器。
  • 要平稳地重新启动服务器,请输入:
    S WEBSRV1,ACTION=graceful
    您可以从 z/OS 控制台平稳地重新启动服务器。

启动命令和停止命令的输出文件位于过程中的 STDOUT 和 STDERR DD JCL 语句所指定的文件中。

使用 zos_cmds 模块:如果 zos_cmds 模块处于活动状态,那么您可以使用 z/OS STOPMODIFY 控制台命令。
重要信息:httpd.conf 文件中,必须添加以下行才能激活 zos_cmds 模块:
LoadModule zos_cmds_module modules/mod_zos_cmds.so 
注: 如果未对所有进程使用一致的 8 个字符的作业名,那么必须确定处理 z/OS 操作员命令的进程的作业名是 Web 服务器的实例。 Web 服务器在启动时,会向操作员控制台发出一条消息,用于标识将要处理操作员命令的作业。
BPXM023I (WASTST1) IHS is active. Use jobname HTTPDWS1 for MVS commands.
其中 WASTST1 是用来运行 Web 服务器的用户标识。 错误日志中将会写入一个条目,也用于标识作业名。 请注意,mod_zos_cmds 守护程序作业名是 HTTPDWS1。 输入 MODIFY 命令时,它将针对每个具有指定作业名的作业。 只有一个 Web 服务器进程会接受该命令。 对于其他每个具有同一作业名的作业,系统将会发出以下消息。 仅当运行 HTTP 服务器的用户标识无法访问 BPX.CONSOLE FACILITY 类时,消息才会以消息标识 BPXM023I 和用户标识作为前缀。
IEE342I MODIFY   REJECTED-TASK BUSY
  • 要使用停止命令停止服务器:
    P HTTPDWS1
  • 要使用修改命令重新启动服务器,请输入:
    F HTTPDWS1,appl='restart'
  • 要使用修改命令平稳地重新启动服务器,请输入:
    F HTTPDWS1,appl='graceful'
如果 Web 服务器在 zos cmds 模块处于活动状态时停止,那么它会向操作员控制台发出以下消息。
BPXM023I (WASTST1) IHS is stopping
其中 WASTST1 是用来运行 Web 服务器的用户标识。
最佳实践 2: 每次使用过程时,都会覆盖输出文件。 输出文件可能包含有关配置的警告消息或针对启动失败的错误消息。 如果要保留多次使用该过程所生成的这些消息的日志,请将同一过程中出现的两处 PATHOPTS 选项修改为 PATHOPTS=(OCREAT,OAPPEND,OWRONLY)。 有关 PATHOPTS 选项的更多信息,请参阅 z/OS MVS JCL Reference (SA22-7597)。 从 z/OS 因特网库链接到此文档。
最佳实践 3: 建议不要使用 STDENV DD 语句。 您可以考虑将环境变量设置添加到运行时目录中的 bin/envvars 文件,以便无论 IBM HTTP Server 是从 JCL 还是从 UNIX 环境启动,这些变量都处于活动状态。
最佳实践 4: 建议使用 BPXBATCH 的 SH 参数,而不是 PGM 参数。 对 PGM 参数的处理会绕过 /etc/profile 文件中的系统缺省设置 (包括 umask 设置) ,并且 IBM HTTP Server 创建的文件没有正确的许可权。