Canonical Ubuntu 10.10 on Amazon EC2 + Nginx + PHP-FPM
12/31/2010 03:46:00 AM
Posted by johnhomer
This procedure was performed on a 32bit OS (Micro instance) but may also work with little or no modification. Drop me a note if you get this to work on a 64bit without modification.
1. First you need to install pre-reqs
apt-get install gcc autoconf libevent-dev libxml2-dev libssl-dev libpcre++-dev libbz2-dev libcurl4-openssl-dev libgmp3-dev libmysql++-dev libmcrypt-dev
2. Add the nginx user
useradd nginx
3. Compile and install PHP
mkdir /root/files && mkdir /etc/php.d && cd /root/files wget http://sg2.php.net/get/php-5.3.4.tar.gz/from/sg.php.net/mirror tar xvfz php-5.3.4.tar.gz && cd php-5.3.4 ./configure --host=i686-ubuntu-linux-gnu --build=i686-ubuntu-linux-gnu --target=i386-ubuntu-linux --program-prefix= --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/usr/com --mandir=/usr/share/man --infodir=/usr/share/info --cache-file=../config.cache --with-libdir=lib --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --disable-debug --disable-rpath --without-pear --without-gdbm --without-gd --without-pspell --without-unixODBC --without-sqlite --without-sqlite3 --with-libxml-dir=/usr --with-pic --with-bz2 --with-curl --with-exec-dir=/usr/bin --with-freetype-dir=/usr --with-png-dir=/usr --with-gettext --with-gmp --with-iconv --with-jpeg-dir=/usr --with-openssl --with-pcre-regex=/usr --with-zlib --with-layout=GNU --with-mysql --enable-gd-native-ttf --enable-exif --enable-magic-quotes --enable-sockets --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-wddx --enable-ucd-snmp-hack --enable-calendar --enable-xml --enable-mbstring --enable-inline-optimization --disable-dom --disable-dba --disable-pdo --disable-xmlreader --disable-xmlwriter --disable-json --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx make all install cp /root/files/php-5.3.4/php.ini-production /etc/php.ini && mv /etc/php-fpm.conf.default /etc/php-fpm.conf && cp /root/files/php-5.3.4/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chmod +x /etc/init.d/php-fpm
4. PHP-FPM configuration
cat << END >> /etc/php-fpm.conf pm.start_servers = 20 pm.min_spare_servers = 5 pm.max_spare_servers = 35 END
5. Compile and install Nginx
cd /root/files && wget http://nginx.org/download/nginx-0.8.53.tar.gz tar xvfz nginx-0.8.53.tar.gz mkdir /etc/nginx/ && mkdir /var/log/nginx/ && cd nginx-0.8.53 ./configure --sbin-path=/usr/sbin --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --with-http_stub_status_module --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx.pid --user=nginx --group=nginx --http-log-path=/var/log/nginx/access.log make && make install
6. Fast-CGI Configuration
cat << END >> /etc/nginx/fastcgi_params fastcgi_connect_timeout; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; END
7. Get Nginx init script from http://wiki.nginx.org/Nginx-init-ubuntu. Make the following changes:
DAEMON=/usr/sbin/nginx NGINX_CONF_FILE="/etc/nginx/nginx.conf
8. Make Nginx and PHP-FPM run on start-up
update-rc.d nginx start 99 2 3 4 5 . stop 80 0 1 6 . update-rc.d php-fpm start 99 2 3 4 5 . stop 80 0 1 6 .
9. Setup log rotate
cat << END > /etc/logrotate.d/nginx /var/log/nginx/*.log { weekly missingok rotate 52 compress delaycompress notifempty create 640 root adm sharedscripts postrotate [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid` endscript } END
10. Installing additional modules. If you want to install additional PHP modules for your applications, it's easy. All you have to do is go to your PHP source directory, compile the module and copy the compiled module to the PHP modules directory which in this case is /usr/lib/20090626. It looks something like this:
cd /root/files/php-5.3.4/ext/json phpize ./configure && make cp modules/json.so /usr/lib/20090626/ /etc/init.d/php-fpm restart
This entry was posted on October 4, 2009 at 12:14 pm, and is filed under
AWS,
linux
. Follow any responses to this post through RSS. You can leave a response, or trackback from your own site.
Subscribe to:
Post Comments (Atom)
Post a Comment