Liferay version = liferay-portal-tomcat-7.0-ce- ga1-20160331161017956
Java = java version "1.7.0_79"
===== Liferay =====
1. download java and install it
for mine i download oracle java sdk 7 at
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
download the rpm for easy install and upgrade
# yum localinstall jdk-7u79-linux-x64.rpm
2. download liferay and extract it.
for mine, i extract and put it at /opt
then i rename it to liferay so it will become /opt/liferay
3. go to /opt/liferay/tomcat-8.0.32/bin
test run 1 times to confirm it was working with default settings
# ./startup.sh
use browser and try access it at
<server ip>:8080
and stop it after confirm working
# shutdown.sh
4. install tomcat native for better performance
at bin directory, extract tomcat-native.tar.gz and navigate to native directory inside it
# ./configure --with-apr=/usr/bin/apr-1-config --with-java-home=/usr/java/default --with-ssl=/usr/bin/openssl --prefix=/usr
# make
# make install
5. back to bin directory and extract commons-daemon-native.tar.gz
navigate into unix folder
# ./configure --with-java=/usr/java/default
# make
# cp jsvc ../..
6. add tomcat user for liferay to run instead of using root
# useradd tomcat
# chown -R tomcat: /opt/liferay
7. at tomcat bin directory, edit setenv.sh and change the Xmx value to suit your server memory.
for mine, i also had manual set Xms value as well
====== startup script =====
since it is using systemd for centos7, below is the guide on how to add
# cd /etc/systemd/system
# vim tomcat.service
=== tomcat.service ===
# Systemd unit file for tomcat
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target
[Service]
Type=forking
#ExecStart=/etc/init.d/tomcat start
ExecStart=/opt/liferay/tomcat/bin/startup.sh
ExecStop=/opt/liferay/tomcat/bin/shutdown.sh
User=tomcat
Group=tomcat
TimeoutStartSec=0
TimeoutStopSec=600
[Install]
WantedBy=multi-user.target
=== END ===
enable it to run at startup
# systemctl enable tomcat.service
now you can test use systemctl to start and stop to confirm it working
# systemctl start tomcat
# systemctl stop tomcat
monitor the log at /opt/liferay/tomcat/logs/catalina.out
to make sure it fully startup without error
===== Apache =====
you either can use your firewall to redirrect port 8080 to port 80
or
use mod_jk for port 80 to 8080
===== cluster =====
1. edit <liferay>/tomcat/conf/context.xml
change <Context>
to <Context distributable="true">
2. edit server.xml
change <Engine name="Catalina" defaultHost="localhost">
to <Engine name="Catalina" defaultHost="localhost" jvmRoute="node1">
then below it add this as well
=== server.xml ===
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="6">
<Manager className="org.apache.catalina.ha.session.BackupManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"
mapSendOptions="6"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="5000"
selectorTimeout="100"
maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
=== end ===
3. edit <liferay>/tomcat/conf/Catalina/localhost/ROOT.xml and add this into it
=== ROOT.xml ===
<Resource
name="jdbc/LiferayPool"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://<DB IP>/<DB name>?useUnicode=true&characterEncoding=UTF-8"
username="DB username"
password="DB password"
maxActive="100"
maxIdle="30"
maxWait="60000"
/>
=== end ===
4. then at <liferay>/tomcat/webapps/ROOT/WEB-INF/classes, create portal-ext.properties file and put this into it
=== portal-ext.properties ===
jdbc.default.jndi.name=jdbc/LiferayPool
=== end ===
===== Liferay =====
1. download java and install it
for mine i download oracle java sdk 7 at
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
download the rpm for easy install and upgrade
# yum localinstall jdk-7u79-linux-x64.rpm
2. download liferay and extract it.
for mine, i extract and put it at /opt
then i rename it to liferay so it will become /opt/liferay
3. go to /opt/liferay/tomcat-8.0.32/bin
test run 1 times to confirm it was working with default settings
# ./startup.sh
use browser and try access it at
<server ip>:8080
and stop it after confirm working
# shutdown.sh
4. install tomcat native for better performance
at bin directory, extract tomcat-native.tar.gz and navigate to native directory inside it
# ./configure --with-apr=/usr/bin/apr-1-config --with-java-home=/usr/java/default --with-ssl=/usr/bin/openssl --prefix=/usr
# make
# make install
5. back to bin directory and extract commons-daemon-native.tar.gz
navigate into unix folder
# ./configure --with-java=/usr/java/default
# make
# cp jsvc ../..
6. add tomcat user for liferay to run instead of using root
# useradd tomcat
# chown -R tomcat: /opt/liferay
7. at tomcat bin directory, edit setenv.sh and change the Xmx value to suit your server memory.
for mine, i also had manual set Xms value as well
====== startup script =====
since it is using systemd for centos7, below is the guide on how to add
# cd /etc/systemd/system
# vim tomcat.service
=== tomcat.service ===
# Systemd unit file for tomcat
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target
[Service]
Type=forking
#ExecStart=/etc/init.d/tomcat start
ExecStart=/opt/liferay/tomcat/bin/startup.sh
ExecStop=/opt/liferay/tomcat/bin/shutdown.sh
User=tomcat
Group=tomcat
TimeoutStartSec=0
TimeoutStopSec=600
[Install]
WantedBy=multi-user.target
=== END ===
enable it to run at startup
# systemctl enable tomcat.service
now you can test use systemctl to start and stop to confirm it working
# systemctl start tomcat
# systemctl stop tomcat
monitor the log at /opt/liferay/tomcat/logs/catalina.out
to make sure it fully startup without error
===== Apache =====
you either can use your firewall to redirrect port 8080 to port 80
or
use mod_jk for port 80 to 8080
===== cluster =====
1. edit <liferay>/tomcat/conf/context.xml
change <Context>
to <Context distributable="true">
2. edit server.xml
change <Engine name="Catalina" defaultHost="localhost">
to <Engine name="Catalina" defaultHost="localhost" jvmRoute="node1">
then below it add this as well
=== server.xml ===
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="6">
<Manager className="org.apache.catalina.ha.session.BackupManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"
mapSendOptions="6"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="5000"
selectorTimeout="100"
maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
=== end ===
3. edit <liferay>/tomcat/conf/Catalina/localhost/ROOT.xml and add this into it
=== ROOT.xml ===
<Resource
name="jdbc/LiferayPool"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://<DB IP>/<DB name>?useUnicode=true&characterEncoding=UTF-8"
username="DB username"
password="DB password"
maxActive="100"
maxIdle="30"
maxWait="60000"
/>
=== end ===
4. then at <liferay>/tomcat/webapps/ROOT/WEB-INF/classes, create portal-ext.properties file and put this into it
=== portal-ext.properties ===
jdbc.default.jndi.name=jdbc/LiferayPool
=== end ===
This is helpful for my site tomcat
ReplyDeletemark mail archive
Hello, it is an interesting article but it is not clear to me if the cluster section is the same for all liferay instances? And also the ROOT.xml is the same in both liferay instances?
ReplyDeleteThank you for sharing this guide.
for the cluster section, this is mean for liferay 7.0
Deletebut the configuration should be same for newer version as i didnt try it before.
for the ROOT.xml, yes~ it need to be same for both instance as it need point to the same database
I thought liferay 7 CE does not support clustering. i'm confused!
ReplyDeletesorry for confusing you,
Deleteyes, Liferay CE does not support cluster.
so my clustering part is at tomcat itself. which is for session replicate
Thanks for your reply. Can you upload a sketch of final deployment view, somthing like this:
ReplyDeletehttp://www.bing.com/images/search?view=detailV2&ccid=8zcbJUM2&id=27C00911BE911DE14AFFDFEDC3FE629D2550F4DE&thid=OIP.8zcbJUM2uVGU-KXtsHT2ZwEeEs&q=liferay+clustering&simid=607989193897412221&selectedIndex=6&ajaxhist=0
Seems to have done a great job!
ReplyDelete