Author Topic: install ispconfig support jsp servlet and php script  (Read 9647 times)

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2140
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
install ispconfig support jsp servlet and php script
« on: มกราคม 23, 2011, 01:01:06 AM »
วันนี้ มีโจทย์ชิวๆ มาลองทำครับ

1.ทำเครื่องให้รัน script Tomcat JSP + PHP ได้

ลองเอา ispconfig 3 มาลองดูด้วยครับ

ผมคิดว่า control panel ตัวนี้ก็เจ๋งดีน่ะครับ เพราะมีทีม พัฒนา ทำออกมาเรื่อยๆ แก้ bug ต่างๆ มาเรื่อยๆ

มี tool ให้จัดการได้เยอะดี ทำพวก mail spam ก็เจ๋งใช้ได้ , จัดการพวก DNS ก็ง่ายๆ

มาเริ่มกันเลยครับ ผมลง กับ debian 5.0.2 ครับ
ลง พวก ssh ntp
#apt-get install ssh ntp ntpdate openssh-server

ถัดมาลง พวก mail gateway ครับ
#apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon
courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-2
libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl courier-maildrop getmail4
rkhunter binutils

แล้วมันจะถามคำถาม
New password for the MySQL "root" user: <-- ปปป
Repeat password for the MySQL "root" user: <-- ปปป
Create directories for web-based administration? <-- No
General type of mail configuration: <-- Internet Site
System mail name: <-- server1.packetlove.com
SSL certificate required <-- Ok

#/etc/init.d/mysqld restart
#/etc/init.d/courier-imap-ssl restart
#/etc/init.d/courier-pop-ssl restart

ต่อมาลงพวก scan engine ครับ
#apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop
cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl
libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl

ต่อมาลงพวก web server + php5 ครับ
#apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1
ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli
php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick
imagemagick libapache2-mod-suphp php5-cli php5-mysql

ทำการ enable module เหล่านี้ซะ
#a2enmod suexec rewrite ssl actions include

ต่อไปลงพวก FTP และกำหนด quota
#apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool
แก้ไขไฟล์ /etc/default/pure-ftpd-common
#vi /etc/default/pure-ftpd-common
STANDALONE_OR_INETD=standalone
VIRTUALCHROOT=true

แก้ไฟล์ inetd.conf
comment บันทัด ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper

/etc/init.d/openbsd-inetd restart
/etc/init.d/pure-ftpd-mysql start

แก้ไข fstab
#vi /etc/fstab
/dev/sda2 /var ext3 errors=remount-ro,usrquota,grpquota 0 1

#touch /var/quota.user /var/quota.group
#chmod 600 /var/quota.*
#mount -o remount /var
เริ่มใช้งาน quota
#quotacheck -avugm
#quotaon -avug

ลง MyDNS
#apt-get install g++ libc6 gcc gawk make texinfo libmysqlclient15-dev
cd /tmp
wget http://heanet.dl.sourceforge.net/sourceforge/mydns-ng/mydns-1.2.8.25.tar.gz
tar xvfz mydns-1.2.8.25.tar.gz
cd mydns-1.2.8
./configure
make
make install
เสร็จแล้วสร้าง sciprt mydns
#vi /etc/init.d/mydns
----------------------------------------------mydns -----------------------------------------------
#! /bin/sh
#
# mydns Start the MyDNS server
#
# Author: Philipp Kern < phil@philkern.de>;.
# Based upon skeleton 1.9.4 by Miquel van Smoorenburg
# < miquels@cistron.nl>; and Ian Murdock < imurdock@gnu.ai.mit.edu>;.
#
set -e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/sbin/mydns
NAME=mydns
DESC="DNS server"
SCRIPTNAME=/etc/init.d/$NAME
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
start-stop-daemon --start --quiet \
--exec $DAEMON -- -b
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
start-stop-daemon --stop --oknodo --quiet \
--exec $DAEMON
echo "."
;;
reload|force-reload)
echo -n "Reloading $DESC configuration..."
start-stop-daemon --stop --signal HUP --quiet \
--exec $DAEMON
echo "done."
;;
restart)
echo -n "Restarting $DESC: $NAME"
start-stop-daemon --stop --quiet --oknodo \
--exec $DAEMON
sleep 1
start-stop-daemon --start --quiet \
--exec $DAEMON -- -b
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
exit 1
;;
esac
exit 0
---------------------------------------end of mydns ------------------------------
#chmod +x /etc/init.d/mydns
#update-rc.d mydns defaults

ต่อไปลงพวก web เก็บ log
#apt-get install vlogger webalizer
ลงพวก jailkit
apt-get install build-essential autoconf automake1.9 libtool flex bison
cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.5.tar.gz
tar xvfz jailkit-2.5.tar.gz
cd jailkit-2.5
./configure
make
make install
cd ..
rm -rf jailkit-2.5*

ต่อไปลง fail2ban
#apt-get install fail2ban

ต่อไปลง webmail
#apt-get install squirrelmail
#ln -s /usr/share/squirrelmail/ /var/www/webmail
ส่วนการ config หาเอาใน google น่ะครับ
หรืออ่านได้ที่
http://www.howtoforge.com/perfect-server-debian-lenny-ispconfig3-p5

ต่อไปลง ispconfig ครับ

#cd /home/xxx
#wget http://golfreeze.packetlove.com/download/ispconfig/ISPConfig-3.0.1.tar.gz
#tar xvfz ISPConfig-3.0.1.tar.gz
#cd ispconfig3_install/install/
#php -q install.php

ถ้าขึ้น error แบบนี้
Notice: Undefined variable: distver in /tmp/ispconfig3_install/install/lib/install.lib.php on line
135
Notice: Undefined variable: distid in /tmp/ispconfig3_install/install/lib/install.lib.php on line
135
Notice: Undefined variable: distbaseid in /tmp/ispconfig3_install/install/lib/install.lib.php on
line 135

Linux Distribution or Version not recognized.
เข้าไปแก้ไฟล์
#vi ispconfig3_install/install/lib/install.lib.php
เปลี่ยน version ให้ตรงกับ os เราแล้วสั่ง
#php -q install.php
อีกรอบ ก็เรียบร้อยครับ

ต่อไปทำการลงพวก apache-tomcat + jdk java + mod_jk ทำหน้าที่เป็น module ที่เข้าไปใช้งานกับ apache
ครับ ถ้าใครใช้ jdk 5 ก็ใช้เป็น apache-tomcat5 ด้วยน่ะครับเพื่อจะได้ไม่ error
#wget http://golfreeze.packetlove.com/download/ispconfig/jdk-1_5_0_20-linux-i586.bin
#chmod +x jdk1.5.0_20-linux-i586.bin
#./jdk1.5.0_20-linux-i586.bin
#mv jdk1.5.0_20 /usr/lib
#cd /usr/lib
#ln -s jdk1.5.0_20 jdk

เขียน JAVA_HOME ไว้ที่ /root/.bashrc
#vi /root/.bashrc
JAVA_HOME="/usr/lib/jdk"
export JAVA_HOME

ลอง echo ดูจะได้
#echo $JAVA_HOME
ออกมาเป็น
/usr/lib/jdk

ต่อไปทำการลง tomcat-apache
#wget http://golfreeze.packetlove.com/download/ispconfig/apache-tomcat-5.5.28.tar.gz
#mv apache-tomcat-5.5.28 /usr/lib
#cd /usr/lib
#ln -s apache-tomcat-5.5.28 apache-tomcat
ทำการ running tomcat ดูครับ
#cd /usr/lib/apache-tomcat/bin
#sh startup.sh
#sh shutdown.sh

ต่อไปลง tomcat-connector หรือ mod_jk.so ครับเอาไว้ connect กับ apache2 ครับ
#apt-get install libapache2-mod-jk
ลองเช๊ค น่ะครับ หลังจาก install เสร็จมันจะ load module เข้ามาให้ที่
/usr/lib/apache2/modules/mod_jk.so

เขียนไฟล์ workers.properties
#touch /etc/apache2/workers.properties

ใส่ดังนี้
-----------------------------------workers.properties
---------------------------------------------------------------
workers.tomcat_home=/usr/lib/apache-tomcat
workers.java_home=/usr/lib/jdk

ps=/

worker.list=worker1

worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.lbfactor=1

worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=worker1

worker.inprocess.type=jni

worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar

worker.inprocess.cmd_line=start

worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)lib$(ps)
i386$(ps)classic$(ps)libjvm.so

worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout
worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stderr

-------------------------------------------------------จบไฟล์
---------------------------------------------

ต่อไปทำการ แก้ไขไฟล์ server.xml ไฟล์นี้เปรียบได้กับ httpd.conf ของ apache2 ครับ
ไฟล์นี้ของผม แก้ไขเพื่อใช้งานกับ ispconfig น่ะครับ โดยให้รันที่ port "2117"
ถ้าใครอยากได้ port อื่นก็เปลี่ยนเอาครับ
----------------------------------------- server.xml
-------------------------------------------------------
<Server port="8005" shutdown="SHUTDOWN">

<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListen
er" />
<Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListe
ner"/>

<!-- Global JNDI resources -->
<GlobalNamingResources>

<!-- Test entry for demonstration purposes -->
<Environment name="simpleValue" type="java.lang.Integer"
value="30"/>

<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users -->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />

</GlobalNamingResources>


<!-- Define the Tomcat Stand-Alone Service -->
<Service name="Catalina">

<!-- A "Connector" represents an endpoint by which requests are received
and responses are returned. Each Connector passes requests on to the
associated "Container" (normally an Engine) for processing.
-->

<!-- Define a non-SSL HTTP/1.1 Connector on port 2117 (default 8080) -->
<Connector port="2117" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="5"
maxSpareThreads="75"
enableLookups="false" redirectPort="8443"
acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
/>

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009"
enableLookups="false" redirectPort="8443"
protocol="AJP/1.3" />

<!-- Define a Proxied HTTP/1.1 Connector on port 8082 -->
<!-- See proxy documentation for more information about using this. -->
<!--
<Connector port="8082"
maxThreads="150" minSpareThreads="25"
maxSpareThreads="75"
enableLookups="false" acceptCount="100"
connectionTimeout="20000"
proxyPort="80" disableUploadTimeout="true" />
-->

<!-- An Engine represents the entry point (within Catalina) that processes
every request. The Engine implementation for Tomcat stand alone
analyzes the HTTP headers included with the request, and passes them
on to the appropriate Host (virtual host). -->

<!-- Define the top level container in our container hierarchy -->
<Engine name="Catalina" defaultHost="localhost">

<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>

<!-- Define the default virtual host -->
<!--
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">

<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log."
suffix=".txt"
pattern="common" resolveHosts="false"/>
</Host>
-->
<!-- www.example.com input for testing website kub -->
<Host name="www.example.com"
appBase="/var/www/example.com/web/xxx"
unpackWARs="true" autoDeploy="true">

<Context path="" docBase="jsp-examples"
debug="0" reloadable="true"/>

<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="web1_access_log."
suffix=".txt"
pattern="common" resolveHosts="false"/>
</Host>
<Listener className="org.apache.jk.config.ApacheConfig"
modJk="/usr/lib/apache2/modules/mod_jk.so"
workersConfig="/etc/apache2/workers.properties"/>

</Engine>

</Service>

</Server>
---------------------------------- server.xml
-------------------------------------------------------
Reload configuration มันจะสร้างไฟล์ /usr/lib/apache-tomcat/conf/auto/mod_jk.conf ให้ครับ
#cd /usr/lib/apache-tomcat/bin
#sh shutdown.sh
#sh startup.sh
แล้วใส่ mod_jk.conf เข้าไปที่ apache2.conf ครับ
#vi /etc/apache2/apache2.conf
Include /usr/lib/apache-tomcat/conf/auto/mod_jk.conf

เพิ่ม config นี้ลงไปที่ vhosts_ispconfig.conf ครับ
# Send servlet for context /servlets-examples to worker named worker1
JkMount /*/servlet/* worker1
# Send JSPs for context /jsp-examples to worker named worker1
JkMount /*.jsp worker1

เสร็จแล้วทำการ copy file jsp เพื่อทดสอบ
#cp -R /usr/lib/apache-tomcat/webapps/jsp-examples /var/www/example.com/web/xxx/.

เสร็จแล้วทำการ reload config ทั้ง apache และ tomcat ครับ
#/etc/init.d/apache2 restart
#cd /usr/lib/apache-tomcat/bin
#sh shutdown.sh
#sh startup.sh

แล้วทดสอบเข้าเว็บ

ไปเขียน ไฟล์ hosts

10.x.x.x www.example.com

แล้วเรียกเว็บดูครับ

http://www.example.com:2117/jsp-examples/ครับ ก็ใช้งาน script jsp /servlet ได้แล้ว

ส่วน ISPconfig ก็เข้าที่
http://localhost:8080ครับผม
default user pass = admin

เรียบร้อยครับ ถ้าหากมีตรงไหนผิดพลาดก็แนะนำ ได้น่ะครับ
MSN & Email = golfreeze[at]packetlove.com