Skip to content
在此页面上

运维

双平台对于环境的共同需求:MySQL, Node.js,如果没有安装请先自行搜索教程安装

导入数据库

例:上文目录结构中scriptfiles下存在samp202110022151gbk.sql文件,用记事本软件打开可看到默认创建的数据库名为samp,如果想修改则自行修改。

进入mysql 终端,执行命令source 你的服务器文件夹路径\scriptfiles\备份数据库文件名.sql

source d:\rst\scriptfiles\samp202110022151gbk.sql;

Win

  1. 删除为linux部署提供的文件,注意:注意文件后缀,例samp-npc是不带.exe
  • samp-npc
  • samp03svr
  • announce
  • log-core.so
  • server_linux.cfg
  • plugins\linux
  1. 移动plugins\win文件夹下所有文件到plugins下,之后删除plugins\win文件夹

  2. 配置如下文件中以下几处数据库和邮箱系统的端口及密码。

    注:如果不需要用到邮箱系统可以跳过以下的邮箱部分的步骤,邮箱系统主要是实现用户绑定邮箱,找回密码等操作。

    pawno\include\common\main.inc

    c
    #define MYSQL_USER	"root" // 改成你的MYSQL用户名
    #define MYSQL_PASS 	"123456"// 改成你的MYSQL服务密码
    #define MYSQL_DB	"samp"// 改成你自己的数据库名
    
    #define SAMPMAILJS_PASSWORD "1234567"  // 改成你的邮箱系统密码(不是邮箱密码)
    

    scriptfiles\SAMPMailJS-master\config.json

    json
    {
      "machineIp": "127.0.0.1",
      "listenPort": 9008,
      "httpPassword": "1234567", // 改成你的邮箱系统密码,和上方1234567一样,并删除这行注释
      "enableDebug": true,
      "smtp": {
        "host": "smtp.163.com", // 修改为你的邮箱系统提供商smtp服务,并删除这行注释
        "port": 465, // 修改为你的邮箱系统提供商smtp服务的端口,并删除这行注释
        "secure": true,
        "auth": {
          "user": "username@163.com", // 修改为你的邮箱账号,并删除这行注释
          "pass": "passwd" // 修改为你的邮箱密码,并删除这行注释
        },
        "tls": {
          "rejectUnauthorized": false
        }
      }
    }
    
  3. 重命名server_win.cfgserver.cfg

  4. 配置server.cfg中的rcon默认密码为你想要的密码,这里默认是changeme不修改无法启动服务器!

    rcon_password changeme
    
  5. 运行pawno\pawno.exe,编译gamemodes\racespeedtime.pwn,出现gamemodes\racespeedtime.amx即编译成功,如果编译有报错请自行根据提示修复问题

  6. 运行samp-server.exe

    • 如果提示数据库连接失败,请回到 3 重新配置数据库信息

    • 如果控制台出现Run time error 19: "File or function is not found",请安装Microsoft Visual C++2015x64x86环境。

      如果已经有环境请先全部卸载该环境后重新安装。

    • 如果正常进入服务器并见到注册登录对话框代表运行成功

  7. 如果使用邮箱系统请通过终端,在scriptfiles\SAMPMailJS-master文件夹下(首次请先执行npm install)执行node sampmail.js

Linux

注意:Linux 下运行需要系统底层 GCC 版本>=8.2.0

查看gcc版本gcc -v,如果低于 8.2.0 请先更新至 8.2.0 版本,满足则跳过该步

以下以 CentOS7 为例

升级 GCC 到 8.2.0

  1. 安装依赖
sh
yum -y install gcc gcc-c++ kernel-devel yum -y install libgcc.i686 glibc-devel.i686
wget http://mirror.hust.edu.cn/gnu/gcc/gcc-8.2.0/gcc-8.2.0.tar.gz tar xvf gcc-8.2.0.tar.gz
cd gcc-8.2.0 ./contrib/download_prerequisites
mkdir build cd build …/configure --enable-languages=c,c++ --enable-checking=release --enable-multilib
  1. 根据 CPU 核数,例如 4 核,执行编译 make -j4

  2. 安装make install

  3. 重启reboot

  4. 查看动态库版本strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

    Centos7 搭配GCC4.8.5,最新的GLIBCXX版本是 3.4.19

  5. 查找 libstdc++.so.6* 库文件 find / -name libstdc++.so.6*

  6. 软链接glibc

    • 64 位
      • 把文件复制到 lib64 下 cp /usr/local/lib64/libstdc++.so.6.0.25 /usr/lib64/libstdc++.so.6.0.25
      • 进入 lib64 目录cd /usr/lib64
      • 删除旧的链接文件rm -f libstdc++.so.6
      • 创建新的链接文件ln -s libstdc++.so.6.0.25 libstdc++.so.6
    • 32 位
      • 把文件复制到 lib 下cp /usr/local/lib/libstdc++.so.6.0.25 /usr/lib/libstdc++.so.6.0.25
      • 进入 lib 目录cd /usr/lib
      • 删除旧的链接文件rm -f libstdc++.so.6
      • 创建新的链接文件ln -s libstdc++.so.6.0.25 libstdc++.so.6
      • 再次查看动态库版本 strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX,出现3.4.25 GLIBCXX 成功!

部署

  1. 安装必要环境后,运行时可能会出现libmysqlclient.so.18类似的提示,原因是缺少 i386,i686 的环境配置,比较耗费时间精力,尝试安装以下依赖或降低Mysql版本为5.7左右,再次安装。

    sh
    yum install mysql-community-libs
    yum install mysql-community-libs.i386
    yum install mysql-community-libs.i686
    

    mysql 修改默认字符集为 utf8mb4,以 CentOS 为例

    打开 my.cnf,一般情况下载etc目录下

    bash
    vi /etc/my.cnf
    

    然后修改内容(只列出需要修改的地方)

    [mysqld]的修改如下

    bash
    [mysqld]
    character-set-server = utf8mb4
    collation-server = utf8mb4_unicode_ci
    

    [client]的修改如下

    bash
    [client]
    default-character-set = utf8mb4
    

    [mysql]的修改如下

    bash
    [mysql]
    default-character-set = utf8mb4
    

    然后保存退出、重启 mysqld 服务。

    bash
    systemctl restart mysqld
    
  2. 提前在 Win 系统运行pawno\pawno.exe,编译gamemodes\racespeedtime.pwn,出现gamemodes\racespeedtime.amx即编译成功,如果编译有报错请自行根据提示修复问题,把编译后的文件上传至服务器

  3. 删除为Win部署提供的文件

  • samp-npc.exe
  • samp-server.exe
  • announce.exe
  • server_win.cfg
  • libmariadb.dll
  • log-core.dll
  • plugins\win
  1. 移动plugins\linux文件夹下所有文件到plugins下,之后删除plugins\linux文件夹

  2. 配置数据库邮箱文件同Win配置 3

  3. 重命名server_linux.cfgserver.cfg

  4. 配置server.cfg中的rcon默认密码同Win配置 5

  5. 通过screen 实现退出ssh保持运行,screen教程请自行学习

    • 新建一个screen用于运行服务器, 进入文件夹下 ./autoRestart.sh &
    • 如果提示数据库连接失败,请回到 4 重新配置数据库信息
    • 如果正常进入服务器并见到注册登录对话框代表运行成功
  6. 如果使用邮箱系统请通过终端,再新建一个screen用于运行邮箱系统,进入对应scriptfiles\SAMPMailJS-master文件夹下,(首次请先执行npm install)执行node sampmail.js

始于2014/5/31,由 VitePress 和 Algolia DocSearch 强力驱动