Category: CMS (Joomla!, Moodle, Wordpress)

  • How to install mathtex.cgi ubuntu 12.04

    1. ติดตั้ง texlive-full , dvipng,  imagemagick
      $sudo apt-get install -y texlive-full dvipng imagemagick
    2. ดาวน์โหลด mathtex.zip
      $wget http://www.forkosh.com/mathtex.zip
    3. สร้างไดเร็คทอรี่ mathtex
      $mkdir mathtex
    4. cd mathtex
    5. unzip ../mathtex.zip
    6. compile mathtex.c ด้วยคำสั่ง
      $cc mathtex.c -DLATEX=\"$(which latex)\" -DDVIPNG=\"$(which dvipng)\"  -o mathtex.cgi
    7. sudo mv mathtex.cgi /usr/lib/cgi-bin
    8. sudo chown :www-data /usr/lib/cgi-bin
    9. sudo chmod g+w /usr/lib/cgi-bin
    10. เพิ่มข้อความต่อไปนี้ในแฟ้ม /etc/apache2/sites-enabled/000-default ภายใน Directive VirtualHost ถ้าใส่ตามนี้คืออนุญาติเครือข่ายภายในมหาวิทยาลัยเท่านั้นเข้าถึงได้
      ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
      <Directory /usr/lib/cgi-bin>
          Options +ExecCGI
          Order deny,allow
          Deny from all
          Allow from 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
      </Directory>
    11. restart apache
      $sudo service apache2 restart
    12. ทดสอบเรียกใช้งานได้ที่ http://yourhostname/cgi-bin/mathtext.cgi?x
    13. texlive เป็นโปรแกรมที่ทดแทน latex ใช้สร้างสมาการทางคณิตศาสตร์
    14. ใน WordPress มีปลั๊กอินชื่อ Youngwhan’s Simple Latex สามารถเรียกใช้ mathtex นี้ได้ทันที โดยปกติจะเซ็ตไว้ให้ใช้ shared host ภายนอกมหาวิทยาลัย
    15. ทดสอบเรียกใช้งาน E=mc^2 ได้ผลเป็น
    16. ตัวอย่างอื่นๆ สำหรับสมการแปลกๆ Example
    17. จบ…. ขอให้สนุกครับ

    ที่มา

    • https://help.ubuntu.com/community/LaTeX
    • http://www.forkosh.com/cgi-bin/weblist.cgi?-t=weblist&-o=php&-f=sources/mimetexquickstartweb.php
  • vvisit_counterDShelpe rDSvvisit_counter.php: failed to open stream: No such file or directory in /var/www/student-affairs/plugins/system/vvisit_counter/vvisit_counter.php on line 18

    Joomla 3.1.5

    เมื่อวันนี้ตอนเช้าทดลองเปิดหน้าเว็บหน่วยงานภายในคณะดูปรากฏว่าเว็บไม่ปรากฏอะไรเลย  ได้หน้าขาวโล่งๆ ซึ่งผมก็ตกใจครับนึกว่าอะไรจะพังอีก เลยโทรไปสอบถามอาการของผู้ดูแลเว็บ บอกว่าเปิดไม่ได้ตั้งแต่เมื่อวาน  จึง ssh เข้าไปตรวจสอบ /var/www/student-affairs  ตามปกติ permission file ก็เรียบร้อยดีไม่มีไรหาย จากนั้นจึงไปเปิด log ของ apache2 ดู /var/log/apache2/error.log แล้วลอง  tail error.log | grep student-affairs ดูปรากฏว่า เจอ error ดังนี้

    root@Internal-Webhost:/var/log/apache2# tail error.log | grep student-affairs
    [Fri Nov 01 10:00:19 2013] [error] [client 192.168.74.90] PHP Notice:  Use of undefined constant DS – assumed ‘DS’ in /var/www/student-affairs/plugins/system/vvisit_counter/vvisit_counter.php on line 18
    [Fri Nov 01 10:00:19 2013] [error] [client 192.168.74.90] PHP Notice:  Use of undefined constant DS – assumed ‘DS’ in /var/www/student-affairs/plugins/system/vvisit_counter/vvisit_counter.php on line 18
    [Fri Nov 01 10:00:19 2013] [error] [client 192.168.74.90] PHP Warning:  require_once(/var/www/student-affairs/plugins/system/vvisit_counterDShelperDSvvisit_counter.php): failed
    to open stream: No such file or directory in /var/www/student-affairs/plugins/system/vvisit_counter/vvisit_counter.php on line 18
    [Fri Nov 01 10:00:19 2013] [error] [client 192.168.74.90] PHP Fatal error:  require_once(): Failed opening required ‘/var/www/student-affairs/plugins/system/vvisit_counterDShel
    perDSvvisit_counter.php’ (include_path=’.:/usr/share/php:/usr/share/pear’) in /var/www/student-affairs/plugins/system/vvisit_counter/vvisit_counter.php on line 18
    [Fri Nov 01 10:00:21 2013] [error] [client 192.168.74.90] PHP Notice:  Undefined index: th-TH in /var/www/student-affairs/plugins/system/languagefilter/languagefilter.php on line 61
    [Fri Nov 01 10:00:21 2013] [error] [client 192.168.74.90] PHP Notice:  Trying to get property of non-object in /var/www/student-affairs/plugins/system/languagefilter/languagefilter.php on line 61
    [Fri Nov 01 10:00:21 2013] [error] [client 192.168.74.90] PHP Notice:  Use of undefined constant DS – assumed ‘DS’ in /var/www/student-affairs/plugins/system/vvisit_counter/vvisit_counter.php on line 18
    [Fri Nov 01 10:00:21 2013] [error] [client 192.168.74.90] PHP Notice:  Use of undefined constant DS – assumed ‘DS’ in /var/www/student-affairs/plugins/system/vvisit_counter/vvisit_counter.php on line 18
    [Fri Nov 01 10:00:21 2013] [error] [client 192.168.74.90] PHP Warning:  require_once(/var/www/student-affairs/plugins/system/vvisit_counterDShelperDSvvisit_counter.php): failed
    to open stream: No such file or directory in /var/www/student-affairs/plugins/system/vvisit_counter/vvisit_counter.php on line 18
    [Fri Nov 01 10:00:21 2013] [error] [client 192.168.74.90] PHP Fatal error:  require_once(): Failed opening required ‘/var/www/student-affairs/plugins/system/vvisit_counterDShel
    perDSvvisit_counter.php’ (include_path=’.:/usr/share/php:/usr/share/pear’) in /var/www/student-affairs/plugins/system/vvisit_counter/vvisit_counter.php on line 18

    ดูไปดูมาเหมือน ตัว vvisit_counter/vvisit_counter.php ไม่สามารถเปิดหรือหาไฟล์ vvisit_counterDShelperDSvvisit_counter.php  เจอจึงลองไปเปิด google ดูปรากฏว่าเหมือนมันจะมีปัญหาอยู่ ผมจึงทดลองเข้าไป database ของเว็บและไป disable plugin และ mod ดังกล่าว

    vvisit_counterจากนั้นทดลองเปิดหน้าเว็บ จึงสามารถใช้งานได้ตามปกติครับ จบข่าว

  • WordPress theme – responsive web design

    WordPress theme มีหลากหลายให้เลือก สำหรับเว็บ sysadmin.psu.ac.th ที่ผ่านมาใช้ Default theme และถัดมาก็เปลี่ยนมาใช้ WordPress theme ชื่อ toothpaste ของ SiteOrigin ซึ่งก็สวยแบบเรียบๆ แต่เมื่อลองเปิดด้วย smart phone พบว่าส่วนเมนูตอนบนจะแสดงผลไม่ดีนัก จึงได้ความช่วยเหลือจากเพื่อนร่วมงาน แนะนำ WordPress Theme: Catch Evolution

    Theme นี้ เมื่อเปิดดูหน้าเว็บบน notebook จะแสดงผลแบบนี้

    web-page-theme-catch-evolution

    Theme นี้ เมื่อเปิดดูหน้าเว็บบน smart phone ของผม ซึ่งเป็น android 2.3.6 จะแสดงเป็นปุ่มให้เลือกเมนู แบบนี้

    SC20131011-113257

    เมื่อจิ้มไปที่คำว่า Menu มันจะแสดงเป็นรายการให้เลือก แบบนี้

    SC20131011-122152

    ผมว่ามันดีกว่า theme เดิม จึงได้เปลี่ยน และเพื่อนๆลองเปิดดูด้วย smart phone ดูนะครับ

  • How to install phpmyadmin and joomla 3.1.5 on ubuntu server 12.04.3 lts

    สวัสดีครับ ช่วงนี้ผมได้ลองติดตั้งอะไรหลายๆอย่าง ซึ่งได้ทำเป็นไฟล์ pdf แล้วด้วยบางส่วน แต่ยังไม่เรียบร้อย ซึ่งวันนี้ห่างหายไปนานกับการเขียนบล็อกเนื่องจากไม่ว่างแล้วก็งานยุ่งมาก แต่ก็มีความคิดอยากจะเขียนบทความอยู่นะ พอดีขณะนี้ได้โอกาศเลยขอมาจัดซักหน่อยหนึ่งบทความ โดยในบทความนี้ผมก็เขียนขึ้นมาเพื่อตอบโจทย์กับการทำงานในคณะเหมือนเดิม คือ เครื่องเซิร์ฟเวอร์เครื่องเก่าเป็น windows 2003 ซึ่งอายุก็มากกว่า 7 ปีแล้ว สภาพเครื่อง cpu ram part มันหมดอายุการผลิตไม่สามารถซื้อมาอัพเกรดเพิ่มได้ จึงต้องเปลี่ยนที่อยู่ให้เว็บไซต์ภายในเครื่องใหม่ คือ ย้ายโฮสต์นั่นแหละครับ คราวนี้เปลี่ยนมาติดตั้ง virtual แทน โดย OS: Ubuntu Server 12.04.3 LTS i386  ตอนแรกว่าจะโหลดแบบ 64 bit มาใช้งานแต่กลัวมันไม่เข้ากับ software ที่จะติดตั้งตัวอื่นๆเลยใช้แบบนี้ไปก่อน  โดยอันดับแรกผมก็ติดตตั้ง ubuntu 12.04.3 LST นะ โดยไม่ได้ใช้แบบสำเร็จรูป โดยตอนเลือกติดตั้ง ผมเลือก  Package  Openssh-server และ  LAMP เพื่อนำมาทำเป็นเว็บเซิร์ฟเวอร์ โดยเมื่อติดตั้งเสร็จแล้ว ลองทดสอบเรียกหน้า localhost หรือเรียกไปที่ ip เครื่องก็จะแสดงสถานะการทำงานว่า It’s Work   apache2 ทำงานได้ ส่วน service ของ mysql ก็ทำงานได้ตามปกติแต่เวลาจะเข้าไปจัดการมันนี่สิ ถ้าไม่มี tool ก็ลำบากหน่อย จึงได้ไปโหลด script authentication ของ อาจารย์ฉัตรชัย จาก share มาใช้งาน   http://share.psu.ac.th/blog/etc/19218  ซึ่งเขียนตั้งแต่ปี 54 ปัจจุบัน 56 แล้วก็ยังใช้งานได้อยู่นะ (ของแกดีจริง ๕๕๕)

    จากนั้นมาอัพเกรด ubuntu ของเราก่อนโดย

    1.  sudo apt-get update

    2. จากนั้น ใช้คำสั่งติดตั้ง  phpmyadmin โดย      sudo apt-get install phpmyadmin  ระบบก็จะให้เราเลือกว่าเราจะใช้ host ตัวใหน ระหว่าง apache2 หรือ lighthttp  ถ้าติดตั้ง LAMP ก็เลือก apache2 นะ จากนั้นระบบจะให้เรากรอกรหัสผ่านของ mysql

    install-phpmyadmin2

    จากนั้นระบบก็จะให้เราตั้งรหัสผ่านสำหรับ root ของ phpmyadmin  และก็ให้เรายืนยันรหัสอีกครั้ง (more…)

  • hands on backup joomla website and restore

    เรื่อง hands on backup joomla website and restore นี้จัดเตรียมโดยใช้ Oracle VM VirtualBox เพื่อฝึกปฏิบัติเกี่ยวกับการ backup website ในตัวอย่างจะใช้ joomla web site ซึ่งการ backup คงจะมีหลายแบบตามชนิดของการตั้ง website ในกรณีนี้ก็จะเป็นแบบตั้ง server เองแล้วใช้ apache web server + mysql server ที่ติดตั้งเอง

    สภาพแวดล้อมที่เตรียมมีดังนี้
    ubuntu router: มี Fix IP Address 10.0.100.1 (แจก DHCP IP Address ให้แก่ server1, server2 และ client)
    server1: 10.0.100.206 (joomla website รันบน apache web server)
    server2: 10.0.100.207 (backup)
    client: 10.0.100.205 (เพื่อใช้งาน ssh ผ่านทาง terminal และเพื่อใช้งาน firefox web browser)

    KM4-backup-diagram

    รูปภาพระบบทดสอบนี้

     

    การเตรียม VM
    ดาวน์โหลด [ ubunturouter-dhcp.ova  1.1GB ]  [ ubuntuserver-lamp.ova  1.2GB ] [ linuxmint15-live.ova 81KB]  [ linuxmint-15-mate-dvd-32bit.iso  1.0GB ] หรือได้รับแผ่น DVD ไฟล์ทั้งหมดนี้
    แล้วทำดังนี้
    1. ทำ import ไฟล์ ubunturouter-dhcp.ova ตั้งชื่อว่า ubuntu router ตั้ง network adapter1: NAT, ตั้ง network adapter2: internal network (ตั้ง name: intnet1)
    2. ทำ import ไฟล์ ubuntuserver-lamp.ova ตั้งชื่อว่า server1 ตั้ง network adapter1: internal network (ตั้ง name: intnet1)
    3. ทำ import ไฟล์ ubuntuserver-lamp.ova อีกครั้ง ตั้งชื่อว่า server2 ตั้ง network adapter1: internal network (ตั้ง name: intnet1)
    4. ทำ import ไฟล์ linuxmint15-live.ova ตั้งชื่อว่า client ตั้ง network adapter1: internal network (ตั้ง name: intnet1) และตั้งค่า Storage ใช้ CD/DVD ด้วยไฟล์ linuxmint-15-mate-dvd-32bit.iso

    หมายเหตุ เครื่อง 1,2 และ 3 เปิดเครื่องเข้าใช้ด้วย login mama / password 123456

    การเตรียมทำ joomla site ทดสอบ
    1. สร้าง database ที่ต้องการติดตั้ง ตัวอย่าง สร้าง database ชื่อ testdatabase ใช้คำสั่ง

    mysql -uroot -p123456 -e "CREATE DATABASE testdatabase CHARACTER SET 'UTF8';"

    2. กำหนดสิทธิ์การใช้ database testdatabase ให้แก่ user ตัวอย่างสร้าง user ชื่อ mamamysql โดยมีรหัสผ่านว่า mamapass ใช้คำสั่ง

    mysql -uroot -p123456 -e "grant all privileges on testdatabase.* to 'mamamysql'@'localhost' identified by 'mamapass' ;"

    3. เตรียมพื้นที่สำหรับติดตั้ง joomla ไว้ที่ /var/www/testjoomla ด้วยคำสั่ง

    sudo mkdir -p /var/www/testjoomla

    4. ดาวน์โหลดแฟ้ม joomla 2.5.9 มาเก็บไว้ด้วยคำสั่ง

    wget http://ftp.psu.ac.th/pub/joomla/Joomla_2.5.9-Stable-Full_Package.tar.gz -P /tmp

    แล้วแตกแฟ้มออกมาเก็บไว้ที่ /var/www/testjoomla ด้วยคำสั่ง

    sudo tar -zxvf /tmp/Joomla_2.5.9-Stable-Full_Package.tar.gz -C /var/www/testjoomla

    5. แล้วปรับสิทธิ์เจ้าของ /var/www/testjoomla ให้แก่ apache ด้วยคำสั่ง

    sudo chown -R www-data.www-data /var/www/testjoomla

    6. ต่อไปต้องติดตั้งปรับแต่งระบบ joomla ครั้งแรก เปิด browser (firefox, chrome, Internet Explorer ฯลฯ) แล้วพิมพ์

    http://10.0.100.206/testjoomla

    (หมายเหตุ 10.0.100.206 คือ ip address server ที่ติดตั้ง Joomla)

    ขั้นตอน 1 : Choose language (เลือกภาษา) ให้ click ปุ่ม Next (หรือต่อไป)
    ขั้นตอน 2 : Pre-Installation Check(ตรวจสอบระบบก่อนติดตั้ง) ให้ click ปุ่ม Next (หรือต่อไป)
    ขั้นตอน 3 : License(ลิขสิทธิ์) ให้ click ปุ่ม Next (หรือต่อไป)
    ขั้นตอน 4 : Database Configuration(การตั้งค่าฐานข้อมูล) ให้ใส่ค่าดังนี้ (อย่าลืมใส่ข้อมูลชิดซ้าย ห้ามมีช่องว่าง)
    Database type = mysqli(เลือกที่มี i) (ความแตกต่างระหว่าง mysqli และ mysql)
    Host Name = localhost
    Username = mamamysql
    Password = mamapass
    Database Name = testdatabase เสร็จแล้ว click Next (หรือต่อไป)
    ขั้นตอน 5 : FTP Configuration (ตั้งค่า FTP) ให้ click ปุ่ม Next (หรือต่อไป)
    ขั้นตอน 6 : Main Configuration (ตั้งค่าหลักของ เว็บ) ให้ใส่ค่าดังนี้
    Admin Username = ไม่ต้องแก้ไข ทิ้งไว้เหมือนเดิมคือ admin
    Admin Password = 123456
    Confirm Admin Password = 123456
    อย่าลืม ต้อง Click Install Sample Data (ติดตั้งข้อมูลตัวอย่าง) แล้วกด Next (หรือ ต่อไป)
    ขั้นตอนที่ 7 : Finish (เสร็จสิ้น) (ขั้นตอนสุดท้าย)

    7. แล้วปรับสิทธิ์เจ้าของ /var/www/testjoomla ให้แก่ user ที่ไม่ใช่ www-data ด้วยคำสั่ง

    sudo chown -R mama.mama /var/www/testjoomla

     

    การตั้งค่าการสำรองข้อมูลข้ามเครื่องโดยไม่ต้องถามรหัสผ่าน

    1. ใช้คำสั่งดังนี้คือ

    ssh-keygen -t dsa

    ได้ผลข้อความตัวอย่างว่า
    Generating public/private dsa key pair.
    Enter file in which to save the key (/home/User/.ssh/id_dsa):
    ให้ป้อน Enter จะได้ข้อความตัวอย่างว่า
    Enter passphrase (empty for no passphrase):
    ให้ป้อน Enter จะได้ข้อความตัวอย่างว่า
    Enter same passphrase again:
    ให้ป้อน Enter จะได้ข้อความตัวอย่างว่า
    Your identification has been saved in /home/User/.ssh/id_dsa.
    Your public key has been saved in /home/User/.ssh/id_dsa.pub.
    The key fingerprint is:
    66:ce:cc:8d:33:0d:49:9a:05:26:77:95:1a:3e:96:5f User1@Server1
    ถึงตอนนี้ ระบบจะสร้างแฟ้ม ~/.ssh/id_dsa และ ~/.ssh/id_dsa.pub ขึ้นมา

    2. ให้นำแฟ้ม ~/.ssh/id_dsa.pub จากเครื่องนี้ ไปเก็บไว้ที่ home ของ User2 ปลายทาง @server2
    ด้วยตัวอย่างคำสั่งว่า ssh-copy-id -i ~/.ssh/id_dsa.pub User2@Server2 เช่น

    ssh-copy-id -i ~/.ssh/id_dsa.pub mama@10.0.100.207

    อาจมีการถามรหัสผ่านของ User2@Server2 ให้ป้อนรหัสผ่านให้ถูกด้วย
    หากสำเร็จถูกต้อง ข้อมูลจะถูกเก็บที่ home ของ User2 ปลายทาง @server2 ในแฟ้ม ~/.ssh/authorized_keys

    3. เพื่อความปลอดภัย ให้กำหนดสิทธิ์เฉพาะเจ้าของจึงจะอ่านแฟ้มเหล่านีได้ ด้วยตัวอย่างคำสั่ง

    chmod 600 ~/.ssh/id_dsa ~/.ssh/id_dsa.pub

     

    การตั้งค่า cron เพื่อ backup server1 (10.0.100.206) ไปยัง server2 (10.0.100.207)

    1. ขั้นตอนนี้ต้องเข้าเป็น username root ด้วยคำสั่ง

    sudo su -

    2. สร้างแฟ้ม /etc/cron.d/cron-backup

    nano /etc/cron.d/cron-backup

    ใส่คำสั่งดังนี้

    0 4 * * * root sh /root/backup-joomla.sh

    3. สร้างแฟ้ม /root/mydaily.sh ด้วยคำสั่ง

    nano /root/backup-joomla.sh

    มีข้อมูลคำสั่งต่างๆที่ต้องการสั่งให้ทำงาน ดังนี้

      #!/bin/bash
      TODAY=$(date "+%Y%m%d%H%M")
      mysqldump -u mamamysql -pmamapass testdatabase > /root/testjoomla_${TODAY}.sql
      scp -i /home/mama/.ssh/id_dsa /root/testjoomla_${TODAY}.sql mama@10.0.100.207:backup_testjoomla
      tar -zcp -f /root/testjoomla_${TODAY}.tgz -C /var/www/testjoomla .
      scp -i /home/mama/.ssh/id_dsa /root/testjoomla_${TODAY}.tgz mama@10.0.100.207:backup_testjoomla

    4. เตรียมเสร็จ ให้ลองทดสอบระบบ

    login เข้าไปที่ server2 ด้วย ssh เพื่อสร้างไดเรกทอรี

    ssh -i /home/mama/.ssh/id_dsa mama@10.0.100.207 "mkdir backup_testjoomla"

    ทดสอบ run script นี้สัก 1 ครั้ง

    sh /root/backup-joomla.sh

    ตรวจสอบดูว่ามีการส่งไฟล์ไปเก็บจริงไม๊

    ssh -i /home/mama/.ssh/id_dsa mama@10.0.100.207 "ls -l backup_testjoomla"

    5. เสร็จแล้วสั่งให้ cron ทำงานใหม่ด้วยคำสั่ง

    service cron restart

    6. ออกจาก sudo su ด้วยคำสั่ง

    exit

     

    การ restore joomla web site

    1. สร้าง database ที่ต้องการติดตั้ง ตัวอย่าง สร้าง database ชื่อ testdatabase ใช้คำสั่ง

    mysql -uroot -p123456 -e "CREATE DATABASE testdatabase CHARACTER SET 'UTF8';"

    2. กำหนดสิทธิ์การใช้ database testdatabase ให้แก่ user ตัวอย่างสร้าง user ชื่อ mamamysql โดยมีรหัสผ่านว่า mamapass ใช้คำสั่ง

    mysql -uroot -p123456 -e "grant all privileges on testdatabase.* to 'mamamysql'@'localhost' identified by 'mamapass' ;"

    3. เตรียมพื้นที่สำหรับติดตั้ง joomla ไว้ที่ /var/www/testjoomla ด้วยคำสั่ง

    sudo mkdir -p /var/www/testjoomla

    4. แตกแฟ้มที่ backup นั้น (testjoomla_201309031231.tgz) ออกมาเก็บไว้ที่ /var/www/testjoomla ด้วยคำสั่ง

    sudo tar -zxvf backup_testjoomla/testjoomla_201309031231.tgz -C /var/www/testjoomla/

    5. import ข้อมูล เข้า ด้วยคำสั่ง

    mysql -uroot -p123456 testdatabase < backup_testjoomla/testjoomla_201309031231.sql

    6. แล้วปรับสิทธิ์เจ้าของ /var/www/testjoomla ให้แก่ user ที่ไม่ใช่ www-data ด้วยคำสั่ง

    sudo chown -R mama.mama /var/www/testjoomla

    7. ก็จะสามารถเข้า server2 ได้ที่ http://10.0.100.207/testjoomla

  • How to list linux file permissions in Octal Notation

    วันนี้เนื่องจากทีมผู้ดูแล  Web Hosting ต้องการดูว่ามีไฟล์ไหนบ้างที่มี permission เป็น 777 ก็เลยนั่งหาดูพบว่า สามารถใช้คำสั่ง stat ในการดูได้ เช่น

    $stat -c "%a %n" /var/www

    ผลลัพธ์
    Screenshot from 2013-05-01 11:47:06

    หรือ

    $stat -c "%A (%a) %8s %.19y %n" /var/www

    ผลลัพธ์
    Screenshot from 2013-05-01 11:49:19

    ทั้งนี้เนื่องจากไม่สามารถทำให้มัน recursive ได้ ก็ต้องหาไปทีละโฟลเดอร์ …. จนกระทั่งเจออีกคำสั่ง คือ สร้าง alias ชื่อ lso ดังนี้

    $alias lso="ls -alG | awk '{k=0;for(i=0;i<=8;i++)k+=((substr(\$1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(\" %0o \",k);print}'"

    เมื่อจะใช้งาน ก็เพียงสั่ง lso ที่คอมมานด์ไลน์ ผลลัพธ์
    Screenshot from 2013-05-01 11:54:27

    สามารถปรับ option ของ ls ใน alias ให้ recursive ได้โดยเพิ่ม R ตัวใหญ่ลงไป ดังนี้

    $alias lso="ls -alGR | awk '{k=0;for(i=0;i<=8;i++)k+=((substr(\$1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(\" %0o \",k);print}'"

    เมื่อเรียกใช้จะได้ผลลัพธ์
    Screenshot from 2013-05-01 11:57:21

    สามารถใช้ร่วมกับ grep เพื่อค้นหาเฉพาะค่าที่ต้องการ เช่น

    $lso|grep " ^777"

    ผลลัพธ์
    Screenshot from 2013-05-01 13:11:12

    ก็พอจะช่วยได้บ้างครับ Big Smile ขอให้สนุกครับ

    ที่มา

    http://thenubbyadmin.com/2012/02/16/how-to-list-linux-file-permissions-in-octal-notation/

    http://askubuntu.com/questions/152001/how-can-i-get-octal-file-permissions-from-command-line

  • WordPress file owner and permission

    ตอนนี้เราควรให้ความสำคัญกับความปลอดภัยของเว็บไซต์ wordpress โดยการตั้งค่าสิทธิของไดเรกทอรีและไฟล์มากขึ้นเพราะมีข่าวที่เว็บไซต์มีช่องโหว่แล้วถูกฝังโค้ด

    เช่น แต่เดิมเราติดตั้ง wordpress ไว้ในไดเรกทอรี /var/www/wordpress แล้วเพื่อให้ทำงานติดตั้ง plugins เพิ่ม ปรับแต่งหน้าเว็บด้วย themes ใหม่ๆ หรือการอัปโหลดรูปภาพและสื่อ รวมทั้งการ upgrade เวอร์ชั่นของ wordpress ทำได้สะดวกง่ายๆ ด้วยการกำหนดสิทธิอย่างง่ายคือ

    sudo chown -R www-data.www-data /var/www/wordpress

    ก็ใช้งานได้แล้ว แต่ดูเหมือนว่าสักวันหนึ่งเราอาจจะเป็นเหยื่อได้ ผมได้คุยกับน้องใหญ่ แล้วก็ลงความเห็นกันว่า เราควรตั้งค่า file owner และ file permission ให้มันเข้มขึ้นแต่ยังสะดวกในการทำงานติดตั้งอะไรๆได้ด้วย ก็เป็นที่มาของคำสั่งข้างล่างนี้

    อันดับแรกก็จะต้องกำหนด file owner กันก่อน ถ้า ubuntu server ของเรา ใช้ username คือ mama และมี group ชื่อ adm ซึ่งเป็นชื่อ group ที่มีสิทธิทำอะไรได้มากกว่า user ธรรมดา ก็ใช้ mama:adm นี้ได้ หรือจะใช้ mama:mama ก็ได้ครับ (ที่เป็น adm ก็เผื่อไว้ว่าวันหนึ่งเราอาจจะเพิ่ม username สักคนเข้าใน groupname adm นี้ก็เท่านั้นเอง) ดังนี้

    sudo chown -R mama:adm /var/www/wordpress
    sudo chown -R mama:adm /var/www/wordpress/wp-content/

    ถัดมาก็กำหนด file owner ที่ให้สิทธิ apache web server ซึ่งใช้ username คือ www-data และ groupname คือ www-data เพียงแค่ไดเรกทอรีที่จำเป็น ดังนี้

    sudo chown -R mama:www-data /var/www/wordpress/wp-content/plugins
    sudo chown -R mama:www-data /var/www/wordpress/wp-content/themes
    sudo chown -R mama:www-data /var/www/wordpress/wp-content/upgrade
    sudo chown -R mama:www-data /var/www/wordpress/wp-content/uploads

    ถัดไปก็กำหนด file permission ให้กับไดเรกทอรีเหล่านี้ด้วย (ผมเพิ่ม -R ลงไปในคำสั่งด้านล่างนี้ด้วยแล้ว) ดังนี้

    chmod -R 775 /var/www/wordpress/wp-content/plugins
    chmod -R 775 /var/www/wordpress/wp-content/themes
    chmod -R 775 /var/www/wordpress/wp-content/upgrade
    chmod -R 775 /var/www/wordpress/wp-content/uploads

    สุดท้าย เราต้องแก้ไขไฟล์ชื่อ wp-config.php ด้วยนะ เหตุผลตรงนี้คือ เราไม่ต้องการติดตั้งแบบที่มันจะถาม ftp user แต่ต้องการให้ติดตั้งได้อัตโนมัติ ให้แก้ไขดังนี้

    sudo vi /var/www/wordpress/wp-config.php

    โดยให้แทรกบรรทัด

    define('FS_METHOD', 'direct');

    ไว้ก่อนบรรทัดนี้ อยู่ประมาณ 10 บรรทัดนับจากท้ายไฟล์ครับ

    /* That’s all, stop editing! Happy blogging. */

    ผมคิดว่าหากเป็น CMS ตัวอื่นๆ ก็คงใช้แนวทางเดียวกันนี้ได้

    ขอจบเพียงเท่านี้ และขอขอบคุณข้อมูลจากคุณเกรียงไกร หนูทองคำ ครับ

  • อัปเดต wordpress เปลี่ยน theme และเพิ่ม plugins

    ผมได้รับความช่วยเหลือจากเพื่อนร่วมงาน น้องใหญ่ เพื่อที่จะปรับปรุงให้หน้าแรกไม่ยืดยาวจนเกินไปในลักษณะแสดงข้อความส่วนต้นๆของเรื่องเท่านั้น  ก็ได้ theme ชื่อ toothpaste ดังรูปtheme-toothpaste

    และได้เพิ่ม plugin ชื่อ Authors Widget เพื่อแสดงรายชื่อผู้ที่เขียนบล็อก เพื่อความสะดวก ดังรูป

    plugin-authors-widget

    และได้เพิ่ม plugin ช่ื่อ List Category Posts เพื่อแสดงเฉพาะรายการชื่อเรื่องเท่านั้นดูได้ในเมนู หมวดหมู่ ดังรูป

    plugin-list-category-posts

    และได้ตั้งค่าให้แสดง Categories, Authors และ Archives เป็นแบบ Drop Down List รวมทั้งตั้งให้แสดงหน้าแรกเพียง 3 เรื่องล่าสุด เพื่อให้หน้าจอสั้นลง

    หวังว่าเพื่อนๆคงถูกใจครับ

  • ตั้งค่าการเผยแพร่บทความให้อ่านได้เฉพาะสมาชิกที่ login

    ใน wordpress เราสามารถตั้งค่าการเผยแพร่บทความให้อ่านได้เฉพาะสมาชิกที่ login ทำได้โดยการติดตั้ง plugin เพิ่ม ผมได้ติดตั้ง plugin ชื่อ member access (member-access.1.1.6.zip) เพิ่มตามคำแนะนำของทีมงาน (ใหญ่และน้อง ศูนย์คอมฯ ขอบคุณครับ)

    วิธีใช้งานคือ เมื่อท่านเขียนบทความเสร็จ ตัดสินใจแล้วว่าจะเผยแพร่แบบให้สมาชิกที่ login เข้าสู่ระบบแล้วจะดูได้เท่านั้น (เพราะจำเป็นจริงๆ อาจมีความลับบางอย่างไม่อยากให้พี่ google ไปบอกต่อ)

    ให้ท่านดูที่ด้านขวามือ จะเห็นเป็น
    Status: Published Edit
    Visibility: Public Edit ซึ่งถูกต้องแล้ว

    จากนั้นให้เลือกตัวเลือกของ Member Access ด้านล่าง
    ตั้งค่าตัวเลือก Ignore the default settings and make this post visible only to members

    ผลลัพธ์จากการตั้งค่าครั้งนี้ ทำให้บทความไม่แสดงในหน้าเว็บไซต์ ถ้าไม่ login เข้าสู่ระบบก็จะไม่เห็นบทความ เมื่อคัดลอก link ส่งไปให้ ผู้ที่ได้รับ link ก็จะถูก redirect มายังหน้า login