[ubuntu] ubuntuで proftpd

proftpd は apt-get の パッケージ一覧にない。/etc/apt/sources.listの更新が必要
詳しくは、ubuntu日本コミュニティーに載ってる。

ただ、インストール時にFTPDの動作について聞かれる

inetdか、Daemonで動かすかどっちが良い?

smbやWebDAVSSHがあるので、頻繁に使いそうもない、inetdでいいだろう。けれど。ubuntuには、inetdが入ってなかった。だからインストール前にxinetdを入れる必要があった。
ぶっちゃけ、#のコメント外すだけ。

proftpdchrootが簡単にできるので、重宝する。

sudo vi /etc/proftpd/proftpd.conf

DefaultRoot ~

を書けば終了

ubuntu でsamba

ubuntu でSambaするには、JAコミュニティーの公式マニュアルでもいいけれど、GUIから設定した方が圧倒的に楽だ。特にSambaしたことないユーザーにはGUIが一番良い。わかりやすいし、タイプ量も少ない。


ただ、GUIではまるのが、smbpasswd。

設定後、smbpasswdを設定すると簡単にアクセスできる。


何でこんな事が必要何だろうと考えた。

パスワードは盗聴防止のために、暗号化されて送信する。Windowsが暗号化したパスワードとSambaが暗号化して保存したパスワードを比較して、パスワードチェックする。

ここが問題。Windowsが暗号化するパスワードとLinuxがユーザーのパスワードは違う暗号化方式で保存されいる。
そのため整合性がとれない。暗号化された文字列を比較するので、暗号化方式が違うと認証できない。


そこで、Windows暗号化して記憶しなくちゃいけない。それをやってくれるのがsmbpasswd


実際には、認証無しで使う方法もあるのですが。それは、、、意外に簡単

Sambaをして嬉しいこと。

DNSもHOSTS使わずにマシン名からIPが取れる。

Windows同士なら、

ping DELL-fs

とすれば、名前解決してくれる。
だから

http://DELL-fs/

とか無茶なURLを打てる。

これをLinuxだけでやろうとすると無理だ。Sambaを入れてると

http://ubuntu-WWW/

と簡単アクセスが出来る。意外に便利。IP直打ちは面倒だし、DNSのBIND作成しなくて良い。これがSambaを導入する気づかないメリットだった。

ちなみに、認証無しでフォルダを共有する例

[www]?
   comment = htdocs
   path = /var/www
   public = yes
   writable = yes
   create mask = 0777
   directory mask = 0777
   force user = nobody
   force group = nogroup

うちはこれを /etc/samba/smb.confに書けばいけた。

PHPでPeclをインストールするメモ。

PythonPythonだってブログに書きますた。でも本業はJSPプログラマーだし、PHPスクリプターです。ですからPHPのテストサーバーが必要。Tomcatが必要。

ubuntu の場合、apache2が簡単にインストールできる。これを使うことにする。PHP5とPHP4は棲み分けがややこしいので、PHP5と明示的にバージョンを指定する必要がある。

ubuntu は Debianなので他のDebianディストリビューションでも使えるかも。ただ、コマンドは書き殴りなので、正確ではないし、パッケージはどんどん更新されるので適宜パッケージを読み替える。

本題 PECL pdo_pgsql pdo_mysql をインストールする(ビルドするには)

作業のサマリ。使用したubuntu は 6.10-ja

Apache2のインストール
PHP5のインストール
PHP5-devのインストール
PHP5-cliのインストール
PHP5-cgiのインストール
PHP-pearのインストール
mysqlのインストール
mysql-dev
pgsqlのインストール
pgsql-devのインストール
/etc/apache2/apxs で /etc/apache2/apxs2 にリンク作成

これらの順に作業工程すすめた。

このインストールの目標はPECL でパッケージをインストールすること

user $ sudo pecl install pdo_mysql
user $ sudo pecl install pdo_pgsql
user $ sudo pecl install pdo_sqlite
user $ sudo pecl install apc

を実行してPHPに組み込みたい。

PECLに必須 phpizeを入れる

sudo aptitude php5-dev

PECL 自体をインストールする*1

sudoo aptitude install php-pear

PHPはもちろん入れましょう。

sudo aptitude install php5

これらをまとめてインストールするコマンドはこうやって書く

sudo aptitude install apache2 apache-dev php5 php5-dev php-pear

これでPECLが実行できるようになります。

試しにPDOをビルド

sudo pecl install pdo
sudo pecl install pdo_sqlite


でも、それだと、pdo_mysqlはインストールできなかった。

原因はこれだと思う

  1. peclphp-cliで動作するが、php-cliにpdo.soが組み込まれてないのかも
  2. pdo_mysqlのビルドにはmysqlのdevlのパッケージが必要らしい

だから

/etc/php5/cli/php.ini

にextenstion=pdo.soを組み込んだ。


mysql-devみたいなパッケージが必要っぽい
そこで、パッケージを調べた、

apt-cache search mysql | more

libmysqlclientdev15とかいうのがそうらしい。
postgresql-server-8.1-dev というのがそうらしい。

これらをインストールする

sudo aptitude install postgres-8.1-dev libmysqlclientdev15

これで、PECLのビルドが通るようになった。

sudo pecl install pdo_mysql
sudo pecl install pdo_pgsql

しかし、まだ、APCがビルドできない。
http://baheyeldin.com/technology/linux/installing-php-apc-on-ubuntu-dapper-and-debian.html
を参考にすると

せっかくapt-get があるのにソースからビルドなんてマンドクセ。時間無駄だ、そのままつかおうぜ

みたいなことが書いてある。

ln -s /usr/bin/apxs2 /usr/bin/apxs

apxsx と apxs が apache2は名前が違うのでそこをリンクすればいいんじゃね?

ってこと。

実際これで、

sudo pecl install apc

が出来ます。

あとは、apache2でPHPを動かすときの設定が/etc/php5/apache2/php.iniにあるので、

sudo vim /etc/php5/apache2/php.ini
sudo /etc/init.d/apache2 restart

これで終了。

書き殴りのエントリなので、正確ではないけれど、イメージはつかんでると思う。あとでみるときに流れだけわかればいいや。

*1:PECLPEARは双子だと思えばいい

ubuntu は良くできたOSだと思う。

このOSならパソコン素人に使わせても、十分使えるし、ちょっと詳しいGeekなら簡単に使いこなせる。UnixLinuxディストリビューション知識が不要。ちょっとしたGeekならUbuntuをつかことでLinuxがどういうOSがイメージがわき、理解しやすい。


KDEGUIは初心者には取っつきにくい。大学でKDEのデスクトップとKDE上のVMWareで動作するWin2000が標準環境だった。しかし面倒だった。KDEMozillaだったし。Firefoxがリリースされてもベータ版だったのでサポートされなかった。

そこで、ubuntuです。うぶなOSってのはパソコンにウブなひとをパソコンをラブにする魔法だと思った。


私は、この簡単さを軸にサーバーに使ってるんですけどね。。。

postgres

Posrgresqlの管理のために、su postgresが通らない。

sudo su postgress

とsudo すればいけた。

apt-get で postgresがどこにインストールされたのかよくわからない。ちゃんと設定見ておけば良かった。

createdbなどのコマンドは/usr/binにみつけた

clusterdb -> ../share/postgresql-common/pg_wrapper
createdb -> ../share/postgresql-common/pg_wrapper
createlang -> ../share/postgresql-common/pg_wrapper
createuser -> ../share/postgresql-common/pg_wrapper
dropdb -> ../share/postgresql-common/pg_wrapper
droplang -> ../share/postgresql-common/pg_wrapper
dropuser -> ../share/postgresql-common/pg_wrapper
pg_dump -> ../share/postgresql-common/pg_wrapper
pg_dumpall -> ../share/postgresql-common/pg_wrapper
pg_restore -> ../share/postgresql-common/pg_wrapper
psql -> ../share/postgresql-common/pg_wrapper
reindexdb -> ../share/postgresql-common/pg_wrapper
vacuumdb -> ../share/postgresql-common/pg_wrapper
vacuumlo -> ../share/postgresql-common/pg_wrappe

とすべて、pg_wrapperなるもにリンクされている。なんだこれは?気味が悪いので内容を確認。

pg_wrapperの中を見てみた

#!/usr/bin/perl -w
# Call a PostgreSQL client program with the version, cluster and default
# database specified in ~/.postgresqlrc or
# /etc/postgresql-common/user_clusters.
#
# (C) 2005 Martin Pitt <mpitt@debian.org>

use strict;

use lib '/usr/share/postgresql-common';
use PgCommon;

my ($version, $cluster, $db, $port, $host);

$host = $ENV{'PGHOST'};

# Check for PGCLUSTER in %ENV
if (defined $ENV{'PGCLUSTER'}) {
    ($version, $cluster) = split ('/', $ENV{'PGCLUSTER'}, 2);
    error 'Invalid version specified with $PGCLUSTER' unless version_exists $version;
    error 'No cluster specified with $PGCLUSTER' unless $

....(以下略)...

どうやら、Perlで処理を切り分けている模様。なるほどね。シンボリックリンクの管理を楽にするって事かな。

ここまできて、initdbの所在が不明。

initdbはapt-get後にしてくれているのだろうか。postgresユーザーが出来ているからダイジョウブだと思うが。DBが作成されるディレクトリを変更したいねん。もう少し調べてみる