WordPress เป็น CMS ที่ได้รับความนิยม ออกแบบมารองรับ Multisite ทำให้คุณสามารถใช้การติดตั้ง WordPress ครั้งเดียวแล้วตั้งค่าแยกเว็บไซต์ออกเป็นหลายๆ เว็บตาม domain ที่เรากำหนดได้ ข้อมูลและเนื้อหาจะแยกออกจากกัน อย่างสิ้นเชิง ส่วนการจัดการ website ก็สามารถ login เข้าไปจัดการในแต่ละเว็บได้อย่างอิสระ จะยกตัวอย่าง 2 แบบคือ sub-domain และ domain แยก ดังนี้
- fffee.org
- andrew.fffee.org
- fffeex.org
มาลองติดตั้งกัน เริ่มจากติดตั้ง nginx, mysql serverv และ php กันก่อน
apt-get install -y nginx mysql-server php5-fpm php5-mysql php5-curl php5-mcrypt php5-gd
สร้างไดเรคทอรีสำหรับ wordpress
mkdir /usr/share/nginx/wordpress
ลบ /etc/nginx/sites-enabled/default เราจะเขียน config สำหรับ wordpress ใหม่
rm /etc/nginx/sites-enabled/default
เขียน config ใหม่ตั้งชื่อไฟล์ /etc/nginx/sites-enabled/wp ดังนี้
server { listen [::]:80 ipv6only=off; server_name fffee.org *.fffee.org; root /usr/share/nginx/wordpress; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$args ; } location ~ /favicon.ico { access_log off; log_not_found off; } location ~ \.php$ { try_files $uri /index.php; include fastcgi_params; fastcgi_pass unix:/var/run/php5-fpm.sock; } access_log /var/log/nginx/$host-access.log; error_log /var/log/nginx/wpms-error.log; }
สร้าง link ไปยัง site-enable
ln -s /etc/nginx/sites-available/wp /etc/nginx/sites-enabled/wp
ทดสอบ config ว่าไม่มีอะไรผิดพลาด
service nginx configtest
สั่ง restart nginx
service nginx restart
จากนั้นสร้างฐานข้อมูล wordpress รองรับการติดตั้ง wordpess
mysql -u root -p -e "create database wordpress"
กำหนด user และ privileges ให้ผู้ admin ใช้รหัสผ่าน password เข้าถึงฐานข้อมูล wordpess
mysql -u root -p -e "grant all privileges on wordpress.* to admin@localhost identified by 'password'"
สั่ง reload privilege
mysqladmin -u root -p reload
ติดตั้ง wordpress ดาวน์โหลดรุ่นล่าสุด
wget http://wordpress.org/latest.tar.gz
แตกไฟล์ออก
tar -xf latest.tar.gz
ย้ายไปยัง /usr/share/nginx/wordpress/
mv wordpress/* /usr/share/nginx/wordpress/
เปลี่ยน owner เป็น www-data เพื่ออ่านเขียนไฟล์ได้
chown -R www-data:www-data /usr/share/nginx/wordpress
สั่งติดตั้ง wordpess ที่ domain หลักตามปกติ http://fffee.org
แก้ไข wp-config.php ใหม่ เพื่อกำหนดให้เป็น multi site เพื่อเพิ่ม site ใหม่เข้าไป
nano /usr/share/nginx/wordpress/wp-config.php
เพิ่ม config ข้างล่าง ก่อน comment ว่า /* That’s all, stop editing! Happy blogging. */
/* Multisite settings */ define( 'WP_ALLOW_MULTISITE', true );
จากนั้น login เข้าไปที่ Tools > Network Setup เลือก sub domain
แก้ไข wp-config.php และ .htaccess ตามข้อมูลที่ wordpress ให้ข้อมูลมา
กลับมาที่หน้า My Site > Network Admin > Site เพิ่ม site ที่อยู่ภายใต้ domain ให้ครบ
เพิ่ม domain mapping สำหรับเว็บที่ไม่ได้อยู่ภายใต้ sub domain เดียวกันดังนี้
apt-get install unzip
wget http://downloads.wordpress.org/plugin/wordpress-mu-domain-mapping.latest-stable.zip
unzip wordpress-mu-domain-mapping.latest-stable.zip
ย้าย plugin ไปยังไดเรคทอรี plugin
mv wordpress-mu-domain-mapping /usr/share/nginx/wordpress/wp-content/plugins/
คัดลอก sunrise.php ไปยัง wp-content
cp /usr/share/nginx/wordpress/wp-content/plugins/wordpress-mu-domain-mapping/sunrise.php /usr/share/nginx/wordpress/wp-content/
แก้ /usr/share/nginx/wordpress/wp-config.php เพิ่ม
define('SUNRISE', 'on');
activate plugin แก้ไข domain config
ตั้งค่า domain mapping
เพิ่ม custom plugin
mkdir /usr/share/nginx/wordpress/wp-content/mu-plugins
nano /usr/share/nginx/wordpress/wp-content/mu-plugins/wpms_blogid.php
เพิ่มโค้ดลงไป
<?php add_filter( 'wpmu_blogs_columns', 'do_get_id' ); add_action( 'manage_sites_custom_column', 'do_add_columns', 10, 2 ); add_action( 'manage_blogs_custom_column', 'do_add_columns', 10, 2 ); function do_add_columns( $column_name, $blog_id ) { if ( 'blog_id' === $column_name ) echo $blog_id; return $column_name; } function do_get_id( $columns ) { $columns['blog_id'] = 'ID'; return $columns; }
เพิ่ม script ลงไปเพื่อให้หน้า site แสดงผล ID
คลิกไปที่ Setting > Domain ให้เพิ่ม Domain เพื่ออ้างอิงกับ site ที่เราสร้างขึ้น (อันที่ 3)
ให้เข้าไปที่
- http://fffee.org/wp-admin/
- http://andrew.fffee.org/wp-admin/
- http://fffeex.org/wp-admin/
เพื่อจัดการ wordpress ของแต่ละเว็บได้เลย ซึ่งการจัดการจะแยกกันอย่างอิสระ
เว็บหลัก http://fffee.org
เว็บภายใต้ sub-domain http://andrew.fffee.org
เว็บภายใต้ domain http://fffeex.org