Selasa, 23 Februari 2016

lifery portal ubuntu 14.04

Setup liferay 6.2 on EC2 ubuntu instance with Apache2


Introduction
Recently We are deployed our application named TOURFILLA(Travel social networking site, http://www.tourfilla.com ) on AWS EC2 instance. For doing that I refer a plenty of blogs and experiment on that , really J ., Finally we did that. So I decided to write a blog about the way which working for me.
In this blog, I am trying to explain how to install oracle JDK in Ubuntu environment , how to setup and run Liferay 6.2 Tomcat server, how to install and Liferay Tomcat with Apache2,  how to write re-direct rules and how to make apache to serve static files directly rather than having to go through Tomcat.
This blogs assumes that you have already setup amazon EC2 Ubuntu 14.04 LTS instance. It doesn't go through how to setup Ubuntu Server 14.04 LTS on a EC2.
Connect the amazon instance using ssh, once you are get access to the machine, you can start installing the required software.
1.       Installing Oracle JDK
  The Oracle JDK is the official JDK; however, it is no longer provided by Oracle as a default installation for Ubuntu.
To install any version, first execute the following commands:

sudo apt-get update
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update

for install oracle jdk7 run,
sudo apt-get install oracle-java7-installer

When there are multiple Java installations on your instance, the Java version to use as default can be chosen. To do this, execute the following command:

sudo update-alternatives --config java
after running that command , if you have 2 installations it will show you, so you can choose one you prefer.

More details on how to install JDK on Ubuntu environment I personally recommend you to refer following url;

2.       Download the latest bundle of liferay from liferay.com or upload from your system.

To download the latest bundle of liferay from sourceforge, execute the following commands :


To unzip:
sudo unzip liferay-portal-tomcat-6.2-ce-ga2-20140319114139101.zip

Then navigate to inside bin directory and start liferay server using,

sudo ./startup.sh

After server starting process completed , you can access liferay tomcat on browser usin user instance public ip:running port number of the server. In my case  54.254.186.52 is my public ip,
through out this tutorial I will now consider that this the I.P address of your instance. So I can access it http:// 54.254.186.52:8080.
Now our prime focus is to make available our server by typing http:// 54.254.186.52 instead of http:// 54.254.186.52:8080 in the browser. For doing that we have two way.

  Way 1: We have to make your portal server running on port 80 by just modifying server.xml
  And  change the line <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />

Connector port to 80.

And restart the server, now you can access liferay by using 54.254.186.52.     BUT IT IS NOT ADVISIBLE TO RUN TOMCAT ON PORT 80. INSTEAD YOU CAN RUN TOMCAT BEHIND APACHE2 SERVER. So our next step is to install Appache2. Now I assume that liferay server running in 8080 port.

Way :2 Fronting Liferay Tomcat with Apache2


3.       Download Apache2 and run
For downloading appach2 run command:

sudo apt-get install apache2

After successful installation you can access appache2 page by entering
http:// 54.254.186.52 . So far so good..

Our next step is to make Liferay tomcat server  front-ended with appache2. Which simply means if we access usin http:// 54.254.186.52 url we need to show our liferay portal page instead of apache2 landing page.

4.       Fronting Liferay Tomcat with Apache2
Install Mod Jk
sudo apt-get install libapache2-mod-jk

then restart the apache2
sudo service apache2 restart
Edit or create the /etc/apache2/workers.properties file
Add following line into /etc/apache2/workers.properties file,
                      worker.list=tomcat
                      worker.tomcat.type=ajp13
                      worker.tomcat.host:127.0.0.1
                      worker.tomcat.port=8009

apache2.conf file: Add the following in apache.conf in /etc/apache2

JkWorkersFile /etc/apache2/workers.properties
JkShmFile /var/log/apache2/mod_jk.shm
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel error
JkRequestLogFormat "%U %q "
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkMount /* tomcat

then restart the apache2
sudo service apache2 restart
Troubleshooting
 
When restarting the Apache web server, it's possible that you may get a JkWorkersFile only allowed once error message after making that last modification to apache.conf; that's because the workers file has been defined elsewhere.
 
If that happens, you can check the mods-available directory for the jk.conf file, which will contain an entry to the JkWorkersFile directive. The directive will specify where workers.properties file is located, and you can edit it to either add your own worker configuration to it, or, what is more likely, to use a worker that's already defined there that takes care of the AJP connector.
 
In that case, all you have to do if undo the changes you made to the apache2.conf file, and reference the worker in the 000-default file. That step is covered in the next section.

# enable mod_proxy and mod_proxy_ajp for httpd
sudo a2enmod proxy proxy_ajp
sudo service apache2 restart

000-default file: Add the following in apache.conf in /etc/apache2/ sites-enabled/000-default
Before the end of VirtualHost tag, place the ProxyPass and ProxyPassReverse with the appropriate path to the target tomcat app.

      # this will forward the requests to /my-app to tomcat7
      ProxyPass /my-app ajp://localhost:8009/my-app 
      ProxyPassReverse /my-app ajp://localhost:8009/my-app 

      # this will pass all the requests from httpd to tomcat7
      ProxyPass / ajp://localhost:8009/
      ProxyPassReverse / ajp://localhost:8009/

   Then save and close the file.And restart the apache httpd server
   sudo service apache2 restart

Now you can access your liferay portal usin http:// 54.254.186.52 url instead of http:// 54.254.186.52:8080. Liferay tomcat is now front-ended with Apache!! Cheer up smiley

5.  Make Apache2 to serve static content

First copy the /opt/liferay/tomcat/webapps/ROOT/html directory to Apache's htdocs directory, /var/www/localhost/htdocs in my case. You should also copy all of the other webapps directories (all except for ROOT) to the htdocs directory. By copying all of these directories, any incoming requests for static content will be handled by Apache rather than Tomcat.

default_vhost.include file: Add the following in default_vhost.include in /etc/apache2/vhosts.d/default_vhost
<IfModule jk_module>
  JkMount /* ajp13

  JkUnmount /*.jpg ajp13
  JkUnmount /*.jpeg ajp13
  JkUnmount /*.gif ajp13
  JkUnmount /*.png ajp13
  JkUnmount /*.ico ajp13
  JkUnmount /*.css ajp13
  JkUnmount /*.js ajp13
</IfModule>

By using JkUnmount, you're indicating to Apache that it should handle requests with the given extension(s) rather than passing them through to Tomcat.
Then restart apache2 sudo service apache2 restart
DONE!!!
I hope my blog will help someone who struggles with EC2 lifery setup..


 My sincere thanks to My Ahamed Hasan , David H Nebinger and Muhammed Shakir for their blogs and forum post.
And I am strongly recommend to refer following links,
http://community.jaspersoft.com/wiki/connecting-apache-web-server-tomcat-and-writing-re-direct-rules
              https://help.ubuntu.com/10.04/serverguide/httpd.html

ThankYou,
Muhammed Shafeek

Tidak ada komentar:

Posting Komentar