-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
150 additions
and
110 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,17 +2,22 @@ | |
|
||
双平台对于环境的共同需求:`MySQL`, `Node.js`,如果没有安装请先自行搜索教程安装 | ||
|
||
下列有 `Windows` 与 `Linux` 双端的部署操作 | ||
可按照实际情况自行选择使用的系统: | ||
- `Windows`:操作难度小,但需要的服务器性能高 | ||
- `Linux`:操作难度大,但需要的服务器性能低 | ||
|
||
## 导入数据库 | ||
|
||
例:上文目录结构中`scriptfiles`下存在`samp202110022151gbk.sql`文件,用记事本软件打开可看到**默认创建的数据库名为**`samp`,如果想修改则自行修改。 | ||
例:上文目录结构中 `scriptfiles` 下存在 `samp202110022151gbk.sql` 文件,用记事本软件打开可看到**默认创建的数据库名为** `samp` ,如果想修改则自行修改。 | ||
|
||
进入`mysql` 终端,执行命令`source 你的服务器文件夹路径\scriptfiles\备份数据库文件名.sql` | ||
进入 `mysql` 终端,执行命令 `source 你的服务器文件夹路径\scriptfiles\备份数据库文件名.sql` | ||
|
||
例`source d:\rst\scriptfiles\samp202110022151gbk.sql;` | ||
例:`source d:\rst\scriptfiles\samp202110022151gbk.sql;` | ||
|
||
## Win | ||
|
||
1. 删除为`linux`部署提供的文件,注意:注意文件后缀,例`samp-npc`是不带`.exe`的 | ||
1. 删除为 `linux` 部署提供的文件,注意:注意文件后缀,例 `samp-npc` 是不带 `.exe` 的 | ||
|
||
- `samp-npc` | ||
- `samp03svr` | ||
|
@@ -21,72 +26,102 @@ | |
- `server_linux.cfg` | ||
- `plugins\linux` | ||
|
||
2. 移动`plugins\win`文件夹下所有文件到`plugins`下,之后删除`plugins\win`文件夹 | ||
2. 移动 `plugins\win` 文件夹下所有文件到 `plugins` 下,之后删除 `plugins\win` 文件夹 | ||
|
||
3. 配置如下文件中以下几处数据库和邮箱系统的端口及密码。 | ||
|
||
注:**如果不需要用到邮箱系统可以跳过以下的邮箱部分的步骤**,邮箱系统主要是实现用户绑定邮箱,找回密码等操作。 | ||
|
||
`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": "[email protected]", // 修改为你的邮箱账号,并删除这行注释 | ||
"pass": "passwd" // 修改为你的邮箱密码,并删除这行注释 | ||
}, | ||
"tls": { | ||
"rejectUnauthorized": false | ||
} | ||
} | ||
} | ||
``` | ||
|
||
4. 重命名`server_win.cfg` 为`server.cfg` | ||
注:**如果不需要用到邮箱系统可以跳过以下的邮箱部分的步骤**,邮箱系统主要是实现用户绑定邮箱,找回密码等操作。 | ||
|
||
::: details `pawno\include\common\main.inc` | ||
```c | ||
#define MYSQL_USER "root" // 改成你的MYSQL用户名 | ||
#define MYSQL_PASS "123456"// 改成你的MYSQL服务密码 | ||
#define MYSQL_DB "samp"// 改成你自己的数据库名 | ||
|
||
#define SAMPMAILJS_PASSWORD "1234567" // 改成你的邮箱系统密码(不是邮箱密码) | ||
``` | ||
::: | ||
|
||
::: details `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": "[email protected]", // 修改为你的邮箱账号,并删除这行注释 | ||
"pass": "passwd" // 修改为你的邮箱密码,并删除这行注释 | ||
}, | ||
"tls": { | ||
"rejectUnauthorized": false | ||
} | ||
} | ||
} | ||
``` | ||
::: | ||
|
||
4. 重命名 `server_win.cfg` 为 `server.cfg` | ||
|
||
5. 配置 `server.cfg` 中的 `rcon` 默认密码为你想要的密码,这里默认是 `changeme` ,**不修改无法启动服务器!** | ||
|
||
``` | ||
rcon_password changeme | ||
``` | ||
6. 运行 `pawno\pawno.exe` ,编译 `gamemodes\racespeedtime.pwn` ,出现 `gamemodes\racespeedtime.amx` 即编译成功,如果编译有报错请自行根据提示修复问题 | ||
7. 运行 `samp-server.exe` | ||
- 如果提示数据库连接失败,请回到 3 重新配置数据库信息 | ||
- 如果控制台出现 `Run time error 19: "File or function is not found"` ,请安装[Microsoft Visual C++2015](https://www.microsoft.com/zh-CN/download/details.aspx?id=48145)的 `x64` 和 `x86` 环境,或使用[DX修复工具增强版](https://blog.csdn.net/vbcom/article/details/7245186)进行完全补全。 | ||
如果已经有环境请先全部卸载该环境后重新安装。 | ||
- 如果正常进入服务器并见到注册登录对话框代表运行成功 | ||
5. 配置`server.cfg`中的`rcon`默认密码为你想要的密码,这里默认是`changeme`,**不修改无法启动服务器!** | ||
|
||
``` | ||
rcon_password changeme | ||
``` | ||
8. 如果使用邮箱系统请通过终端,在`scriptfiles\SAMPMailJS-master`文件夹下(首次请先执行`npm install`)执行`node sampmail.js` | ||
6. 运行`pawno\pawno.exe`,编译`gamemodes\racespeedtime.pwn`,出现`gamemodes\racespeedtime.amx`即编译成功,如果编译有报错请自行根据提示修复问题 | ||
:::: warning 注意 | ||
由于 `MySQL` 的版本高低影响 | ||
在运行 `samp-server.exe` 的过程中,可能会出现以下两行的报错提示: | ||
7. 运行`samp-server.exe` | ||
```cmd | ||
[ERROR] #2019 'Can't initialize character set unknown (path: compiled_in)' | ||
[MySQL]无法连接到MYSQL服务器 | ||
``` | ||
|
||
- 如果提示数据库连接失败,请回到 3 重新配置数据库信息 | ||
::: details 解决办法 | ||
1. 打开 `MySQL` 的配置目录 ==> `C:\ProgramData\MySQL\MySQL Server 8.0` | ||
2. 使用任意代码编辑器(如:`Notepad3`)对 `my.ini` 进行编辑: | ||
在对应节中添加代码,并保存: | ||
```ini | ||
[client] | ||
default-character-set = utf8mb4 | ||
|
||
- 如果控制台出现`Run time error 19: "File or function is not found"`,请安装[Microsoft Visual C++2015](https://www.microsoft.com/zh-CN/download/details.aspx?id=48145)的`x64`和`x86`环境。 | ||
[mysql] | ||
default-character-set = utf8mb4 | ||
|
||
如果已经有环境请先全部卸载该环境后重新安装。 | ||
[mysqld] | ||
character-set-client-handshake = FALSE | ||
character-set-server = utf8mb4 | ||
collation-server = utf8mb4_unicode_ci | ||
``` | ||
3. 重启服务器或重启 `MySQL` 对应服务,重新运行 `samp-server.exe` 即可 | ||
::: | ||
|
||
- 如果正常进入服务器并见到注册登录对话框代表运行成功 | ||
8. 如果使用邮箱系统请通过终端,在`scriptfiles\SAMPMailJS-master`文件夹下(首次请先执行`npm install`)执行`node sampmail.js` | ||
:::: | ||
|
||
## Linux | ||
|
||
**注意:Linux 下运行需要系统底层 GCC 版本>=8.2.0** | ||
|
||
查看`gcc`版本`gcc -v`,如果低于 8.2.0 请先更新至 8.2.0 版本,**满足则跳过该步**。 | ||
查看 `gcc` 版本 `gcc -v` ,如果低于 `8.2.0` 请先更新至 `8.2.0` 版本,**满足则跳过该步**。 | ||
|
||
**以下以 CentOS7 为例** | ||
|
||
|
@@ -103,77 +138,82 @@ mkdir build cd build …/configure --enable-languages=c,c++ --enable-checking=re | |
|
||
2. 根据 CPU 核数,例如 4 核,执行编译 `make -j4` | ||
|
||
3. 安装`make install` | ||
3. 安装 `make install` | ||
|
||
4. 重启`reboot` | ||
4. 重启 `reboot` | ||
|
||
5. 查看动态库版本`strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX` | ||
5. 查看动态库版本 `strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX` | ||
|
||
`Centos7` 搭配`GCC`4.8.5,最新的`GLIBCXX`版本是 3.4.19 | ||
`Centos7` 搭配 `GCC` 4.8.5,最新的 `GLIBCXX` 版本是 3.4.19 | ||
|
||
6. 查找 `libstdc++.so.6*` 库文件 `find / -name libstdc++.so.6*` | ||
7. 软链接`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` 成功! | ||
- 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` 成功! | ||
|
||
#### 部署 | ||
|
||
0. 安装必要环境后,运行时可能会出现`libmysqlclient.so.18`类似的提示,原因是缺少 i386,i686 的环境配置,比较耗费时间精力,尝试安装以下依赖或降低`Mysql`版本为`5.7`左右,再次安装。 | ||
0. 安装必要环境后,运行时可能会出现`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 | ||
``` | ||
|
||
```sh | ||
yum install mysql-community-libs | ||
yum install mysql-community-libs.i386 | ||
yum install mysql-community-libs.i686 | ||
``` | ||
::: tip 提示 | ||
如果使用的是Ubuntu或其他系统是无法使用上述指令的 | ||
推荐使用CentOS进行部署,否则将会非常麻烦 | ||
::: | ||
|
||
**mysql 修改默认字符集为 utf8mb4,以 CentOS 为例** | ||
**mysql 修改默认字符集为 utf8mb4,以 CentOS 为例** | ||
|
||
打开 my.cnf,一般情况下载`etc`目录下 | ||
打开 my.cnf,一般情况下载 `etc` 目录下 | ||
|
||
```bash | ||
vi /etc/my.cnf | ||
``` | ||
```bash | ||
vi /etc/my.cnf | ||
``` | ||
|
||
然后修改内容(只列出需要修改的地方) | ||
然后修改内容(只列出需要修改的地方) | ||
|
||
[mysqld]的修改如下 | ||
[mysqld]的修改如下 | ||
|
||
```bash | ||
[mysqld] | ||
character-set-server = utf8mb4 | ||
collation-server = utf8mb4_unicode_ci | ||
``` | ||
```bash | ||
[mysqld] | ||
character-set-server = utf8mb4 | ||
collation-server = utf8mb4_unicode_ci | ||
``` | ||
|
||
[client]的修改如下 | ||
[client]的修改如下 | ||
|
||
```bash | ||
[client] | ||
default-character-set = utf8mb4 | ||
``` | ||
```bash | ||
[client] | ||
default-character-set = utf8mb4 | ||
``` | ||
|
||
[mysql]的修改如下 | ||
[mysql]的修改如下 | ||
|
||
```bash | ||
[mysql] | ||
default-character-set = utf8mb4 | ||
``` | ||
```bash | ||
[mysql] | ||
default-character-set = utf8mb4 | ||
``` | ||
|
||
然后保存退出、重启 mysqld 服务。 | ||
然后保存退出、重启 mysqld 服务。 | ||
|
||
```bash | ||
systemctl restart mysqld | ||
``` | ||
```bash | ||
systemctl restart mysqld | ||
``` | ||
|
||
1. 提前在 Win 系统运行`pawno\pawno.exe`,编译`gamemodes\racespeedtime.pwn`,出现`gamemodes\racespeedtime.amx`即编译成功,如果编译有报错请自行根据提示修复问题,把编译后的文件上传至服务器 | ||
1. 提前在 Win 系统运行 `pawno\pawno.exe` ,编译 `gamemodes\racespeedtime.pwn` ,出现 `gamemodes\racespeedtime.amx` 即编译成功,如果编译有报错请自行根据提示修复问题,把编译后的文件上传至服务器 | ||
|
||
2. 删除为`Win`部署提供的文件 | ||
|
||
|
@@ -185,18 +225,18 @@ mkdir build cd build …/configure --enable-languages=c,c++ --enable-checking=re | |
- `log-core.dll` | ||
- `plugins\win` | ||
|
||
3. 移动`plugins\linux`文件夹下所有文件到`plugins`下,之后删除`plugins\linux`文件夹 | ||
3. 移动 `plugins\linux` 文件夹下所有文件到 `plugins` 下,之后删除 `plugins\linux` 文件夹 | ||
|
||
4. 配置数据库邮箱文件同`Win`配置 3 | ||
4. 配置数据库邮箱文件同 `Win` 配置 3 | ||
|
||
5. 重命名`server_linux.cfg` 为`server.cfg` | ||
5. 重命名 `server_linux.cfg` 为 `server.cfg` | ||
|
||
6. 配置`server.cfg`中的`rcon`默认密码同`Win`配置 5 | ||
6. 配置 `server.cfg` 中的 `rcon` 默认密码同 `Win` 配置 5 | ||
|
||
7. 通过`screen` 实现退出`ssh`保持运行,`screen`教程请自行学习 | ||
7. 通过 `screen` 实现退出 `ssh` 保持运行,`screen`教程请自行学习 | ||
|
||
- 新建一个`screen`用于运行服务器, 进入文件夹下 `./autoRestart.sh &` | ||
- 新建一个 `screen` 用于运行服务器, 进入文件夹下 `./autoRestart.sh &` | ||
- 如果提示数据库连接失败,请回到 4 重新配置数据库信息 | ||
- 如果正常进入服务器并见到注册登录对话框代表运行成功 | ||
|
||
8. 如果使用邮箱系统请通过终端,再新建一个`screen`用于运行邮箱系统,进入对应`scriptfiles\SAMPMailJS-master`文件夹下,(首次请先执行`npm install`)执行`node sampmail.js` | ||
8. 如果使用邮箱系统请通过终端,再新建一个 `screen` 用于运行邮箱系统,进入对应 `scriptfiles\SAMPMailJS-master` 文件夹下,(首次请先执行 `npm install` )执行 `node sampmail.js` |