‫نصب ActivePerl روی ویندوز ۲۰۰۳

ActivePerl نرم افزاری است که با نصب آن بر روی ویندوز می‌توانید اسکریپت‌های پرل را اجرا کنید. این نرم افزار محصول ActiveState است و صد البته تنها نرم افزاری نیست که می‌تواند پرل را روی ویندوز اجرا کند. پرل برای اجرای نرم افزار OTRS که یک نرم افزار معروف Help Desk کد باز و تحت وب است مورد نیاز است. مراحل نصب:

۱- با مراجعه به Control Panel مطمئن شوید که IIS نصب است. IIS به طور پیش فرض در ویندوز 2003 نصب نیست. IIS در قسمت Application Server قرار دارد و برای نصب آن به سی دی ویندوز 2003 نیاز هست. w1

 

۲- ActivePerl را نصب کنید. لطفا Optionهای نصب را تغییر ندهید.w2

 

۳- از قسمت Web Service Extensions اجرای Perl CGI Extension را مجاز اعلام نمایید.

w3

۴- IIS را Restart کنید.

۵-IIS را امتحان کرده و مطمئن شوید که می‌تواند اسکریپت‌های CGI و Perl را اجرا کند. برای این کار کد زیر را در یک فایل متنی ساده با پسوند .pl ذخیره کرده و آن در یک شاخه اختصاصی در شاخه wwwroot بگذارید. سپس در IIS یک Virtual Directory جدید ساخته و مسیر فایل فوق الذکر را به آن معرفی کنید. سپس آدرس کامل آن را به انضمام نام فایل بالا در browser خود تایپ کنید. اگر همه چیز درست پیش رفته باشد باید برنامه در حال کار را ببینید در غیر این صورت تا حل مشکل به مراحل بعدی نروید. دقت کنید که اگر به جای Virtual Directory یک Application ساخته باشید هیچ چیزی کار نمی‌کند و خطا می‌گیرید.

 

#!/usr/bin/perl

print “Content-type: text/htmlnn”;
print <<HTML;
<html>
<head>
<title>A Simple Perl CGI</title>
</head>
<body>
<h1>A Simple Perl CGI</h1>
<p>Hello World</p>
</body>
HTML
exit;

۶- ممکن است دو لینک زیر برای رفع مشکلات مربوط به نصب پرل روی IIS کمک کند:
•    http://perl.about.com/od/perltutorials/a/hellocgi.htm
•     http://community.activestate.com/forum-topic/configuring-perl-on-iis-7

 

پ. ن.: ‫نصب OTRS روی ویندوز ویستا

OTRS, GD Library and Persian Support

OTRS can generate graphic as output of its reports. For example someone could generate a bar chart from Queues. Ok, but what’s wrong about this? My problem with this is Persian (Farsi) text in the image, for example name of queues are showed incorrectly. Consider following pic. that is a part of Bar-Chart report with 4 text phrase, 1 English (tmp_lock) and 3 others in Persian.

Consider bar names

Persian words are rendered in a wrong way. Those 2 text below the charts are Persian words "تحویل گرفته شده" and "آزاد". They are incorrectly rendered as some European characters with accents above.

I posted the issue in OTRS mailing lists here and here, but no one could solve this. Some folks suggested to use my fonts instead of OTRS default fonts but I didn’t find how to this.

After this unsuccessful tries I decided to trace the OTRS directly to see where the graphics are generated. I examined stats.pm and $graph->set_legend(@YLine); and realized that the root cause may be GD.pm not OTRS. So I tried to generate a sample graphic with GD.pm directly but Persian text was not displayed correctly yet.

I found GD Library (underlying library of GD.pm) is graphic engine of PHP too so tried to find someone that has any experiences with this. The results was a blog post by Robert Robbins and an online graphic generator based on GD Library. But no one could help me.

Additionally there is a related project on PHP, GD Library and Persian problem introduce here and here by Omid Mottaghi, a good book named "Perl Graphics Programming" and a nice .Net open source project named "GD Sharp" that is really an interface to GD Library. I tried all of these but no hope yet!

Note:

  1. My friend Masoud has reported this bug to GD project and they say it is known issue and it is not going to be resolved. Instead RTL support will be supported in GD-Pango. Is it possible that OTRS use gd-pango instead of gd to resolve such problems?
  2. I’ve discussed this problem in Persian Computing group too. They suggest to utilize FriBiDi.
  3. A friend suggested to use Imagick. It may solve Persian problem.

Does anybody could help me getting rid of this nightmare please?

Installing OTRS & Active Perl on Windows Vista

otrs

‭OTRS is a famous Open Source software for implementing Help Desk and Service Desk systems. Service Desk is an important section of ITIL. ITIL is a best practices approach introduced by UK govenrment. OTRS is written in Perl by Martin Edenhofer and originally is designed to run in Linux, Apache and MySQL. In following, OTRS installation on Microsoft Windows Vista, IIS 7.0 and Microsoft SQL Server 2008 is described in 3 sections. Installing OTRS in Windows 2003 and Windows XP is not very different.

1. Installing ActiverPerl and IIS configuration

1.1. Active all IIS sections in Vista

1.2. Install ActivePerl from ActiveState

1.3. Run IIS

1.4. In Handler Mappings using "Add Script Map" add following script:

‎*.pl Request path
c:Perlbinperl.exe "%s" %s Executable
Perl Script Map Name
double click on the "Handler", click "Request Restriction" button, select Execute from "Access" tab and click "OK".
Click handler again, select "Edit feature Permissions…" and grant all rights.
1.5. Restart IIS.
1.6. Test IIS using following script. You should create a plain text file having .pl extension and putting it in wwwroot folder. After that you should create a new Virtual Directory in IIS. Test it by browsing in a browser. If you see the proper page you can go on otherwise don’t progress until solve the problem:
 
#!/usr/bin/perl

print "Content-type: text/htmlnn";
print <<HTML;
<html>
<head>
<title>A Simple Perl CGI</title>
</head>
<body>
<h1>A Simple Perl CGI</h1>
<p>Hello World</p>
</body>
HTML
exit;

1.7. I have a sample web.config that may help in case of some problems with IIS:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <handlers accessPolicy="Read, Execute, Script">
      <remove name="CGI Script Map" />
      <remove name="Perl Script Map" />
      <add name="Perl Script Map" path="*.pl" verb="*" modules="CgiModule" scriptProcessor="c:Perlbinperl.exe &quot;%s&quot; %s" resourceType="Unspecified" requireAccess="Execute" />
      <add name="CGI Script Map" path="*.cgi" verb="*" modules="CgiModule" scriptProcessor="c:Perlbinperl.exe &quot;%s&quot; %s" resourceType="Unspecified" requireAccess="Execute" />
    </handlers>
    <staticContent>
      <mimeMap fileExtension=".pl" mimeType="text/html" />
      <mimeMap fileExtension=".cgi" mimeType="text/html" />
    </staticContent>
  </system.webServer>
</configuration>

1.8. Using following links may help you:

http://perl.about.com/od/perltutorials/a/hellocgi.htm

http://community.activestate.com/forum-topic/configuring-perl-on-iis-7

 

2. Database creation and ODBC configuration

2.1. Create a new database in MS SQL Server 2008 named otrs. Then run following scripts on it in the exact order. This scripts can be found in scriptsdatabase folder:

otrs-schema.mssql
otrs-initial_insert.mssql
otrs-schema-post.mssql

2.2. Create a new DSN in ODBC named otrs. This DSN must be created in System DSN section not User DSN.

2.3. If you have used "Windows Authentication" instead of "SQL Server Authentication" in your DSN, you must follow some extra steps to grant necessary access rights:

2.3.1. Create a new user in MS SQL Server Security named "NT AUTHORITYIUSR":

http://lh5.ggpht.com/_NHQs4ySP7wI/Sag1WpxCJaI/AAAAAAAAAKw/KZggUlv3OYY/image%5B5%5D.png

2.3.2. Add this newly created user to OTRS database:

فهرست کاربران مجاز دیتابیس

2.3.3. Grant "db_owner" role to user IUSR in OTRS database.

3. Installing OTRS source code and necessary configurations

3.1. Put OTRS source code (downloadable from otrs.org) in some folder on your hard disk preferably in wwwroot.

3.2. Create a new Virtual Directory in IIS 7.0 called otrs. It must be pointing to folder "bincgi-bin".

3.3. Create another Virtual Directory named otrs-web pointing to folder "varhttpdhtdocs".

3.4. For "varlog" folder grant full access to IUSR user group. Log files are maintained in this folder. If this access is not granted sometimes HTML source code is displayed in user browser instead of rendered HTML.

3.5. For "bincgi-bin" folder grant full access to IUSR user group again. If not, file attachment will not be impossible.

3.6. Create a copy of config.pm.dist and rename it to config.pm. This file could be found in "Kernel" folder. If this file does not exists, users encounter "Misbehaved CGI" error.

3.7. Comment all "database settings" section using # sign and insert followings instead:

$Self->{DatabaseDSN} = "DBI:ODBC:DSN=otrs";
$Self->{"Database::Type"} = ‘mssql’;
$Self->{DatabaseUserTable} = ‘users’;

3.8. Edit "fs root directory" entry based on your source folder. Consider using slash character not back slash.

3.9. Insert following lines in the "data inserted by installer" section. Line 3 and 4 are necessary for Persian (Farsi) and some other languages. Don’t forget to edit LogFile address based on your own installation.

$Self->{LogModule} = ‘Kernel::System::Log::File’;
$Self->{LogModule::LogFile} = ‘d:/otrs/var/log/otrs_vista.log’;
$Self->{‘LogModule::SysLog::Charset’} = ‘utf-8’;
$Self->{DefaultCharset} = ‘utf-8’;

3.10. Run otrs by typing http://localhost/otrs/index.pl in your browser. Default user name is root@localhost and default password is root. After logging in change default password immediately.

 

NOTE: This instruction is an English translation of original document written in Persian(Farsi).

‫نصب ActivePerl و تنظیم IIS برای اجرای اسکریپت‌های پرل

۱- همه بخش‌های IIS را نصب (فعال) کنید.
۱- دریافت ActivePerl از سایت ActiveState و نصب آن در ویندوز.
۲- اسکریپت‌های پرل را در IIS به روش زیر فعال کنید.
•    در بخش Handler Mappings با استفاده از گزینه Add Script Map دو اسکریپت زیر را اضافه کنید.
•    برای Perl: 

‎*.pl Request path
c:Perlbinperl.exe "%s" %s Executable
Perl Script Map Name

•    برای CGI: 

‎*.cgi Request path
c:Perlbinperl.exe "%s" %s Executable
CGI Script Map Name

•    روی Handler مربوط به Perl دابل کلیک کنید.
•    دکمه Request Restrictions را کلیک کنید و از برگه Access گزینه Execute را انتخاب کرده و OK را کلیک کنید.
•    پس از تایید عملیات، Entry Type مربوطه باید به Local تغییر پیدا کرده باشد.
•    روی همان Handler مربوط به Perl راست کلیک کرده، گزینه Edit Feature Permissions… را انتخاب کرده و همه مجوزها را اعطا کنید.
۳- IIS را Restart کنید.
۴- IIS را امتحان کرده و مطمئن شوید که می‌تواند اسکریپت‌های CGI و Perl را اجرا کند. برای این کار کد زیر را در یک فایل متنی ساده با پسوند .pl ذخیره کرده و آن در یک شاخه اختصاصی در شاخه wwwroot بگذارید. سپس در IIS یک Virtual Directory جدید ساخته و مسیر فایل فوق الذکر را به آن معرفی کنید. سپس آدرس کامل آن را به انضمام نام فایل بالا در browser خود تایپ کنید. اگر همه چیز درست پیش رفته باشد باید برنامه در حال کار را ببینید در غیر این صورت تا حل مشکل به مراحل بعدی نروید. دقت کنید که اگر به جای Virtual Directory یک Application ساخته باشید هیچ چیزی کار نمی‌کند و خطا می‌گیرید.

 

#!/usr/bin/perl

print "Content-type: text/htmlnn";
print <<HTML;
<html>
<head>
<title>A Simple Perl CGI</title>
</head>
<body>
<h1>A Simple Perl CGI</h1>
<p>Hello World</p>
</body>
HTML
exit;

 

 

 

۵- در صورتی که مشکلات IIS همچنان ادامه داشت از web.config نمونه زیر کمک بگیرید. IIS از نسخه ۷ و بعد از آن به ازای هر Virtual Directory یک web.config ایجاد می‌کند که همه تنظیمات را در آن نگه می‌دارد:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <handlers accessPolicy="Read, Execute, Script">
      <remove name="CGI Script Map" />
      <remove name="Perl Script Map" />
      <add name="Perl Script Map" path="*.pl" verb="*" modules="CgiModule" scriptProcessor="c:Perlbinperl.exe &quot;%s&quot; %s" resourceType="Unspecified" requireAccess="Execute" />
      <add name="CGI Script Map" path="*.cgi" verb="*" modules="CgiModule" scriptProcessor="c:Perlbinperl.exe &quot;%s&quot; %s" resourceType="Unspecified" requireAccess="Execute" />
    </handlers>
    <staticContent>
      <mimeMap fileExtension=".pl" mimeType="text/html" />
      <mimeMap fileExtension=".cgi" mimeType="text/html" />
    </staticContent>
  </system.webServer>
</configuration>

۶- ممکن است دو لینک زیر برای رفع مشکلات مربوط به نصب پرل روی IIS کمک کند:
•   http://perl.about.com/od/perltutorials/a/hellocgi.htm
•     http://community.activestate.com/forum-topic/configuring-perl-on-iis-7

 

——————————————————————————-

این متن در چهار بخش تقدیم می‌گردد که لینک هر چهار بخش آن در جدول زیر آمده است. یک نسخه کامل از هر چهار بخش آن هم به صورت pdf موجود است که از طریق ایمیل بنده قابل دریافت است.

بخش اول:معرفی OTRS
بخش دوم: نصب ActivePerl و تنظیم IIS برای اجرای اسکریپت‌های پرل
بخش سوم: ایجاد دیتابیس و تنظیمات ODBC برای اجرای OTRS
بخش چهارم: نصب سورس OTRS و تنظیمات مربوطه

‫اولین تجربه با «پرل»

زبان پرل (Perl) در یکی از نرم افزارهایی که اخیرا مجبور به استفاده از آن شده‌ام یعنی OTRS و بعضی برنامه‌های معروف دیگر مثل Movable Type و PRTG استفاده شده است. این زبان در یونیکس و قاعدتا در لینوکس هم طرفداران زیادی دارد و در محیط‌های ویندوزی هم در کاربردهای سیستمی مثل مدیریت شبکه زبان پر استفاده‌ای است.

OTRS برای ارتباط با دیتابیس از طریق ODBC مشکلی پیدا کرده بود که برای درک مشکل آن مجبور شدم مقداری از مستندات «پرل» را بخوانم و اولین اسکریپتم را بر اساس راهنمای ذکر شده در اینجا ایجاد کرده و اجرا کنم. پکیج DBI کار ارتباط با دیتابیس را در پرل به عهده دارد. برای تکمیل این ارتباط به پکیج DBD-ODBC یا دیگر پکیج‌های DBD هم نیاز هست. من برای اجرای این اسکریپت یک دیتابیس در SQLEXPRESS ویندوزم ساخته و در ODBC یک Data Source به اسم otrs برای آن ایجاد کردم. این هم اسکریپت:

#!/usr/bin/perl  -w
use DBI;

my $dbh   = DBI->connect (“DBI:ODBC:otrs”)
                           or die “Can’t connect to database: $DBI::errstrn”;
#prepare the query
my $sth = $dbh->prepare(“SELECT *  FROM users”);
#execute the query
$sth->execute( );
## Retrieve the results of a row of data and print
print “tQuery results:n==============================================n”;
while ( my @row = $sth->fetchrow_array( ) )  {
         print “@rown”;
}
warn “Problem in retrieving results”, $sth->errstr( ), “n”
        if $sth->err( );
#disconnect  from database
$dbh->disconnect or warn “Disconnection error: $DBI::errstrn”;
print “done”;
exit;

 

پ. ن. ۱: من برای اجرای این اسکریپت از ActivePerl استفاده کردم.
پ. ن. ۲: OTRS یک سیستم Help Desk کد باز است که قابلیت‌های ITIL را هم می‌توان به آن اضافه کرد.

installing perl in windows 2003, IIS 6.0 in order to install Trouble Ticket Express

I have installed ttx in win xp without any problem. But I couldn’t install it on Windows 2003, IIS 6.0. The problem was CGI couldn’t run correctly in IIS 6.0 in order to a problem in HTTP Headers after installing perl Here is the solution: http://groups.google.com/group/microsoft.public.windows.server.general/browse_thread/thread/87c1475dd4e77471/bd6c9c319a958690?lnk=st&q=perl+%22windows+2003%22#bd6c9c319a958690