mysql指令速記

我實在是覺得透過 cpanel來增新mysql user有點缺乏效率。
還是不用指令不爽呀… ( 以下指令需要以root身分登入mysql )

(1) 新增使用者
create user ‘使用者名’@’localhost’ identified by ‘密碼’;

(2) 新增資料庫
create database 資料庫名;

(3) 使用資料庫
use 資料庫名;

(4) 設定權限  ( 對某個資料庫的所有tables 設定給某個user )
grant ALL PRIVILEGES on 資料庫名.* to ‘使用者名’@’localhost’;

(5) 砍掉資料庫
drop database 資料庫名;

(6) 砍掉使用者
drop user ‘使用者名’@’localhost’;

mysql export import

如果要備分或是還原資料庫,遇到資料庫超過一定的大小,例如20MB之後,許多php版本的自動匯出/匯入程式都會出問題。因為php程式會受到 max_upload_size, max_execution_time等參數的限制。甚至連phpmyadmin也會有不管用的時候。

遇到這種時候,如果追求速度(不計難度),最有效率的方法,自然是透過ssh登入,直接下mysqldump指令來解決問題。

匯出: mysqldump -u 使用者名稱 -p –opt  -h localhost  資料庫名稱 > 檔案名.sql
匯入: mysql -u 使用者名稱 -p 資料庫名稱 < 檔案名.sql

然而,上述的方法,牽扯到使用ssh。這對很多只會用ftp的使用者是一大門檻。當然,也是有不需要ssh的解法。
(*) 匯出   backup your mysql database using php 

程式在這邊,使用方法:
(1) 修改這一行
backup_tables(‘localhost’,"使用者名","密碼","資料庫名");
(2) 透過網頁來啟動這個php檔。
(3) 執行完後,這個php檔會自動生成一個mysql database的匯出檔。再用ftp下載即可。

這個程式看起來還滿複雜的,有些人心裡應該會有疑惑,明明php也可以直接呼叫 linux的指令吧? php可以做這件事,但是,在虛擬主機的環境中,為了安全性,這個直接呼叫 linux指令功能一向是被關閉的。所以才需要寫得這麼麻煩。

(*) 匯入  BigDump

使用方法如下:
(1) 在bigdump的官網上,下載bigdump.php這個檔案的壓縮檔。並且解壓縮。
(2) 修改bigdump.php的內容

$db_server = '主機名稱';(一般為localhost)
$db_name = '資料庫名稱';
$db_username = '使用者帳號';
>$db_password = '使用者密碼'

(3)  修改bigdump.php的內容

$filename = '檔案名稱.sql';
$ajax = true;
$linespersession = 3000; (設定每次還原幾筆資料)
$delaypersession = 5000; (每次間隔休息時間,設定5000為休息5秒鐘。)

(4) 將「bigdump.php」與「檔案名稱.sql」放入同一個資料夾,並上傳至伺服器。
最後打開瀏覽器輸入bigdump.php 所在網址,如: http://domain.tw/dump/bigdump.php

(5)當藍bar全滿後,出現「Congratulations: End of file reached, assuming OK」的訊息後,表示資料庫匯入完成。

如何安裝trellis help desk

(1) 下載 http://www.accord5.com/trellis/download
選擇 version 1.0.4

(2) 解壓縮之後,會有一個upload資料夾。
把這個upload資料夾的內容,上傳到public_html下

(3) 開啟 http://your-domain-name/install/
Introduction -> 點 Let’s begin
System Check -> 點 Continue
Installation Type -> 點 Continue with Guided

(4) Database Setup
填入必要的資料庫資訊,這個用cpanel來新增

(5) Create Admin Account
填入用戶名/密碼/Email 為…
TimeZone選GMT +8:00
DST Active 選 No ( 不啟用日光節約時間 )
其它不修改

(6) Configure General Settings
設定 Outgoing Email 為 support@your-domain-name

(7) Write Skin Files
按continue即可

(8) Finish Installation
按Complete installation

(9) 基於安全考慮,刪除install這個資料夾。

(10) 設定Email piping
參考
http://docs.accord5.com/Email_Piping
(a) 先設定好需要的email, 以這個case 是support@your-domain-name
(b) 在cpanel點Email Forwarders
點Add Forwarder
(c) Address的地方,填入 support
Destination地方,選 Pipe to a Program
然後填入 public_html/help/sources/pipe.php
(d) 點 Add Forwarder按鈕
// 如此設定之後,寄送到 support@your-domain-name的email會被送到helpdesk去處理。

(11) 設定語言
在 public_html/help/language/ 下,可以找到一個en,這就是它的英文的語言檔。
要翻譯的話,就是把這個檔中文化即可。

(12) 其它說明文件
http://docs.accord5.com/Main_Page

如何安裝drupal 6及中文化

(1) 下載drupal的安裝程式,解壓縮後,ftp上傳至public_html目錄下

(2) 下載中文檔http://drupaltaiwan.org/forum/20080504/2060

選 drupal-6.2-zh-hant-package.zip
下載後,把它解壓縮。可以得到三個資料夾
modules
profiles
themes
把這三個資料夾,上傳到public_html這個資料夾下。

(3) 開啟網頁,開始安裝, 就先英文安裝吧。

(4) 這時候,畫面會冒一些錯誤訊息。
只要在 public_html/sites/default/ 這個資料夾下,
複製 default.settings.php 為 settings.php

錯誤訊息按F5就會消失。

(5) 填入資料庫的訊息。
資料庫可以透過cpanel的功能來新增
然後,save and continue

(6) 最後會要你填入email,及admin的資料。
Default time zone 選 +0800
Clean URLs 選enabled
update notifications 要打勾

(7) 安裝完畢後,先來啟動中文化。
Administer > site configuration > languages 之後,
點選 Add language

然後,Language name:選 「Chinese 繁體中文」
按下 add language之後,就會啟動import

(8) 在 Administer > site configuration > languages
點選中文,為default ,並且save configuration

如何提升minecraft server的效能?

可以透過ramdisk來解決I/O的問題。具體的方法如下:

1  #yum install java-1.7.0-openjdk
2  https://minecraft.net/download
#wget https://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.jar

Ramdisk
http://www.minecraftwiki.net/wiki/Tutorials/Ramdisk_enabled_server
(1)建新的user
#useradd mine

修改mine這個user的密碼
#passwd  mine

(2) 在/home/mine下,建下列的資料夾 minecraft  minecraft_backups  minecraft_ramdisk
#cd /home/mine
#mkdir minecraft
#mkdir minecraft_backups
#mkdir minecraft_ramdisk

然後用把ownership 改回給mine這個使用者
#chown -R mine.mine /home/mine/*

(3) 由附加檔案minecraft的內容
新增/etc/init.d/minecraft
#vim /etc/init.d/minecraft   ( 複製, 貼上 )
#chmod +x /etc/init.d/minecraft

(4) 修改 /etc/init.d/minecraft的內容,username改成mine。( 修正路徑 ) ( 下方的檔案內容中已經做此修改。)

(5) #vim /etc/fstab
增加一行:
tmpfs  /home/mine/minecraft_ramdisk tmpfs  defaults,size=512m      0       0

(6) 直接掛上ramdisk
#mount -t tmpfs none /home/mine/minecraft_ramdisk -o size=512m
下 df -h指令來檢查有沒有變化。
#df -h

(7) 修改 cronjobs
#crontab -e

*/5 * * * * /etc/init.d/minecraft disksaverun
20 */6 * * * /etc/init.d/minecraft backup

(9)加入 system V style的啟動script
#chkconfig –list
#chkconfig –add minecraft
#service minecraft start

(10) 第一次啟動minecraft server 之後,client是無法連上的。
這個原因是因為/home/mine/minecraft_ramdisk/server.properties 這個檔案裡,
online-mode=true , 這樣子的話,只有正版才可以玩。
要改成
online-mode=false,這樣子,破解版才可以玩。

(11) #service minecraft restart

 ////////////////// 下方是minecraft server 的system V init script //////////////
#!/bin/bash

# /etc/init.d/minecraft
# version 0.5 2011-09-24 (YYYY-MM-DD)

### BEGIN INIT INFO
# Provides: minecraft
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start: $network
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Minecraft server
# Description: Starts the minecraft server
### END INIT INFO

#Settings
SERVICE='minecraft_server.jar'
USERNAME="mine"
MCSTORE="/home/$USERNAME/minecraft"
MCPATH="/home/$USERNAME/minecraft_ramdisk"
CPU_COUNT=1
INVOCATION="java -Xmx2048M -Xms2048M -server -jar $SERVICE nogui"
BACKUPPATH="/home/$USERNAME/minecraft_backups/"
ME=`whoami`
as_user() {
if [ "$ME" == "$USERNAME" ] ; then
bash -c "$1"
else
su - $USERNAME -c "$1"
fi
}

mc_start() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "Tried to start but $SERVICE was already running!"
else
echo "$SERVICE was not running... starting."
cd $MCPATH
if [ ! -f "$MCPATH/minecraft_server.jar" ]
then
echo "Ram drive empty... prepping."
as_user "cp -R $MCSTORE/* $MCPATH/"
fi
as_user "cd $MCPATH && screen -dmS minecraft $INVOCATION"
sleep 7
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE is now running."
else
echo "Could not start $SERVICE."
fi
fi
}

mc_saveoff() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE is running... suspending saves"
as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP STARTING. Server going readonly...\"\015'"
as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-off\"\015'"
as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'"
sync
sleep 10
else
echo "$SERVICE was not running. Not suspending saves."
fi
}

mc_saveon() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE is running... re-enabling saves"
as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-on\"\015'"
as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER BACKUP ENDED. Server going read-write...\"\015'"
else
echo "$SERVICE was not running. Not resuming saves."
fi
}

mc_stop() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE is running... stopping."
as_user "screen -p 0 -S minecraft -X eval 'stuff \"say SERVER SHUTTING DOWN IN 5 SECONDS. Saving map...\"\015'"
as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'"
sleep 5
as_user "screen -p 0 -S minecraft -X eval 'stuff \"stop\"\015'"
sleep 5
else
echo "$SERVICE was not running."
fi
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE could not be shut down... still running."
else
echo "$SERVICE is shut down."
fi
}
mc_update() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE is running! Will not start update."
else
MC_SERVER_URL=http://minecraft.net/`wget -q -O - http://www.minecraft.net/download.jsp | grep minecraft_server.jar\ | cut -d \" -f 2`
as_user "cd $MCPATH && wget -q -O $MCPATH/minecraft_server.jar.update $MC_SERVER_URL"
if [ -f $MCPATH/minecraft_server.jar.update ]
then
if `diff $MCPATH/minecraft_server.jar $MCPATH/minecraft_server.jar.update >/dev/null`
then
echo "You are already running the latest version of $SERVICE."
else
as_user "mv $MCPATH/minecraft_server.jar.update $MCPATH/minecraft_server.jar"
echo "Minecraft successfully updated."
fi
else
echo "Minecraft update could not be downloaded."
fi
fi
}

mc_backup() {
echo "Backing up minecraft files"
if [ -f $BACKUPPATH/MCBKUP_`date "+%Y.%m.%d"`.tar.gz ]
then
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
do
if [ -f $BACKUPPATH/MCBKUP_`date "+%Y.%m.%d"`-$i.tar.gz ]
then
continue
else
as_user "cd $MCSTORE && tar zcf $BACKUPPATH/MCBKUP_`date "+%Y.%m.%d"`-$i.tar.gz ."
break
fi
done
else
as_user "cd $MCSTORE && tar zcf $BACKUPPATH/MCBKUP_`date "+%Y.%m.%d"`.tar.gz ."
fi
echo "Backup complete"
}

mc_disksaverun() {

if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "Saving ramdrive to disk."
if [ ! -f $MCPATH/$SERVICE ]
then
echo "Error.. Minecraft not in ram"
else
if [ -d $MCSTORE/world2 ]
then
as_user "rm -r $MCSTORE/world2"
fi
if [ -d $MCSTORE/world ]
then
as_user "mv $MCSTORE/world $MCSTORE/world2"
fi

as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-off\"\015'"
as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-all\"\015'"
as_user "cp -R $MCPATH/* $MCSTORE/"
as_user "screen -p 0 -S minecraft -X eval 'stuff \"save-on\"\015'"

if [ -d $MCSTORE/world2 ]
then
as_user "rm -r $MCSTORE/world2"
fi
fi
else
echo "Service is not running"
fi

}

mc_disksavehalt() {
echo "Saving ramdrive to disk."
if [ ! -f $MCPATH/minecraft_server.jar ]
then
echo "Error.. Minecraft not in ram"
else
if [ -d $MCSTORE/world2 ]
then
as_user "rm -r $MCSTORE/world2"
fi
if [ -d $MCSTORE/world ]
then
as_user "mv $MCSTORE/world $MCSTORE/world2"
fi

echo "Saving, screen session closed"
as_user "cp -R $MCPATH/* $MCSTORE/"

if [ -d $MCSTORE/world2 ]
then
as_user "rm -r $MCSTORE/world2"
fi
fi
}
#Start-Stop here
case "$1" in
start)
mc_start
;;
stop)
mc_stop
mc_disksavehalt
;;
restart)
mc_stop
mc_disksavehalt
mc_start
;;
update)
mc_stop
mc_backup
mc_update
mc_start
;;
backup)
mc_disksaverun
mc_saveoff
mc_backup
mc_saveon
;;
disksavehalt)
mc_disksavehalt
;;
disksaverun)
mc_disksaverun
;;
status)
if ps ax | grep -v grep | grep -v -i SCREEN | grep $SERVICE > /dev/null
then
echo "$SERVICE is running."
else
echo "$SERVICE is not running."
fi
;;

*)
echo "Usage: /etc/init.d/minecraft {start|stop|update|backup|status|restart|disksaverun}"
exit 1
;;
esac

exit 0