Cronでperl実行時に "Can't locate [filename].pl in @ INC ..."とでる

Cron実行時のディレクトリに注意する。
実行時のディレクトリは実行ファイル(*.pl)のあるディレクトリではなくユーザディレクトリである。
従ってrequireやopenでファイルを指定するときは

chdirする方が中身いじらなくていいので楽。

デフォルトの解像度を変更する

デフォルトは800x600なので1440x900にする。
解像度がGNOMEツールバーの「システム」⇒「設定」⇒「画面の解像度」から
選べるようになっていたのでそこで1440x900を選ぶとすぐ反映される。
しかしこの方法だと

  • 各ユーザーで設定しなければならない
  • ログイン画面が800x600のままで気持ち悪い
  • 文字サイズが相対的にでかくなる

などなど面倒くさい事ばかりなのでデフォルト値を変更する。

手順

gccのインストール

# aptitude install gcc

VMware-toolsのインストール

VMware Serverの「VM」から「Install VMware Tools...」を選択
なぜか「マウントできません」とエラーが出るので

# umount /cdrom
# mount /cdrom

でやり直すとできる。

あとは解凍して解凍先で

# perl vmware-install.pl

で質問にはEnter連打
途中で"make"の場所を聞かれるので
"cc"と答えてEnter連打

値の修正

Debian JP Projectに載っている

# dpkg-reconfigure --default-priority xserver-xorg

に解像度関係の設定がなくなっているので手動でする。

# vi /etc/X11/xorg.conf

で一番下の1024x768の部分をすべて1440x900にする

再起動したら終了。

apache2の設定

  • サイト定義ファイルを作成、設定する

# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/mysite

で定義ファイルをコピーし、
mysiteの"/var/www"部分をルートディレクトリにしたいディレクトリに変更

# a2ensite mysite
# a2dissite default
# /etc/init.d/apache2 reload または /etc/init.d/apache restart

で変更完了

# a2enmod userdir
# /etc/init.d/apache2 restart

でOK。

  • CGI,PHPを使えるようにする
  1. CGI

apache2.confを書き換える(デフォルト設定のバックアップを取っておくこと)
AddHandler Script-cgi .cgi
(下から1/4ぐらいのところにある)のコメントをはずす。

特定のユーザーだけ使えるようにするには
/etc/apache2/mods-available/userdir.conf
を書き換える(デフォルト設定のバックアップを取っておくこと)


AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec


AllowOverride FileInfo AuthConfig Limit
Options ExecCGI MultiViews SymLinksIfOwnerMatch IncludesNoExec


AllowOverride FileInfo AuthConfig Limit
Options ExecCGI MultiViews SymLinksIfOwnerMatch IncludesNoExec

すべてのユーザーについてしたければ内にもExecCGIを追加する(推奨しない)

  1. PHP

# a2enmod php5
# /etc/init.d/apache2 restart

PHPの実行範囲の設定はよくわかってません。

  • ディレクトリにアクセスしたときにリスト表示しないようにする

/etc/apache2/mods-available/userdir.conf
を書き換える(デフォルト設定のバックアップを取っておくこと)

  1. すべてのユーザーのリスト表示を許可しない

内のOptionsがある行の"Indexes"を削除する

  1. ある特定のユーザーだけリスト表示を許可しない


AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec


AllowOverride FileInfo AuthConfig Limit
Options MultiViews SymLinksIfOwnerMatch IncludesNoExec


AllowOverride FileInfo AuthConfig Limit
Options MultiViews SymLinksIfOwnerMatch IncludesNoExec

というようにする(他のオプションは適宜変更)。

*注意*
禁止するユーザーを先に書いてはいけない。
理由:後に書いてあるほうが優先されるから。
最後にマッチしたものが適用される。

ルーティングと同じように上から検索してマッチしたらそれ以降は見ないという仕様にしたらいいのにと思いました。

  • index.cgiやindex.phpなどを有効/無効にする

/etc/apache2/mods-available/dir.conf
のDirectoryIndexの行に
index.cgiやindex.phpを追加またはその行から削除する
左にあるものの方が優先されるので優先させたいものを左に移動させる。

Apache2等の導入

前回、SambaとSSHを導入しました。
今回はApache2の導入です。
OSのインストールの際にWebサーバをインストールしていない場合は

# aptitude install apache2

でインストールしておきます。

とりあえずドキュメントルートを変更しようと
/etc/apache2/httpd.conf
を見てみると、空っぽの状態でした。
いろいろ調べてみると、

  • Debianにおいてapache2ではhttpd.confは使用しない
  • /etc/apache2/sites-available/にサイト定義ファイルを置くことができる
  • /etc/apache2/sites-enable/に反映するサイト定義ファイルのシンボリックリンクを置く(直接ファイル操作はしない)
  • /etc/apache2/mods-available/にモジュールファイルを置くことができる
  • /etc/apache2/mods-enable/に反映するモジュールファイルのシンボリックリンクを置く(直接ファイル操作はしない)
  • 設定の変更にはa2ensite,a2dissite,a2enmod,a2dismod

ということことがわかりました。
まず、/etc/apache2/site-available/にdefaultという定義ファイルがあるので

# cp /etc/apache2/site-available/default /etc/apache2/site-available/mysite

として定義ファイルをコピー。
次にそのコピーしたファイルの
/var/www
となっているところをドキュメントルートにしたいディレクトリに変更。
その後

# a2dissite default
# a2ensite mysite

としてサイト定義を変更します。
実際に変更を反映させるには

# /etc/init.d/apache restart

でサーバを再起動します。

また、モジュールを組み込みたい(or 無効にしたい)ときには

# a2enmod php5
# a2dismod php5

といったようにするだけで有効/無効が変更できます(当然再起動は必要です)。
変更が簡単にできる点が便利です。

サイト定義ファイルや"a2xxx"コマンド、および
/etc/apache2/apache2.conf
を変更することによって設定をいろいろ変える事ができます。
細かいことは別の機会に。