[Ubuntu] レン鯖御用達 suExec と suPHP 環境を構築する2(1)

何となくできるようになった気がする。気がするだけ。もっと簡単にならないものかね・・。わからないなりにもう一度勉強しておく。ちなみに、当然新しいUbuntu Server 10.04 LTS なVM を作るところから始まる。この課題だけで何台目だろ・・。

スポンサードリンク

環境の準備

$ sudo loadkeys jp
$ sudo apt-get install ssh
$ sudo sed -i".bak" -e 's/\/\/us.archive.ubuntu.com/\/\/ftp.jaist.ac.jp/g'  /etc/apt/sources.list
$ sudo apt-get update
$ sudo apt-get upgrade -y
$ sudo apt-get install vim -y

インストール

$ sudo ln -s /usr/bin/perl /usr/local/bin/perl
$ sudo apt-get install apache2 apache2-suexec-custom php5 libapache2-mod-suphp php5-mysql mysql-server
$ sudo a2dismod php5
$ sudo a2enmod suphp
$ sudo a2enmod suexec
$ sudo a2enmod actions
$ sudo a2enmod userdir
$ sudo a2enmod rewrite
$ sudo /etc/init.d/apache2 restart

userdir.conf

$ sudo vi /etc/apache2/mods-available/userdir.conf

変更前

<Directory /home/*/public_html>
        AllowOverride FileInfo AuthConfig Limit Indexes
        Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

変更後

<Directory /home/*/public_html>
        AllowOverride FileInfo AuthConfig Limit Indexes
        Options MultiViews -Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI

※ExecCGI の追加とIndexes にマイナス記号を付加

再起動

$ sudo /etc/init.d/apache2 restart

suExec

※後述参照

.cgi を有効化

$ sudo vi /etc/apache2/mods-enabled/mime.conf

変更前

#AddHandler cgi-script .cgi

変更後

AddHandler cgi-script .cgi

suExec の設定

$ sudo vi /etc/apache2/suexec/www-data

行頭に次を追加

/home
public_html

→ pc.casey.jp » /etc/apache2/suexec/www-data の書き方

再起動

$ sudo /etc/init.d/apache2 restart

バーチャルホスト

$ mkdir /home/casey/public_html/
$ sudo vi /etc/apache2/sites-available/test.example.com
<VirtualHost *:80>
ServerName test.example.com
DocumentRoot /home/casey/public_html
ErrorLog /var/log/apache2/test.example.com.error.log
CustomLog /var/log/apache2/test.example.com.access.log combined
LogLevel warn
SuexecUserGroup casey casey
</VirtualHost>

再起動

$ sudo a2ensite test.example.com
$ sudo /etc/init.d/apache2 reload

WordPress

WordPress 用データベースを作成・

$ mysql -u root -p
mysql> CREATE DATABASE wordpress;
mysql> GRANT ALL PRIVILEGES ON wordpress.* TO "wp_db_admin"@"localhost" IDENTIFIED BY "wp_db_password";
mysql> exit;

→ pc.casey.jp » 自動生成される.htaccess のパーミッションがヘン・・

phpMyAdmin

phpMyAdmin をインストールした際に「mcrypt 拡張がありません。PHP の設定をチェックしてみてください」となるなら次を実行する:

$ sudo apt-get install php5-mcrypt
 $ sudo /etc/init.d/apache2 restart

本項の参考文献

mcrypt 拡張がありません。PHP の設定をチェックしてみてください。[ubuntu] | 超兄貴の開発メモ

その他の設定

大まかな構築はこんなものだろうか。あとは細かな設定を詰めていくことになる。

→  「レン鯖御用達 suExec と suPHP 環境を構築する2(2)」へ続く

参考文献

関連記事

スポンサードリンク

Comments

2 thoughts

  1. こんにちは。いつも拝見させてもらっています。
    私はCentOS6.4環境でLAMP+suPHP環境を構築していたのですが、通常のPHPを使いたくないが為に
    /etc/httpd/conf.d/php.confをphp.conf.disableなどとリネームして運用していました。
    ところが7月12日〜13日くらいからWordPressにてプラグインの更新などを行おうとしたところ、
    FTP情報の入力を促されるようになりました。あれ?suPHP環境で動いてないな。と思い、
    その日付け前後のlogを見るとyumでphpや他の依存モジュールがupdateされていて、
    勝手に/etc/httpd/conf.d/php.confが復活していました。
    また既存のvirtualhostのconfファイルからもsuPHP_Engine onの記述も1行消えていました。
    慌ててphp.confをphp.conf.bakなどとリネームして消えてしまった設定箇所なども見直し元の環境に
    しました。

    そこで管理人さんにお尋ねしたいのですが、OSの種類こそ違え、このように「勝手にphp.confが復活する」
    といった現象をどのように回避されていらっしゃいますか。もしよろしかったらご教授願えませんか。

    よろしくお願い致します。

  2. コメントありがとうございます。

    簡単にユーザー権限で動作させるなら、姑息な手段としてVirtualminやBlueOnyxを使う方法もありますが、任意のバージョンを利用されるということなので、ちょっと違いますね。

    そうするとyumが勝手にインストールすることを停止する方法で、yumの設定ファイルに「PHPについては勝手にインストールしてくれるな」と記述する方法があったと思います。

    それ以外では、ソースからインストールなどして、PHPのインストールオプションでインストール先を指定しておき、.htaccessなどから使用するPHPを直接指定する方法があるでしょうか。

    この方法は、モジュール版が有効になっているサーバーで、PHPをCGIモードとして利用する場合などに利用されますね。

    VALUE-DOMAINの提供するCORESERVERや、さくらインターネットが提供するレンタルサーバーでも複数のバージョンのPHPから任意のものを選択する事ができるようになっています。以下参考。

    AddHandler application/x-httpd-php4cgi .php
     →「.php」をCGI版PHP4として動かす

    AddHandler application/x-httpd-php5cgi .php
     →「.php」をCGI版PHP5として動かす

    AddHandler application/x-httpd-php53cgi .php
     →「.php」をCGI版PHP5.3として動かす

    AddHandler application/x-httpd-php6cgi .php
     →「.php」をCGI版PHP6として動かす

    (「PHPをCGIとして動かす方法について – CORESERVER.JP:コアサーバー」より引用))

    # その辺の内容をもうすこし整理して、かつ、特化したサイトを作っているところです。公開はいつになるやらですが・・。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です