*Apacheをrpmでインストール [#keb1a453]

RIGHT:更新日 &lastmod();

**Vine6.xでのPHP [#n69a7942]

phpをインストールするとworker MPMなのでprefork MPM を使用せよといわれるので
以下のように変更する 

 # apt-get install php5-apache2
 パッケージリストを読みこんでいます... 完了
 依存情報ツリーを作成しています... 完了
 以下の追加パッケージがインストールされます:
   php5 php5-pear
 以下のパッケージが新たにインストールされます:
   php5 php5-apache2 php5-pear
 アップグレード: 0 個, 新規インストール: 3 個, 削除: 0 個, 保留: 1 個
 12.4MB のアーカイブを取得する必要があります。
 展開後に 40.3MB のディスク容量が追加消費されます。
 続行しますか? [Y/n]
 取得:1 http://updates.vinelinux.org 6/x86_64/plus php5-pear 5.3.7-1vl6 [423kB]
 取得:2 http://updates.vinelinux.org 6/x86_64/plus php5 5.3.7-1vl6 [8036kB]
 取得:3 http://updates.vinelinux.org 6/x86_64/plus php5-apache2 5.3.7-1vl6  [3934kB]
 12.4MB を 1s 秒で取得しました (7321kB/s)
 変更を適用しています...
 準備中                                ############################## [100%]
 更新/インストール中
   php5-5.3.7-1vl6.x86_64                 ############################## [100%]
   php5-pear-5.3.7-1vl6.x86_64            ############################## [100%]
   php5-apache2-5.3.7-1vl6.x86_64         ############################## [100%]
 
  Apache2 is configured to use worker MPM. But php5-apache2 requires
 prefork MPM. Run the following command as root to switch MPM:
 
    /sbin/update-alternatives --config apache2
 
 完了

以下のようにApacheのページある。

---------
Apache2 の MPM マルチスレッドモードを実運用環境で使用することは推奨されません。代わりに prefork MPM を使ってください。これは Apache 2.0 および 2.2 におけるデフォルトの MPM です。
----------

 # /sbin/update-alternatives --config apache2
 
 2 プログラムがあり 'apache2' を提供します。
 
   選択       コマンド
 -----------------------------------------------
  + 1           /usr/sbin/apache2.worker
 *  2           /usr/sbin/apache2.prefork
 
 Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2

''確認''

 # /sbin/update-alternatives --config apache2
 
 2 プログラムがあり 'apache2' を提供します。
 
   選択       コマンド
 -----------------------------------------------
    1           /usr/sbin/apache2.worker
 *+ 2           /usr/sbin/apache2.prefork
 
 Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:^C
 

**%%Vine5xでのmod-sslがLoadできない問題対策%% [#f6c443e5]

&color(red){''Vine5.1で修正され不要になった''};

''httpd.conf''にmod-sslのloadを追加しファイルファイルの最後にextra/httpd-ssl.confを指定。Vine4xまでは conf.d/ssl.confがこのファイルだったがVine5ではファイルはあるが知らない書式が書かれている。現在は内容は不明。

 LoadModule mem_cache_module modules/mod_mem_cache.so
 LoadModule cgi_module modules/mod_cgi.so 
 
 LoadModule ssl_module modules/mod_ssl.so <=追加
 
 #
 # The following modules are not loaded by default:
 
 
 最後に以下を追加
 
 Include conf/extra/httpd-ssl.conf

&color(red){LoadModuleしないと以下のエラーで起動できない};

 Invalid command 'SSLPassPhraseDialog', perhaps misspelled or defined by a module not included in the server configuration

**Aliasでディレクトリ設定 [#k2c9e4ea]

/etc/apache2/conf.d/openpne.conf

 Alias /openpne /var/www/OpenPNE/public_html

というファイルを作成すればよい

httpd.confに以下の行があるから

 Include conf.d/*.conf

**Apacheの確認 [#bce982e7]

以下のrpmがあればOK,なければインストール

 apache2-manual-2.2.3-0vl3
 apache2-2.2.3-0vl3
 mod_ssl-apache2-2.2.3-0vl3

/etc/apache2にconf等のファイルがある。~
/var/wwwにアクセスさせるホームページがある。~

***ユーザでの利用 [#d2a1fba2]
デフォルトでは~userではアクセスできないので以下のようhttp.confを変更

 <IfModule mod_userdir.c>
     #
     # UserDir is disabled by default since it can confirm the presence
     # of a username on the system (depending on home directory
     # permissions).
     #
 ##    UserDir disable   <==コメントアウト
 
     #
     # To enable requests to /~user/ to serve the user's public_html
     # directory, remove the "UserDir disable" line above, and uncomment
     # the following line instead:
     #
     #UserDir public_html
     UserDir public_html <==コメントアウトを削除
 
 </IfModule>
 
 # 
 # Control access to UserDir directories.  The following is an example
 # for a site where these directories are restricted to read-only.
 #
           (以下コメントアウトを削除)
 <Directory /home/*/public_html>
     AllowOverride FileInfo AuthConfig Limit
     Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
     <Limit GET POST OPTIONS>
         Order allow,deny
         Allow from all
     </Limit>
     <LimitExcept GET POST OPTIONS>
        Order deny,allow
        Deny from all
     </LimitExcept>
 </Directory>

***その他の変更(http.conf) [#sc5e2332]

 ##DirectoryIndex index.html index.html.var
 DirectoryIndex index.html index.htm index.php index.cgi index.pl index.shtml

 ##LanguagePriority en ja ca cs da de el eo es et fr he hr it ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
 LanguagePriority ja en ca cs da de el eo es et fr he hr it ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW


''起動''

 /etc/rc.d/init.d/apache2 start

1.xがhttpdで起動してる場合は起動を停止する。

***SSL [#o3e24240]

/etc/apache2/conf.d/ssl.confに公開キーや秘密キーの設定がある。

''ベリサインの証明書のインストール''

/etc/apache2/conf.d/ssl.conf中に公開キーと秘密キーが指定されている

サーバキー(秘密キー)~
SSLCertificateKeyFile /etc/apache2/conf/ssl.key/server.key

証明書(公開キー)~
SSLCertificateFile /etc/apache2/conf/ssl.crt/server.crt

をベリサインのキーに書き換える

さらに新規の場合は&color(red){中間CA証明書};も指定する。
このキーは毎年変更する必要はない

https://www.verisign.co.jp/repository/intermediate/server/c3SecureServerCA_1024.html

に中間CA証明書があるのですべてコピーし適当なファイル名(inca.pem)で保存.

SSLCertificateChainFile /etc/apache2/conf/inca.pem

として指定する。~
(Vine4.xはApache+mod_SSLで動作している)

その後再起動

中間CA証明書はNetscape7でないと確認できない。また最近のブラウザは中間CA証明書がなくても、ベリサインのページ取りに行くようで動作するが、場合によってはうまく動作しない場合があり、初めてのアクセス時に認証できないとか認証期間切れ等のエラーが出る。一度OKすると2回目からは聞きかれないが・・・

参考

http://www.verisign.co.jp/ssl/help/install/iapache_new_intca_s.html

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


以下のファイル(MySQL,PostgreSQL)は Vine Plusにある

**MySQLのインストール [#v3f0cf62]
 # apt-get install mysql
 # apt-get install mysql-client

必要に応じ mysql-XXXをインストール

''確認''

 $ rpm -qa | grep MySQL
 MySQL-server-5.0.27-0vl3
 MySQL-client-5.0.27-0vl3
 MySQL-shared-5.0.27-0vl3

''設定ファイルを/etcに作成''
 # cp /usr/share/mysql/my-medium.cnf /etc/my.cnf 

defaultの文字コードをutfに設定

/etc/my.cnfに追加
 [mysqld]
 
 デフォルトのサーバ文字コードを指定
 default-character-set=utf8 ← 追加(ujis, sjis, utf8等が指定可能)
 
 サーバーの文字コード設定をクライアントでもそのまま使う
 skip-character-set-client-handshake ← 追加


**PostgreSQLのインストール [#p875c3dd]

 # apt-get install postgresql
 # apt-get install postgresql-server

いくつかのコマンドは/usr/binにある (createdb等)~
環境ファイルは/var/lib/pgsql/dataにある~

必要に応じ postgresql-XXXをインストール

&color(red){注:};Vine6.x(64bit)では以下をインストールしないとinitdbで「FATAL:  could not access file "$libdir/euc2004_sjis2004": No such file or directory」というエラーでDBが初期化されない

 # apt-get install postgresql-contrib

/usr/lib64/postgresql/euc2004_sjis2004.soにインストールされる

**phpのインストール [#z22cc921]

 # apt-get install php5-apache2
 # apt-get install php5-pgsql
 # apt-get install php5-mysql

***timezoneについて [#d46a3faf]

php5.1以降は 以下のように

''php.ini''
 [Date]
 ; Defines the default timezone used by the date functions
 ; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
 ;date.timezone =
 date.timezone = Asia/Tokyo

または使用時

 date_default_timezone_set('Asia/Tokyo');

を入れておかないと

&color(red){PHP Warning:  date(): It is not safe to rely on the system's timezone settings.};のような Warningが出る

---------

php.ini等は/etc/php5のしたにある


設定内容はソースからインストールと同じように行う

''&color(red){注)indexの拡張子の表示順序はhttpd.confでよりphpについてはconf.d/php5.confの以下の部分が優先されるためコメントアウトする};''

 # DirectoryIndex index.php index.phtm

また以下の設定をしなしとapacheバーチャル環境でうまくアクセス時ファイルセーブになる。まだほかの設定も必要かも(不明)
&color(red){また以下の設定をしなしとapacheバーチャル環境でうまく動作しない(アクセス時ディレクトリアクセスでファイルセーブになる)。まだほかの設定も必要かも(不明)};

 ## DirectoryIndex index.php5
 DirectoryIndex index.php


***php.iniについての注意 [#odb0b394]

Vine5xでは以下のようにしなとエラーが出る(phpのバージョンの問題なようだ。今回バージョンはphp5-5.3.0)

 [Date]
 ; Defines the default timezone used by the date functions
 ; http://php.net/date.timezone
 ;date.timezone =
 date.timezone = Asia/Tokyo  <==指定が必要

プログラムでの対応は

 <?php
 ini_set("date.timezone", "Asia/Tokyo");
 ?>

''エラー内容''
 It is not safe to rely on the system's timezone settings.
 Please use the date.timezone setting, the TZ environment variable or the
  date_default_timezone_set() function.
 In case you used any of those methods and you are still getting this warning, 
 you most likely misspelled the timezone identifier.
 We selected 'Asia/Tokyo' for '9.0/no DST' instead

php.iniの最後にVineで追加された項目がある。

 [Vine]
 output_buffering = Off
 expose_php = Off
 ;;memory_limit = 32M
 memory_limit = 512M
 variables_order = "GPCS"
 ;;default_charset = EUC-JP
 extension_dir = /usr/lib/php5

この部分のdefault_charset = EUC-JPが有効だと、送られたHTTPのヘッダーに

 Content-Type: text/html; default_charset=EUC-JP

が無条件で付き、作成したphpファイルのヘッダーに

 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

と記入してもutf-8としてブラウザが判断しないので、文字化けになるので
コメントアウトしておく。文字コードはphpファイルで指定するようにしておく

その他メモリの指定もここにされているので注意する

さらにmoodleでutf8でもトラブルがあったので以下をコメントアウト

 ;;mbstring.language = Japanese
 ;;mbstring.internal_encoding = EUC-JP
 ;;mbstring.http_input = auto
 ;;mbstring.http_output = pass
 ;;mbstring.encoding_translation = On

**Directoryディレクティブの意味 [#y7c6a1e3]

''All''~
MultiViewsを除くすべてのオプションを有効にします。MultiViewsを有効にしたい場合には、明示的にMultiViewsを追加する必要がある

''FollowSymLinks''~
ファイルシステム内の別の場所にシンボリックリンクを作成して表示用のファイルを保持したい場合があります。このためには少なくともFollowSymLinksオプションを有効にする

''SymLinksifOwnerMatch''~
所有者が一致した場合にのみシンボリックリンク経由でのアクセスを許可

''Multiviews''~
HTTP/1.1 の規格に記述されているコンテントネゴシエーションの1形態であるマルチビューを有効にするためのオプション~
例えば/usr/local/apache2/htdocs/testにリクエストがありtestというファイルが存在しない場合に、Apacheはディレクトリ内のtest.*をすべて検索し最適なファイルをユーザに返す

''AllowOverride''~
該当ディレクトリに存在する.htaccessファイルによって上書きされる(許可)ディレクティブの種類を指定します。All・Noneもしくは個別のディレクティブの組み合わせで指定することが可能~
「AllowOverride None」は.htaccessファイル内に記述されているディレクティブは使用されない。~
「AllowOverride AuthConfig」は.htaccess内のAuthType・AuthUserFile・AuthName・Requireディレクティブの設定値の上書きが許可

''Order''~
ホストに対するデフォルトのアクセス可能状態と、Allow/Deny ディレクティブの評価順を指定する

allow,deny (デフォルト)~
allow -> deny順に評価されるのですべて拒否

deny,allow~
deny -> allow順に評価されるのですべて許可

つまり Orderで指定されるのは評価される順番で次の行の Allow、Denyの記述順ではないようだ。

 Order allow,deny
 Allow from all
 だとallowですべてを許可され、denyでを指定するがdenyがないのですべて許可
 後から指定されたものが優先
 Order allow,deny         Order allow,deny   
 Allow from all           Deny from all
 Deny from all            Allow from all
 は同じで後がOrderのdenyなのですべて拒否される

Allow from all | host または Deny  from all | host~
「Allow from all」はすべて許可「Allow from apache.org」はDNS名の一部~
「Allow from 192.168.11.0/24」	ネットワークアドレスを許可

~<Limit method ...>   </Limit>と<LimitExcept method ...>  </LimitExcept>は反対の意味を持つ

**Virtual Host(IPベース) [#s455ffd9]

Host名 v-host~
IP 192.168.30.18~
ドキュメントroot /usr/local/enfant

/etc/apache2/conf/httpd.confの最後の行に以下を追加

 Include conf/extra/httpd-vhosts.conf

extra/httpd-vhosts.confのサンプルを見ながら、サンプルを以下のように修正

 ##<VirtualHost *:80>
 ##    ServerAdmin webmaster@dummy-host.example.com
 ##    DocumentRoot /www/docs/dummy-host.example.com
 ##    ServerName dummy-host.example.com
 ##    ServerAlias www.dummy-host.example.com
 ##    ErrorLog /var/log/apache2/dummy-host.example.com-error_log
 ##    CustomLog /var/log/apache2/dummy-host.example.com-access_log common
 ##</VirtualHost>
 
 ##<VirtualHost *:80>
 ##    ServerAdmin webmaster@dummy-host2.example.com
 ##    DocumentRoot /www/docs/dummy-host2.example.com
 ##    ServerName dummy-host2.example.com
 ##    ErrorLog /var/log/apache2/dummy-host2.example.com-error_log
 ##    CustomLog /var/log/apache2/dummy-host2.example.com-access_log common
 ##</VirtualHost>
 
 (以下を追加)
 <VirtualHost *:80>
 ##    ServerAdmin webmaster@dummy-host2.example.com
     DocumentRoot /usr/local/v-host
     ServerName v-host.abc-u.ac.jp
     ErrorLog /var/log/apache2/v-host-error_log
     CustomLog /var/log/apache2/v-host-access_log common
 </VirtualHost>

httpd.confの最後あたりのVirtual Hostの設定はHost名ベースのバーチャルホストのようでsslがたぶん対応できないと思う。

またailiasでディレクトリ指定するときは、以下のように<VirtualHost *:80>の中に指定する。このとき、ディレクティブアクセス内容はhttpd.confに指定してあればいいようだ

 <VirtualHost *:80>
     DocumentRoot /var/www/html
     ServerName manabi.abc.ac.jp
     ErrorLog /var/log/apache2/error_log
     CustomLog /var/log/apache2/access_log common
     Alias       /moodle/  "/var/www/moodle/"   <==ここ
 
 </VirtualHost>
しかし、このときServerNameがmanabi.abc.ac.jpなため、IPアドレスや,HOST名だけでアクセスされた場合はデフォルトで一番初めに指定した<VirtualHost *:80>にアクセスされるため、この表記が一番初めの場合はmanabi.abc.ac.jp以外でも指定バーチャルホスト指定外では表示されてしまうようだ。

次のSSLでも同じように

Alias       /moodle/  "/var/www/moodle/" 

を追加する

***SSLも追加 [#ne106ac4]

/etc/apache2/conf.d/ssl.confの中の以下の部分をコピーし編集する。

デフォルトでVine4.xはこちらを参照するようだ/etc/apache2/conf/extra/httpd-ssl.confは/etc/apache2/conf/httpd.confでIncludeすればいいのかもしれないがまだ不明

 ##
 ## SSL Virtual Host Context
 ##
 
 (以下の場所はDefaultでメインを指定する=>特に編集必要なし)
 <VirtualHost _default_:443>
 
 #  General setup for the virtual host
 DocumentRoot "/var/www/html"
 ServerName new.host.name:443
 ServerAdmin you@your.address
 ErrorLog logs/ssl_error_log
 TransferLog logs/ssl_access_log
 
 (略)
 
 </VirtualHost>
 
 (以下追加)
 
 ##
 ## SSL Virtual Host2(enfant) Context
 ##
 
 ##<VirtualHost _default_:443>
 <VirtualHost 192.168.30.18:443>
 
 #  General setup for the virtual host
 DocumentRoot "/usr/local/v-host"
 ServerName v-host.abc-u.ac.jp:443
 ##ServerAdmin you@your.address
 ErrorLog logs/enfant-ssl_error_log
 TransferLog logs/enfant-ssl_access_log
 
 (略)
 
 </VirtualHost>

あとはApacheを再起動

**Vine3.xでの問題 [#e02201ad]

phpを有効のして起動すると

 # /etc/rc.d/init.d/apache2 start
 httpdを起動中: [Mon Sep 08 09:33:50 2008] [crit] Apache is running a threaded  
 MPM, but your PHP Module is not compiled to be threadsafe.  You need to  recompile PHP.
 Pre-configuration failed

というエラーで起動できない

Vine3.xにおけるapache2のデフォルトはworkerモデルになっており,phpのモジュール版はpreforkモデルでないと正しく動作しない.apache2をpreforkモデル に変更するには以下のようにする.

 # /sbin/update-alternatives --config apache2
 
 There are 4 alternatives which provide `apache2'.
 
   Selection    Alternative
 -----------------------------------------------
 *+    1        /usr/sbin/apache2.worker
       2        /usr/sbin/apache2.prefork
       3        /usr/sbin/apache2.threadpool
       4        /usr/sbin/apache2.perchild
 
 Press enter to keep the default[*], or type selection number: 2 <=2を選択
 Using `/usr/sbin/apache2.prefork' to provide `apache2'.

''文字化け''

Apache2の仕様の問題で、デフォルトの文字設定(ISO-8859-1)では、日本語が文字化けします。(htmlのcharsetは無視される)
これを正常に日本語表示可能にするにはhttpd.confに以下のように追記

 AddDefaultCharset ISO-8859-1
 (以下を追加)
 AddDefaultCharset shift_jis
 AddDefaultCharset EUC-JP
 AddDefaultCharset none

''個人ディレクトリでCGI(Perl)が動かない問題''

Vine4.xは大丈夫そう?

/etc/apache2/logs/error_log

 [Tue Sep 09 11:21:16 2008] [error] [client 202.59.188.153] (13)Permission
 denied: exec of '/usr/lib/apache2/suexec' failed

suEXECがオンになっている最近の設定で,番号の低いグループでCGIが動かないといったトラブルが発生するみたい

&color(red){/usr/lib/apache2/suexecをリネームする};

apt-get でまた入る可能性あり

 # /usr/lib/apache2/suexec.err -V
  -D AP_DOC_ROOT="/var/www"
  -D AP_GID_MIN=500
  -D AP_HTTPD_USER="apache"
  -D AP_LOG_EXEC="/var/lib/log/apache2/suexec.log"
  -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
  -D AP_UID_MIN=500
  -D AP_USERDIR_SUFFIX="public_html"

個人のホームディレクトリに public_html ディレクトリを作り,その中に index.html を入れてうまくいかない場合は,たいていホームディレクトリのパーミッションが悪いのでしょう。 700ではうまくいきません。少なくとも 701 にしておく必要があります。


***参考ページ [#e508b654]

[[Apache基本設定:http://www.stackasterisk.jp/tech/systemConstruction/apache03_01.jsp]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS