2013-05-28 96 views
2

每次我們使用乘客重新安裝nginx時,我們必須提供一些選項來定義我們想要激活的路徑,模塊和選項,這可能有點痛苦。通過乘客自動安裝nginx

有沒有人知道使用某種答案文件自動執行此操作的方法?

回答

3

是的,你可以使用像廚師或木偶這樣的配置工具,但在某些情況下,這些工具可能會矯枉過正。我只是在頂部有一些變量的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* 
+0

您不必上傳passenger-企業寶石到S3。乘客企業客戶區中的寶石鏈接支持HTTP基本認證,因此您可以直接在腳本中引用這些URL。 – Hongli

1

您可以使用配置工具,如chefpuppet。將它用於這種情況本身可能是矯枉過正,但您可以使用它從頭開始準備整個服務器或工作站。

2

passenger-install-apache2-module支持通過命令行選項進行非交互式自動無頭安裝或升級。您可以使用這些選項來自動化答案。這是記錄在手冊中:http://www.modrails.com/documentation/Users%20guide%20Nginx.html#_non_interactive_automatic_headless_installs_or_upgrades

或者,您也可以安裝的Phusion乘客,就好像它是一個正常的Nginx的模塊,並使用正常Nginx的安裝自動化腳本:http://www.modrails.com/documentation/Users%20guide%20Nginx.html#_installing_as_a_normal_nginx_module_without_using_the_installer