購買阿里雲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