หากคุณเคยใช้ TinyURL ที่ย่อ url ยาวๆ ให้สั้นลง แล้วอยากทำใช้เองบ้าง บทความนี้จะแนะนำวิธีติดตั้งง่ายๆ ด้วย yourls
YOURLS หรือ Your Own URL Shortener เป็นโปรแกรมพัฒนาด้วย PHP โดยใช้ฐานข้อมูล MySQL ในการเก็บข้อมูลการเชื่อมโยง (map) ระหว่าง url แบบสั้นๆ กับ url ที่ดั้งเดิม แล้วยังเก็บข้อมูลการเรียกใช้ url แบบย่อ สามารถนำไปทำเป็นสถิติ แสดงผลเป็นกราฟได้ด้วย
ในที่นี้จะทดลองติดตั้งบน CentOS 6 โดยใช้ yum install
หมายเหตุ
- yourls อยู่ใน EPEL ดูวิธีการติดตั้งได้ที่ yum แพ็คเกจบน CentOS 6 ได้มากขึ้นด้วย EPEL
- สำหรับลีนุกซ์ตระกูลอื่น สามารถดาวน์โหลดไฟล์ zip ตัวโปรแกรมจากเว็บไซต์ yourls.org แล้วนำมาแตกไฟล์ติดตั้งเองได้ วิธีการคอนฟิกเหมือนกัน
ใช้คำสั่ง yum install ติดตั้ง yourls
[root@cent6 ~]# yum install yourls
สร้างฐานข้อมูล yourls
สร้างฐานข้อมูลและ GRANT สิทธิ์ สำหรับใช้ใน yourls
mysql> CREATE DATABASE yourls;
mysql> GRANT ALL ON yourls.* TO 'yourls'@'localhost' IDENTIFIED BY 'password';
ในที่นี้สร้างฐานข้อมูลชื่อ yourls แล้วสร้าง user ชื่อ yourls ให้สามารถใช้ได้จาก localhost เท่านั้น แล้วต้องระบุรหัสผ่าน password
แนะนำให้เปลี่ยน password เป็นรหัสผ่านที่ยากแก่การเดา
แก้ไขคอนฟิกไฟล์ yourls
ไฟล์คอนฟิกหลักของ yourls จะอยู่ที่ /etc/yourls/config.php
แก้ไขไฟล์คอนฟิก MySQL settings ให้ตรงกับฐานข้อมูล ชื่อ user, password ที่สร้างไว้ด้านบน
[root@cent6 ~]# vi /etc/yourls/config.php ... /* ** MySQL settings - You can get this info from your web host */
/** MySQL database username */
define( 'YOURLS_DB_USER', 'yourls' );
/** MySQL database password */
define( 'YOURLS_DB_PASS', 'password' );
/** The name of the database for YOURLS */
define( 'YOURLS_DB_NAME', 'yourls' );
/** MySQL hostname */ define( 'YOURLS_DB_HOST', 'localhost' );
/** MySQL tables prefix */ define( 'YOURLS_DB_PREFIX', 'yourls_' );
/* ** Site options */
/** YOURLS installation URL -- all lowercase and with no trailing slash.
** If you define it to "http://site.com", don't use "http://www.site.com" in your browser (and vice-versa) */
define( 'YOURLS_SITE', 'http://192.168.5.6/yourls' );
...
/** A random secret hash used to encrypt cookies. You don't have to remember it, make it long and complicated. Hint: copy from http://yourls.org/cookie **/
define( 'YOURLS_COOKIEKEY', 'adfspoufaqpfG(B3Y%xDGKnx' );
/** Username(s) and password(s) allowed to access the site. Passwords either in plain text or as salted hashes.
** Read http://yourls.org/userpassword for more information */
$yourls_user_passwords = array( 'admin' => 'password', );
คำอธิบายในส่วนคอนฟิกของการเรียกใช้จากเว็บไซต์ Site options
- YOURLS_SITE ดีฟอลต์จากการติดตั้งด้วย yum การเรียกใช้โปรแกรมผ่านเว็บ ต้องระบุ yourls หลัง hostname หรือ IP Address ของเว็บเซิร์ฟเวอร์
ตัวอย่างคอนฟิกการเรียกใช้เว็บของ yourls
[root@cent6 ~]# cat /etc/httpd/conf.d/yourls.conf
Alias /yourls /usr/share/yourls
<Directory /usr/share/yourls>
AllowOverride All
</Directory>
เช่นถ้า IP ของเว็บเซิร์ฟเวอร์ คือ 192.168.5.6 ค่าคอนฟิก YOURLS_SITE ก็คือ http://192.168.5.6/yourls
- YOURLS_COOKIEKEY ให้ใส่ตัวหนังสือตัวเลขอะไรก็ได้ เพื่อใช้เข้ารหัส cookie
- $yourls_user_passwords ระบุชื่อ username, password ของ admin ในการเข้าไปแก้ไขข้อมูล yourls ผ่านหน้าเว็บ
เนื่องจากการติดตั้ง yourls จาก yum มีการเพิ่มคอนฟิกของ Apache ต้องมีการรีสตาร์ตเซอร์วิส httpd
[root@cent6 ~]# service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ]
ติดตั้งผ่านหน้าเว็บ admin
เปิดเบราเซอร์ชี้ไปที่ http://192.168.5.6/yourls/admin/install.php
คลิ้กปุ่ม [Install YOURS] หน้าเว็บจะทำการสร้างตาราง (table) ในฐานข้อมูลที่กำหนดไว้
ตัวอย่างผลลัพธ์ของการสร้าง จะมี 3 ตาราง ถูกสร้างขึ้น
Table ‘yourls_url’ created.
Table ‘yourls_options’ created.
Table ‘yourls_log’ created.
YOURLS tables successfully created.
ลองใช้คำสั่ง mysql ดูเพื่อดูตารางที่ถูกสร้างขึ้น
mysql> CONNECT yourls mysql> SHOW TABLES; +------------------+ | Tables_in_yourls | +------------------+ | yourls_log | | yourls_options | | yourls_url | +------------------+ 3 rows in set (0.00 sec)
แต่มีการแสดงข้อผิดพลาดจากการติดตั้งคือ ไม่สามารถสร้างไฟล์ .htaccess ในไดเร็คทอรี root ของ yourls ได้
Could not write file .htaccess in YOURLS root directory. You will have to do it manually. See how.
ต้องสร้างไฟล์ .htaccess ขึ้นมาเองด้วย root ในไดเร็คทอรีที่ติดตั้ง yourls สำหรับการติดตั้งด้วย yum บน CentOS จะอยู่ใน /usr/share/yourls/
[root@cent6 ~]# cd /usr/share/yourls/
ตัวอย่างการสร้างไฟล์ .htaccess ในกรณีที่มีชื่อ url ต่อท้ายชื่อ hostname หรือ IP Address (http://192.168.5.6/yourls/)
[root@cent6 yourls]# vi .htaccess # BEGIN YOURLS <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /yourls/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /yourls/yourls-loader.php [L] </IfModule> # END YOURLS
หลังสร้างไฟล์ .htaccess เสร็จ คลิ้กที่ลิ้งค์ >> YOURLS Administration Page
จะขึ้นหน้า log in ในใส่ Username, Password ให้ใส่ username, password ที่ระบุไว้ในตัวแปร $yourls_user_passwords ในไฟล์ /etc/yourls/config.php
หากล็อกอินสำเร็จจะเข้าสู่หน้า admin ของ yourls
ถึงตอนนี้คุณก็มีเว็บที่สามารถใช้ย่อ url ได้แล้ว
ดีฟอลต์จากการติดตั้ง จะมีชื่อ url แบบสั้น มาให้ 3 ชื่อ ตัวอย่างเช่น ถ้าเรียกด้วยชื่อย่อ (Short URL) http://192.168.5.6/yourls/ozhblog จะถูก yourls แปลงไปเป็นชื่อเว็บ (Original URL) http://planetozh.com/blog/
หากต้องการเพิ่มข้อมูลชื่อเว็บไซต์ที่ต้องการย่อ ให้ใส่ชื่อเว็บไซต์เต็มๆ ในช่องหลังคำว่า Enter the URL: แล้วกดปุ่ม [Shorten The URL] เพื่อให้โปรแกรมสร้างชื่อแบบสั้นขึ้นมาเองโดยอัตโนมัติ หรือถ้าต้องการระบุชื่อสั้นเอง ก็ให้กรอกชื่อสั้นลงไปหลังคำว่า Custom short URL:
ตอนนี้ถ้าเราเรียกเว็บ http://192.168.5.6/yourls/fb จะถูกแปลงไปเป็น http://www.facebook.com โดยอัตโนมัติ
ลองเลื่อนเมาส์ไปตรงคอลัมน์ Action ในแถวของข้อมูล URL จะมีไอคอนแสดงขึ้นมา คลิ้กที่รูปกราฟ จะสามารถดูสถิติการเรียกใช้ชื่อย่อของ Short URL นั้นๆ ได้
ตัวอย่างกราฟสถิติการเรียกใช้ชื่อย่อ http://192.168.5.6/yourls/fb
ถ้าไม่ต้องการระบุ /yourls/ ก็อาจคอนฟิก VirtualHost หรือแก้ไขคอนฟิก DocumentRoot ของ Apache ให้ชี้ไปที่ไดเร็คทอรี root ที่ติดตั้ง yourls แล้วก็แก้ไขไฟล์ .htaccess โดยเปลี่ยนจาก /yourls/ เหลือแค่ /
ลองนำไปใช้กันดูครับ
ข้อมูลอ้างอิง
- Your Own URL Shortener
- TinyURL.com – shorten that long URL into tiny URL
- คอนฟิกหลายชื่อเว็บไซต์บนเว็บเซิร์ฟเวอร์เครื่องเดียวด้วย Apache VirtualHost