데비안 패키지를 통해 (내부적으로) 배포하는 몇 가지 PHP 웹 응용 프로그램을 만들었습니다. 프로세스를 자동화하는 스크립트 (여기에서는 단순화 됨) 덕분에 간단했습니다.
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.
이 모든 것이 상당히 쉬우 며 내가하는 내부 패키지 배포에 적합합니다. 글로벌 배포에 충분하지는 않지만 우분투와 데비안 사람들이 소스 패키지 (설치 스크립트와 함께 tarballs로 배포)를 가져 와서 .deb 패키지를 만들 때 수행하는 것과 비슷할 수 있습니다.
나는 이것이 당신의 다섯 가지 포인트를 부드럽게 해결할 수 있다고 생각합니다.
데비안 패키지는 설치 될 때 대상 시스템의 적절한 위치로 자동 압축 해제됩니다.
데비안 패키지가 Apache를 자동으로 구성하도록 할 수 있습니다. MySQL 및 Apache와 같은 일부 패키지에는 / etc에 "conf.d"디렉토리가있어 구성 파일을 삭제할 수 있습니다. 이것이 이상적입니다. 패키징 스크립트는 debian / etc / apache2 / conf.d 디렉토리를 생성하고 그 안에 구성 파일을 복사 할 수 있습니다. 대상 시스템에 설치되며 debian / DEBIAN에 배치 한 postinst라는 스크립트에서 Apache를 다시 시작할 수 있습니다.
사용자 지정 정보를 입력해야하는 경우 피할 수없는 경우가 많지만 많은 구성이 필요하지 않은 상태에서 "즉석에서"실행할 수있는 시스템을 선호합니다.
제어 파일에 적절한 패키지 종속성을 포함시켜 라이브러리 존재를 보장 할 수 있습니다. 데이터베이스 연결 정보는 기본값으로 설치되거나 구성 페이지에서 관리자에게 문의 할 수 있습니다. 구성 페이지가 입력되면 idempotent 데이터베이스 마이그레이션 스크립트를 호출하여 데이터베이스 스키마를 업데이트해야합니다. Django와 같은 여러 웹 프레임 워크가이를 쉽게 만듭니다.
구성 페이지 뒤의 코드는 시스템이 관리자가 아닌 구성된 것으로 표시되어야합니다.
때때로 사용하는 방법은 별도의 패키지를 만들어 구성 설치를 앱 설치와 분리하는 것입니다. 그런 다음 원하는대로 설치할 수있는 여러 가지 구성 패키지 (릴리스, 개발 등)를 가질 수 있습니다. 이 분리는 또한 다시 설치할 때 서로를 방해하지 않고 구성과 앱이 개별적으로 진화 할 수 있기 때문에 유리합니다.