开始搭建基于docker的mangoszero WOW服务端,我自己的操作系统是mac os,其他平台操作可以等价替换

1.准备工作

(1) 安装docker,参考docker官方文档,https://www.docker.com,有各种平台的安装教程,mac下可以直接 brew install caskroom/cask/docker

(2) 拉取docker官方centos镜像,可使用阿里云hub,https://dev.aliyun.com/detail.html?spm=5176.1972343.2.22.otKSdx&repoId=1198,版本推荐6.9或latest

docker pull centos

docker pull centos:6.9

(3) 建立一个文件夹专门用来保存此次搭建所用到的文件

mkdir -p mangos/wow60

(4) 从github拉取mangoszero源码

mkdir mangos/wow60/mangos-zero
cd mangos/wow60/mangos-zero/
git clone https://github.com/mangoszero/server.git server -b master --recursive

github现在国内被墙,只有搭梯子,这个源码比较大,可能会花费非常长的时间。

一个比较快捷的办法

1) 先下载mangoszero源码的压缩包,https://github.com/mangoszero/server/archive/master.zip,解压缩后文件夹更名为server

2) 再根据https://github.com/mangoszero/server/blob/master/.gitmodules里的子模块内容,一个一个的git clone

cd mangos/wow60/mangos-zero/server
git clone https://github.com/mangos/mangosDeps dep -b master --recursive
git clone https://github.com/mangos/realmd src/realmd -b master --recursive
git clone https://github.com/elunaluaengine/eluna src/modules/Eluna -b master --recursive
git clone https://github.com/mangos/ScriptDev3.git src/modules/SD3 -b master --recursive
git clone https://github.com/mangostools/DbDocsEditor.git contrib/dbdocs_editor -b master --recursive
git clone https://github.com/mangos/Extractor_projects.git src/tools/Extractor_projects -b master --recursive win的子模块如果是Linux或MAC就不需要clone了

(5) 从github拉取database

cd mangos/wow60
git clone http://github.com/mangoszero/database.git database -b master --recursive

2.搭建之前的规划

(1) 首先基于centos构建一套通用的编译环境,这样以后不仅可方便编译mangos,也可用于编译其他软件,或者用作其他容器的母版

(2) 基于构建好的编译环境编译mangoszero的服务端

(3) 基于构建好的mangos服务端单独构建验证服务器

(4) 基于构建好的mangos服务端单独构建世界服务器

(5) 基于构建好的编译环境构建数据库服务器

这样的规划好处是分离验证服务器,世界服务器,数据库,这样某一个镜像需要变动,也不会影响其他的。

验证服务器与世界服务器分离的好处是可以一个验证服务支持多个世界服务

数据库服务器可以使用容器,也可以使用其他Mysql服务

3.开始搭建编译环境

(1) 创建一个文件夹用来保存dockerfile等

cd mangos
mkdir base_env
cd base_env

(2) 编写Dockerfile

#基于cenos的latest版本
FROM centos:latest
# 个人信息
MAINTAINER oliverCJ <cgjp123@163.com>
#设置容器环境变量
ENV SRC_DIR /root/soft
#创建文件夹保存需要用到的依赖文件
RUN mkdir -p ${SRC_DIR} #更新服务器,安装wget,安装epel源
RUN yum -y update \
&& yum -y install wget \
&& yum -y install epel-release \
&& yum makecache #安装依赖包
RUN yum -y install \
cmake \
make \
gcc \
gcc-c++ \
automake.noarch \
autoconf.noarch \
openssl \
openssl-devel \
bzip2-devel \
readline-devel \
ncurses-devel \
boost-devel \
libtool \
perl-devel \
perl-Net-Telnet.noarch #安装必要软件
RUN yum -y install \
#centos6.9版本安装mysql,mysql-devel,mysql-server
mariadb-devel \
mariadb-server \
curl \
git \
vim \
openssh-server \
openssh \
telnet \
net-tools \
yum clean all #ACE环境
RUN cd ${SRC_DIR} \
&& wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/devel:/libraries:/ACE:/micro/CentOS_7/x86_64/ace-6.3.3-55.1.x86_64.rpm \
&& rpm -ivh ace-6.3.3-55.1.x86_64.rpm \
&& rm -f ace-6.3.3-55.1.x86_64.rpm \
&& wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/devel:/libraries:/ACE:/micro:/versioned/CentOS_7/x86_64/mpc-6.3.3-42.1.x86_64.rpm \
&& rpm -ivh mpc-6.3.3-42.1.x86_64.rpm \
&& rm -f mpc-6.3.3-42.1.x86_64.rpm \
&& wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/devel:/libraries:/ACE:/micro/CentOS_7/x86_64/ace-devel-6.3.3-55.1.x86_64.rpm \
&& rpm -ivh ace-devel-6.3.3-55.1.x86_64.rpm \
&& rm -f ace-devel-6.3.3-55.1.x86_64.rpm #配置时区,登录信息等
RUN ln -sf /usr/share/zoneinfo/Asia/Chongqing /etc/localtime \
&& sed -i \
-e 's/^UsePAM yes/#UsePAM yes/g' \
-e 's/^#UsePAM no/UsePAM no/g' \
-e 's/#UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g' \
-e 's/^#UseDNS yes/UseDNS no/g' \
/etc/ssh/sshd_config \
&& echo "root" | passwd --stdin root \
&& ssh-keygen -q -b 1024 -N '' -t rsa -f /etc/ssh/ssh_host_rsa_key \
&& ssh-keygen -q -b 1024 -N '' -t dsa -f /etc/ssh/ssh_host_dsa_key \
&& echo "NETWORKING=yes" > /etc/sysconfig/network RUN rm -rf ${SRC_DIR}/*
RUN rm -rf /tmp/*

(3) 编写build.yml

version: '2'
services:
base:
build: ./
image: base-env:latest

(4) 执行构建命令

docker-compose -f build.yml build

(5) 构建完成

构建完成后可使用 docker images 查看构建好的镜像,镜像名称为base-env,版本为latest

4.备注

镜像构建完成后,如果有需要的软件忘记装,可以依赖镜像启动容器

docker run -it --rm --name base-env base-env:latest

启动后将直接登录进容器,然后安装所需软件,安装完毕后切勿exit退出,因为启动容器时使用了--rm参数,一旦退出,所有修改都会丢失

这时应当新开一个命令行窗口,执行保存修改命令

docker commit base-env base-env:latest

这时就可以回到原来的命令行exit退出容器,所有修改也保存并更新到镜像中了

下次将开始编译mangoszero服务端代码

docker下编译mangoszero WOW60级服务端(二)的更多相关文章

  1. docker下编译mangoszero WOW60级服务端(一)

    这几天看到暴雪准备开放怀旧服的新闻,突然想到几年前用大芒果window一键服务端自己搭建过服务,就想着在Linux环境下重新编译一套,毕竟Linux作为服务端,性能和稳定性都会高一些,于是在mac虚拟 ...

  2. docker下编译mangoszero WOW60级服务端(三)

    开始构建WOW服务端通用镜像 第二篇文章中准备工作环节已经从github拉取了mangosd源代码,这里我们就可以直接开始编写dockerfile并进行编译 (1) 进入mangos/wow60/ma ...

  3. [UE4]如何编译部署独立专用服务端(Standalone Dedicated Server)

    这是论坛上对UE服务端功能的回答,意思是UE4提供了网游服务端所具备的特性,包括位移修正.物理碰撞检测.这些特性不是UE4才加入,早期UE版本就有了. https://answers.unrealen ...

  4. Centos下使用gitosis配置管理git服务端(转载)

    From:http://www.cnblogs.com/ahauzyy/archive/2013/04/08/3043384.html 说明:由于条件有限,我这里使用的是同一台centos的,但教程内 ...

  5. TCP下的套接字服务端实现并发 作业题

    # 服务端 import socket from threading import Thread """ 服务端 1.要有固定的IP和PORT 2.24小时不间断提供服务 ...

  6. [Python 网络编程] TCP编程/群聊服务端 (二)

    群聊服务端 需求分析: 1. 群聊服务端需支持启动和停止(清理资源); 2. 可以接收客户端的连接; 接收客户端发来的数据 3. 可以将每条信息分发到所有客户端 1) 先搭架子: #TCP Serve ...

  7. 网络编程、三要素、Socket通信、UDP传输、TCP协议、服务端(二十五)

    1.网络编程概述 * A:计算机网络 * 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传 ...

  8. 【修改端口号】linux下修改apache,nginx服务端口号

    一.linux下修改apache端口号 yum安装后,apache配置文件: /etc/httpd/conf/httpd.conf 找到apache目录下的 httpd.conf, 使用vi 打开,找 ...

  9. linux下修改apache,nginx服务端口号

    一.linux下修改apache端口号 yum安装后,apache配置文件: /etc/httpd/conf/httpd.conf 找到apache目录下的 httpd.conf, 使用vi 打开,找 ...

随机推荐

  1. php正则匹配utf-8编码的中文汉字

    在javascript中,要判断字符串是中文是很简单的.比如: var str = "php编程"; if (/^[\u4e00-\u9fa5]+$/.test(str)) { a ...

  2. 【转】 Python subprocess模块学习总结

    从Python 2.4开始,Python引入subprocess模块来管理子进程,以取代一些旧模块的方法:如 os.system.os.spawn*.os.popen*.popen2.*.comman ...

  3. Virgo标签打印

    去年刚换新的公司,熟悉新的业务和代码,在修改公司打印标签的时候,感觉到无比烦躁与头痛.只因为不好维护,所有的标签打印,全部是GDI+绘制,每次修改微调,都只能全部运行才能看到效果.程序过大,编译过慢, ...

  4. btsync 分享资源

    Btsync是一款跨平台软件,可以在不同的设备之间共享文件. Btsync类似于BT下载,用户对用户(多用户)之间的传送. 文档的分享者可以将资源放到文件夹下,生成共享Key,分享给接受者,接受者只需 ...

  5. 【广告】win10 uwp 水印图床 含代码

    本文主要是广告我的软件. 图床可以加速大家写博客上传图片的时间,通过简化我们的操作来得到加速. 在写博客的时候,我们发现,我们需要上传一张图片,需要先打开图片,然后选择本地图片,然后上传. 但是我经常 ...

  6. JavaScript对象之关联数组

    Tip: 内容摘抄自<JavaScript权威指南>,看过该书的同学可以忽略本文. 存取一个对象的属性的方式: obj.attr; obj["attr"]; 两者最重要 ...

  7. Cocos2d-x Lua游戏开发Mac环境搭建以及一点点感悟

    接触Cocos2d-x 最近由于公司项目的需要,自己开始接触Cocos,开始做一些简单的轻量级的游戏,以前没有接触过这一块的东西,也是借助这个机会学习一下游戏的开发,由于以前自己接触的全都是iOS和A ...

  8. 【转】FIO使用指南

    原文地址:http://blog.csdn.net/yuesichiu/article/details/8722417 Fio压测工具和io队列深度理解和误区 这个文档是对fio-2.0.9 HOWT ...

  9. Cosmos OpenSSD--greedy_ftl1.2.0(二)

    FTL的整个流程如下: 下面先来看写的流程: 写的代码如下: if((hostCmd.reqInfo.Cmd == IDE_COMMAND_WRITE_DMA) || (hostCmd.reqInfo ...

  10. Centos 7.0 execute yum update ——File "/usr/libexec/urlgrabber-ext-down", line 75, in <module> 解决方式

    [打开这个文件:/usr/lib/python2.7/site-packages/urlgrabber/grabber.py找到elif errcode in (42, 55,56)   用  eli ...