nano /usr/local/vesta/bin/v-change-server-ip
ก็อปปี้ Script นี้ แล้ว Save
#!/bin/sh
#script to change ips on a VestaCP server.
#usage:
# $0 <oldip> <newip>
LOG=/var/log/vesta/system.log
MYUID=`/usr/bin/id -u`
if [ "$MYUID" != 0 ]; then
echo "You require Root Access to run this script";
exit 0;
fi
if [ $# != 2 ] && [ $# != 3 ]; then
echo "Usage:";
echo "$0 <oldip> <newip> [<file>]";
echo "you gave #$#: $0 $1 $2 $3";
exit 0;
fi
OLD_IP=$1
NEW_IP=$2
HAVE_HTTPD=1
HAVE_NGINX=1
DATE=`date '+%F %X'`
BIN=`echo $0 | awk -F/ '{print $NF}'`
log()
{
echo -e "$1";
echo -e "$1" >> $LOG;
}
swapfile()
{
if [ ! -e $1 ]; then
log "Cannot Find $1 to change the IPs. Skipping...";
return;
fi
TEMP="perl -pi -e 's/${OLD_IP}/${NEW_IP}/g' $1"
eval $TEMP;
log "$DATE $BIN $1\t: $OLD_IP -> $NEW_IP";
}
if [ $# = 3 ]; then
swapfile $3;
exit 0;
fi
IPFILE_OLD=/usr/local/vesta/data/ips/$OLD_IP
IPFILE_NEW=/usr/local/vesta/data/ips/$NEW_IP
if [ ! -e $IPFILE_OLD ]; then
echo -n "$IPFILE_OLD does not exist. Do you want to continue anyway? (y/n) : ";
read YESNO;
if [ "$YESNO" != "y" ]; then
exit 0;
fi
else
mv -f $IPFILE_OLD $IPFILE_NEW
log "$DATE $0 $IPFILE_OLD\t: $OLD_IP -> $NEW_IP";
fi
if [ "${HAVE_HTTPD}" -eq 1 ]; then
if [ -e /etc/httpd/conf.d/${OLD_IP}.conf ]; then
swapfile /etc/httpd/conf.d/${OLD_IP}.conf
mv -f /etc/httpd/conf.d/$OLD_IP.conf /etc/httpd/conf.d/${NEW_IP}.conf
fi
swapfile /etc/httpd/conf.d/mod_extract_forwarded.conf
fi
if [ "${HAVE_NGINX}" -eq 1 ]; then
if [ -e /etc/nginx/conf.d/${OLD_IP}.conf ]; then
swapfile /etc/nginx/conf.d/${OLD_IP}.conf
mv -f /etc/nginx/conf.d/$OLD_IP.conf /etc/nginx/conf.d/${NEW_IP}.conf
fi
fi
swapfile /etc/hosts
ULDDU=/usr/local/vesta/data/users
for i in `ls $ULDDU`; do
{
if [ ! -d $ULDDU/$i ]; then
continue;
fi
swapfile $ULDDU/$i/web.conf
swapfile $ULDDU/$i/dns.conf
for j in `ls $ULDDU/$i/dns/*.conf`; do
{
swapfile $j
};
done;
if [ "${HAVE_HTTPD}" -eq 1 ]; then
swapfile /home/$i/conf/web/httpd.conf
fi
if [ "${HAVE_NGINX}" -eq 1 ]; then
swapfile /home/$i/conf/web/nginx.conf
fi
for j in `ls /home/$i/conf/dns/*.db`; do
{
swapfile $j
};
done;
};
done;
#this is needed to update the serial in the db files.
if [ "${HAVE_HTTPD}" -eq 1 ]; then
service httpd restart
fi
if [ "${HAVE_NGINX}" -eq 1 ]; then
service nginx restart
fi
echo "*** Done swapping $OLD_IP to $NEW_IP ***";
chmod 755 /usr/local/vesta/bin/v-change-server-ip
วิธีใช้งาน
/usr/local/vesta/bin/v-change-server-ip <oldip> <newip>
ตัวอย่าง /usr/local/vesta/bin/v-change-server-ip 192.168.1.5 10.10.10.5
ปล. IP Server ต้องเปลี่ยนเอง
วันอังคารที่ 28 เมษายน พ.ศ. 2558
จัดการ Hosting ด้วย VestaCP
VestaCP คือ?
หลายเว็บไซต์ได้อธิบายเกี่ยวกับ VestaCP
http://www.thaiwebnews.com/vestacp/
http://www.hostpacific.com/introducing-vesta-cp/
ซึ่งพูดง่ายๆเลยว่า มันคือตัวจัดการ Hosting ที่แจกไว้ใช้กันฟรีๆ
การติดตั้ง
http://www.vestacp.com/#install
ตั้งค่าเพิ่มเติม
เปลี่ยนรหัสผ่าน #v-change-user-password username new-password
เปลี่ยน root mysql #nano /usr/local/vesta/conf/mysql.conf
แก้ไฟล์ HTML หน้าแรกเวลาเพิ่มโดเมน #nano /usr/local/vesta/data/templates/web/skel/public_html/index.html
apache เปิด mods-enabled
#cd /etc/apache2
#cp mods-available/mime_magic.load mods-enabled/mime_magic.load
#cp mods-available/mime_magic.conf mods-enabled/mime_magic.conf
#cp mods-available/cgi.load mods-enabled/cgi.load
#cp mods-available/include.load mods-enabled/include.load
#cp mods-available/headers.load mods-enabled/headers.load
ตั้งค่า timezone ให้ตรงใน php.ini
#nano /etc/php5/apache2/php.ini
แก้ไขเป็น date.timezone = Asia/Bangkok
อ่านรายละเอียดเพิ่มเติม http://www.vestacp.com/docs/
หลายเว็บไซต์ได้อธิบายเกี่ยวกับ VestaCP
http://www.thaiwebnews.com/vestacp/
http://www.hostpacific.com/introducing-vesta-cp/
ซึ่งพูดง่ายๆเลยว่า มันคือตัวจัดการ Hosting ที่แจกไว้ใช้กันฟรีๆ
การติดตั้ง
http://www.vestacp.com/#install
ตั้งค่าเพิ่มเติม
เปลี่ยนรหัสผ่าน #v-change-user-password username new-password
เปลี่ยน root mysql #nano /usr/local/vesta/conf/mysql.conf
แก้ไฟล์ HTML หน้าแรกเวลาเพิ่มโดเมน #nano /usr/local/vesta/data/templates/web/skel/public_html/index.html
apache เปิด mods-enabled
#cd /etc/apache2
#cp mods-available/mime_magic.load mods-enabled/mime_magic.load
#cp mods-available/mime_magic.conf mods-enabled/mime_magic.conf
#cp mods-available/cgi.load mods-enabled/cgi.load
#cp mods-available/include.load mods-enabled/include.load
#cp mods-available/headers.load mods-enabled/headers.load
ตั้งค่า timezone ให้ตรงใน php.ini
#nano /etc/php5/apache2/php.ini
แก้ไขเป็น date.timezone = Asia/Bangkok
อ่านรายละเอียดเพิ่มเติม http://www.vestacp.com/docs/
วันอังคารที่ 17 มีนาคม พ.ศ. 2558
วิธีการเขียน php ให้เพิ่ม user ใน ubuntu
ไฟล์ php
<?php
$user = $_GET['user'];
echo exec('sudo useradd -m -b /home -s /bin/bash $user');
?>
แก้ไขไฟล์ /etc/sudoers
#nano /etc/sudoers
โดยเพิ่ม
www-data ALL=(root) NOPASSWD: /usr/sbin/useradd
ทดสอบสอบรันไฟล์ php
<?php
$user = $_GET['user'];
echo exec('sudo useradd -m -b /home -s /bin/bash $user');
?>
แก้ไขไฟล์ /etc/sudoers
#nano /etc/sudoers
โดยเพิ่ม
www-data ALL=(root) NOPASSWD: /usr/sbin/useradd
ทดสอบสอบรันไฟล์ php
วันอังคารที่ 3 มีนาคม พ.ศ. 2558
เขียน scrip python เพื่อสำรองฐานข้อมูล mysqldump
# nano autobk.py
#! Python Auto Backup database
import subprocess
cmd = 'mysqldump -uroot -pPassword --all-database --lock-all-table | bzip2 -c > /backup/db-backup_$(date +%Y%m%d_%H%M%S).sql.bz2'
pid = subprocess.call(cmd, shell=True)
exit()
หากเป็นเซอร์เวอร์อื่น
#! Python Auto Backup database
import subprocess
cmd = 'mysqldump -p3306 -h 127.0.0.1 -uroot -pPassword --all-database --lock-all-table | bzip2 -c > /backup/db-backup_$(date +%Y%m%d_%H%M%S).sql.bz2'
pid = subprocess.call(cmd, shell=True)
exit()
อ้างอิง http://apro45.blogspot.com/2014/05/crontab-mysqldump.html
#! Python Auto Backup database
import subprocess
cmd = 'mysqldump -uroot -pPassword --all-database --lock-all-table | bzip2 -c > /backup/db-backup_$(date +%Y%m%d_%H%M%S).sql.bz2'
pid = subprocess.call(cmd, shell=True)
exit()
หากเป็นเซอร์เวอร์อื่น
#! Python Auto Backup database
import subprocess
cmd = 'mysqldump -p3306 -h 127.0.0.1 -uroot -pPassword --all-database --lock-all-table | bzip2 -c > /backup/db-backup_$(date +%Y%m%d_%H%M%S).sql.bz2'
pid = subprocess.call(cmd, shell=True)
exit()
อ้างอิง http://apro45.blogspot.com/2014/05/crontab-mysqldump.html
FTP ด้วย bash shell script
สร้าง bash shell script ให้ดึงไฟล์ .sql.bz2 ใน /home/backup_db ไปไว้ที่ FTP โฟลเดอร์ file_db
- [host] = hostname หรือ ip server
- [user] = ftp username
- [pass] = ftp password
ตัวอย่างไฟล์
#!/bin/sh
cd /home/backup_db
ftp -n [host] << EOF
prompt
user [user] [pass]
cd file_db
binary
mput *.sql.bz2
bye
EOF
exit 0
- [host] = hostname หรือ ip server
- [user] = ftp username
- [pass] = ftp password
ตัวอย่างไฟล์
#!/bin/sh
cd /home/backup_db
ftp -n [host] << EOF
prompt
user [user] [pass]
cd file_db
binary
mput *.sql.bz2
bye
EOF
exit 0
แก้ปัญหา mysqldump กับ crontab
วิธีการแก้ปัญหา เมื่อสั่ง Crontab สำรองข้อมูล MySQL แล้วไม่ทำงานให้ หรือทำงานแปปเดียว
- ต้องใส่ตัวเรียกเต็มๆของโปรแกรม เช่น /usr/local/bin/mysqldump , /usr/bin/bzip2
ตัวอย่างไฟล์สำรองข้อมูล MySQL
#!/bin/sh
today=$(date '+%d')
/usr/local/bin/mysqldump -uUSER -pPASS --all-database --lock-all-table| /usr/bin/bzip2 -c > /home/backup_db/db-date"$today".sql.bz2
- ต้องใส่ตัวเรียกเต็มๆของโปรแกรม เช่น /usr/local/bin/mysqldump , /usr/bin/bzip2
ตัวอย่างไฟล์สำรองข้อมูล MySQL
#!/bin/sh
today=$(date '+%d')
/usr/local/bin/mysqldump -uUSER -pPASS --all-database --lock-all-table| /usr/bin/bzip2 -c > /home/backup_db/db-date"$today".sql.bz2
วันจันทร์ที่ 23 กุมภาพันธ์ พ.ศ. 2558
การประยุกต์ใช้ Webmin Samba Ftp Apache และให้ User Authen กับ Radius (Ubuntu14.04)
1. ติดตั้ง webmin ตามลิงก์ http://sulkiflee-n.blogspot.com/2013/02/webmin-ubuntu.html
#apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python
#wget http://prdownloads.sourceforge.net/sourceforge/webadmin/webmin_1.690_all.deb
#dpkg --install webmin_1.690_all.deb
2. ติดตั้ง Apache
#apt-get install apache2
#cd /etc/apache2/mods-enabled/
#ln -s ../mods-available/userdir.load
#ln -s ../mods-available/userdir.conf
3. ติดตั้ง Ftp
#apt-get install vsftpd
แก้ไฟล์ /etc/vsftpd.conf
#nano /etc/vsftpd.conf
local_umask = 002
anonymous_enable=YES
local_enable=YES
write_enable=YES
allow_writeable_chroot=YES
user_sub_token=$USER
local_root=/home/$USER
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
#touch /etc/vsftpd.chroot_list
4. ติดตั้ง Samba
#apt-get install samba samba-common python-glade2 system-config-samba
แก้ไฟล์ /etc/samba/smb.conf
#nano /etc/samba/smb.conf
unix password sync = yes
[aritc]
comment = File Server Share
path = /var/www/html/aritc
browsable = yes
guest ok = yes
read only = no
create mask = 0755
[homes]
comment = User Directories
browseable = no
valid users = %S
writable = yes
create mask = 0755
directory mask = 0755
5. ติดตั้ง pam radius module ตามลิงก์ http://opensource.cc.psu.ac.th/ติดตั้ง_pam_radius_module_บน_ubuntu
#apt-get install libpam-radius-auth
6. เพิ่ม User ใช้งาน
#sudo useradd -m -b /home -s /bin/bash user1.a
#ln -s /home/user1.a/public_html/ /var/www/html/user1.a
7. การใช้งาน
- อัพโหลดไฟล์โดยใช้ samba แบบ public รูปแบบ \\ip server
- อัพโหลดไฟล์ส่วนตัวโดยใช้ Ftp (YRU Authen) รูปแบบ ftp://ip server
หากต้องการแชร์ ไฟล์ให้คนอื่นเห็น ให้สร้างโฟลเดอร์ public_html แล้วอัพไฟล์ใส่ในนั้น
8. การเรียกดูแบบ URL ผ่าน Browser
- http://ip server
#apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python
#wget http://prdownloads.sourceforge.net/sourceforge/webadmin/webmin_1.690_all.deb
#dpkg --install webmin_1.690_all.deb
2. ติดตั้ง Apache
#apt-get install apache2
#cd /etc/apache2/mods-enabled/
#ln -s ../mods-available/userdir.load
#ln -s ../mods-available/userdir.conf
3. ติดตั้ง Ftp
#apt-get install vsftpd
แก้ไฟล์ /etc/vsftpd.conf
#nano /etc/vsftpd.conf
local_umask = 002
anonymous_enable=YES
local_enable=YES
write_enable=YES
allow_writeable_chroot=YES
user_sub_token=$USER
local_root=/home/$USER
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
#touch /etc/vsftpd.chroot_list
4. ติดตั้ง Samba
#apt-get install samba samba-common python-glade2 system-config-samba
แก้ไฟล์ /etc/samba/smb.conf
#nano /etc/samba/smb.conf
unix password sync = yes
[aritc]
comment = File Server Share
path = /var/www/html/aritc
browsable = yes
guest ok = yes
read only = no
create mask = 0755
[homes]
comment = User Directories
browseable = no
valid users = %S
writable = yes
create mask = 0755
directory mask = 0755
5. ติดตั้ง pam radius module ตามลิงก์ http://opensource.cc.psu.ac.th/ติดตั้ง_pam_radius_module_บน_ubuntu
#apt-get install libpam-radius-auth
6. เพิ่ม User ใช้งาน
#sudo useradd -m -b /home -s /bin/bash user1.a
#ln -s /home/user1.a/public_html/ /var/www/html/user1.a
7. การใช้งาน
- อัพโหลดไฟล์โดยใช้ samba แบบ public รูปแบบ \\ip server
- อัพโหลดไฟล์ส่วนตัวโดยใช้ Ftp (YRU Authen) รูปแบบ ftp://ip server
หากต้องการแชร์ ไฟล์ให้คนอื่นเห็น ให้สร้างโฟลเดอร์ public_html แล้วอัพไฟล์ใส่ในนั้น
8. การเรียกดูแบบ URL ผ่าน Browser
- http://ip server
วันจันทร์ที่ 5 มกราคม พ.ศ. 2558
ตั้งค่าให้ Connect MySQL จากที่อื่นได้ (Ubuntu)
แก้ไขไฟล์ /etc/mysql/my.cnf
nano /etc/mysql/my.cnf
port = 3306 (ตั้งค่า port)
#bind-address = 127.0.0.1 (ใส่ # ข้างหน้า Access ได้จากทุกเครื่อง แต่ไม่ค่อยปลอดภัย)
เสร็จแล้วบันทึก แล้ว restart mysql
/etc/init.d/mysql restart
ขั้นต่อไปต้อง Grant Access ให้ User เพื่อให้ใช้ DB ได้
mysql -u root -p
mysql> GRANT ALL ON ชื่อฐาน.* TO ผู้ใช้@'%' IDENTIFIED BY 'รหัสผ่าน';
mysql> quit
ทดสอบเชื่อมต่อได้เลย
nano /etc/mysql/my.cnf
port = 3306 (ตั้งค่า port)
#bind-address = 127.0.0.1 (ใส่ # ข้างหน้า Access ได้จากทุกเครื่อง แต่ไม่ค่อยปลอดภัย)
เสร็จแล้วบันทึก แล้ว restart mysql
/etc/init.d/mysql restart
ขั้นต่อไปต้อง Grant Access ให้ User เพื่อให้ใช้ DB ได้
mysql -u root -p
mysql> GRANT ALL ON ชื่อฐาน.* TO ผู้ใช้@'%' IDENTIFIED BY 'รหัสผ่าน';
mysql> quit
ทดสอบเชื่อมต่อได้เลย
สมัครสมาชิก:
บทความ (Atom)