《从零开始搭建游戏服务器》Linux开发环境配置

前言:
之前的开发工作一直是在Windows开发环境下进行的,但是正真发布和外网运营势必要发布到Linux环境下,而且有很多服务端的工具对于Windows系统的兼容性并不是非常完善,就像常用的Docker容器就只支持Linux系统,所以提前了解和部署Linux开发环境势在必行。

一、准备工作:

首先你需要一台安装Linux系统的机器,或者直接在Windows系统中安装虚拟机,这里我使用的就是虚拟机,安装的系统是Ubuntu14.04.4的系统镜像。
为了节省虚拟机中的磁盘空间,我们通常使用Windows和Linux之间建立共享文件的方式,将例如安装包之类只是在Linux中临时使用的文件放在Windows中,Linux通过Samba或者VM Tool去访问共享目录中的文件,由于安装VM Tool有坑,所以这里我选择Samba来搭建共享服务。


二、Linux与Windows搭建共享服务:

环境:

  • Windows:
    Ip地址:192.168.154.1
    共享目录:D:/ShareFiles
  • Linux:
    虚拟机

1.Windows下创建共享目录:

  • Windows下控制面板->用户账户->管理账户中新建一个用户(我新建的用户取名:linsh),设置密码(这里我设置的密码为:123456):
    《从零开始搭建游戏服务器》Linux开发环境配置_第1张图片
  • 找到Window中我们需要被用来做共享目录,这里我直接在D盘下面新建一个ShaderFiles目录,指定共享目录,右键打开文件夹的属性窗口,选中共享页签,点击共享:
    《从零开始搭建游戏服务器》Linux开发环境配置_第2张图片
    选择要与其他共享的用户时,选择前面步骤新建的linsh用户:
    《从零开始搭建游戏服务器》Linux开发环境配置_第3张图片
    然后点击添加将其添加到列表中,权限级别也可直接修改,修改完成之后点击共享按钮,再次查看ShaderFiles的属性时,发现共享页签下面多了一个网络路径表示设置共享成功:
    《从零开始搭建游戏服务器》Linux开发环境配置_第4张图片

2.Linux安装Samba:

在Linux系统下,打开终端:

  • 先使用Ubuntu默认的安装软件的工具apt-get来安装samba(假如使用的是RH的话,可以使用yum来进行软件安装):

    sudo apt-get install samba

    《从零开始搭建游戏服务器》Linux开发环境配置_第5张图片
    安装samba客户端,使用指令sudo apt-get install smbclient

    linsh@ubuntu:~$ sudo apt-get install smbclient
    正在读取软件包列表... 完成
    正在分析软件包的依赖关系树       
    正在读取状态信息... 完成       
    smbclient 已经是最新的版本。
    smbclient 被设置为手动安装。
    下列软件包是自动安装的并且现在不需要了:
    libntdb1 python-ntdb
    Use 'apt-get autoremove' to remove them.
    升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 295 个软件包未被升级。

    开启和关闭samba的指令:

    sudo /etc/init.d/samba start    #开启samba服务
    sudo /etc/init.d/samba stop     #关闭samba服务
  • samba添加到系统的开机自启动项中,由于Ubuntu没有RH(红帽)那样的chkconfig命令,我们可以选择其他的管理自启动项的方式,例如:sysv-rc-conf,操作步骤如下:

    • 安装:使用指令apt-get install sysv-rc-conf
    • 设置服务,使之开机启动:sudo sysv-rc-conf samba on

    此外,还可以通过直接改 /etc/rc0.d ~ /etc/rc6.d/etc/rcS.d 下的东西,S开头的表示启动,K开头的表示不启动,

  • 假如需要修改samba的配置,可以直接修改samba的配置文件:/etc/samba/smb.conf

3.连接访问共享目录:

Lunix下访问Windows下共享目录的办法有两个:一是文件挂载,二是网络远程连接服务
方法一:

  • 1.安装cifs-utils

    linsh@ubuntu:~$ sudo apt-get install cifs-utils
    [sudo] password for linsh: 
    正在读取软件包列表... 完成
    正在分析软件包的依赖关系树       
    正在读取状态信息... 完成       
    下列软件包是自动安装的并且现在不需要了:
    libntdb1 python-ntdb
    Use 'apt-get autoremove' to remove them.
    将会安装下列额外的软件包:
    keyutils
    建议安装的软件包:
    winbind
    下列【新】软件包将被安装:
    cifs-utils keyutils
    升级了 0 个软件包,新安装了 2 个软件包,要卸载 0 个软件包,有 295 个软件包未被升级。
    需要下载 120 kB 的软件包。
    解压缩后会消耗掉 410 kB 的额外空间。
    您希望继续执行吗? [Y/n] y
    获取:1 http://us.archive.ubuntu.com/ubuntu/ trusty/main cifs-utils amd64 2:6.0-1ubuntu2 [86.7 kB]
    获取:2 http://us.archive.ubuntu.com/ubuntu/ trusty/main keyutils amd64 1.5.6-1 [33.6 kB]
    下载 120 kB,耗时 7秒 (15.1 kB/s)                                              
    正在选中未选择的软件包 cifs-utils。
    (正在读取数据库 ... 系统当前共安装有 194558 个文件和目录。)
    正准备解包 .../cifs-utils_2%3a6.0-1ubuntu2_amd64.deb  ...
    正在解包 cifs-utils (2:6.0-1ubuntu2) ...
    正在选中未选择的软件包 keyutils。
    正准备解包 .../keyutils_1.5.6-1_amd64.deb  ...
    正在解包 keyutils (1.5.6-1) ...
    正在处理用于 man-db (2.6.7.1-1ubuntu1) 的触发器 ...
    正在设置 cifs-utils (2:6.0-1ubuntu2) ...
    正在设置 keyutils (1.5.6-1) ...
  • 2.新建Linux下要挂载Windows共享文件的目录,这里我直接选择挂载在/mnt/Windows,挂载步骤如下:

    • 创建/mnt/Windows目录:sudo mkdir /mnt/Windows
    • 将Windows的ShareFiles目录挂载到Linux下的/mnt/Windows目录下:mount -t cifs -o username=linsh //192.168.154.1/ShareFiles /mnt/Windows,然后要求输入密码,假如挂载成功,可以在/mnt/Windows下查看到Windows的ShareFiles中的内容:

      linsh@ubuntu:~$ sudo mount -t cifs -o username=linsh //192.168.154.1/ShareFiles /mnt/Windows
      Password for linsh@//192.168.154.1/ShareFiles: 
      linsh@ubuntu:~$ 

      《从零开始搭建游戏服务器》Linux开发环境配置_第6张图片

    • /etc/fatab中添加此共享目录的相关挂载信息,这样是为了实现开机时自动挂载共享目录:
      
      # /etc/fstab: static file system information.
      
      #
      
      # Use 'blkid' to print the universally unique identifier for a
      
      
      # device; this may be used with UUID= as a more robust way to name devices
      
      
      # that works even if disks are added and removed. See fstab(5).
      
      #
      
      #                
      
      
      # / was on /dev/sda1 during installation
      
      UUID=8cdb2ac2-5f81-4e29-9a89-69b21cfa61ea /               ext4    errors=remount-ro 0       1
      
      # swap was on /dev/sda5 during installation
      
      UUID=90f1147d-81e3-48c5-8375-817c1a254061 none            swap    sw              0       0
      /dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0
      //192.168.154.1/ShareFiles /mnt/Windows cifs username=linsh,password=123456 0       0

方法二:

  • 打开Linux的文件管理系统,在网络选项下面会有一个连接到服务器选项,打开添加远程共享目录地址:
    《从零开始搭建游戏服务器》Linux开发环境配置_第7张图片
    • 这里添加的地址必须带smb前缀,这是smb服务的规则:
      《从零开始搭建游戏服务器》Linux开发环境配置_第8张图片
    • 点击连接输入在Windows中已设置访问权限的账号密码(例如:账号:linsh,密码:123456),验证成功,可以进入到共享目录并且侧栏会多出一个网络连接节点:
      《从零开始搭建游戏服务器》Linux开发环境配置_第9张图片

对比方法一和二,不难发现,在Linux这种终端指令操作为主的系统下,挂载的方式更加方便。


三、Java开发环境部署:

1.安装前检查:

先使用java -version检查当前是否已安装JDK,假如没有,则出现如下提示:

linsh@ubuntu:/mnt/Windows$ java -version
程序 'java' 已包含在下列软件包中:
 * default-jre
 * gcj-4.8-jre-headless
 * openjdk-7-jre-headless
 * gcj-4.6-jre-headless
 * openjdk-6-jre-headless
请尝试:sudo apt-get install <选定的软件包>
linsh@ubuntu:/mnt/Windows$ 

2.安装选择和下载:

先下载所需版本的JDK,下载的包有两种格式可以选择:

  • .rpm:安装需通过alien工具转化为.deb格式才能安装,使用CentOS 6.4或者Red Hat常用这种方式,而Ubuntu不支持;
  • .tar.gz压缩包:这是解压后就可直接使用的版本。

3. JDK安装:

  • 方法一:.rpm安装:
    这里我下载的是jdk-8u121-linux-x64.rpm,安装步骤如下:

    注:需使用sudo apt-get install alien指令安装alien

    • 通过sudo alient jdk-8u121-linux-x64.rpm将.rpm文件装换为.deb文件;
    • 通过sudo dpkg -i jdk1.8.0_121-1.8.0_121.deb进行安装。
  • 方法二:.tar.gz压缩包安装:
    首先我下载了最新的Linux版本的JDK压缩包:jdk-8u121-linux-x64.gz,安装步骤如下:

    • 在/usr/local下新建一个目录命名为jvm:

      sudo mkdir /usr/local/jvm
    • 解压安装包到jvm目录下:

      sudo tar -zxvf  /mnt/Windows/jdk-8u121-linux-x64.gz  -C /usr/local/jvm

      打开jvm目录,可以看到目录下多了一个jdk1.8.0_121的文件夹,这就是解压缩后得到的安装包;

    • 配置环境变量:
      使用终端打开和编辑/etc/profile配置文件:

      sudo vi /etc/profile

      在文本末尾加上JDK的相关配置信息:

      
      # SET Java environment
      
      JAVA_HOME=/usr/local/jvm/jdk1.8.0_121
      CLASSPATH=.:$JAVA_HOME/lib.tool.jar
      PATH=$JAVA_HOME/bin:$PATH
      export JAVA_HOME CLASSPATH PATH

      输入一下指令是修改配置文件立即生效:

      source /etc/profile

      通过java -version查询是否配置成功,如果成功,则显示当前JDK的版本:

      linsh@ubuntu:~$ java -version
      java version "1.8.0_121"
      Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
      Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
      linsh@ubuntu:~$ 

    至此,JDK的安装工作就完成了。


四、Redis数据库:

方法一:

  • 到Redis官网下载安装包redis-3.2.8.tar.gz
  • 在Linux下使用一下指令进行解压和编译:

    $ tar xzf redis-3.2.8.tar.gz
    $ cd redis-3.2.8
    $ make
  • make完成之后,在redis-3.2.8/src文件目录下会生成redis的服务程序redis-server,还有用于测试的客户端程序redis-cli,接下来我们就来尝试启动redis服务,进入到src目录下执行./redis-server指令,启动成功如下图所示:

    linsh@ubuntu:/mnt/Windows/redis-3.2.8/src$ ./redis-server
    2338:C 20 Mar 23:40:38.803 # Warning: no config file specified, using the default config. In order to specify a config file use ./redis-server /path/to/redis.conf
    2338:M 20 Mar 23:40:38.806 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
    2338:M 20 Mar 23:40:38.806 # Server can't set maximum open files to 10032 because of OS error: Operation not permitted.
    2338:M 20 Mar 23:40:38.806 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.
                    _._                                                  
               _.-``__ ''-._                                             
          _.-``    `.  `_.  ''-._           Redis 3.2.8 (00000000/0) 64 bit
      .-`` .-```.  ```\/    _.,_ ''-._                                   
     (    '      ,       .-`  | `,    )     Running in standalone mode
     |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
     |    `-._   `._    /     _.-'    |     PID: 2338
      `-._    `-._  `-./  _.-'    _.-'                                   
     |`-._`-._    `-.__.-'    _.-'_.-'|                                  
     |    `-._`-._        _.-'_.-'    |           http://redis.io        
      `-._    `-._`-.__.-'_.-'    _.-'                                   
     |`-._`-._    `-.__.-'    _.-'_.-'|                                  
     |    `-._`-._        _.-'_.-'    |                                  
      `-._    `-._`-.__.-'_.-'    _.-'                                   
          `-._    `-.__.-'    _.-'                                       
              `-._        _.-'                                           
                  `-.__.-'                                               
    
    2338:M 20 Mar 23:40:38.831 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
    2338:M 20 Mar 23:40:38.832 # Server started, Redis version 3.2.8
    2338:M 20 Mar 23:40:38.832 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
    2338:M 20 Mar 23:40:38.832 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
    2338:M 20 Mar 23:40:38.833 * The server is now ready to accept connections on port 6379
  • 打开redis-cli客户端进行测试,假如一切正常,应该可以出现下面的输出:

    linsh@ubuntu:/mnt/Windows/redis-3.2.8/src$ ./redis-cli
    127.0.0.1:6379> set name linsh
    OK
    127.0.0.1:6379> get name
    "linsh"
  • 文件整理:
    其实安装包中这么多文件,我们最后使用过程中需要用到的也就三个文件:redis.conf、redis-server和redis-cli,在/usr/local/jvm下建一个目录redis-3.2.8用来放置Redis相关文件:

    sudo mkdir /usr/local/jvm/redis-3.2.8 
    sudo cp /mnt/Windows/redis-3.2.8/redis.conf /mnt/Windows/redis-3.2.8/src/redis-server /mnt/Windows/redis-3.2.8/src/redis-cli /usr/local/jvm/redis-3.2.8 

方法二:

假如使用的是Ubuntu的话,直接使用apt-get来安装,指令如下:

$sudo apt-get update
$sudo apt-get install redis-server

附加:vi编辑器优化:

Ubuntu的系统原生vi其实是vim-common,使用起来非常不方便,我们通常先卸载掉它然后重新安装vi,大致步骤如下:

  • 卸载vim-common

    linsh@ubuntu:~$ sudo apt-get remove vim-common
    [sudo] password for linsh: 
    正在读取软件包列表... 完成
    正在分析软件包的依赖关系树       
    正在读取状态信息... 完成       
    下列软件包是自动安装的并且现在不需要了:
    libntdb1 python-ntdb
    Use 'apt-get autoremove' to remove them.
    下列软件包将被【卸载】:
    ubuntu-minimal vim-common vim-tiny
    升级了 0 个软件包,新安装了 0 个软件包,要卸载 3 个软件包,有 284 个软件包未被升级。
    解压缩后将会空出 1,339 kB 的空间。
    您希望继续执行吗? [Y/n] y
    (正在读取数据库 ... 系统当前共安装有 196166 个文件和目录。)
    正在卸载 ubuntu-minimal (1.325) ...
    正在卸载 vim-tiny (2:7.4.052-1ubuntu3) ...
    update-alternatives: using /usr/bin/see to provide /usr/bin/view (view) in 自动模式
    正在卸载 vim-common (2:7.4.052-1ubuntu3) ...
    正在处理用于 man-db (2.6.7.1-1ubuntu1) 的触发器 ...
    正在处理用于 mime-support (3.54ubuntu1.1) 的触发器 ...
    linsh@ubuntu:~$ 
  • 安装vim

    linsh@ubuntu:~$ sudo apt-get install vim
    正在读取软件包列表... 完成
    正在分析软件包的依赖关系树       
    正在读取状态信息... 完成       
    下列软件包是自动安装的并且现在不需要了:
    libntdb1 python-ntdb
    Use 'apt-get autoremove' to remove them.
    将会安装下列额外的软件包:
    vim-common vim-runtime
    建议安装的软件包:
    ctags vim-doc vim-scripts
    下列【新】软件包将被安装:
    vim vim-common vim-runtime
    升级了 0 个软件包,新安装了 3 个软件包,要卸载 0 个软件包,有 284 个软件包未被升级。
    需要下载 5,933 kB 的软件包。
    解压缩后会消耗掉 28.4 MB 的额外空间。
    您希望继续执行吗? [Y/n] y
    获取:1 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main vim-common amd64 2:7.4.052-1ubuntu3.1 [95.2 kB]
    获取:2 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main vim-runtime all 2:7.4.052-1ubuntu3.1 [4,882 kB]
    获取:3 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main vim amd64 2:7.4.052-1ubuntu3.1 [955 kB]
    下载 5,933 kB,耗时 1051秒 (9,102 B/s)                                      
    正在选中未选择的软件包 vim-common。
    (正在读取数据库 ... 系统当前共安装有 196107 个文件和目录。)
    正准备解包 .../vim-common_2%3a7.4.052-1ubuntu3.1_amd64.deb  ...
    正在解包 vim-common (2:7.4.052-1ubuntu3.1) ...
    正在选中未选择的软件包 vim-runtime。
    正准备解包 .../vim-runtime_2%3a7.4.052-1ubuntu3.1_all.deb  ...
    正在添加 vim-runtime 导致 /usr/share/vim/vim74/doc/help.txt 本地修改至 /usr/share/vim/vim74/doc/help.txt.vim-tiny
    正在添加 vim-runtime 导致 /usr/share/vim/vim74/doc/tags 本地修改至 /usr/share/vim/vim74/doc/tags.vim-tiny
    正在解包 vim-runtime (2:7.4.052-1ubuntu3.1) ...
    正在选中未选择的软件包 vim。
    正准备解包 .../vim_2%3a7.4.052-1ubuntu3.1_amd64.deb  ...
    正在解包 vim (2:7.4.052-1ubuntu3.1) ...
    正在处理用于 man-db (2.6.7.1-1ubuntu1) 的触发器 ...
    正在处理用于 mime-support (3.54ubuntu1.1) 的触发器 ...
    正在设置 vim-common (2:7.4.052-1ubuntu3.1) ...
    正在设置 vim-runtime (2:7.4.052-1ubuntu3.1) ...
    Processing /usr/share/vim/addons/doc
    正在设置 vim (2:7.4.052-1ubuntu3.1) ...
    update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vim (vim) in 自动模式
    update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vimdiff (vimdiff) in 自动模式
    update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/rvim (rvim) in 自动模式
    update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/rview (rview) in 自动模式
    update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vi (vi) in 自动模式
    update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/view (view) in 自动模式
    update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/ex (ex) in 自动模式
    linsh@ubuntu:~$ 
  • 在vi编辑环境下,将光标移动到要插入内容的位置,按i进入插入内容的模式,换行使用Shift+Enter,编辑完毕后,输入:wq保存和退出。

你可能感兴趣的:(java服务器,《从零开始搭建游戏服务器》)