ติดตั้ง pykota บน ubuntu
- ทดสอบบน linux ubuntu 10.04.4 server, postgresql-8.4 และ pykota-1.27alpha13_unofficial
- ต้นฉบับ pykota อยู่ที่ http://www.pykota.com
- ติดตั้ง linux ubuntu 10.04.4 server เสร็จแล้ว ต้องเพิ่ม ubuntu desktop เข้าไปด้วยคำสั่ง
sudo apt-get install ubuntu-desktop
เสร็จแล้วให้รีบูท server ใหม่ด้วยคำสั่ง
sudo reboot
- ให้ login เข้าไปทำงาน ติดตั้งโปรแกรม build และ cups ด้วยคำสั่ง
sudo apt-get install build-essential cupsys cupsys-client cupsys-bsd cupsys-driver-gutenprint system-config-printer-gnome
- เตรียมความพร้อมของ network CUPS print server ต้องทดสอบให้ผ่าน ไม่งั้นทำต่อไม่ได้
ใช้คำสั่ง system-config-printer
ทดสอบติดตั้งคิวเครื่องพิมพ์ชื่อ abc ใช้ driver เป็น Generic PCL-4 หรือ Generic PostScript Printer ขึ้นกับรุ่นของเครื่องพิมพ์
เปิดอนุญาต sharing ให้เครือข่ายพิมพ์ได้
ตัวอย่างคำแนะนำ:
เมนู System > Administration > Printing > เลือก Add
เลือกว่า Printer ของเราต่ออยู่กับแบบใด เช่น Ricoh Aficio MP 2000 ก็เลือกเป็น LPD/LPR Host or Printer ได้ แล้วในช่อง Host ใส่แค่ IP Address ของเครื่องพิมพ์ แล้วคลิก Forward > เลือก Driver > ตั้งชื่อเครื่องพิมพ์ เช่น Ricoh-Aficio-MP-2000 (ซี่งชื่อนี้จะใช้ตอน Add Printer ที่ Windows)
เมื่อเสร็จ ให้คลิกขวาที่ไอคอน ให้มีเครื่องหมายถูกที่คำว่า Shared
เลือก Server > Settings > ทำเครื่องหมายถูกที่ Publish shared printers connected to this system และ ทำเครื่องหมายถูกที่ Allow printing from the Internet
- บนวินโดวส์ XP หรือ 7 ให้ติดตั้ง network printer ชี้มาที่ url คือ http://your.pc.address:631/printers/abc
ตัวอย่างคำแนะนำ:
เปิด Windows > login ด้วย user ชื่อ John (สังเกต J ตัวใหญ่ แต่ใน pykota กลับใช้ j ตัวเล็ก)
เมนู Start > Devices and Printers > Add a printer
เลือก Add a network, wireless or Bluetooth printer
เลือก The printer that I want isn't listed
เลือก Select a shared printer by name > ใส่ http://your.pc.address:631/printers/Ricoh-Aficio-MP-2000
เลือก Driver ให้ตรงรุ่น > ตั้งชื่อเครื่องพิมพ์ตามชอบ > คลิก Finish
ทดสอบพิมพ์จากวินโดวส์ให้ใช้งานได้เรียบร้อย
- ติดตั้งโปรแกรม postgresql ดังนี้
sudo apt-get install subversion postgresql postgresql-client postgresql-common libX11-dev libxt-dev libxext-dev
sudo apt-get install python-dev python-jaxml python-reportlab python-reportlab-accel python-psyco python-pygresql
sudo apt-get install python-osd python-egenix-mxdatetime python-imaging python-pysnmp4 python-chardet python-pam
สั่งให้ postgresql ทำงานด้วยคำสั่ง
sudo /etc/init.d/postgresql-8.4 start
ต่อไปให้แก้ไขแฟ้ม /etc/postgresql/8.4/main/pg_hba.conf เติมข้อความนี้ต่อไปที่ท้ายสุดของแฟ้ม
host all all 127.0.0.1/32 trust
host all all 10.0.5.3/24 trust
***ให้เปลี่ยนเลข ip จาก 10.0.5.3 เป็นเลข ip ของ server ที่กำลังใช้
เสร็จแล้วให้ทำงานใหม่ด้วยคำสั่ง
sudo /etc/init.d/postgresql-8.4 restart
- ติดตั้ง pkpgcounter ให้ดาวน์โหลดจาก ftp://ftp.psu.ac.th/pub/pykota/pkpgcounter-3.50.tar.gz
ด้วยคำสั่ง wget ftp://ftp.psu.ac.th/pub/pykota/pkpgcounter-3.50.tar.gz
แตกแฟ้มออกด้วยคำสั่ง sudo tar -zxvf pkpgcounter-3.50.tar.gz -C /usr/share
เข้าไปทำงานต่อด้วยคำสั่ง cd /usr/share/pkpgcounter-3.50
สั่งทำงานต่อด้วยคำสั่ง sudo python setup.py install
- ติดตั้ง pkipplib ให้ดาวน์โหลดจาก http://ftp.psu.ac.th/pub/pykota/pkipplib-0.07.tar.gz ด้วยคำสั่ง
wget -P /tmp http://ftp.psu.ac.th/pub/pykota/pkipplib-0.07.tar.gz
แตกแฟ้มออกด้วยคำสั่ง
sudo tar -zxvf /tmp/pkipplib-0.07.tar.gz -C /usr/share
เข้าไปทำงานต่อด้วยคำสั่ง
cd /usr/share/pkipplib-0.07
sudo python setup.py install
- ติดตั้ง ghostpcl ให้ดาวน์โหลดจาก http://ftp.psu.ac.th/pub/pykota/ghostpcl_1.41p1.tar.bz2 ด้วยคำสั่ง
wget -P /tmp http://ftp.psu.ac.th/pub/pykota/ghostpcl_1.41p1.tar.bz2
แตกแฟ้มออกด้วยคำสั่ง
sudo tar -jxvf /tmp/ghostpcl_1.41p1.tar.bz2 -C /usr/share
เข้าไปทำงานต่อด้วยคำสั่ง
cd /usr/share/ghostpcl_1.41p1
sudo make fonts
sudo make product
sudo make install
- ติดตั้ง pykota ให้ดาวน์โหลดจาก http://ftp.psu.ac.th/pub/pykota/pykota-1.27_unofficial.tar.gz ด้วยคำสั่ง
wget -P /tmp http://ftp.psu.ac.th/pub/pykota/pykota-1.27_unofficial.tar.gz
แตกแฟ้มออกด้วยคำสั่ง
sudo tar -zxvf /tmp/pykota-1.27alpha13_unofficial.tar.gz -C /usr/share
เข้าไปทำงานต่อด้วยคำสั่ง
cd /usr/share/pykota-1.27alpha13_unofficial/
sudo python setup.py install
- สร้างผู้ใช้ pykota ด้วยคำสั่ง
sudo adduser --system --group --home /etc/pykota --gecos Pykota pykota
ให้ lp เป็นสมาชิกของ pykota ด้วยคำสั่ง
sudo adduser lp pykota
จัดการ postgresql ต่อดังนี้
sudo su - postgres -c "psql -f /usr/share/pykota-1.27alpha13_unofficial/initscripts/postgresql/pykota-postgresql.sql template1"
- แก้ไขข้อมูลแฟ้ม /etc/cups/printers.conf เพื่อให้พิมพ์ผ่าน pykota
สมมติว่าเครื่องพิมพ์ชื่อ abc แก้ไขจากตัวอย่างเดิม
<DefaultPrinter abc>
DeviceURI parallel:/dev/lp0
ที่บรรทัด DeviceURI parallel:/dev/lp0
ให้แทรกเพิ่มคำว่า cupspykota:// เข้าไป กลายเป็นดังตัวอย่าง
DeviceURI cupspykota://parallel:/dev/lp0
ตัวอย่างที่ทำการทดสอบเครื่องพิมพ์ชื่อ Ricoh-Aficio-MP-2000 แบบ LPD
<DefaultPrinter Ricoh-Aficio-MP-2000>
...
DeviceURI cupspykota://lpd://192.168.x.x
...
หรือตัวอย่างเดิมเป็นว่า DeviceURI hp:/usb/hp_LaserJet_1320_series?serial=00CNHJ5DM021
ให้แก้ไขเป็นว่า DeviceURI cupspykota://hp:/usb/hp_LaserJet_1320_series?serial=00CNHJ5DM021
หรือตัวอย่างเดิมเป็นว่า DeviceURI ipp://192.168.1.7:631/printers/xyz
ให้แก้ไขเป็นว่า DeviceURI cupspykota://ipp://192.168.1.7:631/printers/xyz
หรือตัวอย่างเดิมเป็นว่า DeviceURI socket://192.168.1.7:9100
ให้แก้ไขเป็นว่า DeviceURI cupspykota://socket://192.168.1.7:9100
เสร็จแล้วให้ reload ใหม่ ด้วยคำสั่ง
sudo /etc/init.d/cups restart
- ทำให้ cups รู้จักกับ pykota ดังนี้
sudo cp /usr/share/pykota-1.27alpha13_unofficial/bin/cupspykota /usr/lib/cups/backend
sudo chmod 755 /usr/lib/cups/backend/*
sudo /etc/init.d/cups restart
sudo cp /usr/share/pykota-1.27alpha13_unofficial/conf/pykota.conf.sample /etc/pykota/pykota.conf
sudo cp /usr/share/pykota-1.27alpha13_unofficial/conf/pykotadmin.conf.sample /etc/pykota/pykotadmin.conf
sudo chown pykota.pykota /etc/pykota/pykota.conf /etc/pykota/pykotadmin.conf
- แก้ไขแฟ้ม /etc/pykota/pykota.conf
ไปที่ประมาณบรรทัด 1419 แล้วลบบรรทัดข้อความว่า policy: deny ทิ้ง
แล้วไปที่บรรทัดล่างสุดของแฟ้ม เติมต่อท้ายว่า
[abc]
policy: external($(which pkusers) --add --limitby balance --balance 20 %(username)s && $(which edpykota) --add --printer %(printername)s %(username)s)
enforcement : strict
หรือเขียนอีกแบบใส่ path ที่อยู่จริงของคำสั่ง pkusers และ edpykota
[abc]
policy: external(/usr/local/bin/pkusers --add --limitby balance --balance 20 %(username)s && /usr/local/bin/edpykota --add --printer %(printername)s %(username)s)
enforcement : strict
ตัวอย่างตั้งชื่อเครื่องพิมพ์ว่า Ricoh-Aficio-MP-2000 ให้เขียนแบบนี้
[Ricoh-Aficio-MP-2000]
policy: external(/usr/local/bin/pkusers --add --limitby balance --balance 20 %(username)s && /usr/local/bin/edpykota --add --printer %(printername)s %(username)s)
enforcement : strict
ตัวอย่างนี้ อนุญาตโดยอัตโนมัติ พิมพ์ได้ 20 แผ่น
อธิบาย which pkusers สำหรับ ubuntu 10.04.4 จะได้คำตอบเป็น /usr/local/bin/pkusers
อธิบาย which edpykota สำหรับ ubuntu 10.04.4 จะได้คำตอบเป็น /usr/local/bin/edpykota
หากเป็น ubuntu เวอร์ชั่นอื่นๆ อาจเปลี่ยนเป็นอย่างอื่นได้ การใช้ which จะมั่นใจได้ว่าได้ path ที่ถูกต้องของคำสั่ง pkusers
เสร็จแล้วให้ postgresql เริ่มทำงานใหม่ ด้วยคำสั่ง
sudo /etc/init.d/postgresql-8.4 restart
- ลองด้วยคำสั่ง
pkprinters --add --charge 1.0 --description "Printer for Students" abc
ถ้าได้ผล ทำนองนี้ แสดงว่าใช้ได้
Creation...
Done. Average speed : ... entries per second.
ตัวอย่างตั้งชื่อเครื่องพิมพ์ว่า Ricoh-Aficio-MP-2000
pkprinters --add --charge 1.0 --description "Printer for Students" Ricoh-Aficio-MP-2000
- คำอธิบายที่เราแก้ไขแฟ้ม /etc/pykota/pykota.conf (ตามข้อด้านบน) หมายถึง การทำการ add user ให้อัตโนมัติ
หากทำแบบ manual จะหมายถึงแบบนี้ (ไม่ต้องทำตาม)
ตัวอย่างตั้งชื่อเครื่องพิมพ์ว่า Ricoh-Aficio-MP-2000
อนุญาต username ชื่อ mama
pkusers --add --limitby balance mama
pkusers -b 20 mama
edpykota --add --printer Ricoh-Aficio-MP-2000 mama
repykota
อนุญาต username ชื่อ john
pkusers --add --limitby balance john
pkusers -b 20 john
edpykota --add --printer Ricoh-Aficio-MP-2000 john
repykota
- แค่นี้ก็ใช้งานได้แล้ว ให้ทดสอบพิมพ์ได้เลยทั้งจากลินุกซ์และวินโดวส์
หากมีปัญหาระหว่างใช้งานพิมพ์ไม่ออก
ให้ลองตรวจสอบดูคิวงานพิมพ์ด้วยคำสั่ง lpq
ถ้ามี job ค้างแสดงว่าเครื่องพิมพ์อาจมีปัญหา
แก้ไขโดยการลบคิวงานที่ค้างทิ้งให้หมดก่อน ด้วยคำสั่ง cancel -a
แล้วสั่งให้คิวพิมพ์รับงานใหม่
ด้วยคำสั่งตัวอย่าง cupsenable abc(ชื่อคิว)
- คำสั่งในการดูจำนวนกระดาษและโควต้าที่พิมพ์คือ repykota
คำสั่งในการดูจำนวนเพิ่มหรือจัดการโควต้าดังนี้
pkusers -b โควต้า ยูสเซอร์เนม
เช่น -b +20 เพิ่ม 20 ถ้า -b -20 ลด 20
(เพื่อให้เกิดความสะดวก หากพัฒนาเป็น web app เช่น ตัวอย่าง phppykotaadmin ตัวอย่างในข้อต่อไปก็จะสะดวกกว่ามาก ลองใช้ดู)
- ติดตั้งโปรแกรม phppykotaadmin ดังนี้
ต้องติดตั้ง apache และ php ก่อน ด้วยคำสั่ง
sudo apt-get install apache2 php5
ดาวน์โหลดโปรแกรมจาก http://ftp.psu.ac.th/pub/pykota/phppykotaadmin-0.56.tar.gz
wget -P /tmp http://ftp.psu.ac.th/pub/pykota/phppykotaadmin-0.56.tar.gz
แล้วแตกแฟ้มด้วยคำสั่ง
sudo tar -zxvf /tmp/phppykotaadmin-0.56.tar.gz -C /var/www
แก้ไขแฟ้ม /etc/sudoers เพิ่มบรรทัดข้อความคือ (เวอร์ชั่นเก่าจะใช้ /usr/bin แต่อันนี้ใช้ /usr/local/bin)
www-data ALL= NOPASSWD:/usr/local/bin/edpykota
www-data ALL= NOPASSWD:/usr/local/bin/pkprinters
www-data ALL= NOPASSWD:/usr/local/bin/pkusers
www-data ALL= NOPASSWD:/usr/local/bin/dumpykota
www-data ALL= NOPASSWD:/usr/local/bin/repykota
*** อาจใช้โปรแกรม visudo แก้ไขแฟ้มนี้ก็ได้ตามถนัด ดังนี้
sudo visudo
แล้วสั่งให apache ทำงานใหม่ด้วยคำสั่ง
sudo /etc/init.d/apache2 restart
เข้าไปทดสอบผลงานได้ที่ http://localhost/phppykota
ผู้ใช้ทั่วไปเข้าไปที่ http://localhost/phppykota/user/
ผู้ดูแลระบบเข้าไปที่ http://localhost/phppykota/admin/
- เพื่อความปลอดภัย ให้กำหนดสิทธิ์ผู้ดูแลระบบ phppykotaadmin ด้วยการควบคุมพื้นที่ /var/www/phppykota ดังนี้
ติดตั้งเพิ่มเติมด้วยคำสั่ง
sudo apt-get install libapache2-mod-auth-pam
sudo adduser www-data shadow
sudo ln -s /etc/pam.d/apache2 /etc/pam.d/httpd
แก้ไขแฟ้ม /etc/apache2/sites-available/default
ให้แทรกเพิ่มบรรทัดข้อความไปที่ตอนท้ายของแฟ้มก่อน </VirtualHost> ดังตัวอย่างว่า
<Directory /var/www/phppykota/admin/>
AuthBasicAuthoritative off
AuthPAM_Enabled On
AuthType Basic
AuthName "secure area"
Require valid-user
AllowOverride none
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
</Directory>
เสร็จแล้วสั่งให้ apache ทำงานใหม่ด้วยคำสั่ง
sudo /etc/init.d/apache2 restart
ลองเข้าไปใช้งานที่ http://localhost/phppykota/admin/
จะมีหน้าต่างถามให้ป้อนชื่อผู้ใช้และรหัสผ่าน (ใช้ linux user account) หากถูกต้องจึงจะให้ทำงานต่อไปได้
- (ข้อนี้มีเงื่อนไขในการใช้ คือ ubuntu 8.04 กับ pykota 1.26 เท่านั้น)
การใช้ pknotify + pykoticon ทำดังนี้
ต้องติดตั้งโปรแกรม pykoticon ลงบน PC client ที่ต้องการคุยด้วยก่อน
บน PC clinet ที่เป็น XP ให้ดาวน์โหลดแฟ้ม http://ftp.psu.ac.th/pub/pykota/pykoticon-1.02.zip
แตกแฟ้มออกมา แล้วแก้ไขแฟ้ม pykoticon.vbs ที่บรรทัดสุดท้าย
retcode = Wshshell.run ("%comspec% /C pykoticon.exe --port 7654 nordine.ateur", 0, FALSE)
ให้แก้ไขข้อความ nordine.ateur เป็นเลข ip ของ pykota server เช่น
retcode = Wshshell.run ("%comspec% /C pykoticon.exe --port 7654 192.168.5.51", 0, FALSE)
แก้ไขแค่นี้ แล้วสั่งให้โปรแกรม pykoticon.vbs ทำงาน ตอนนี้ PC client ก็พร้อมรับข้อมูลจาก pykota server แล้ว
ไปที่ pykota server ลองสั่งให้ส่งข้อความไปยัง PC client ดังตัวอย่าง
pknotify -d 192.168.5.36 -t 2 -n "hello"
ที่ PC client จะมี pop up ขึ้นมาว่า hello
ลองคำสั่ง pknotify ไปยัง pc เป้าหมายปลางทาง ตัวอย่างเช่น
sudo pknotify -d 192.168.5.36 --checkauth --ask "Your name:username:" "Your password:password:"
บน PC client ปลายทางจะมี popup ขึ้นมาให้ใส่ username และ password