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
- 4014 reads







Recent comments