购买阿里云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 #进入目录
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
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();
?>

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)
修改方法
- 输入
show variables like "%time_zone%";
,显示当前时区。set global time_zone = '+8:00';
设置全局时间为东八区(+8个小时)。set time_zone = '+8:00';
修改当前会话的时区。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