Linux管理をはじめて数年、これまでPleskにお任せして避けてきた自力サーバー管理をはじめることになった。自宅サーバーもやってみたいし。
phpのinclude_pathを追加したりする場合、私はvhost.confを使っている。
この作業はシェルで(rootユーザにて)操作する。
/var/www/[ドメイン]
にconfディレクトリを作成し、vhost.confファイルを作成する。
vhost.confは私の場合
こんな感じ。include_pathを追加するのと、スタイルシート、javascriptを動的にしたい時に使っている。
こうしておけば、例えばスタイルシートに記述する画像ファイルURLを動的に出来ます。
ただしその場合、CSSなら「header("Content-type: text/css;");」という風にレスポンスヘッダを書き換える必要がある。
さて、vhost.confを作成した後はアパッチがこのファイルを起動時に読み込むように設定する。
/etc/httpd/conf/httpd.conf
該当するドメインのVirtualHost部を探す。たぶん一番下。
このようにvhost.confのパスを記述しておく。
アパッチを再起動する。
この作業はシェルで(rootユーザにて)操作する。
/var/www/[ドメイン]
にconfディレクトリを作成し、vhost.confファイルを作成する。
vhost.confは私の場合
php_value include_path .:/var/www/[ドメイン]/public_html/public
Options FollowSymLinks
RewriteEngine On
RewriteRule /style\.css$ /style.php [L]
RewriteRule /common\.js$ /javascript.php [L]
こんな感じ。include_pathを追加するのと、スタイルシート、javascriptを動的にしたい時に使っている。
こうしておけば、例えばスタイルシートに記述する画像ファイルURLを動的に出来ます。
ただしその場合、CSSなら「header("Content-type: text/css;");」という風にレスポンスヘッダを書き換える必要がある。
さて、vhost.confを作成した後はアパッチがこのファイルを起動時に読み込むように設定する。
/etc/httpd/conf/httpd.conf
該当するドメインのVirtualHost部を探す。たぶん一番下。
Include /var/www/ドメイン名/conf/vhost.conf
</VirtualHost>
このようにvhost.confのパスを記述しておく。
アパッチを再起動する。
service httpd restart
webminでのバーチャルサーバー追加作業のフロー。
webminのサーバ内にあるVirtualminをクリック
Add new virtual server, owned by ボタンをクリック。ドロップダウンはNew Userのまま。
Domain name: 追加するドメイン名 (example.com)
Description: 説明文
Administration password: 管理者パスワード
Server configuration template: Default Settings
Account plan: Default Plan
Administration username: 管理者ユーザ名
Create Serverボタンをクリック
するとこんなログが出て作成が完了する
このままだとメールアドレスがFTPユーザ名になってしまうので、やっぱinfoとかadminとかいうメールアドレスをつくっておいた方が都合がいい。
Edit Mail Aliasesをクリック。
Add an alias to this domain.をクリック。
Mailbox にinfoと入力する。
Deliver locally?をチェック。Yes, deliver to mailbox の欄に管理者IDを入力する。
webminのサーバ内にあるVirtualminをクリック
Add new virtual server, owned by ボタンをクリック。ドロップダウンはNew Userのまま。
Domain name: 追加するドメイン名 (example.com)
Description: 説明文
Administration password: 管理者パスワード
Server configuration template: Default Settings
Account plan: Default Plan
Administration username: 管理者ユーザ名
Create Serverボタンをクリック
するとこんなログが出て作成が完了する
Creating administration group [管理者ユーザ名] .... done
Creating administration user [管理者ユーザ名] .... done
Creating aliases for administration user .... done
Adding administration user to groups .... done
Creating home directory .... done
Creating mailbox for administration user .... done
Adding to email domains list .... done
Adding default mail aliases .... done
Adding new DNS zone .... done
Adding new virtual website .... done
Adding Apache user apache to server's group .... done
Performing other Apache configuration .... done
Setting up scheduled Webalizer reporting .... done
Setting up log file rotation .... done
Creating MySQL login .... done
Creating MySQL database [管理者ユーザ名] .... done
Creating Webmin user .... done
Re-starting DNS server .... done
Applying web server configuration .... done
Re-loading Webmin .... done
Saving server details ... done
この段階でFTP接続出来ることを確認。ブラウザでApacheのデフォルトページが出ることを確認する。このままだとメールアドレスがFTPユーザ名になってしまうので、やっぱinfoとかadminとかいうメールアドレスをつくっておいた方が都合がいい。
Edit Mail Aliasesをクリック。
Add an alias to this domain.をクリック。
Mailbox にinfoと入力する。
Deliver locally?をチェック。Yes, deliver to mailbox の欄に管理者IDを入力する。
アクセスログを解析したい!というケースが多いのだが、UNIXコマンドを使ってcronバッチで処理するというのがお手軽だ。
例えば特定のURLに対するアクセスのリファラ(参照元)を、ドメインごとに分けたい!などというケースであれば
こんな感じのコマンドで実現可能。
このコマンドでやっていることは
・grep 対象となるファイル(index.php)に対する行だけをアクセスログから抽出する
・cut アクセスログの中から、参照元(リファラ)だけを抽出
・sort ソートする
・sed 最後のスラッシュまでを取得する
・uniq 重複した行を1行にまとめて、重複回数を表示する
・sort アクセスが多かったドメインから表示したいので降順にする
このような処理だ。
このコマンドでは
http://aaa.jp/dir/index.php
http://aaa.jp/dir/top.php
この2つのURLは同じものとして扱われるが、
http://aaa.jp/dir/index.php
http://aaa.jp/dir2/index.php
この2つのURLは別ものとして扱う。単純にドメインごとにしてしまうと、ブログからのアクセスなどがわけわからなくなるので、ディレクトリ単位で集計するイメージだ。
これによってどのサイトから、どのブログからどれくらいアクセスが発生しているかが分かる。
例えば特定のURLに対するアクセスのリファラ(参照元)を、ドメインごとに分けたい!などというケースであれば
grep index.php access_log | cut -d " " -f 11 | sort | sed 's/\\(.*\\)\\/[^/]*$/\\1\\//' | uniq -c | sort -r
こんな感じのコマンドで実現可能。
このコマンドでやっていることは
・grep 対象となるファイル(index.php)に対する行だけをアクセスログから抽出する
・cut アクセスログの中から、参照元(リファラ)だけを抽出
・sort ソートする
・sed 最後のスラッシュまでを取得する
・uniq 重複した行を1行にまとめて、重複回数を表示する
・sort アクセスが多かったドメインから表示したいので降順にする
このような処理だ。
このコマンドでは
http://aaa.jp/dir/index.php
http://aaa.jp/dir/top.php
この2つのURLは同じものとして扱われるが、
http://aaa.jp/dir/index.php
http://aaa.jp/dir2/index.php
この2つのURLは別ものとして扱う。単純にドメインごとにしてしまうと、ブログからのアクセスなどがわけわからなくなるので、ディレクトリ単位で集計するイメージだ。
これによってどのサイトから、どのブログからどれくらいアクセスが発生しているかが分かる。
サーバ開通時、webminは入っている状態。
FTPユーザ作成
http://private.isle.jp/support/manualhtml/webmin/ftp_user/
/etc/httpd/conf/httpd.confを修正
Options Indexes FollowSymLinksをOptions -Indexes FollowSymLinks
WebminでProFTPDとApacheを起動する設定に。
Mysqlをアンインストールする
yum remove mysql
tritonインストール
http://withoutplesk.blog.shinobi.jp/Entry/7/
webminに入っているmysqlの設定、ディレクトリが違うので
/usr/local/mysql/bin
に変更
tritonnフォルダのsupport-filesディレクトリから起動シェルをコピー
/usr/local/mysql/data ディレクトリを作成、所有者をmysqlに変更
data/*.errを見ながらエラーがなくなるまでやる
phpをインストール
http://withoutplesk.blog.shinobi.jp/Entry/15/
http://withoutplesk.blog.shinobi.jp/Entry/8/
libjpgなどでエラーが出る。
yum install libpng-devel
yum install libmcrypt-devel
yum install libtidy-devel
wget http://www.ijg.org/files/jpegsrc.v6b.tar.gz
zxvf jpegsrc.v6b.tar.gz
cd jpeg-6b/
rm ltconfig
rm ltmain.sh
wget http://fink.sourceforge.net/files/ltconfig
wget http://fink.sourceforge.net/files/ltmain.sh
./configure --enable-shared --enable-static
mkdir /usr/local/man/man1
make
make install
phpmyadminをインストール
http://withoutplesk.blog.shinobi.jp/Entry/9/
webminをアップグレード
webmin.com からRPMパッケージをインストール
virtualminをインストール
http://withoutplesk.blog.shinobi.jp/Entry/16/
http://webmin.com/vdownload.htmlのOther Download Formatsからwebminmoduleを選ぶ。
A problem was found with your Postfix virtual maps : No map sources were found in the Postfix configuration
postfixの設定の仮想ドメインMap specificationsを選択し、hash:/etc/postfix/virtual
The Suexec command on your system is configured to only run scripts under /var/www, but the Virtualmin base directory is /home. CGI and PHP scripts run as domain owners will not be executed.
Home directory baseを/var/wwwにする
FTPユーザ作成
http://private.isle.jp/support/manualhtml/webmin/ftp_user/
/etc/httpd/conf/httpd.confを修正
Options Indexes FollowSymLinksをOptions -Indexes FollowSymLinks
WebminでProFTPDとApacheを起動する設定に。
Mysqlをアンインストールする
yum remove mysql
tritonインストール
http://withoutplesk.blog.shinobi.jp/Entry/7/
webminに入っているmysqlの設定、ディレクトリが違うので
/usr/local/mysql/bin
に変更
tritonnフォルダのsupport-filesディレクトリから起動シェルをコピー
/usr/local/mysql/data ディレクトリを作成、所有者をmysqlに変更
data/*.errを見ながらエラーがなくなるまでやる
phpをインストール
http://withoutplesk.blog.shinobi.jp/Entry/15/
http://withoutplesk.blog.shinobi.jp/Entry/8/
libjpgなどでエラーが出る。
yum install libpng-devel
yum install libmcrypt-devel
yum install libtidy-devel
wget http://www.ijg.org/files/jpegsrc.v6b.tar.gz
zxvf jpegsrc.v6b.tar.gz
cd jpeg-6b/
rm ltconfig
rm ltmain.sh
wget http://fink.sourceforge.net/files/ltconfig
wget http://fink.sourceforge.net/files/ltmain.sh
./configure --enable-shared --enable-static
mkdir /usr/local/man/man1
make
make install
phpmyadminをインストール
http://withoutplesk.blog.shinobi.jp/Entry/9/
webminをアップグレード
webmin.com からRPMパッケージをインストール
virtualminをインストール
http://withoutplesk.blog.shinobi.jp/Entry/16/
http://webmin.com/vdownload.htmlのOther Download Formatsからwebminmoduleを選ぶ。
A problem was found with your Postfix virtual maps : No map sources were found in the Postfix configuration
postfixの設定の仮想ドメインMap specificationsを選択し、hash:/etc/postfix/virtual
The Suexec command on your system is configured to only run scripts under /var/www, but the Virtualmin base directory is /home. CGI and PHP scripts run as domain owners will not be executed.
Home directory baseを/var/wwwにする