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

news/2025/2/21 4:45:31/

前言:
之前的开发工作一直是在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):
  • 找到Window中我们需要被用来做共享目录,这里我直接在D盘下面新建一个ShaderFiles目录,指定共享目录,右键打开文件夹的属性窗口,选中共享页签,点击共享:

    选择要与其他共享的用户时,选择前面步骤新建的linsh用户:

    然后点击添加将其添加到列表中,权限级别也可直接修改,修改完成之后点击共享按钮,再次查看ShaderFiles的属性时,发现共享页签下面多了一个网络路径表示设置共享成功:

2.Linux安装Samba:

在Linux系统下,打开终端:

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

    sudo apt-get install samba


    安装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:~$ 

    • /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).## <file system> <mount point>   <type>  <options>       <dump>  <pass># / was on /dev/sda1 during installationUUID=8cdb2ac2-5f81-4e29-9a89-69b21cfa61ea /               ext4    errors=remount-ro 0       1# swap was on /dev/sda5 during installationUUID=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的文件管理系统,在网络选项下面会有一个连接到服务器选项,打开添加远程共享目录地址:

    • 这里添加的地址必须带smb前缀,这是smb服务的规则:
    • 点击连接输入在Windows中已设置访问权限的账号密码(例如:账号:linsh,密码:123456),验证成功,可以进入到共享目录并且侧栏会多出一个网络连接节点:

对比方法一和二,不难发现,在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 environmentJAVA_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保存和退出。

http://www.ppmy.cn/news/167537.html

相关文章

Android drm-hwcomposer

软件环境&#xff1a;ubuntu20.04 aosp 硬件环境&#xff1a;X86 PC 模拟环境&#xff1a;在host ubuntu20.04启动支持图形(by virtio-gpu)的Android虚拟机1. 介绍 HWC 会执行以下计算&#xff1a; 1. SurfaceFlinger 向HWC 提供一个完整的层列表&#xff0c;并询问“您希望…

android安全测试框架,针对安全元件的 CTS 测试

为了提供更好的安全性,有些设备嵌入了安全元件 (SE),这是一种单独的防篡改硬件,专门用于存储加密数据。Open Mobile API 是一种标准 API,用于与设备的安全元件进行通信。Android 9 支持该 API,并提供后端实现(包括安全元件服务和 SE HAL)。 安全元件服务负责检查设备是否支…

ffmpeg源码简析(十三)ffmpeg API变更 2009-03-01—— 2017-05-09变更

Add&#xff1a;新增的Change/Rename&#xff1a;修改的Deprecate&#xff1a;过时的。以后很有可能删除。Remove&#xff1a;删除的The last version increases were: libavcodec: 2015-08-28 libavdevice: 2015-08-28 libavfilter: 2015-08-28 libavformat: 2015-08…

OA项目之我的会议(会议排座送审)

前言&#xff1a; 本篇博客是完善会议OA项目所分享的一篇博客&#xff0c;是跟上几篇博客是有关联的。 该博客分享的是OA项目中会议排座和送审的功能。 目录 前言&#xff1a; 一、会议排座插件介绍 需求分析&#xff1a; 二、具体实现 出发点&#xff1a; 流程&#xff…

基于机器学习和深度学习的推荐系统实战【图书推荐、电影推荐、音乐推荐】

推荐系统在我们日常生活中发挥着非常重要的作用,相信实际从事过推荐相关的工程项目的人或多或少都会看多《推荐系统实战》这本书,我也是读者之一,个人感觉对于推荐系统的入门来说这本书籍还是不错的资料。很多商场、大厂的推荐系统都是很复杂也是很强大的,大多是基于深度学…

pkg-config工具的使用

首先关于转载&#xff0c;只是为了自己学习备忘&#xff0c;请大家支持原博主&#xff1a;http://blog.csdn.net/ccf19881030/article/details/9042733 一、 pkg-config简介 1、关于pkg-config工具下面这篇博客有个简单的介绍&#xff0c;链接如下&#xff1a; 理解 pkg-confi…

Docker curriculum (3): 多容器环境

多容器环境 在上一节中&#xff0c;我们看到了使用 Docker 运行应用程序是多么容易和有趣。我们从一个简单的静态网站开始&#xff0c;然后尝试了一个 Flask 应用程序。只需几个命令&#xff0c;我们就可以在本地或者云服务器中运行这两者。这两个应用程序的一个共同点是它们都…

三种常用的BIOS升级方法

BIOS是英文 Basic Input Output System 的缩略语&#xff0c;直译就是“基本输入输出系统”。BIOS是集成固化到计算机内主板上一个ROM芯片上的程序&#xff0c;它提供了电脑系统最基础的功能支持。其中包含了开机引导代码、基础硬件驱动程序、参数设置程序等。 目前市面上较流行…