/ rhce-new

RHCE : HTTP/HTTPS – Deploy a basic CGI application.

rhce-new redhat-new restorecon command setroubleshoot-server semanage command httpd http CGI /etc/httpd/conf/httpd.conf ScriptAlias httpd_sys_script_exec_t /var/www/cgi-bin
https://4am.kr/rhce-http-https-deploy-a-basic-cgi-application/

RHCE : HTTP/HTTPS – 기본 CGI 애플리케이션 배포

RHCE 주제입니다. 아래 참조된 사이트를 번역 및 내용 추가하였습니다.

사전 준비사항

설정하기(/var/www/cgi-bin 그대로 사용하기)

1. /var/www/cgi-bin/hello.pl라는 펄 스크립트를 생성하고, 다음 줄들을 입력한다.
[root@server2 ~]# vim /var/www/cgi-bin/hello.pl
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello This is a CGI testpage for server2.4am.kr.";
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
-- 끼워넣기 --                                                3,58         모두
[root@server2 ~]# 
2. 스크립트를 실행가능하게 한다.
[root@server2 ~]# chmod 755 /var/www/cgi-bin/hello.pl 
[root@server2 ~]#
3. httpd 서비스를 재시작한다.
[root@server2 ~]# systemctl restart httpd
[root@server2 ~]# 
4 SELinux 부울 변수 httpd_enable_cgion인지 확인한다(기본적으로 on으로 되어 있음).
[root@server2 ~]# getsebool httpd_enable_cgi
httpd_enable_cgi --> on
[root@server2 ~]# 

노트: SELinux 부울 변수 httpd_can_sendmail은 매우 유용하다. 이 변수는 httpd 서버가 이메일을 보낼 수 있게 해준다.

[root@server2 ~]# yum install -y elinks
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Package elinks-0.12-0.36.pre6.el7.x86_64 already installed and latest version
Nothing to do
[root@server2 ~]# elinks http://server2.4am.kr/cgi-bin/hello.pl

CGI-elinks-test-1

설정하기(/var/www/cgi-bin가 아닌 다른 디렉토리 사용하기)

1. /webapp 디렉토리를 생성한다.
[root@server2 ~]# mkdir /webapp
[root@server2 ~]# 
2. 이전 방법에서 생성한 hello.pl 파일을 생성한 디렉토리로 이동한다.
[root@server2 ~]# mv /var/www/cgi-bin/hello.pl /webapp
[root@server2 ~]# 
3. /webapp 디렉토리에 SELinux 설정을 한다.
[root@server2 ~]# yum install -y setroubleshoot-server
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Package setroubleshoot-server-3.2.17-2.el7.x86_64 already installed and latest version
Nothing to do
[root@server2 ~]# semanage fcontext -a -t httpd_sys_script_exec_t "/webapp(/.*)?"
[root@server2 ~]# restorecon -R /webapp
[root@server2 ~]# 
4. /etc/httpd/conf/httpd.conf파일을 열어, ScriptAlias 옵션을 다음과 같이 수정한다.
    # Example:
    # Alias /webpath /full/filesystem/path
    #
    # If you include a trailing / on /webpath then the server will
    # require it to be present in the URL.  You will also likely
    # need to provide a <Directory> section to allow access to
    # the filesystem path.

    #
    # ScriptAlias: This controls which directories contain server scripts. 
    # ScriptAliases are essentially the same as Aliases, except that
    # documents in the target directory are treated as applications and
    # run by the server when requested rather than as documents sent to the
    # client.  The same rules about trailing "/" apply to ScriptAlias
    # directives as to Alias.
    #
    #ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
    ScriptAlias /cgi-bin/ "/webapp/"
</IfModule>

-- 끼워넣기 --                                                248,37        67%

4. 같은 파일에서 다음과 같이 웹사이트 관련 줄들을 추가한다.
<Directory "/webapp">
AllowOverride None
Options None
Require all granted
</Directory>
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
-- 끼워넣기 --                                                364,1        바닥
5. 선택적으로 다음 줄들을 추가해줄 수 있다(필수는 아님)
Options ExecCGI
AddHandler cgi-script .pl
6. 설정 파일을 점검한다.
[root@server2 ~]# apachectl configtest
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using server2.example.com. Set the 'ServerName' directive globally to suppress this message
Syntax OK
[root@server2 ~]# 
7. httpd 서비스를 재시작한다.
[root@server2 ~]# systemctl restart httpd
[root@server2 ~]# 

테스트하기

[root@server2 ~]# yum install -y elinks
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Package elinks-0.12-0.36.pre6.el7.x86_64 already installed and latest version
Nothing to do
[root@server2 ~]# elinks http://server2.4am.kr/cgi-bin/hello.pl

CGI-elinks-test-1