一、Ubuntu20.04前期准备(系统与工具)
系统基础确认与配置
验证版本:远程连接后执行lsb_release-a,确认输出“Release:20.04”“Codename:focal”,确保为64位系统(执行uname-m,显示“x86_64”即符合)。
关闭不必要服务:执行systemctlstopapportsystemctldisableapport(关闭错误报告服务,避免占用资源),并创建专属目录:mkdir-p/usr/local/legend/server/usr/local/legend/data(分别存服务端、数据库文件,便于管理)。
必备工具清单(Ubuntu20.04适配版)
远程工具:Xshell(命令行操作)、WinSCP(可视化传文件,Windows与Ubuntu互传);
传奇服务端:选择“LinuxUbuntu兼容版”(如1.76复古端,避免Windows端,会出现“无法执行二进制文件”错误);
数据库:MariaDB10.3(Ubuntu20.04默认源自带版本,兼容性优于高版本MySQL);
依赖库:gcc、libc6-dev、net-tools、php(服务端编译、Web支持必需,通过apt安装);
编辑器:Notepad++(本地修改配置文件,支持Ubuntu编码,避免中文乱码);
登录器:侠客登录器Linux版(生成客户端可识别的.exe文件,支持跨系统连接)。
二、Ubuntu20.04环境搭建(核心步骤)
更新源并安装依赖
先更新apt源(确保下载最新依赖):sudoaptupdate-y;
批量安装必备依赖:sudoaptinstall-ygcclibc6-devnet-toolsapache2mariadb-serverphpphp-mysql;
验证安装:执行apache2-v(显示Apache版本)、mysql-V(显示MariaDB版本)、php-v(显示PHP版本,需5.6+),确认无报错。
配置MariaDB数据库(传奇专用)
启动数据库并设开机自启:sudosystemctlstartmariadbsudosystemctlenablemariadb;
初始化数据库(设置root密码,删除安全风险项):
执行sudomysql_secure_installation,按提示操作:
输入root初始密码(默认空,直接回车);
设新root密码(建议含字母+数字,如“leg123db”);
依次输入“Y”确认:删除匿名账号、禁止root远程登录(本地架设够用)、删除测试数据库、刷新权限。
创建传奇数据库与账号:
登录数据库:sudomysql-uroot-p(输入刚设的密码);
建库:createdatabaselegend_dbcharactersetutf8;;
授权账号:grantallprivilegesonlegend_db.*to'legend_user'@'localhost'identifiedby'你的密码';(替换“你的密码”为自定义密码);
刷新权限:flushprivileges;;
退出:exit;。
导入服务端SQL文件:
用WinSCP将服务端自带的db.sql上传至/usr/local/legend/data,执行sudomysql-ulegend_user-plegend_db</usr/local/legend/data/db.sql,输入密码完成导入。
三、Ubuntu20.04传奇服务端部署
服务端文件传输与解压
通过WinSCP将Ubuntu兼容版传奇服务端压缩包(如legend_server.tar.gz)上传至/usr/local/legend/server;
执行解压命令(指定目录,避免文件混乱):sudotar-zxvf/usr/local/legend/server/legend_server.tar.gz-C/usr/local/legend/server;
赋予执行权限(Ubuntu权限严格,不设会启动失败):
sudochmod+x/usr/local/legend/server/*.sh
sudochmod+x/usr/local/legend/server/GameSrv/usr/local/legend/server/LoginSrv。
修改服务端核心配置
编辑IP与端口:
执行sudovi/usr/local/legend/server/Config/ServerInfo.conf,按i进入编辑模式,将ServerIP改为服务器公网IP(本地测试用127.0.0.1),ServerPort设为7000(默认未占用端口),按Esc后输入:wq保存退出。
调整游戏参数:
编辑/usr/local/legend/server/Config/GameConfig.conf,修改经验倍率(如ExpRate=5)、金币掉落率(GoldRate=3),保存方式同上。
启动服务端并验证
后台启动服务端(避免关闭远程工具后进程终止):
cd/usr/local/legend/server
sudonohup./StartServer.sh&
验证进程:执行sudopsaux|grepGameSrv,若显示GameSrv和LoginSrv进程(如root12340.00.1123456789?S12:340:00./GameSrv),说明启动成功;
若启动失败:查看日志sudocatnohup.out,若提示“缺少libstdc++.so.6”,执行sudoaptinstall-ylibstdc++6补充依赖。
四、登录器适配与Ubuntu防火墙配置
生成兼容登录器
通过WinSCP将Linux登录器生成工具(如LoginMaker)上传至/usr/local/legend/server,赋予权限:sudochmod+x/usr/local/legend/server/LoginMaker;
执行生成命令(替换“你的公网IP”为实际IP):
cd/usr/local/legend/server
sudo./LoginMaker-ip你的公网IP-port7000-out/usr/local/legend/server/LegendLogin.exe;
下载登录器:用WinSCP将生成的LegendLogin.exe下载至本地,复制到传奇客户端根目录(如D:\LegendClient)。
开放传奇所需端口(ufw防火墙)
Ubuntu20.04默认启用ufw防火墙,需开放7000端口(服务端通信)和80端口(若需Web注册页面):
sudoufwallow7000/tcp
sudoufwallow80/tcp
启用防火墙并验证:
sudoufwenable(首次启用会提示“命令可能中断现有SSH连接”,输入“y”确认);
sudoufwstatus(显示“7000/tcpALLOWAnywhere”“80/tcpALLOWAnywhere”即配置成功)。
五、Ubuntu20.04架设常见问题解决
服务端启动后进程秒消失
查日志:sudocat/usr/local/legend/server/nohup.out,若显示“数据库连接失败”,核对ServerInfo.conf中数据库账号密码(是否与legend_user的密码一致);
若显示“权限被拒绝”,重新执行sudochmod+x赋予所有服务端文件执行权限(包括子目录):sudochmod-R+x/usr/local/legend/server。
客户端无法连接服务器
排查步骤:
本地测试:在Ubuntu服务器执行curlhttp://localhost:7000,若返回“连接被拒绝”,检查服务端是否启动;
端口监听:sudonetstat-tuln|grep7000,若无结果,说明端口未监听,重新配置ServerInfo.conf的端口;
公网访问:若为云服务器,需在控制台安全组开放7000端口(Ubuntu防火墙与云安全组需同时配置)。
Apache服务启动失败(需Web支持时)
查错误日志:sudocat/var/log/apache2/error.log,若提示“端口80被占用”,执行sudolsof-i:80查看占用进程,用sudokill-9进程ID结束占用;
重启Apache:sudosystemctlrestartapache2,再执行sudosystemctlstatusapache2确认“active(running)”。
PHP解析失败(注册页面显示代码)
确认Apache已加载PHP模块:sudoa2enmodphp7.4(Ubuntu20.04默认PHP版本为7.4,替换为实际版本);
重启Apache:sudosystemctlrestartapache2,再访问注册页面(如http://服务器IP/register.php),即可正常显示。
系统基础确认与配置
验证版本:远程连接后执行lsb_release-a,确认输出“Release:20.04”“Codename:focal”,确保为64位系统(执行uname-m,显示“x86_64”即符合)。
关闭不必要服务:执行systemctlstopapportsystemctldisableapport(关闭错误报告服务,避免占用资源),并创建专属目录:mkdir-p/usr/local/legend/server/usr/local/legend/data(分别存服务端、数据库文件,便于管理)。
必备工具清单(Ubuntu20.04适配版)
远程工具:Xshell(命令行操作)、WinSCP(可视化传文件,Windows与Ubuntu互传);
传奇服务端:选择“LinuxUbuntu兼容版”(如1.76复古端,避免Windows端,会出现“无法执行二进制文件”错误);
数据库:MariaDB10.3(Ubuntu20.04默认源自带版本,兼容性优于高版本MySQL);
依赖库:gcc、libc6-dev、net-tools、php(服务端编译、Web支持必需,通过apt安装);
编辑器:Notepad++(本地修改配置文件,支持Ubuntu编码,避免中文乱码);
登录器:侠客登录器Linux版(生成客户端可识别的.exe文件,支持跨系统连接)。
二、Ubuntu20.04环境搭建(核心步骤)
更新源并安装依赖
先更新apt源(确保下载最新依赖):sudoaptupdate-y;
批量安装必备依赖:sudoaptinstall-ygcclibc6-devnet-toolsapache2mariadb-serverphpphp-mysql;
验证安装:执行apache2-v(显示Apache版本)、mysql-V(显示MariaDB版本)、php-v(显示PHP版本,需5.6+),确认无报错。
配置MariaDB数据库(传奇专用)
启动数据库并设开机自启:sudosystemctlstartmariadbsudosystemctlenablemariadb;
初始化数据库(设置root密码,删除安全风险项):
执行sudomysql_secure_installation,按提示操作:
输入root初始密码(默认空,直接回车);
设新root密码(建议含字母+数字,如“leg123db”);
依次输入“Y”确认:删除匿名账号、禁止root远程登录(本地架设够用)、删除测试数据库、刷新权限。
创建传奇数据库与账号:
登录数据库:sudomysql-uroot-p(输入刚设的密码);
建库:createdatabaselegend_dbcharactersetutf8;;
授权账号:grantallprivilegesonlegend_db.*to'legend_user'@'localhost'identifiedby'你的密码';(替换“你的密码”为自定义密码);
刷新权限:flushprivileges;;
退出:exit;。
导入服务端SQL文件:
用WinSCP将服务端自带的db.sql上传至/usr/local/legend/data,执行sudomysql-ulegend_user-plegend_db</usr/local/legend/data/db.sql,输入密码完成导入。
三、Ubuntu20.04传奇服务端部署
服务端文件传输与解压
通过WinSCP将Ubuntu兼容版传奇服务端压缩包(如legend_server.tar.gz)上传至/usr/local/legend/server;
执行解压命令(指定目录,避免文件混乱):sudotar-zxvf/usr/local/legend/server/legend_server.tar.gz-C/usr/local/legend/server;
赋予执行权限(Ubuntu权限严格,不设会启动失败):
sudochmod+x/usr/local/legend/server/*.sh
sudochmod+x/usr/local/legend/server/GameSrv/usr/local/legend/server/LoginSrv。
修改服务端核心配置
编辑IP与端口:
执行sudovi/usr/local/legend/server/Config/ServerInfo.conf,按i进入编辑模式,将ServerIP改为服务器公网IP(本地测试用127.0.0.1),ServerPort设为7000(默认未占用端口),按Esc后输入:wq保存退出。
调整游戏参数:
编辑/usr/local/legend/server/Config/GameConfig.conf,修改经验倍率(如ExpRate=5)、金币掉落率(GoldRate=3),保存方式同上。
启动服务端并验证
后台启动服务端(避免关闭远程工具后进程终止):
cd/usr/local/legend/server
sudonohup./StartServer.sh&
验证进程:执行sudopsaux|grepGameSrv,若显示GameSrv和LoginSrv进程(如root12340.00.1123456789?S12:340:00./GameSrv),说明启动成功;
若启动失败:查看日志sudocatnohup.out,若提示“缺少libstdc++.so.6”,执行sudoaptinstall-ylibstdc++6补充依赖。
四、登录器适配与Ubuntu防火墙配置
生成兼容登录器
通过WinSCP将Linux登录器生成工具(如LoginMaker)上传至/usr/local/legend/server,赋予权限:sudochmod+x/usr/local/legend/server/LoginMaker;
执行生成命令(替换“你的公网IP”为实际IP):
cd/usr/local/legend/server
sudo./LoginMaker-ip你的公网IP-port7000-out/usr/local/legend/server/LegendLogin.exe;
下载登录器:用WinSCP将生成的LegendLogin.exe下载至本地,复制到传奇客户端根目录(如D:\LegendClient)。
开放传奇所需端口(ufw防火墙)
Ubuntu20.04默认启用ufw防火墙,需开放7000端口(服务端通信)和80端口(若需Web注册页面):
sudoufwallow7000/tcp
sudoufwallow80/tcp
启用防火墙并验证:
sudoufwenable(首次启用会提示“命令可能中断现有SSH连接”,输入“y”确认);
sudoufwstatus(显示“7000/tcpALLOWAnywhere”“80/tcpALLOWAnywhere”即配置成功)。
五、Ubuntu20.04架设常见问题解决
服务端启动后进程秒消失
查日志:sudocat/usr/local/legend/server/nohup.out,若显示“数据库连接失败”,核对ServerInfo.conf中数据库账号密码(是否与legend_user的密码一致);
若显示“权限被拒绝”,重新执行sudochmod+x赋予所有服务端文件执行权限(包括子目录):sudochmod-R+x/usr/local/legend/server。
客户端无法连接服务器
排查步骤:
本地测试:在Ubuntu服务器执行curlhttp://localhost:7000,若返回“连接被拒绝”,检查服务端是否启动;
端口监听:sudonetstat-tuln|grep7000,若无结果,说明端口未监听,重新配置ServerInfo.conf的端口;
公网访问:若为云服务器,需在控制台安全组开放7000端口(Ubuntu防火墙与云安全组需同时配置)。
Apache服务启动失败(需Web支持时)
查错误日志:sudocat/var/log/apache2/error.log,若提示“端口80被占用”,执行sudolsof-i:80查看占用进程,用sudokill-9进程ID结束占用;
重启Apache:sudosystemctlrestartapache2,再执行sudosystemctlstatusapache2确认“active(running)”。
PHP解析失败(注册页面显示代码)
确认Apache已加载PHP模块:sudoa2enmodphp7.4(Ubuntu20.04默认PHP版本为7.4,替换为实际版本);
重启Apache:sudosystemctlrestartapache2,再访问注册页面(如http://服务器IP/register.php),即可正常显示。

