ラベル Cent OS の投稿を表示しています。 すべての投稿を表示
ラベル Cent OS の投稿を表示しています。 すべての投稿を表示

2015年3月29日日曜日

マインクラフトサーバーをDockerで起動する

Dockerを勉強し始めたので、前回稼働させていたマインクラフトのサーバーをDockerで動かしてみようと思います。環境はvagrant上に作ったubuntu14.04の仮想マシンをホストとして、dockerイメージの作成をしていきます。

vagrant上のユーザー名はvagrantとしています。

# dockerのインストール
sudo apt-get update
sudo apt-get install docker.io

# dockerグループにvagrantユーザーを追加する
# dockerグループに追加したユーザーはsudoをつけなくてもdockerコマンドが使えるようになります。
# (設定したら一旦ログインし直さないと反映されない)
sudo gpasswd -a vagrant docker

# マインクラフトを動かすコンテナはcentos6.6のイメージをベースに使うことにします。
docker pull centos:centos6.6


マインクラフトの動作環境イメージを作成する為、Dockerfileを作成していきます。
mkdir -p ~/docker/minecraft
cd ~/docker/minecraft

# Dockerfileを作成
vi Dockerfile
----------------------------------------------
FROM centos:centos6.6
MAINTAINER tyabuta

# インストール作業(docker build時に実行される内容)
RUN yum update -y
RUN yum install -y java-1.8.0-openjdk.x86_64
RUN mkdir /minecraft.d

# 起動(docker run時に実行される内容)
WORKDIR /minecraft.d
CMD java -jar minecraft_server.1.8.3.jar nogui
----------------------------------------------

minecraft_serverのjarファイルを入れたディレクトリはdockerのホスト
/var/minecraft.d というディレクトリに配置し、コンテナ起動時にマウントさせます。

Dockerfileをもとにイメージをビルドします。
ビルドが完了するとminecraft_centosというイメージが作成されているはずです。(docker imagesで確認できる)
cd ~/docker/minecraft
docker build -t minecraft_centos .

あとは、dockerホストの/var/minecraft.dディレクトリをコンテナへマウントしてデーモン起動させればOKです!
起動したらdocker ps で動作しているのがわかると思います。
終了させるのは docker kill [ContainerId] で終了させられます。
docker run -d -v /var/minecraft.d:/minecraft.d -p 25565:25565 minecraft_centos






2015年3月8日日曜日

マインクラフトサーバー構築(minecraft_server)

マインクラフト初めてみました。
彼女と二人でやりたかったので、マルチプレイをする為にサーバーを構築していきます。

ギミックを組んで色々できるみたいなのを知って、面白そうだと思ったんで思い切ってアカウント作成しました!
価格は今の為替で2700円くらい?になってました。

家の周りを開拓するだけでも、没頭して直ぐに時間が過ぎてしまいます。
色々なにをするか相談するのも楽しいので、二人でやるのには丁度いいですね♪
見た目はレトロで、はたからみるとそんなに楽しく見えなかったんですが、結構はまりそうです。


インストールする環境
CentOS6.6
32bit


javaのインストール
OpenJDKで問題なく動作します。
su -
yum install java-1.8.0-openjdk-devel.i686

インストール先のディレクトリを作成しjarファイルをダウンロードしてきます。
mkdir minecraft.d
cd minecraft.d
wget https://s3.amazonaws.com/Minecraft.Download/versions/1.8.3/minecraft_server.1.8.3.jar


一旦実行すると、カレントディレクトリに、eula.txtとserver.propertiesファイルが作成されるので、
eula.txtはeula=flase を trueに変更します。
java -jar minecraft_server.1.8.3.jar nogui
vim eula.txt          # trueに変更
vim server.properties # 必要な設定を行う

eula.txt(同意する意味のtrueに変更)
#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
eula=true

server.properties (pvpのみfalseに変更しました。)
spawn-protection=16
max-tick-time=60000
generator-settings=
force-gamemode=false
allow-nether=true
gamemode=0
enable-query=false
player-idle-timeout=0
difficulty=1
spawn-monsters=true
op-permission-level=4
resource-pack-hash=
announce-player-achievements=true
pvp=false
snooper-enabled=true
level-type=DEFAULT
hardcore=false
enable-command-block=false
max-players=20
network-compression-threshold=256
max-world-size=29999984
server-port=25565
server-ip=
spawn-npcs=true
allow-flight=false
level-name=world
view-distance=10
resource-pack=
spawn-animals=true
white-list=false
generate-structures=true
online-mode=true
max-build-height=256
level-seed=
enable-rcon=false
motd=A Minecraft Server

# 改めて、nohupを使ってログアウトしても実行するようにする
nohup java -jar minecraft_server.1.8.3.jar nogui &



あと、iptablesで、25565ポートの通信を許可しておく必要があります。
# iptablesの設定ファイル編集
su -
vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 25565 -j ACCEPT


# 再起動
vim /etc/init.d/iptables restart


マインクラフトのクライアント側で、マルチプレイ > AddServerでIPを指定すれば
プレイすることができます。
jarファイルと同じディレクトリに、logs, world、プレイヤーデータなどが作成されます。

2015年2月23日月曜日

brew install openssl でエラーが出る

環境CentOS6.6 x86

linuxbrewを使って、owncloudをインストールできるのかなと思ってやっていた時に
つまずいた話、結局owncloudをインストールするまでに至らなかったが、
opensslのインストール時に発生したビルドエラー対処法だけ記載します。

linuxbrew でopensslをインストールしようとした時に、ビルドエラーで進めない時の対処法
opensslビルド動作中にこんなエラーがでる

cryptlib.c:1: sorry, unimplemented: 64-bit mode not compiled in

ググると、32-bit環境にも関わらず、64-bit環境用にビルドしようとしてるとのこと
configureしてるところにオプションを指定してやればよいよと知ったが、brewってどうやってそこんところ弄るの?

fomulaってのがあって、Rubyで書かれたスクリプトがあるんだけど、
そこでconfigure用のコマンド文字列を生成しているみたい。
brew edit openssl ってするとそれを編集できる。
58行目あたりに、32 or 64bit の判定をしている部分があるけど、おそらくここで64bitが選ばれてしまうからだろう。。。

def arch_args
  return { :i386  => %w[linux-generic32], :x86_64 => %w[linux-x86_64] } if OS.linux?
    {
    :x86_64 => %w[darwin64-x86_64-cc enable-ec_nistp_64_gcc_128],
    :i386   => %w[darwin-i386-cc],
    }
end

# -- 省略

def install
  if build.universal?
    ENV.permit_arch_flags
    archs = Hardware::CPU.universal_archs
  elsif MacOS.prefer_64_bit?
    archs = [Hardware::CPU.arch_64_bit]
  else
    archs = [Hardware::CPU.arch_32_bit]
  end

  dirs = []

  archs.each do |arch|
    if build.universal?
      dir = "build-#{arch}"
      dirs << dir
      mkdir dir
      mkdir "#{dir}/engines"
      system "make", "clean"
    end

    arch=:i386 # 無理やりここで32-bit用にしてしまう。

    ENV.deparallelize
    system "perl", "./Configure", *(configure_args + arch_args[arch])
    system "make", "depend"
    system "make"

# -- 省略

上記のarch変数を直接書き換えることで、対応できた!