【参考原文】UnityMMO资源整合&服务器部署
【参考原文】CentOS7下安装mysql5.7
概述
github看到大鹏前辈UnityMMO项目,甚是佩服,于是想编译运行一发,但苦因自己初次接触这东西,遂有此文记坑,即centos+vmware workstation+skynet+mysql搭建过程。
CentOS7搭建
- 下载centos7镜像:阿里云站点
- 下载vmware workstation
- 步骤在此,不再累赘Centos7下载和安装教程
踩坑
- 共享文件夹设置
centos端选项卡:虚拟机\设置\选项\共享文件夹\添加
本地win端:本地文件夹,右键属性,共享,高级共享,设为共享文件夹 - centos端挂载操作(挂载了才能在/mnt/hgfs/下看到啊啊啊)
– 查看设置的共享文件夹
vmware-hgfsclient
– 安装open-vm-tools
yum install open-vm-tools
– 挂载
vmhgfs-fuse /mnt/hgfs/
编译skynet
因为设置了共享文件夹,所以直接在共享文件夹skynet下编译了,但是出现错误:
ln: creating symbolic link
lib/libjemalloc.so' to
libjemalloc.so.2’:
Operation not support
软连接失败,卒。常识性错误!?反正就是不能在共享文件夹下编译。
故,将项目中Server部分复制一份在centos端,在skynet文件夹下进行编译
cd Server
cd skynet
make linux
安装msyql
-
获取安装配置文件
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
rpm -ivh mysql57-community-release-el7-9.noarch.rpm -
执行完成后会在/etc/yum.repos.d/目录下生成两个repo文件mysql-community.repo mysql-community-source.repo
进入到 /etc/yum.repos.d/目录后,安装yum install mysql-server
-
启动msyql
systemctl start mysqld
-
获取初次登入密码
grep ‘temporary password’ /var/log/mysqld.log
-
登入
mysql -u root -p;
-
设置密码(工程使用默认密码123456,就不要自由发挥了)
set global validate_password_policy=LOW;#设置密码检查策略为LOW
set global validate_password_length=6;#设置密码的长度为6
set password=“123456”; -
创建数据库
create database UnityMMOAccount;
create database UnityMMOGame;
show databases; //查看数据库 -
操作数据库(重头来过),这里直接在db所在目录下操作数据库,否则相对路径就需要改变!
cd Server/data
mysql -u root -p;
use UnityMMOAccount;
source UnityMMOAccount;
use UnityMMOGame;
source UnityMMOGame;
quit;
启动server
./run.sh
踩坑
- init service failed: /root/UnityMMO/Server/skynet/lualib/skynet/socket.lua:360: Listen error
报此错的原因是已经运行了skynet服务,再次执行./run.sh时会出现上面报错。
使用命令找到skynet进程
netstat -apn
杀死该进程:
kill -s 9 xxxxx - win端Socket无法连接上linux端问题
原因:linux开启了防火墙
解决:
iptables -F
iptables -P INPUT ACCEPT(设置默认允许规则)
另外方式:
systemctl status firewalld #查看防火墙状态
systemctl stop firewalld.service #关闭防火墙
systemctl start firewalld.service #开启防火墙
systemctl disable firewalld.service #关闭开机启动
systemctl enable firewalld.service #开启开机启动