Apache

提供:MoodleDocs
2007年11月7日 (水) 19:29時点におけるMitsuhiro Yoshida (トーク | 投稿記録)による版
移動先:案内検索

作成中です - Mitsuhiro Yoshida 2007年11月5日 (月) 09:10 (CST)

Apacheに関して言及される場合、ほとんどの人は「Apache HTTPサーバプロジェクト」のことを考えます。実際、Apacheは多くのプロジェクトを運営する「Apacheソフトウェア財団」を指し、良く知られているにもかかわらず、HTTPサーバはそのプロジェクトのひとつでしかありません。

Apache HTTPサーバでは、ウェブページをインターネット上 (またはイントラネット、単体のテストマシン上) に公開することができます。Moodelの開発に使用されているPHPスクリプト言語は、 Apache HTTPサーバに堅く統合されています。Moodleのインストールにおいて、ウェブサーバは必須の構成要素です。Apache HTTPサーバには、バージョン1およびバージョン2の異なる2つのバージョンがあります。バージョン2はバージョン1に置き換えられるべきだったのですが、アーキテクチャが大幅に異なるため、バージョン1も継続してサポートされています。両者ともPHPおよびMoodleでサポートされます。

Apache HTTPサーバプロジェクトは、以下のように説明されています:

「Apache HTTPサーバプロジェクトは、 Server Project is an effort to develop and maintain an open-source HTTP server for modern operating systems including UNIX and Windows NT. The goal of this project is to provide a secure, efficient and extensible server that provides HTTP services in sync with the current HTTP standards.

Apache has been the most popular web server on the Internet since April 1996. The November 2005 Netcraft Web Server Survey found that more than 70% of the web sites on the Internet are using Apache, thus making it more widely used than all other web servers combined.」

Apacheのインストール

Usually Apache is installed alongside PHP and MySQL in a combination known as AMP, see Installing AMP for details.

Debian/Ubuntu:

apt-get install apache2

パフォーマンス

Caching

Apache can be tuned to make pages load faster by specifying how the browser should cache the various page elements. How to do this varies slightly between OSes but there are two basic steps

  1. Install and enable mod_expires - refer to documentation or man pages
  2. Add this code to the virtual server config file within the section for the root directory (or within the .htaccess file if AllowOverrides is On):
<IfModule mod_expires.c>
 ExpiresActive On
 ExpiresDefault "access plus 1 seconds"
 ExpiresByType text/html "access plus 1 seconds"
 ExpiresByType image/gif "access plus 120 minutes"
 ExpiresByType image/jpeg "access plus 120 minutes"
 ExpiresByType image/png "access plus 120 minutes"
 ExpiresByType text/css "access plus 60 minutes"
 ExpiresByType text/javascript "access plus 60 minutes"
 ExpiresByType application/x-javascript "access plus 60 minutes"
 ExpiresByType text/xml "access plus 1 seconds"
</IfModule>

The effect is to make everything stay in the cache except HTML and XML, which change dynamically. It's possible to gain a several hundred percent decrease in load times this way

More info: www.metaskills.net

Servers

Apache serves webpages by spawning new child processes (smaller sub-programs) to deal with each connection. The number of these that you allow to run and to be kept in reserve has a big impact on how fast your server will run. The risk (especially on a server with a small amount of memory, such as a VPS) is that the available RAM will run out and the system will end up using the far slower hard disk as swap memory instead. To prevent this, you need to tell Apache only to have a certain number. Here is a sample set of configuration directives for a VPS server with 128MB of RAM (with up to 384 burstable), whic apparently works quite well (more info here)

Make a back up of your httpd.conf first. It’s generally found at /etc/httpd/conf/httpd.conf, then open the file with your editor e.g.

nano /etc/httpd/conf/httpd.conf

Then look for these values, which may be spread about a little and change them:

Timeout 200
KeepAlive On
MaxKeepAliveRequests 200
KeepAliveTimeout 3
MinSpareServers 5
MaxSpareServers 15
StartServers 5
MaxClients 20
MaxRequestsPerChild 2000
HostnameLookups Off

If you find that you are running out of memory (type

top

if using Linux and look at the swap figure), just lower some of the numbers. Similary, if you have extra memory, you can afford to raise them a bit. Remember to combine tuning of Apache with tuning of your database app.

SSL

If you want your website not to be hackable, you need to enable SSL so that your moodle password cannot be easily read by others as it is transmitted (as normal internet communications normally can be). There are 2 options - generate a self-signed certificate, which stops casual network sniffing, but which can ultimately be compromised with enough effort, or purchase a certificate from a vendor (about $35 per year from the cheap ones). Below are instructions for install of a self-signed certificate.

Debian and Apache2

1. generate a certification:

     apache2-ssl-certificate

for debian etch, apache2-ssl-certificate is no longer available, use make-ssl-cert instead:

         make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem

2. edit /etc/apache2/ports.conf:

     Listen 80
     Listen 443

3. copy /etc/apache2/sites-available/default to /etc/apache2/sites-available/default-ssl, and change /etc/apache2/sites-available/default:

     NameVirtualHost *:80
     <VirtualHost *:80>
     ...
     </VirtualHost>

and also /etc/apache2/sites-available/default-ssl:

     NameVirtualHost *:443
     <VirtualHost *:443>
     ...
             SSLEngine on
             SSLCertificateFile /etc/apache2/ssl/apache.pem
     ...
     </VirtualHost>

4. symbolic link the ssl file:

     a2ensite default-ssl

5. don't forget to symbolic link the ssl module:

     a2enmod ssl

6. restart apache and test the connection (e.g. https://localhost/):

     /etc/init.d/apache2 restart

reference

関連情報