دوشنبه، شهریور ۲۳، ۱۳۸۸

نصب Tomcat به عنوان سرویس در ابونتو ۹.۰۴

Tomcat یک وب سرور ساده جاوا است که معمولا برای کارهای توسعه نرم افزارهای تحت وب به کار می رود. ولی برای بسیاری از مقاصد می توان از Tomcat در محیط اصلی هم استفاده کرد. برای مثال من تصمیم گرفتم برای وب سرور wiki از Tomcat استفاده کنم و Tomcat را به عنوان یک سرویس در اوبونتو نصب کنم تا پس از آغاز به کار سیستم، وب سرور نیز شروع به کار کند.  در ابتدا این کار بسیار جزیی به نظر می رسید ولی خوب در عمل معمولا همه چیز مطابق انتظار پیش نمی رود. ادامه پست را بخوانید تا تلاش هایی که شکست خوردند و تلاشی که به موفقیت انجامید را ببینید. من هنوز هم نفهمیدم علت کار نکردن دو راه حل اول چیست. اگر کسی در این موارد ایده ای دارد بسی من را خوشحال خواهد کرد.

تلاش اول:
من آخرین نسخه tomcat را دانلود کرده و آن را در شاخه /user/local/tomcat/ و برنامه وب wiki مورد نظر را در شاخه webapps قرار دادم. با اجرای وب سرور همه چیز خوب کار می کرد و برنامه قابل دسترسی بود. سپس از دوست همیشگی یعنی گوگل کمک گرفتم تا ببینم چگونه می توان Tomcat را به صورت یک سرویس درآورد.
برای مطلع شدن از جزییات این صفحه را ببینید: How to install tomcat 6 in Ubuntu
با این که تمام عملیات کاملا منطقی به نظر می رسد برای من کار نکرد و Tomcat همراه بالا آمدن اوبونتو آغاز نمی شد.

تلاش دوم:
پس از سعی و خطای فراوان و دستکاری ترتیب شروع Tomcat در Runlevel های مختلف من به این نتیجه رسیدم که مشکل از اسکریپت است. این اسکریپت دستور شروع Tomcat را اجرا نمی کرد. فایل log شروع Tomcat خالی بودند. پس از جستجو در مخازن اوبونتو متوجه شدم که هر دو نسخه 5.5  و 6 موجود هستند. خوشبختانه Tomcat هایی که در مخازن بودند هر دو اسکریپت startup داشتند و با شروع اوبونتو اجرا می شدند ولی من نتوانستم wiki را در آن deploy کنم. هیچ پیغام خطایی هم در فایل های log مشاهده نمی شد!

تلاش سوم:
پس از ۴ ساعت تلاش بی نتیجه به این نتیجه رسیدم که باید راه دیگری را انتخاب کنم. ایده از این صفحه شروع شد: Tomcat Setup و خوشبختانه موفقیت آمیز بود!
در شاخه tomcat/bin فایل jsvc.tar.gz وجود دارد که حاوی یک سری فایل native لینوکسی اجرای Tomcat به صورت Daemon است. راستش در مورد این که واقعا جمله قبلی چه معنی می دهد ایده خاصی ندارم! برای اجرای Tomcat از روش سوم دستورات زیر را اجرا کردم:

1. $ tar xvzf jsvc.tar.gz
2. $ cd jsvc-src
3. $ sudo apt-get install autoconf
4. $ autoconf
5. $ ./configure --with-java=/usr/lib/jvm/java-6-sun
6. $ make
7. $ cp jsvc ../

فکر می کنم دستورات بالا واضح باشند. خط سوم برنامه ای به نام autoconf را نصب می کند که فایل پیکربندی را می سازد. اگر این برنامه را روی سیستم خود دارید نیازی به اجرای این خط نیست. خط پنجم دستور پیکربندی است که آرگومان with-java آن مکان ماشین مجازی جاوا را نشان می دهد. خط هفتم در واقع فایل کامپایل شده را در شاخه بالاتر که bin است قرار می دهد.

بعد از اجرای این مراحل اسکریپت زیر را در شاخه /etc/init.d با نام tomcat ذخیره کنید:
#!/bin/sh

JAVA_HOME=/usr/lib/jvm/java-6-sun
CATALINA_HOME=/usr/local/tomcat
DAEMON_HOME=/usr/local/tomcat/bin
TOMCAT_USER=tomcat
TMP_DIR=/tmp
CATALINA_OPTS="-Xmx512m -XX:PermSize=256m"
CLASSPATH=\
$JAVA_HOME/lib/tools.jar:\
$DAEMON_HOME/commons-daemon.jar:\
$CATALINA_HOME/bin/bootstrap.jar

case "$1" in
  start)
    #
    # Start Tomcat
    #
    $DAEMON_HOME/jsvc \
    -user $TOMCAT_USER \
    -home $JAVA_HOME \
    -Dcatalina.home=$CATALINA_HOME \
    -Djava.io.tmpdir=$TMP_DIR \
    -outfile $CATALINA_HOME/logs/catalina.out \
    -errfile $CATALINA_HOME/logs/catalina.err \
    $CATALINA_OPTS \
    -cp $CLASSPATH \
    org.apache.catalina.startup.Bootstrap
    #
    # To get a verbose JVM
    #-verbose \
    # To get a debug of jsvc.
    #-debug \
    ;;

  stop)
    #
    # Stop Tomcat
    #
    PID=`cat /var/run/jsvc.pid`
    kill $PID
    ;;

  *)
    echo "Usage tomcat.sh start/stop"
    exit 1;;
esac


به قسمت اول اسکریپت که متغیر ها تعریف شده اند توجه کنید. این مقادیر را با توجه به مکان Tomcat و جاوا خود تغییر دهید. تا این مرحله همه چیز آماده است. حالا باید به اوبونتو بگویید که سرویس tomcat که به تازگی آن را نوشته ایم را همراه بالا آمدن اوبونتو اجرا کند:
# sudo update-rc.d tomcat defaults
از این پس همراه با بالا آمدن اوبونتو Tomcat شروع به کار می کند. همانطور که از اسکریپت نیز مشخص است فایل های log در
$CATALINA_HOME/logs/catalina.out و $CATALINA_HOME/logs/catalina.err ذخیره می شوند.

هیچ نظری موجود نیست:

ارسال یک نظر