Debianパッケージを介して(内部的に)配布するPHP Webアプリケーションをいくつか作成しました。プロセスを自動化するスクリプト(ここでは簡略化)のおかげで、そうすることは簡単です。
create_package.sh:
# create a clean debian package directory
rm -rf debian
mkdir -p debian/DEBIAN
mkdir -p debian/var/www/myapp
# populate the debian directory
cp control debian/DEBIAN
cp myapp.php debian/var/www/myapp
cp index.html debian/var/www/myapp
# finish through fakeroot so we can adjust ownerships without needing to be root
fakeroot ./finish_package.sh debian .
finish_package.sh:
# $1 is the debian directory, $2 is the output directory
# adjust ownerships
chown -R root:root $1
chown -R nobody:nobody $1/var/www/myapp
# finally build the package
dpkg-deb --build $1 $2
制御:
Package: myapp
Version: 1.2.3
Maintainer: Your Name <yourname@email.com>
Architecture: all
Depends: apache2, php5
Description: The myapp web application.
これはすべて非常に簡単に実行でき、私が行う内部パッケージの配布に適しています。グローバルな配布に十分かどうかはわかりませんが、UbuntuやDebianの人々がソースパッケージ(インストールスクリプトを使用してtarballとして配布される可能性があります)を取得し、それらの.debパッケージを作成する場合と同様です。
これで5つのポイントにスムーズに対処できると思います。
Debianパッケージは、インストール時にターゲットシステム上の適切な場所に自動的に解凍されます。
DebianパッケージにApacheを自動的に設定させることができます。MySQLやApacheなどの一部のパッケージには、構成ファイルをドロップできる/ etcに「conf.d」ディレクトリがあります。これが理想です。パッケージングスクリプトはdebian / etc / apache2 / conf.dディレクトリを作成し、そこに設定ファイルをコピーできます。ターゲットシステムにインストールされ、debian / DEBIANに配置したpostinstというスクリプトでApacheを再起動できます。
カスタム情報を入力する必要がある場合、これはおそらく避けられませんが、多くのユーザーは、構成を必要とせずに「そのまま」実行できるシステムを好みます。
ライブラリの存在は、適切なパッケージの依存関係を制御ファイルに含めることで保証できます。データベース接続情報は、デフォルトとしてインストールするか、構成ページで管理者に尋ねることができます。入力後、構成ページはべき等データベース移行スクリプトを呼び出して、データベーススキーマを更新する必要があります。いくつかのWebフレームワーク(Djangoなど)がこれを簡単にします。
構成ページの背後にあるコードは、システムを管理者ではなく構成済みとしてマークする必要があります。
私が時々使用するアプローチは、構成のインストールとアプリのインストールを別々のパッケージにすることで分離することです。その後、自由にインストールできるいくつかの異なる構成パッケージ(リリース、開発など)を作成できます。また、このデカップリングは、再インストール時に相互に干渉することなく、構成とアプリを個別に進化させることができるため、有利です。