程序员的资源宝库

网站首页 > gitee 正文

游戏服务器部署和开服准备(游戏服务器部署和开服准备的区别)

sanyeah 2024-04-23 20:51:08 gitee 4 ℃ 0 评论

购买阿里云ECS (CenterOS 7.6 )

香港节点作为游戏服务器准备上线开服

示例规格 ecs.hfc6.large

镜像 centos_7_06_64_20G_alibase_20190711.vhd

 

配置安全组

开放端口 22(公司远程) 7920(web) 7911/7914(gameserver)   443(https)   3389 -1

备选?? 30000/30100  20/21 ( Ftp) 3306(mysql) 80(nginx)

 

配置运行环境

 

1 安装java 

参考 https://www.cnblogs.com/wjup/p/11041274.html

命令 yum install java-1.8.0-openjdk.x86_64

vi /etc/profile

在文件最后加入:

#set java environment
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.el7_8.x86_64/jre
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME CLASSPATH PATH

修改/etc/profile之后让其生效

. /etc/profile (注意 之后应有一个空格)

 

java -version

openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)

 

2 安装 rz

yum -y install lrzsz

 

3 安装SCP

yum install openssh-clients -y

游戏运行包 打包传输

tar zcvf server.tar.gz config/ log/ start.sh  unzip_start.sh  sts-0.0.1-SNAPSHOT.jar 

scp -p 47.100.197.xxx:/game/server.tar.gz /game

 

4 支持简体中文显示

改写文件

vi /etc/sysconfig/i18n

LANG="zh_CN.UTF-8" 
SYSFONT="latarcyrheb-sun16" 
SUPPORTED="zh_CN.UTF-8:zh_CN:zh"

编辑 /etc/profile配置文件,添加如下一行 
export LANG="zh_CN.UTF-8"
# 重新载入 
# . /etc/profile 
  
## 查看当前的字符集 
# echo $LANG

 

在终端 SecureCRT 设置Session Options  - Terminal-Appearance 设置charcter encoding  [UTF-8]

 

 

5.安装php7.2.9(编译安装make)

wget http://cn2.php.net/distributions/php-7.2.9.tar.gz ./

解压到 /usr/local/src/

安装前置包

yum -y install libxml2

yum -y install libxml2-devel
yum -y install openssl
yum -y install openssl-devel
yum -y install curl
yum -y install curl-devel
yum -y install libjpeg
yum -y install libjpeg-devel
yum -y install libpng
yum -y install libpng-devel
yum -y install freetype
yum -y install freetype-devel
yum -y install pcre
yum -y install pcre-devel
yum -y install libxslt
yum -y install libxslt-devel
yum -y install bzip2
yum -y install bzip2-devel
 
cd  /usr/local/src/php-7.2.9 #进入目录 
./configure    #编译参数带入 --enable-fpm  参考 https://www.cnblogs.com/lxdd/p/5633810.html     //补充更多完整的参数 https://www.cnblogs.com/sentangle/p/12054332.html
make           #编译 等等等...
make install   #安装
安装完毕默认目录 /usr/local/php 版本如下

 

 

php --version
PHP 7.2.9 (cli) (built: May 26 2020 16:00:49) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

 

 

6 .配置php-fpm

 

创建 www  用户组

#/usr/sbin/groupadd -f www

#/usr/sbin/useradd -g www www 

 

find / -name 'php-fpm.conf.default'
/usr/local/etc/

find / -name 'www.conf'
/usr/local/etc/php-fpm.d/

 

cd /usr/local/etc/

cp php-fpm.conf.default    php-fpm.conf #拷贝模板文件为php-fpm配置文件

vi /etc/php-fpm.conf #编辑 修改include内容 "include=NONE/etc/php-fpm.d/*.conf"  => "include =/usr/local/etc/php-fpm.d/*.conf"   

将 ;pid = run/php-fpm.pid  前面的分号去掉

 

 

 

复制并改写/usr/local/etc/php-fpm.d/  php-fpm.conf(来自??) www.conf(来自www.conf.default)

 

相关配置文件位置

/usr/local/etc/php-fpm.d/

-rw-r--r-- 1 root root 22147 5月 26 16:33 php-fpm.conf
-rw-r--r-- 1 root root 10012 5月 26 18:48 www.conf

 

vi /usr/local/etc/php-fpm.d/php-fpm.conf #编辑
user = www #设置php-fpm运行账号为www   需要与nginx user配置完全对应
group = www #设置php-fpm运行组为www  需要与nginx user配置完全对应
pid = run/php-fpm.pid #取消前面的分号

vi /usr/local/etc/php-fpm.d/www.conf #编辑

user = www #设置php-fpm运行账号为www   需要与nginx user配置完全对应
group = www #设置php-fpm运行组为www  需要与nginx user配置完全对应

 

启动报错  Failed to start php-fpm.service: Unit not found.

参考 https://www.cnblogs.com/starfish29/p/10570728.html  将php-fpm添加至service服务

超级坑的改名 很容易出错(爬坑3小时)

  
设置 php-fpm开机启动
cp /usr/local/src/php-7.2.9/sapi/fpminit.d.php-fpm.in   /etc/init.d/php-fpm    #拷贝php-fpm到启动目录
chmod +x /etc/init.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpm on

 

php-fpm 启动命令

systemctl start php-fpm.service

 

php-fpm 运行成功 注意启动用户是www

  

 

默认启动端口9000 查看成功

 

 

7.配置php.ini

cp php.ini  /usr/local/lib/php/php.ini #复制php配置文件到安装目录
rm -rf /etc/php.ini #删除系统自带配置文件
ln -s /usr/local/lib/php/php.ini /etc/php.ini #添加软链接

 

这一项默认被注释并且值为1,根据官方文档的说明,这里为了当文件不存在时,阻止Nginx将请求发送到后端的PHP-FPM模块,从而避免恶意脚本注入的攻击,所以此项应该去掉注释并设置为0

强制重定向关闭

cgi.force_redirect = 0

 

vi /usr/local/php5/etc/php.ini #编辑配置文件
找到:;open_basedir =
修改为:open_basedir = .:/tmp/ #防止php木马跨站,重要!!
找到:disable_functions =
修改为:disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname
#列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。
找到:;date.timezone =
修改为:date.timezone = PRC #设置时区
找到:expose_php = On
修改为:expose_php = OFF #禁止显示php版本的信息
找到:display_errors = On
修改为:display_errors = OFF #关闭错误提示

 

 

 

8.Nginx安装

yum -y install nginx

 

9.配置nginx.conf

修改nginx配置

/etc/nginx/nginx.conf  修改配置项目 user nginx -> www  www 

 

然后执行 vim /usr/local/nginx/nginx.conf 编辑nginx配置文件,具体路径根据实际的nginx.conf配置文件位置编辑,下面主要修改nginx的server {}配置块中的内容,修改location块,追加index.php让nginx服务器默认支持index.php为首页:

  

 

 

修改php目录所有者和权限避免 "nginx no input file specified" "空白页面"错误

[root@games000001 login]# chown www.www /login -R
[root@games000001 login]# chmod 700 /login -R

 

 

nginx启动命令

 sudo systemctl start nginx.service

 

注意启动用户是 www

 

  

 
Access denied.报错
nginx error.log

PHP message: PHP Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0
Unable to open primary script: /login//index.php (Permission denied)" while reading response header from upstream, client: 125.120.15.158, server: _, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "sts.qiheshe.cn"

解决办法  fastcgi_params 配置中增加一行

fastcgi_param  PHP_VALUE  "open_basedir=$document_root:/tmp/";

 

 

 

在默认html目录 /usr/share/nginx/html 可以测试test.php

<?php

    phpinfo();
?>
 
重启nginx测试php
 
大功告成

 

 

 10.TP5跟Nginx 配置 nginx.conf

https://www.cnblogs.com/houweijian/p/11391313.html

server {
    listen       80;
    server_name s.huailaixx.com;
    charset utf-8;

    location ~ \.php {
        root   /data0/www/test_hlxx/public;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;

        fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$; 
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;


        fastcgi_param  PATH_INFO  $fastcgi_path_info;                                    
        fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
        include        fastcgi_params;
    }

    location / {
        root   /data0/www/test_hlxx/public;
        index  index.html index.htm index.php;

        if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php/$1 last;  
            break;
        }
    }
}

  

 

设置服务器时区

 

修改profile文件,添加以下两行:

TZ='Asia/Shanghai'

export TZ

[root@lyn ~]# vim /etc/profile

[root@lyn ~]# source /etc/profile

[root@lyn ~]# date

2020年 05月 26日 星期二 21:56:17 CST

由此发现,时区由AST 变成了CST。CST :中国标准时间

 

增加SSH访问时间

1、设置服务器向SSH客户端连接会话发送频率和时间 

#vi /etc/ssh/sshd_config,添加如下两行 
ClientAliveInterval 60 
ClientAliveCountMax 86400 
注:ClientAliveInterval选项定义了每隔多少秒给SSH客户端发送一次信号;ClientAliveCountMax选项定义了超过多少秒后断开与ssh客户端连接 
2、重新启动系统SSH服务 
#service sshd restart


 

云数据库RDS配置

 

云数据库PolarDB Mysql5.6

自动读写分离

 

 

设置白名单.允许香港区gameserver访问权限  & 公司内网访问权限

创建集群账号

 

设置mysql 时区 (PolarDB Access denied)

修改方法

  1. 输入show variables like "%time_zone%";,显示当前时区。
  2. set global time_zone = '+8:00'; 设置全局时间为东八区(+8个小时)。
  3. set time_zone = '+8:00'; 修改当前会话的时区。
  4. flush privileges; 刷新一下使改动立即生效。
作者:Luvoratorrrrry链接:https://www.jianshu.com/p/adbcb34d71c2来源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

 

同步游戏数据库结构

 

 

Mybatis数据库链接使用时区设置

&serverTimezone=GMT%2B8

 


 

解析域名

sts.qhs.cn 绑定 IPV4 游戏服务器地址

 

 


 

使用properties配置文件实现多环境配置

 

 

分别创建application-dev.properties,application-test.properties,application-pro.properties配置文件,分别代表dev,test和product环境的配置文件。 

主配置文件application.properties中添加配置激活选项,例如激活dev环境的配置为:

spring.profiles.active=dev

这时application-dev.properties配置文件生效,如果主配置文件application.properties和dev配置文件application-dev.properties中有相同的配置信息,那么application-dev.properties中的生效。

启动指定dev配置文件生效

java  -jar  *.jar   --spring.profiles.active=dev (双横杠--)

java -jar *.jar dev|pro


————————————————
版权声明:本文为CSDN博主「码农code之路」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/woniu211111/article/details/54292824

 

 

 

7.31 补充

使用HTTP上传用户日志是遇到的问题 

1. Upload 返回http /1.1 500 报错. 通过配置nginx server日志    sts_php_error.log .观察到这个nginx报错 *1 open() "/var/lib/nginx/tmp/client_body/0000000001" failed (13: Permission denied), client: xxx.xx.x.xxx, server: _, request: "POST /uploadLog HTTP/1.1", 

解决办法 参考  http://www.cqywc.com/2018/12/10/open-var-lib-nginx-tmp-client_body-0000000001-failed-13-permission-denied/

使用www用户对目录 /var/lib/nginx 具有完整的权限. 才能使用tmp目录存放过大的文件. 

 

2.Upload 2M文件返回报错 HTTP/1.1 413 Payload Too Large. 在 sts_php_error.log .观察到 [error] 16115#0: *1008 client intended to send too large body: 2384593 bytes, client: xx.xx.xxx.xxx, server: _, request: "POST /uploadLog HTTP/1.1", 

解决办法 1 在nginx配置中增加 配置 client_max_body_size 20M;并重启

      2 php 自己的 上传大小限制 upload_max_filesize 默认为2M 超过会报出     "$_FILES["files"]["error"] = 1 "   UPLOAD_ERR_INI_SIZE 值为 1,上传的文件超过了 php.ini 中 upload_max_filesize选项限制的值。

    3 php.ini 配置没有生效的问题 https://blog.csdn.net/qq_36663951/article/details/83344293  配置的php.ini路径始终没找到 

Loaded Configuration File (none)

 * php-fpm -c /usr/local/bin/php.ini

*  解决办法 copy了一个php.ini过来 .  open("/usr/local/bin/php.ini", O_RDONLY) = 3      .  再重启

又遇到了 页面无法打开的问题 No input file specified.

注意到 /usr/local/var/log  显示  

[31-Jul-2020 18:30:24 PRC] PHP Warning: Unknown: open_basedir restriction in effect. File(/login/WeChatPub/public/info.php) is not within the allowed path(s): (.:/tmp/) in Unknown on line 0
[31-Jul-2020 18:30:24 PRC] PHP Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0
[31-Jul-2020 18:30:24] WARNING: [pool www] child 19714 said into stderr: "ERROR: Unable to open primary script: /login/WeChatPub/public/info.php (Operation not permitted)"
[31-Jul-2020 18:32:08] NOTICE: Finishing ...

参考  https://www.cnblogs.com/godfather007/p/11007852.html  编辑 /etc/nginx/fastcgi_param [很重要]  [fastcgi_paramPHP_VALUE  "open_basedir=$document_root/../:/tmp/";] 再使用php-fpm -c /usr/local/bin/php.ini 成功访问到有效的info.php配置

新问题  疑似 引出了PHP编译缺少bcmatch扩展的问题

 Call to undefined function lang() in /login/WeChatPub/thinkphp/tpl/think_exception.tpl:82

 

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表