all-in-one 6 (apache2+php5+mysql5+postgresql8)
apache2 + mysql5 + php5 + phpmyadmin
เตรียมสร้างไดเรกทอรี่ข้อมูลให้ apache2 และ mysql
อันนี้ลักไก่ ใช้คำสั่งเดียว แล้วสั่งหยุดบริการเลย
# aptitude install phpmyadmin mysql-server-5.0 php-apc
# /etc/init.d/apache2 stop
# /etc/init.d/mysql stop
ตัวคอนฟิกของ apache2 mysql และ php5 จะเอามาเก็บไว้ที่ /sys1/sysb
# mv /etc/apache2/ /sys1/sysb/etc/
# ln -sf /sys1/sysb/etc/apache2/ /etc
# mv /etc/mysql/ /sys1/sysb/etc/
# ln -sf /sys1/sysb/etc/mysql/ /etc
# mv /etc/php5 /sys1/sysb/etc/
# ln -sf /sys1/sysb/etc/php5 /etc
ตัวข้อมูล apache2 เอามาเก็บที่ /sys1/sysb
# mv /var/www /sys1/sysb/var/
# ln -sf /sys1/sysb/var/www /var
ตัวข้อมูลของ mysql ไม่สำรองแบบคัดลอกปกติ จึงเอามาเก็บไว้ที่ /sys1/syst แทน
# mkdir -p /sys1/syst/var/lib
# mv /var/lib/mysql /sys1/syst/var/lib
# mv /var/lib/mysql-cluster /sys1/syst/var/lib
# ln -sf /sys1/syst/var/lib/mysql /var/lib
# ln -sf /sys1/syst/var/lib/mysql-cluster /var/lib
สั่งให้บริการ
# /etc/init.d/mysql start
# /etc/init.d/apache2 start
เพิ่มผู้ใช้ admin ในระบบ
# adduser admin
ตั้งค่ารหัสผ่านของ root และผู้ใช้งาน admin
# mysql
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('********');
mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY '*********';
mysql> \q
postgresql-8.1 + phppgadmin
ต้องติดตั้งไปทีละตัว เพราะแพกเกจ phppgadmin ผูกกับ postgresql-7.4 ซึ่งเราไม่ต้องการ
เอา postgresql-8.1 มาก่อน แล้วหยุดการทำงาน
# aptitude install postgresql-8.1 php5-pgsql
# /etc/init.d/postgresql-8.1 stop
ย้ายคอนฟิกไป /sys1/sysb และย้ายข้อมูลไป /sys1/syst
# mv /etc/postgresql* /sys1/sysb/etc
# ln -sf /sys1/sysb/etc/postgresql* /etc
# mv /var/lib/postgresql/ /sys1/syst/var/lib
# ln -sf /sys1/syst/var/lib/postgresql/ /var/lib
ปรับให้เรียงภาษาไทยโดยการ initdb ใหม่ และปรับการอนุญาตใช้งาน
# dpkg-reconfigure locales
<--- เลือกให้มี th_TH.UTF-8
# su postgres
$ /usr/lib/postgresql/8.1/bin/initdb /var/lib/postgresql/8.1/temp --locale=th_TH.UTF-8
$ cd /var/lib/postgresql/8.1
$ cp -xa temp/* main
$ rm -rf temp
ปรับตั้งสิทธิ์
$ vi /etc/postgresql/8.1/main/pg_hba.conf
... #local all all ident sameuser local all all md5 host all all 192.168.0.0/16 md5 ...
สั่งเริ่ม postgresql ใหม่ และสร้างผู้ใช้งาน phppgadmin ชื่อ admin ให้เป็น superuser
$ exit
# /etc/init.d/postgresql-8.1 start
# su -l postgres -c "createuser -s -P admin"
ส่วนของ phppgadmin
ก่อนอื่นติดตั้งแพกเกจที่ขึ้นกับ phppgadmin ก่อน เหลือแค่ตัวเดียวคือ wwwconfig-common
# aptitude install wwwconfig-common
และไปดาวน์โหลด phppgadmin รุ่นของ testing มาติดตั้งเอง
# wget http://ftp.debianclub.org/debian/pool/main/p/phppgadmin/phppgadmin_4.1.3-0.1_all.deb
# dpkg -i phppgadmin_4.1.3-0.1_all.deb
ปรับตั้ง
# dpkg-reconfigure phppgadmin
Web server to reconfigure automatically: <<<--- Apache2
ปรับให้เรียกดูได้จากเฉพาะเครือข่ายภายใน
# vi /etc/phppgadmin/apache.conf
... order deny,allow deny from all allow from 127.0.0.0/255.0.0.0 allow from 192.168.0.0/16 # allow from all ...
เสร็จแล้ว
ต่อไปเป็นการปรับ apache2
ตั้งให้รากของเว็บ www.example.com อยู่ที /var/www/example.com
และของ www.example.org อยู่ที่ /var/www/example.org ตามลำดับ
# mkdir -p /var/www/{example.com,example.org}
กำหนดให้ www.example.com เป็นเว็บปริยาย
ต้องไปแก้ไขไฟล์ default ของ sites-enable
# vi /etc/apache2/sites-enable/000-default
NameVirtualHost * <VirtualHost *> #ServerAdmin webmaster@localhost ServerAdmin webmaster@example.com ServerName www.example.com ServerAlias example.com DocumentRoot /var/www/example.com/ <Directory /> Options FollowSymLinks #AllowOverride None AllowOverride All </Directory> <Directory /var/www/example.com/> Options Indexes FollowSymLinks MultiViews #AllowOverride None AllowOverride All Order allow,deny allow from all # This directive allows us to have apache2's default start page # in /apache2-default/, but still have / go to the right place #RedirectMatch ^/$ /apache2-default/ </Directory> ...
และ www.example.org ต้องปรับตั้งใหม่ โดยเอาตัวอย่างจาก default
# cd /etc/apache2/sites-available
# cp default example.org
# vi example.org
NameVirtualHost * <VirtualHost *> #ServerAdmin webmaster@localhost ServerAdmin webmaster@example.org ServerName www.example.org ServerAlias example.org DocumentRoot /var/www/example.org/ <Directory /> Options FollowSymLinks #AllowOverride None AllowOverride All </Directory> <Directory /var/www/example.org/> Options Indexes FollowSymLinks MultiViews ...
สั่งให้เปิดใช้งาน example.org
# a2ensite example.org
มอดูลที่น่าจะเปิดใช้งาน
# a2enmod rewrite
# a2enmod proxy
# a2enmod userdir
ให้รองรับการเข้ารหัสภาษาไทยได้หลายแบบ
# vi /etc/apache2/conf.d/charset
#AddDefaultCharset UTF-8 AddCharset TIS-620 .tis-620 .th AddCharset CP874 .cp874
เพิ่มเติมพิเศษ
สำหรับไพธอน ถ้าจะใช้งาน django ต้องติดตั้งมอดูลเพิ่ม
# aptitude install libapache2-mod-python python-psycopg python-mysqldb
# a2enmod mod_python
อีกนิดนึง ถ้าจะทำให้การใช้งานแบบ (เขียนโค๊ดเอง) ไม่ขึ้นต่อฐานข้อมูล ควรติดตั้ง adodb เพิ่ม
# aptitude install python-adodb python-psyco libphp-adodb
เริ่ม apache2 ใหม่เพื่อให้มอดูลใหม่ทำงาน
# /etc/init.d/apache2 restart
จบแล้ว
ทำสคริปต์สำรองข้อมูล
ทำสคริปต์เล็ก ๆ สำหรับสำรองข้อมูลทุกวัน (ฮาร์ดดิสก์ควรมีเนื้อที่พอสำหรับการนี้ด้วยนะครับ) ใส่ไว้ใน cron
เมื่อสำรองเสร็จแล้ว จะเก็บในชื่อ all.sql อยู่ใน /sys1/sysb/backupdb โดยแยกไปตามชื่อระบบฐานข้อมูล และให้เจ้าของเป็น admin ดูได้คนเดียว
ไฟล์เก่าของเมื่อวานจะถูก gzip เก็บไว้ในชื่อ all.sql.tar.gz (หากต้องการเก็บเกิน 2 วัน ฝากเขียนต่อเอาเองครับ)
ตั้งชื่อว่า d.cron-daily ใส่ไว้ใน /usr/local/sbin
# vi /usr/local/sbin/d.cron-daily
#!/bin/bash #BACKUP DB ROOT="/sys1/sysb/backupdb" BACKUPFILE="all.sql" function chkfile() { D=$1 U=$2 if [ ! -d "$ROOT/$D" ]; then mkdir -p "$ROOT/$D" chmod 770 "$ROOT/$D" chown $DB:$DB "$ROOT/$D" fi #GZIP OLD FILE (ONLY ONE LAST) if [ -f "$ROOT/$D/$BACKUPFILE" ]; then rm $ROOT/$D/$BACKUPFILE.tar.gz su -l $U -c "tar cfz $ROOT/$D/$BACKUPFILE.tar.gz $ROOT/$D/$BACKUPFILE" rm $ROOT/$D/$BACKUPFILE chmod 700 "$ROOT/$D/$BACKUPFILE.tar.gz" fi } # MYSQL if [ `which mysqldump` ]; then USER="admin" PASSWORD="MYSQL-ADMIN-PASSWORD" DB="mysql" chkfile $DB $USER su -l $USER -c "mysqldump -A -u$USER -p$PASSWORD > $ROOT/$DB/$BACKUPFILE" chmod 700 "$ROOT/$DB/$BACKUPFILE" fi # POSTGRESQL if [ `which pg_dumpall` ]; then USER="admin" DB="postgres" chkfile $DB $USER su -l postgres -c "pg_dumpall > $ROOT/$DB/$BACKUPFILE" chown $USER "$ROOT/$DB/$BACKUPFILE" chmod 700 "$ROOT/$DB/$BACKUPFILE" fi
ตั้งให้รันได้
# chmod 700 /usr/local/sbin/d.cron-daily
ทำให้รันตอนเที่ยงคืนทุกวัน
# crontab -e
... #DAILY CRON TASK: BACKUP DB 20 0 * * * /usr/local/sbin/d.cron-daily ...
เสร็จ
- Printer-friendly version
- Log in or register to post comments
- 3770 reads
Recent comments