Couple of weeks ago I found a new respect for Apache. I was installing a new VPS and I needed to deploy ruby on rails applications, Java applications and PHP side by side. As the site is for mostly internal use, the traffic was originally quite low, but due to some problems with one of my other hosting providers I was forced to move there some of our external applications with considerably higher traffic. As soon as the traffic grew beyond the resources of this server I realized how easy it was to scale out and instead of moving some of the applications away I was able to retain this server as the main balancer that is sending traffic to servers around.
Here's a simple walk through for installing Apache 2.2.4 on Ubuntu. It's compiled from various sources – they are listed below – of course, they did the tough job :-). I just put everything in one place to provide a complete example.
Prerequisites
As the Apache 2.2.4 is not yet in Ubuntu repositories you will need to do manual installation (i.e. compile from source). Before that you have to make sure that whatever apache installed using apt-get is removed from the system:
sudo dpkg --purge apache apache2
Install the GCC compilers and developer tools:
sudo apt-get install build-essential
Some extra libraries needed for Ruby/Apache to work:
Install zlib:
wget http://www.zlib.net/zlib-1.2.3.tar.gz tar xvfz zlib-1.2.3.tar.gz cd zlib-1.2.3/ ./configure make sudo make installalternatively you can use:
sudo apt-get install zlib1g zlib1g-devInstall openssl:
sudo apt-get install openssl libssl-devInstall Readline:
apt-get install libreadline5 libreadline5-dev
If you haven't done so already install ruby:
sudo apt-get install ruby1.8-dev ruby1.8 ri1.8 rdoc1.8 irb1.8 libreadline-ruby1.8 libruby1.8
ONLY FOR 64-bit processors you will need to use Ruby 1.8.5 or higher to make postresql gem work, which means, you will need to compile it from source. In this case download the latest Ruby source:
wget http://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6.tar.gz tar -xzf ruby-1.8.6.tar.gz cd ruby-1.8.6 ./configure make sudo make installNow create a few links to ruby that will be used later (this may or may not be necessary - but no hurt doing it :-):
sudo ln -s /usr/bin/ruby1.8 /usr/local/bin/ruby sudo ln -s /usr/bin/ri1.8 /usr/local/bin/ri sudo ln -s /usr/bin/rdoc1.8 /usr/local/bin/rdoc sudo ln -s /usr/bin/irb1.8 /usr/local/bin/irbInstall readline support for ruby:
cd ext/readline ruby extconf.rb make sudo make install cd ../../../
Apache Installation
Download and compile Apache 2.2:wget http://apache.rmplc.co.uk/httpd/httpd-2.2.4.tar.gz tar -xvf httpd-2.2.4.tar.gz cd httpd-2.2.4 ./configure --prefix=/usr/local/apache --enable-proxy --enable-proxy-http \ --enable-proxy-balancer --enable-dav --enable-rewrite --enable-so \ --enable-http --enable-ssl --enable-expires --enable-headers \ --enable-mods=deflate_module --with-php \ --with-mysql --with-susexec --disable-info \ --without-berkeley-db --enable-dav=shared \ --enable-dav-lock=shared --with-included-apr make sudo make install ln -s /usr/local/apache/bin/apachectl /usr/sbin/
Apache at start-up
It's a good idea to have Apache start at boot time automatically:
sudo cp /usr/local/apache/bin/apachectl /etc/init.d/apachectl sudo chmod +x /etc/init.d/apachectl sudo vim /etc/init.d/apachectl
Add the followinig, so the top of the file looks like:
#!/bin/sh # # chkconfig: - 85 15 # description: Apache is a web server.
Now we need to register it with the start-up manager:
sudo /usr/sbin/update-rc.d apachectl defaults
Securing Apache
It's also a good idea to create a dedicate Apache system user account. It'll make your install more secure.
sudo adduser --system apache
To make apache actually use it edit the configuration file:
sudo vim /usr/local/apache/conf/httpd.conf
You need to find the lines that say:
User daemon Group daemon
And change them so they look like:
User apache Group nogroup
Install PHP
While you're at it install the PHP as well... You may need to install bison and flex first:
sudo apt-get install bison sudo apt-get install flex
Download the php from www.php.net. In my case it was PHP4:
wget http://sg.php.net/distributions/php-4.4.6.tar.gz tar -xzf php-4.4.6.tar.gz cd php-4.4.6 ./configure --with-apxs2=/usr/local/apache/bin/apxs --with-mysql make sudo make install sudo cp php.ini-dist /usr/local/lib/php.ini
Add the following to httpd.conf (sudo vim /usr/local/apache/conf/httpd.conf) - put it somewhere around the other AddType definitions:
AddType application/x-httpd-php .php .phtml
Update line
DirectoryIndex index.htmlto
DirectoryIndex index.html index.php
Restart apache and you're done
sudo apachectl restart
Wow! We're done with the first part. Once you're done here you're able to add the actual deployment servers. Here are some of my favorite:
- Mongrel Cluster to deploy Ruby on Rails applications
- Tomcat to deploy Java applications
References
- http://www.simplisticcomplexity.com/2006/8/13/apache-2-2-mod_proxy_balancer-mongrel-on-ubuntu-6-06
- http://blog.codahale.com/2006/06/19/time-for-a-grown-up-server-rails-mongrel-apache-capistrano-and-you/
- http://mongrel.rubyforge.org/docs/apache.html
- http://mongrel.rubyforge.org/docs/mongrel_cluster.html
- http://www.kodefoo.com/2007/2/18/deploying-rails-on-ubuntu-dapper/
- http://davidwinter.me.uk/articles/2006/10/17/building-apache-22-from-source-for-ubuntu-dapper/
vé máy bay tết giá rẻ đi chu lai
ReplyDeletevé máy bay tết giá rẻ đi hà nội
vé máy bay tết giá rẻ đi hải phòng
vé máy bay tết giá rẻ đi huế
vé máy bay tết giá rẻ đi nha trang