鯖の建て方(初心者向け)
俺が建てた際の手順を記載
説明不足なら加筆修正よろしく
必要なかったら消してもらっても構わない
■PCスペック
OS:Win10
CPU:Corei5 4670K
memory:24GB
マイルータIP(ゲートウェイ):192.168.1.1
#====================================================================================
# 事前に用意したもの
#====================================================================================
1.VMware Workstation 12 Player for Windows 64-bit
https://www.vmware.com/jp/products/player/playerpro-evaluation
2.server 4.22(Solaris10)ダウンロード(404が見当たらなかった)
http://forum.ragezone.com/f857/release-talesweaver-4-04-server-1090982/index2.html #29参照 (なお、#29には「Client japan 4.22」と書いてるけど中身は中華蔵)
3.TW404J.exeのダウンロード(要SMSアカウント)
※QQメールアカウント取得後、百度クラウドからダウンロード
それぞれググればアカウント作成方法、ダウンロード方法共にすぐ見当たるはず
QQメールのアカウントはメールアドレスを取得した方が後の管理が楽
中華サイトへの登録が怖いなら別のやり方を探してください。私は知りません。
4.Solaris10(x86)のインストーラダウンロード(要Oracleアカウント)
http://www.oracle.com/technetwork/jp/server-storage/solaris10/downloads/index.html サーバOSのロケールを日本語にするために用意
5.Teraterm(SecureCRTSecureFXでも可)
xwindowのコンソールは癖があるので慣れてるTeratermを導入
6.サクラエディタ(Solarisのデフォルトvimは編集モードで上下キーが使えず面倒なのでWin上で編集するため(notepad可))
7.WinSCP(ファイルのダウンロード、アップロードに使用)
#====================================================================================
# Solaris構築手順
#====================================================================================
# 1.VMPlayerでSolaris10のVHD(server 4.22)読み込み
# 2.環境設定で以下を変更
# CPU: 2コア
# メモリ: 8GB
# CD/DVD: Solaris10(x86)のインストーラを設定
# ネットワークアダプタ: ブリッジ接続(アダプタの設定内でオンボードNICのみ選択されてることの確認)
#
# 3.VMWareからSolaris10起動
# 4.Teratermでサーバ接続
# IP:192.168.1.86
# ユーザ:root
# パスワード:以下の#1内「system password:」のあたりを入力
# ※Teratermで接続できない場合(PCのルータのIPが192.168.1.1/24でない場合など)はVMWare上で以下の作業が必要と思う(俺やってない)
# 1.Windows上でコマンドプロンプト起動
# 2.ipconfig実行
# 出力されたイーサネット アダプター ローカルエリア接続内の以下3つをどっかにメモする
# ①IPv4アドレス(192.168.0.2など)
# ②サブネットマスク(255.255.255.0など)
# ③デフォルトゲートウェイのIPv4アドレス(192.168.0.1など)
# ※以降は以下の値が入っていることにする
# ①IPv4アドレス:192.168.0.2
# ②サブネットマスク:255.255.255.0
# ③デフォルトゲートウェイのIPv4アドレス:192.168.0.1
# 3.ログイン画面でOPTIONS>LANGUAGEをC/POSIXに変更(英語ロケールにするため)
# 4.コンソール起動
# ※Launch(Windowsボタンみたいなの)>Applications(上から5つ目)>Utilities(一番下)>Terminal(下から2つ目)
# 今後も使うのでデスクトップ上にドラッグアンドドロップしとく
# 5.以下のコマンドを実行
# # 項番2で確認した値を変数格納
# SUB_NET_MASK=255.255.255.0 # サブネットマスクが異なる場合は値を項番2で確認した値に変更する
# DEFAULT_ROOT_ADDRESS=192.168.0.1 # サブネットマスクが異なる場合は値を項番2で確認した値に変更する
# SERVER_ADDRESS=192.168.0.86
# # ネットワーク関連ファイルを書き換え
# echo "${SUB_NET_MASK} ${DEFAULT_ROOT_ADDRESS}" > /etc/netmasks
# echo "${DEFAULT_ROOT_ADDRESS}" >/etc/defaultrouter
# sed -e "/192.168.1.1/d" /etc/hosts > /var/tmp/hosts
# echo "${SERVER_ADDRESS} Tales loghost" >> /var/tmp/hosts
# cp /var/tmp/hosts /etc/inet/hosts
# 6.OS再起動
# shutdown -y -i6 -g0
# 7.再起動後Teratermログイン
#
# 5.日本語ロケール導入
localeadm -a ja -d /cdrom/sol_10_113_x86/Solaris_10/Product/
# 6.OSデフォルトのLANGをja_JP.PCK(SJIS)に、TIMEZONEを日本に変更
sed -e "/^[TZ|LANG].*/d" /etc/default/init > /var/tmp/init
echo "TZ=JST-9" >> /var/tmp/init
echo "LANG=ja_JP.PCK" >> /var/tmp/init
cp /var/tmp/init /etc/default/init
# 7.rootのデフォルトシェルをbashに変更
usermod -s /usr/bin/bash root
# 8.rootのbash_profile設定
echo "
export PATH=$PATH:./"
export PS1=\"[\[\e[35;40m\]\u\[\e[0m\]@\[\e[36;40m\]\h\[\e[0m\] \[\e[0;31m\]\t\[\e[0m\] \[\e[33;40m\]\w\[\e[0m\]]\[\e[0;31m\]\\\\$ \[\e[0m\]\"
alias ttw='/tw404/endTW.sh'
alias stw='ttw;/tw404/startTWserver.sh'
alias dbrestart="kill -9 `ps -ef|grep ./db|grep -v grep|awk '{print $2}'`;cd /tw404/db;./db &"
" >> ~/.bash_profile
# 9.resolv.conf設定
echo "nameserver 192.168.1.1" > /etc/resolv.conf
# 10.再起動
shutdown -y -i6 -g0
# 11.再起動後Teratermでログインして値確認
# TIMEZONE確認(JST-9)
echo $TZ
# LANG確認(ja_JP.PCK)
echo $LANG
# デフォルトシェル確認
echo $SHELL
# 名前解決確認(resolv.conf) googleのIPアドレスが表示されること
nslookup www.google.co.jp
# 12.サーバの時刻変更(2004/1/1 0:00:00)
date 0101000004
# 13.ファイルコピー
cp -R /opt/mysql/mysql /usr/local/
cp /opt/mysql/mysql/support-files/mysql.server /etc/init.d/
ln /etc/init.d/mysql.server /etc/rc3.d/S99mysql
ln /etc/init.d/mysql.server /etc/rc0.d/K01mysql
cp /opt/mysql/mysql/support-files/mysql-small.cnf /etc/my.cnf
# 14.my.cnf編集(vi分かりにくかったらWinSCPから開くと楽)
vi /etc/my.cnf
# [client]セクションに以下を追加
default-character-set=sjis
# [mysqld]フィールドの最後に以下を追加
default-character-set = utf8
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
# Solaris構築はここまで
#====================================================================================
# サーバ設定ファイルのIPアドレス書き換え
#====================================================================================
# Solaris構築の項番4でIPの変更を行った場合、サーバ設定ファイルを編集する必要がある。(俺は未実施)
# 1.変数格納(項番4で指定したSERVER_ADDRESSを指定する)
SERVER_ADDRESS=192.168.0.86
# 2.各ファイル編集
sed -e "s/192.168.1.86/${SERVER_ADDRESS}/" /tw404/db/DB.cfg > /var/tmp/DB.cfg
cp /var/tmp/DB.cfg /tw404/db/DB.cfg
sed -e "s/192.168.1.86/${SERVER_ADDRESS}/" /tw404/jtales0/table/DBs.jtales > /var/tmp/DBs.jtales
cp /var/tmp/DBs.jtales /tw404/jtales0/table/DBs.jtales
sed -e "s/192.168.1.86/${SERVER_ADDRESS}/" /tw404/jtales0/table/Servers.jtales > /var/tmp/table/Servers.jtales
cp /var/tmp/table/Servers.jtales /tw404/jtales0/table/Servers.jtales
#====================================================================================
# 編集するであろうディレクトリのシンボリックリンク作成
#====================================================================================
# 毎回jtales1、jtales2にコピーするのはめんどくさいので、一部ディレクトリにシンボリックリンクを張ってjtales0のみを編集することにした
# 1.jatles1、jatles2のquest、quest_data、tableディレクトリをバックアップ
mv /tw404/jtales1/quest /tw404/jtales1/quest_bk
mv /tw404/jtales1/quest_data /tw404/jtales1/quest_data_bk
mv /tw404/jtales1/table /tw404/jtales1/table_bk
mv /tw404/jtales2/quest /tw404/jtales2/quest_bk
mv /tw404/jtales2/quest_data /tw404/jtales2/quest_data_bk
mv /tw404/jtales2/table /tw404/jtales2/table_bk
# 2.jtales0からシンボリックリンク作成
ln -s /tw404/jtales0/quest /tw404/jtales1/quest
ln -s /tw404/jtales0/quest_data /tw404/jtales1/quest_data
ln -s /tw404/jtales0/table /tw404/jtales1/table
ln -s /tw404/jtales0/quest /tw404/jtales2/quest
ln -s /tw404/jtales0/quest_data /tw404/jtales2/quest_data
ln -s /tw404/jtales0/table /tw404/jtales2/table
# 3.ファイル確認
ls -ld /tw404/jtales*/table
ls -ld /tw404/jtales*/quest
ls -ld /tw404/jtales*/quest_data
# 出力例
# [root@Tales 00:52:58 /]# ls -ld /tw404/jtales*/table
# drwx------ 2 root root 2048 1月 2 2004 /tw404/jtales0/table
# lrwxrwxrwx 1 root root 20 1月 2 2004 /tw404/jtales1/table -> /tw404/jtales0/table
# lrwxrwxrwx 1 root root 20 1月 2 2004 /tw404/jtales2/table -> /tw404/jtales0/table
# [root@Tales 00:53:08 /]# ls -ld /tw404/jtales*/quest
# drwx------ 2 root root 17920 1月 2 2004 /tw404/jtales0/quest
# drwx------ 2 root root 17920 1月 4 2016 /tw404/jtales1/quest
# drwx------ 2 root root 17920 1月 4 2016 /tw404/jtales2/quest
# [root@Tales 00:53:21 /]# ls -ld /tw404/jtales*/quest_data
# drwx------ 4 root root 512 1月 2 2004 /tw404/jtales0/quest_data
# lrwxrwxrwx 1 root root 25 1月 2 2004 /tw404/jtales1/quest_data -> /tw404/jtales0/quest_data
# lrwxrwxrwx 1 root root 25 1月 2 2004 /tw404/jtales2/quest_data -> /tw404/jtales0/quest_data
#====================================================================================
# テーブルのキャラクタセットをUTF-8に変更
#====================================================================================
# 1.MySQL起動
/etc/init.d/mysql.server start
# 1.MySQLのjtalesデータベースを変数に格納
DB_LIST=`mysql -uroot <<EOF | grep jtales12
show databases;
EOF
`
# 2.格納確認
echo "${DB_LIST}"
# 以下が表示されること
# jtales12_account
# jtales12_castle
# jtales12_episode
# jtales12_friendList
# jtales12_gamestat
# jtales12_group
# jtales12_guild
# jtales12_pet
# jtales12_refuse
# jtales12_share
# 3.各DBのキャラクタセットをUTF-8に変更
# ↓↓↓ コマンドここから ↓↓↓
for db in ${DB_LIST};do
echo "#----------------------------------------------------" echo "# DB名:${db}のテーブルリストを変数に格納" echo "#----------------------------------------------------" TABLE_LIST=`mysql -uroot <<EOF | grep -v Tables_in show tables from ${db};
EOF
` echo for tbl in $TABLE_LIST;do echo "# DB名:${db}のテーブル:${tbl}のキャラクタセットをUTF-8に変更" mysql -uroot <<EOF use ${db}; alter table ${tbl} charset=utf8;
EOF
echo done
done
# ↑↑↑ コマンドここまで ↑↑↑
#====================================================================================
# サーバ起動スクリプト作成およびサーバ起動
#====================================================================================
# 1.ファイル作成
touch /tw404/startTWserver.sh
# 2.権限変更
chmod 700 /tw404/startTWserver.sh
# 3.ファイル編集(winSCPからでもOK。その場合は文字コードをSJIS、改行コードをLFにすること)
vi /tw404/startTWserver.sh
# 以下貼り付け
# ※※※↓↓↓ 張り付けここから ↓↓↓※※※
#!/usr/bin/bash
#=====================================================
# 起動ログ書き込みfunction
# $1:プロセス名
#=====================================================
Fnc_START_PROC() {
STARTDATE=`date +"%Y/%m/%d %H:%M:%S"` LOG_FILE=/tw404/logs/$1.log # ログファイル存在チェック LOG_FILE_CHECK=`ls $LOG_FILE 2>/dev/null` # 既にある場合は改行入れる if [ "$LOG_FILE_CHECK" != "" ];then echo >> $LOG_FILE echo >> $LOG_FILE fi echo "#--------------------------------------------------------------------------------------" >> $LOG_FILE echo "# $STARTDATE [$1] START" >> $LOG_FILE echo "#--------------------------------------------------------------------------------------" >> $LOG_FILE
}
# MySQL起動
/etc/init.d/mysql.server start
# logsフォルダ作成
mkdir -p /tw404/logs
# db起動
Fnc_START_PROC db
cd /tw404/db
./db >> /tw404/logs/db.log &
# jtales起動
list="0 1 2"
for n in ${list};do
Fnc_START_PROC jtales${n} cd /tw404/jtales${n} ./start >> /tw404/logs/jtales${n}.log &
done
# 60秒置きに監視して落ちているプロセスがあれば再起動する
while [ "a" != "b" ];do
db_check=`ps -ef|grep ./db|grep -v grep` if [ "${db_check}" = "" ];then Fnc_START_PROC db cd /tw404/db ./db >> /tw404/logs/db_`date +"%Y%m%d"`.log & fi jtales0_check=`ps -ef|grep "./jtales -d 12 jtales0"|grep -v grep` if [ "${jtales0_check}" = "" ];then Fnc_START_PROC jtales0 cd /tw404/jtales0 ./start >> /tw404/logs/jtales0.log & fi jtales1_check=`ps -ef|grep "./jtales -d 12 jtales1"|grep -v grep` if [ "${jtales1_check}" = "" ];then Fnc_START_PROC jtales1 cd /tw404/jtales1 ./start >> /tw404/logs/jtales1.log & fi jtales2_check=`ps -ef|grep "./jtales -d 12 jtales2"|grep -v grep` if [ "${jtales2_check}" = "" ];then Fnc_START_PROC jtales2 cd /tw404/jtales2 ./start >> /tw404/logs/jtales2.log & fi sleep 60
done
# ※※※↑↑↑ 張り付けここまで ↑↑↑※※※
# 4.サーバ起動
/tw404/startTWserver.sh
# ※以下のログファイルが作成されるため、設定変更などの影響を調べる際はtailコマンドなどで確認するといい
# ログファイル名
# ・/tw404/logs/db.log
# ・/tw404/logs/jtales0.log
# ・/tw404/logs/jtales1.log
# ・/tw404/logs/jtales2.log
# ログファイル「/tw404/logs/jtales1.log」を確認する場合の例
# tail -f /tw404/logs/jtales1.log
#====================================================================================
# 停止スクリプト作成
#====================================================================================
# startTWserver.shが起動している窓でCtrl+Cを押せばサーバのプロセスは停止するが
# たまに止まらないことがあるのでそういう時用に用意
# 1.ファイル作成
touch /tw404/endTWserver.sh
# 2.権限変更
chmod 700 /tw404/endTWserver.sh
# 3.ファイル編集(winSCPからでもOK。その場合は文字コードをSJIS、改行コードをLFにすること)
vi /tw404/endTWserver.sh
# 以下貼り付け
# ※※※↓↓↓ 張り付けここから ↓↓↓※※※
# DBプロセスKILL
DB_PROC_ID=`ps -ef|grep "./db"|grep -v grep|awk '{print $2}'`
[ "$DB_PROC_ID" ] && kill -9 $DB_PROC_ID >/dev/null
# jtales0プロセスKILL
JTALES_PROC_0=`ps -ef|grep "./jtales -d 12 jtales0"|grep -v grep|awk '{print $2}'`
[ "$JTALES_PROC_0" ] && kill -9 $JTALES_PROC_0 >/dev/null
# jtales1プロセスKILL
JTALES_PROC_1=`ps -ef|grep "./jtales -d 12 jtales1"|grep -v grep|awk '{print $2}'`
[ "$JTALES_PROC_1" ] && kill -9 $JTALES_PROC_1 >/dev/null
# jtales2プロセスKILL
JTALES_PROC_2=`ps -ef|grep "./jtales -d 12 jtales2"|grep -v grep|awk '{print $2}'`
[ "$JTALES_PROC_2" ] && kill -9 $JTALES_PROC_2 >/dev/null
# ※※※↑↑↑ 張り付けここまで ↑↑↑※※※
# 4.サーバ停止
/tw404/endTWserver.sh
#====================================================================================
# クライアント設定
#====================================================================================
# 1.TW404J.exeからクライアントをインストール
# 2.win10使用時は16bitカラーにできないので、InphaseNXD.EXEのプロパティを以下の通り設定する。
# ①InphaseNXD.EXEを右クリック>プロパティ
# ②互換性タブをクリック
# ③設定の「カラーモードを制限する」にチェックを入れて16bitカラーにする
# 3.起動用バッチファイル作成
TWインストールフォルダに「twclient_start.bat」という名前のテキストファイルを作成
# 4.起動用バッチファイル編集 ※鯖IPが192.168.1.86でない場合、ADDRの引数は鯖の建て方ページ「③クライアントファイルを開く」を見て編集すること
# 右クリックして以下の通り編集
start InphaseNXD.EXE /USE_SERVER 12 /ADDR 1442949312 /PORT 40000
goto end
#====================================================================================
# アカウント作成
#====================================================================================
# 1.3.5鯖を起動して以下ファイルをWinSCPでダウンロード
・/tw/db/master/create_master
・/tw/db/master/README_uh
・/tw/db/master/uh
# 2.4.04の「/tw404/db/master/」にwinSCPでアップロード
# 3.teratermでログイン後、「/tw404/db/master/」に移動
cd /tw404/db/master/
# 4.権限変更
chmod 777 /tw404/db/master/create_master
chmod 777 /tw404/db/master/README_uh
chmod 777 /tw404/db/master/uh
# 5.アカウント作成
# ※項番7で詳しく書くが、このままではハッシュ値が異なるため使用できない
#
# 書式
# ./create_master <ユーザID> <パスワード> <メールアドレス> <誕生日> <リアルネーム> <作成日> <チケット期限?> <太陽?> <性別>
# 例:ID:tales PW:talesで作成する場合(ID、PW以外はなんでもいい?メアドはかぶっちゃダメかもしれない)
# ./create_master tales tales 1@tales.com 20151119 1 99999 999999 4 5
# 6.アカウント作成確認
find /tw404/db/master -name "<項番5で指定したアカウント名>"
# 7.Win上で起動後初回ログイン(失敗)
# dbのログに「master/04/ee/<アカウント名>」などでログが出力されるので、「04/ee」の部分の英数字を控える
# 8.アカウントファイル移動
mv <項番5の出力結果> /tw404/db/master/<項番6で確認した数値1>/<項番6で確認した数値2>
# 実行例
# mv /tw404/db/master/01/e0/tales /tw404/db/master/04/ee
# 9.鯖再起動
# Ctrl+Cで鯖の停止を行う
/tw404/endTWserver.sh;/tw404/startTWserver.sh;
# 10.Win上でクライアント再起動後再ログイン
- 最終更新:2016-05-20 23:47:12