zoukankan      html  css  js  c++  java
  • docker下编译mangoszero WOW60级服务端(二)

    开始搭建基于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服务端代码

  • 相关阅读:
    BZOJ3790 : 神奇项链
    BZOJ3630 : [JLOI2014]镜面通道
    BZOJ3738 : [Ontak2013]Kapitał
    个人总结
    mac 下的 top 命令
    去掉Xcode源码末尾的空格
    让UILabel的文字顶部对齐
    使用RBTool自动提交code review请求
    不要在init和dealloc函数中使用accessor
    将textField编辑完内容作为参数发送请求
  • 原文地址:https://www.cnblogs.com/oliverCJ/p/7835061.html
Copyright © 2011-2022 走看看