1. server端環(huán)境搭建
服務(wù)器: ubuntu 16.04 LTS
代理: nginx/1.10.3 (Ubuntu)
數(shù)據(jù)庫: 10.0.38-MariaDB-0ubuntu0.16.04.1 Ubuntu 16.04
1.1 安裝MariaDB
sudo apt-get install mariadb-server
1.2 安裝Nginx
sudo apt-get install nginx
1.3 安裝nodejs4.6
下載nodejs包
cd /root/
wget http://nodejs.org/dist/v4.6.0/node-v4.6.0-linux-x64.tar.gz
解壓文件
tar -zvxf node-v4.6.0-linux-x64.tar.gz
拷貝到bin
cp ./node-v4.6.0-linux-x64/* /usr/local/sbin
1.4 mariaDB額外配置
mysql
在mariadb命令里輸入:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
繼續(xù)輸入:
FLUSH PRIVILEGES;
1.5 設(shè)置防火墻
在命令行界面:
iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
service iptables save
若提示iptables: unrecognized service
在ubuntu中由于不存在 /etc/init.d/iptales文件间校,所以無法使用service等命令來啟動(dòng)iptables,需要用modprobe命令氧腰。
輸入命令:
apt-get install iptables
sudo modprobe ip_tables
(附)
關(guān)閉iptables(關(guān)閉命令要比啟動(dòng)復(fù)雜)
iptables -F
iptables -X
iptables -Z
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
modprobe -r ip_tables
依次執(zhí)行以上命令即可關(guān)閉iptables边苹,否則在執(zhí)行modproble -r ip_tables時(shí)將會(huì)提示
FATAL: Module ip_tables is in use.
sudo ufw reload
1.6 上傳server代碼
- 將server目錄放至目錄服務(wù)器(我使用的XShell系列XFtp)
- mariaDB導(dǎo)入sql文件
我在windows使用MySQL Workbench, 然后遠(yuǎn)程連接mysql, 這樣一來就可以使用圖形界面操作數(shù)據(jù)庫了
首先, 需要在防火墻開啟服務(wù)器3306端口訪問
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
sudo ufw reload
然后需要mysql通過訪問權(quán)限:
vim /etc/mysql/mariadb.conf.d/50-server.cnf
注釋掉
bind-address = 127.0.0.1
變成下面這樣
#bind-address = 127.0.0.1
命令行打開mysql, 依次輸入:
set password for 'root'@'localhost'=password('123456');
grant all on *.* to 'root'@'%' identified by '123456';
flush privileges;
之后, 在MySQL Workbench創(chuàng)建數(shù)據(jù)庫名(按需取名), 并導(dǎo)入sql文件
sql文件目錄在"項(xiàng)目目錄\server\sql\db_babykylin.sql"
新增并修改configs文件
在"項(xiàng)目目錄\server"目錄下,
cp configs_win.js configs.js
vim configs.js
打開后, 修改HALL_IP為服務(wù)器地址ip, 修改mysql里的HOST, USER, PSWD, DB項(xiàng)
var HALL_IP = "127.0.0.1"; # 這里需要修改為服務(wù)器ip
var HALL_CLIENT_PORT = 9001;
var HALL_ROOM_PORT = 9002;
var ACCOUNT_PRI_KEY = "^&*#$%()@";
var ROOM_PRI_KEY = "~!@#$(*&^%$&";
var LOCAL_IP = 'localhost';
exports.mysql = function(){
return {
HOST:'127.0.0.1',
USER:'root', # 這里修改用戶
PSWD:'', # 這里修改密碼
DB:'db_babykylin', # 這里修改數(shù)據(jù)庫名
PORT:3306,
}
}
...
運(yùn)行項(xiàng)目: 項(xiàng)目目錄\server\start_all.sh
2. 客戶端環(huán)境搭建
2.1 下載安裝 CocosCreator2.0.6
官網(wǎng)的下載倉庫里有, 不多做介紹了
2.2 修改配置
打開client/assets/scripts/HTTP.js
#var URL = "http://127.0.0.1:9000";
#修改為你所在服務(wù)器的ip, 例如此處ip為47.106.141.249
var URL = "http://47.106.141.249:9000";
exports.master_url = null;
exports.url = null;
exports.token = null;
...
將上面的 URL 修改為 account_server 所在服務(wù)器的
1. 使用 Chrome 來進(jìn)行調(diào)試會(huì)好很多
2. 使用 Browser 進(jìn)行游戲時(shí), 如果想多開, 可以像下面一樣修改 URL 地址
http://localhost:7456/?account=asdf1
http://localhost:7456/?account=asdf2
http://localhost:7456/?account=asdf3
http://localhost:7456/?account=asdf4
程序會(huì)解析上面的 account 參數(shù)震肮,進(jìn)行游戲登陸
3. 打開登錄
Cocos運(yùn)行游戲 -> "登錄游戲" -> 創(chuàng)建角色 -> 進(jìn)入大廳
很順暢的樣子哦.
不過發(fā)現(xiàn)創(chuàng)建房間后進(jìn)不去? 這是怎么一回事呢?
報(bào)錯(cuò)信息如下:
socket.io.js:1967 WebSocket connection to 'ws://127.0.0.1:10000/socket.io/?EIO=3&transport=websocket' failed: Error during WebSocket handshake: Unexpected response code: 400
網(wǎng)上搜了一番
在configs.js中, 最后一行,暴露給客戶端的接口 ,CLIENT_PORT 改成10001 改個(gè)端口解決了
記得把10001端口加入防火墻!!!
記得運(yùn)行命令killall node先殺死node進(jìn)程, 然后server./start_all.sh
最后, 終于能進(jìn)房間玩麻將啦, 哈哈哈哈!!!!