鯖の建て方(初心者向け)

俺が建てた際の手順を記載
説明不足なら加筆修正よろしく
必要なかったら消してもらっても構わない

■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上でクライアント再起動後再ログイン




コメントを投稿するには画像の文字を半角数字で入力してください。

投稿済みコメントに返信する場合はコメントを選んでから投稿してください。


画像認証
  • このページの通りにやってもネットワーク接続とshファイルの作成がうまくいかないんだけど。 --- (2016/06/26 18:15:52)
  • /tw404/startTWserver.sh: /usr/bin/bash^M: bad interpreter: No such file or directory --- (2016/07/11 21:33:43)
  • http://totech.hateblo.jp/entry/2014/03/19/174129 --- (2016/07/12 13:00:13)
  • ↑↑改行コードおかしいからちゃんとしなさいってこった --- (2016/07/12 13:00:42)

  • 最終更新:2016-07-20 20:28:18

このWIKIを編集するにはパスワード入力が必要です

認証パスワード