2

パッセンジャーを使用して nginx を再インストールするたびに、アクティブ化するパス、モジュール、およびオプションを定義するための一連のオプションを nginx に提供する必要がありますが、これは少し面倒です。

ある種の応答ファイルを使用してこれを自動化する方法を知っている人はいますか?

4

3 に答える 3

3

はい、Chef や Puppet などのプロビジョニング ツールを使用できますが、場合によってはやり過ぎになる可能性があります。上部に必要に応じて変更されるいくつかの変数を含む Bash スクリプトを用意し、そのスクリプトをターゲット サーバーに転送して実行します。

nginx とパッセンジャーの実際のパッケージは、自分の S3 バケットに保管しています。

#!/bin/sh

# setup download location
DOWNLOAD_DIR=/tmp
NGINX="nginx-1.4.1"
NGINX_DIR=${DOWNLOAD_DIR}/${NGINX}
PASSENGER_VERSION="4.0.3"
S3HOST="your-s3-host"

# download nginx source
curl http://${S3HOST}.s3.amazonaws.com/software/${NGINX}.tar.gz -o $DOWNLOAD_DIR/${NGINX}.tar.gz
tar xzf $DOWNLOAD_DIR/${NGINX}.tar.gz --directory $DOWNLOAD_DIR

# download headers module
curl http://${S3HOST}.s3.amazonaws.com/software/headers-more-nginx-module-v0.16.zip -o $DOWNLOAD_DIR/headers-more-nginx-module-v0.16.zip
unzip $DOWNLOAD_DIR/headers-more-nginx-module-v0.16.zip -d $DOWNLOAD_DIR

# install passenger
apt-get install -y gcc g++ build-essential bison openssl libreadline6 lsof
apt-get install -y libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libpcre3-dev
apt-get install -y libyaml-dev libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev libcurl4-openssl-dev
apt-get install -y default-jre python-software-properties imagemagick

apt-get install -y ruby1.9.3 ruby1.9.1-dev libruby1.9.1 rubygems1.9.1 irb1.9.1 ri1.9.1 rdoc1.9.1 s3cmd


ln -nfs /var/lib/gems/1.9.1/bin/* /usr/bin/
gem install passenger -v ${PASSENGER_VERSION} --no-ri --no-rdoc
gem install bundler sass --no-ri --no-rdoc

# postgres client libraries
aptitude install software-properties-common -y
add-apt-repository -y ppa:pitti/postgresql
apt-get update

apt-get install -y postgresql-client-9.2 postgresql-server-dev-9.2

wget http://${S3HOST}.s3.amazonaws.com/software/passenger-enterprise-server-${PASSENGER_VERSION}.gem
gem install ./passenger-enterprise-server-${PASSENGER_VERSION}.gem --no-ri --no-rdoc
/var/lib/gems/1.9.1/gems/passenger-enterprise-server-${PASSENGER_VERSION}/bin/passenger-install-nginx-module \
--auto --prefix=/usr --nginx-source-dir=${NGINX_DIR} \
--extra-configure-flags="--conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx.pid --http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi --with-md5-asm --with-md5=/usr/include --with-sha1-asm --with-sha1=/usr/include --without-http_fastcgi_module --with-http_stub_status_module --with-http_ssl_module --add-module=${DOWNLOAD_DIR}/headers-more-nginx-module-v0.16"

# make proper folders
mkdir -p /etc/nginx/sites-enabled
mkdir -p /etc/nginx/conf.d
mkdir -p /var/tmp/nginx
mkdir -p /etc/nginx/ssl/rapidssl
mkdir -p /var/www/shared/log/old_logs
chown -R vino:vino /var/www

# cleanup the stupid files
rm /etc/nginx/*.default

# start from init script
update-rc.d nginx defaults

# cleanup
rm -rf $DOWNLOAD_DIR/nginx*
于 2013-05-28T16:28:13.363 に答える
2

Passenger-install-apache2-module は、コマンド ライン オプションによる非対話型の自動ヘッドレス インストールまたはアップグレードをサポートします。これらのオプションを使用して、回答を自動化できます。これはマニュアルに記載されています: http://www.modrails.com/documentation/Users%20guide%20Nginx.html#_non_interactive_automatic_headless_installs_or_upgrades

または、Phusion Passenger を通常の Nginx モジュールのようにインストールし、通常の Nginx インストール自動化スクリプトを使用することもできます: http://www.modrails.com/documentation/Users%20guide%20Nginx.html#_installing_as_a_normal_nginx_module_without_using_the_installer

于 2013-05-29T14:25:58.530 に答える
1

Chefpuppetなどのプロビジョニング ツールを使用できます。この場合に単独で使用するのはやり過ぎかもしれませんが、サーバーまたはワークステーション全体をゼロから準備するために使用できます。

于 2013-05-28T16:08:57.860 に答える