开始搭建基于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. Reliability diagrams

    Reliability diagrams (Hartmann et al. 2002) are simply graphs of the Observed frequency of an event ...

  2. MongoDB的全文检索(Text Search)功能

    自己的项目中用到了mongodb,需要做一个搜索功能,刚开始不知道怎么搞,查了mongodb有个全文检索功能. 全文检索分为两步 第一,建立索引 db.stores.createIndex( { na ...

  3. SQLServer中SQL语句与可执行二进制语句

    SQLServer可以执行正常SQL语句也可以执行被转换的二进制语句,一般会用此方法进行数据库注入操作,骗过基本的字符过滤 --将二进制格式转为普通SQL语句 ) = 0x53454C45435420 ...

  4. gitlab与jenkins的自动化部署(通过webhook与ansilble)

    gitlab与jenkins的自动化部署(通过webhook与ansilble) 1.部署介绍 gitlab服务器:192.168.1.49:80jenkins服务器:192.168.1.49:818 ...

  5. c# 【MVC】WebApi设置返回Json

    public static HttpResponseMessage toJson(Object obj) { String str; if (obj is String || obj is Char) ...

  6. asp.net调用Lodop实现页面打印或局部打印,可进行打印设置或预览

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="WebPrint.aspx.cs ...

  7. Kvm虚拟化的一种打包及部署方案(采用tar包,lvm方式)

    Kvm虚拟化的一种打包部署方案(采用tar包,lvm方式) –-–-–-2016年终总结 一 毕业之后跟师兄学到的第一块主要内容,理解花了不少时间.期间经历了shell的入门.linux基础知识入门. ...

  8. JavaScriptOOP

    1. OOP基础 1.1面向对象编程OOP 1.语言的分类:      ① 面向机器:汇编语言      ② 面向过程:C语言      ③ 面向对象:C++ Java PHP 等   2.面向过程与 ...

  9. JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA - 3

    原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7718741.html ------------------------------------ ...

  10. 学web前端开发写给新手的建议,超实用!

    01 前面的话 如今我们使用的互联网,客户端与服务器端的交互无时无刻不在发生.比如我们在浏览器打开网页,浏览器就是客户端,将网页数据发过来的也就是服务器.其实服务器,并没有什么特别的,也就是一台昼夜不 ...