さくらVPSにインストールしたCentOS 7.0(以下「CentOS7Server」)にApache(httpd)をインストールしました。

Apache(httpd)のインストール

  • yumコマンドでhttpdをインストールしました。
    # yum install httpd
    
  • Apacheのバージョンは、2.4.6がインストールされました。

    # yum list installed | grep httpd
    httpd.x86_64        2.4.6-18.el7.centos @updates 
    httpd-tools.x86_64  2.4.6-18.el7.centos @updates
    
  • 以下のコマンドでhttpdサービスを起動しました。
    # systemctl start httpd
    
  • 以下のコマンドでサービスの自動起動を設定しました。
    # systemctl enable httpd
    
  • エディタ(nano)で「/etc/httpd/conf/httpd.conf」を編集しました。
    # cd /etc/httpd/conf/
    # cp httpd.conf httpd.conf.org
    # nano httpd.conf
    
    • CGIと「.htaccess」が有効になるように、httpd.confのを下記のように変更しました。
      <Directory /var/www/html>
          #Options Indexes FollowSymLinks
          Options Includes ExecCGI FollowSymLinks
          #AllowOverride None
          AllowOverride All
          Require all granted
      </Directory>
      
  • 不要なモジュールを読み込まないように、エディタ(nano)で「/etc/httpd/conf.modules.d/00-base.conf」を編集しました。
    # cd /etc/httpd/conf.modules.d/
    # cp 00-base.conf 00-base.conf.org
    # nano 00-base.conf
    
    #LoadModule actions_module modules/mod_actions.so
    #LoadModule auth_anon_module modules/mod_auth_anon.so
    #LoadModule auth_dbm_module modules/mod_auth_dbm.so
    #LoadModule authn_dbm_module modules/mod_authn_dbm.so
    #LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
    #LoadModule authz_owner_module modules/mod_authz_owner.so
    #LoadModule ext_filter_module modules/mod_ext_filter.so
    #LoadModule logio_module modules/mod_logio.so
    #LoadModule cache_module modules/mod_cache.so
    #LoadModule cache_disk_module modules/mod_cache_disk.so
    #LoadModule log_config_module modules/mod_log_config.so
    #LoadModule negotiation_module modules/mod_negotiation.so
    #LoadModule setenvif_module modules/mod_setenvif.so
    #LoadModule status_module modules/mod_status.so
    #LoadModule suexec_module modules/mod_suexec.so
    #LoadModule remoteip_module modules/mod_remoteip.so
    
  • 以下のコマンドでhttpdサービスを再起動しました。
    # systemctl restart httpd
    
  • firewall-cmdでウェブサーバーのポート(http)を解放するように設定しました。
    # firewall-cmd --permanent --add-service=http
    success
    
  • 以下のコマンドでfirewalldサービスを再起動しました。
    # systemctl restart firewalld
    
  • firewall-cmdでウェブサーバーのポート(http)がリストに追加されたことを確認しました。
    # firewall-cmd --list-all
    public (default, active)
      interfaces: eth0
      sources: 
      services: dhcpv6-client ftp http ssh
      ports: 10022/tcp
      masquerade: no
      forward-ports: 
      icmp-blocks: 
      rich rules:  
    
  • imacのブラウザから「http://(CentOS7ServerのIP)/」にアクセスして、テストページ「Apache HTTP Server Test Page powered by CentOS」が表示されることを確認してApacheのインストールを終了しました。
  • CGIの設定

    /cgi-bin/で掲示板やゲームなどのPerlスクリプトが実行できるようにするため、エディタ(nano)で「/etc/httpd/conf/httpd.conf」の内容を以下に変更しました。

    # cd /etc/httpd/conf/
    # cp httpd.conf httpd.conf.org
    # nano httpd.conf
    
    • 「Options」をCGIの実行を許可する設定にして、.htaccessの使用できるようにしました。
      <Directory "/var/www/html">
          #Options Indexes FollowSymLinks
          Options Includes ExecCGI FollowSymLinks   
          #AllowOverride None
          AllowOverride All   
      </Directory>
      
    • ScriptAliasの記述があることを確認しました。
      <IfModule alias_module>
          ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
      </IfModule>
      
    • 「/var/www/cgi-bin/フォルダ」で htmlファイルや画像の読み込みができるようにしました。
      <IfModule mime_module>
          #AddHandler cgi-script .cgi
          AddHandler cgi-script .cgi .pl
          
          AddHandler text/html .html
          AddHandler text/css .css
          AddHandler image/gif .gif
          AddHandler image/jpg .jpg
          
          AddType text/html .shtml
          AddOutputFilter INCLUDES .shtml
      </IfModule>
      
    • 初期のインストール状態では、perlのCGI用モジュールを使用しているスクリプトで「internal server error」が出るので、yumで「perl-CGI」をインストールしました。

      # yum -y install perl-CGI
      
    • スクリプトを修正せずに実行できるように、/usr/local/bin/にperlのシンボリックリンクを貼りました。
      # ln -s /usr/bin/perl /usr/local/bin/