Node này dùng để ghi lại các cài đặt và chạy một máy chủ TLBB trên máy ảo Centos 7 cài đặt trên Windows dùng VMWare. Nếu các bạn cần cài trên một VPS (máy ảo online) thì vẫn có thể sử dụng tài liệu này để tham khảo.
## Chuẩn bị một số file và phần mềm
Dưới đây là danh sách một số file và phần mềm cần để chạy một máy chủ TLBB. Có thể dùng các phần mềm tương tự khác, nhưng dưới đây là những gì mình đã dùng
* [VMWare Workstation Player](https://www.vmware.com/sg/products/workstation-player/workstation-player-evaluation.html)
* File [Centos 7.iso](http://mirrors.vhost.vn/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2207-02.iso) (Có thể xem thêm [tại đây](http://isoredirect.centos.org/centos/7/isos/x86_64/)).
* [Winscp](https://winscp.net/eng/download.php)
* [MySql Workbench](https://dev.mysql.com/downloads/workbench/)
* [MobaXterm](https://mobaxterm.mobatek.net/download.html)
* Source TLBB tùy chọn.
## Cài đặt Centos 7 trên VMWare
Việc cài đặt này bạn có thể tham khảo tại link dưới đây, rất chi tiết và đầy đủ.
https://blog.kdata.vn/huong-dan-cai-dat-centos7-tren-vmware-day-du-nhat-6339/
<ins>Lưu ý:</ins> Chọn dung lượng RAM của máy ảo trên 2GB nha (khuyến nghị là 4GB). Processor nên chọn 2.
### Cài đặt IP tĩnh
Máy ảo theo cách cài đặt này sẽ không có IP cố định, gây khó cho việc config server sau này. Nên chúng ta cần cài đặt IP tĩnh cho máy ảo.
Sau khi cài đặt xong và khởi chạy máy chủ Centos 7 chạy lệnh sau
```
cd /etc/sysconfig/network-scripts/
```
Sau đó dùng lệnh `ls` để liệt kê danh sách file trong thư mục để xem tên của network là gì. Ví dụ ở đây sẽ là `ifcfg-ens32`, chúng ta chạy lệnh bên dưới để edit file config này
```
vi ifcfg-ens32
```
Nhấn `I` để edit file. Tìm và đổi giá trị của 2 dòng như bên dưới
```
BOOTPROTO=static
ONBOOT=yes
```
Sau đó thêm vào cuối file các dòng sau. Trong đó `192.168.1.61` sẽ là IP tĩnh của máy ảo
```
IPADDR=192.168.1.61
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
PREFIX=24
IPV6_PRIVACY=no
```
Sau khi thay đổi file nhấn `ESC` và nhập `:wq` rồi `Enter` là file đã được lưu thành công. Chạy lệnh bên dưới để apply config mới cho network
```
systemctl restart network
```
Bạn có thể chạy lệnh `ip address` để kiểm tra xem config đã được thay đổi hay chưa. Nếu chưa thì start lại máy ảo luôn nhé!
## Cài đặt Server TLBB
Sau khi cài đặt được máy ảo Centos và config IP tĩnh thành công thì chúng ta đã có thể đi vào bước tiếp theo.
### Copy source tlbb vào máy ảo
Chúng ta sẽ sử dụng WinSCP để connect vào máy ảo và tiến hành transfer file `tlbb.tar.gz` vào thư mục `/home`. Các bạn có thể xem cách sử dụng WinSCP ở link này https://azdigi.com/blog/cong-cu/huong-dan-su-dung-winscp-ket-noi-vao-server-vps
### Cài đặt môi trường
Sử dụng MobaXterm để connect SSH đến máy ảo mới cài đặt. ([Hướng dẫn sử dụng](https://tenten.vn/help/ssh-huong-dan-ket-noi-bang-mobaxterm))
Chạy lệnh bên dưới và đổi giá trị từ "enforcing" sang "disable" và lưu lại (Tương tự như chỉnh file network config).
```
vi /etc/selinux/config
```
Sau đó chạy toàn bộ dòng lệnh bên dưới. Lưu ý rằng mình đang để mật khẩu database là `Test@123` các bạn có thể đổi nó thành mật khẩu khác nếu muốn.
```
cd /home
yum install glibc.i686 -y
yum install libstdc++.i686 -y
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/unixODBC-2.3.1-14.el7.i686.rpm
wget https://raw.githubusercontent.com/lehuuthanh5/stuff/main/mysql-connector-odbc-5.3.6-1.el7.i686.rpm
yum install unixODBC-2.3.1-14.el7.i686.rpm -y
yum install mysql-connector-odbc-5.3.6-1.el7.i686.rpm -y
ln -s /usr/lib/libmyodbc5w.so /usr/lib/libmyodbc5.so
ln -s /usr/lib/libodbc.so.2.0.0 /usr/lib/libodbc.so.1
yum install mariadb-server -y
systemctl start mariadb
systemctl enable mariadb
systemctl status mariadb
systemctl stop firewalld
systemctl disable firewalld
systemctl mask --now firewalld
mysql_secure_installation <<EOF
y
Test@123
Test@123
y
y
y
y
EOF
wget https://raw.githubusercontent.com/lehuuthanh5/stuff/main/tlbbdb_schema.sql
wget https://raw.githubusercontent.com/lehuuthanh5/stuff/main/web.sql
wget https://raw.githubusercontent.com/lehuuthanh5/stuff/main/createTlbbUser.sql
mysql -u root -pTest@123 < createTlbbUser.sql
mysql -u root -pTest@123 < tlbbdb.sql
mysql -u root -pTest@123 < web.sql
tar xzvf tlbb.tar.gz
cd /home/tlbb/Server
chmod +x ./ShareMemory
chmod +x ./smtool
chmod +x ./World
chmod +x ./Server
chmod +x ./Login
chmod +x ./shm
./shm start
./shm stop
echo '[tlbbdb]' >> /etc/odbc.ini
echo 'Description = ServerTLBB Database' >> /etc/odbc.ini
echo 'Driver = /usr/lib/libmyodbc5.so' >> /etc/odbc.ini
echo 'Server = 192.168.1.61' >> /etc/odbc.ini
echo 'Database = tlbbdb' >> /etc/odbc.ini
echo 'Port = 3306' >> /etc/odbc.ini
echo 'Option = 3' >> /etc/odbc.ini
echo 'User = tlbb' >> /etc/odbc.ini
echo 'Password = Test@123' >> /etc/odbc.ini
echo 'Socket = /var/lib/mysql/mysql.sock' >> /etc/odbc.ini
```
### Chạy Billing
Với source TLBB chúng ta có hai dạng Billing chính là Billing chạy trên Linux và chạy trên Windows. Các bạn có thể lựa chọn và chạy Billing mà bạn muốn. Mình đang dùng Billing Windows nên khi chạy online ngoài một VPS chạy Centos cho TLBB Server ra thì mình còn có một con VPS Windows nữa dành cho việc chạy Billing cũng như một số việc khác.
Các Billing đều có config dạng như sau:
```
本机IP=192.168.1.17 => IP máy chạy billing
服务端口=12680 => Port của billing
数据库IP=192.168.1.61 => IP máy ảo centos
数据库端口=3306
数据库用户名=tlbb => username của DB
数据库密码=Test@123 => pass của DB
数据库名=web => Tên Schema
```
Các bạn giải nén thư mục Billing trong đó sẽ có file dạng BillServer.ini hoặc config.ini hay tương tự. Hãy mở ra và chỉnh config cho đúng nha. Chỉnh xong thì các bạn có thể Run Billing rồi.
### Chỉnh sửa file cấu hình
Trước khi chạy được TLBB Server thì chúng ta cần sửa config trong 3 file sau:
* ServerInfo.ini
* ShareMemInfo.ini
* LoginInfo.ini
Với `ShareMemInfo.ini` và `LoginInfo.ini`, hai file này có cấu trúc tương tự nhau nên sẽ sửa y chang nhau thôi. Tham khảo bên dưới:
```
DBIP=192.168.1.61 => IP máy ảo centos
DBPort=3306
DBName=tlbbdb => tên database tlbb
DBUser=tlbb => username của DB
DBPassword=Test@123 => pass của DB
```
Với file `ServerInfo.ini` thì chúng ta cần chỉnh sửa nhiều hơn
```
[World]
IP=192.168.1.61 => IP máy ảo centos
Port=777
[Billing]
Number=1
IP0=192.168.1.17 => IP máy chạy billing. lưu ý: nếu chạy billing trên máy ảo linux thì điền IP máy ảo centos vào đây, còn chạy trên máy thật thì điền ip máy thật vào đây
Port0=12680 => Port (có thể thay đổi nhưng phải trùng với port trong billing)
[Server0]
ServerID=0
MachineID=0
IP0=192.168.1.61 => IP máy ảo centos
Port0=3731
IP1=192.168.1.61 => IP máy ảo centos
[Server1]
ServerID=2
MachineID=0
IP0=192.168.1.61 => IP máy ảo centos
Port0=3311
IP1=192.168.1.61 => IP máy ảo centos
```
### Chạy Server TLBB và vào game
Sau khi chỉnh sửa config xong thì các bạn dùng MobaXterm mở 4 tab SSH vào con máy ảo Centos `192.168.1.61`. Với mỗi tab các bạn run những câu lệnh tương ứng sau để chạy server:
Tab 1:
```
cd /home/tlbb/Server
./shm start
```
Tab 2:
```
cd /home/tlbb/Server
./World
```
Tab 3:
```
cd /home/tlbb/Server
./Login
```
Tab 4:
```
cd /home/tlbb/Server
./Server
```
Sau khi chạy xong những câu lệnh này và đợi tầm 2 phút thì server của các bạn đã được start thành công.
> Tip: MobaXterm hay những phần mềm tương tự thường có tính năng Macro Record dùng để lưu lại những bước chạy command như trên, hãy tận dụng để tiết kiệm thời gian sau này nhé!
Khi Server đã được start thì các bạn giải nén Client. Sau đó, tìm file Patch/pathinfo.txt và đổi tất cả IP và Port sang IP của máy ảo Centos và Port tương ứng đã config trong file `ServerInfo.ini`. Bây giờ các bạn có thể vào game rồi đó. Trong script database thì mình đang để một account mặc định là `test` có mật khẩu `1234qwer`, bạn có thể sử dụng nếu muốn.
## Tổng kết
Và đó là toàn bộ những gì mình làm để chạy một Server TLBB. Các bạn có thể dùng hướng dẫn này để chạy một server offline để chơi cho vui hay nghiên cứu về TLBB. Những bước bày cũng có thể dùng để chạy một server TLBB online trên VPS nhưng sẽ tiềm ẩn nhiều nguy cơ phá hoại. Hi vọng những chia sẻ này sẽ có ích cho các bạn.
Xin cảm ơn!