采用phpCAS和J2EE的cas开源框架对接wordpress,构建自己的门户网站。
刚开始用windows部署,很顺利,但配置太麻烦,而且windows总感觉不甚方便,考虑到最新的docker技术,apache+php+mysql+tomcat都可以在linux和docker上部署,于是开始迁移,于是,填坑工作开始。
考虑到Docker成熟度,还是使用内核为3.10以上的CentOS7默认的docker1.12安装,然后部署apache+php、tomcat以及mysql的docker,再讲应用部署到各个docker上,一切都很顺利,不过半小时而已,然后就是噩梦开始。
1、wordpress报数据库连接出错,发现
PHP Warning: mysqli_real_connect(): (HY000/2003): Can't connect to MySQL server on 'xx.xx.xx.xx' (113) in /var/www/html/wp/wp-includes/wp-db.php on line 1489
mysql服务器上执行perror 113,返回“OS error code 113: No route to host”,是防火墙问题,执行:
宿主机防火墙上加上端口的允许
iptables -I INPUT -s 0/0 -p tcp --dport 3306 -j ACCEPT
ok, mysql可以了
2、然后就是CAS认证通过后白屏,后台cas.log提示validate failed,提示:
[Fri Feb 17 00:51:59.740721 2017] [:error] [pid 17] [client] PHP Fatal error: Uncaught exception 'CAS_AuthenticationException' in /var/www/html/phpCAS/CAS/CAS/Client.php:3265\nStack trace:\n#0 /var/www/html/phpCAS/CAS/CAS/Client.php(1450): CAS_Client->validateCAS20('http://168.X.XX...', '\\r\\n\\r\\n\\r\\n<cas:serv...', Object(DOMElement), false)\n#1 /var/www/html/phpCAS/CAS/CAS/Client.php(1351): CAS_Client->isAuthenticated()\n#2 /var/www/html/phpCAS/CAS/CAS.php(1060): CAS_Client->checkAuthentication()\n#3 /var/www/html/wp/wp-content/plugins/wpcas/wpcas.php(88): phpCAS::checkAuthentication()\n#4 /var/www/html/wp/wp-settings.php(255): include_once('/var/www/html/w...')\n#5 /var/www/html/wp/wp-config.php(99): require_once('/var/www/html/w...')\n#6 /var/www/html/wp/wp-load.php(43): require_once('/var/www/html/w...')\n#7 /var/www/html/wp/wp-login.php(12): require('/var/www/html/w...')\n#8 {main}\n thrown in /var/www/html/phpCAS/CAS/CAS/Client.php on line 3265, referer: http://168.X.XX.XXX:8080/wp/
看phpCAS的Client.php源码,认证应该通过了,但就是抛错,对J2EE的cas应用的配置修改
WEB-INF\spring-configuration目录下的ticketExpirationPolicies.xml,把c:timeToKill="${st.timeToKillInSeconds:10}"改为c:timeToKill="${st.timeToKillInSeconds:100}",ok,认证通过
3、问题继续,发现wordpress访问奇慢无比,查看
mysql> show variables like "%skip%";
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| skip_external_locking | ON |
| skip_name_resolve | OFF |
| skip_networking | OFF |
| skip_show_database | OFF |
| slave_skip_errors | OFF |
| sql_slave_skip_counter | 0 |
+------------------------+-------+
6 rows in set (0.00 sec)
应该是skip_name_resolve的问题,加上就可以了,速度快很多了
4、考虑到可用性,将docker镜像导出到另外一台服务器,结果其他都没问题,CAS又开始报错:
[Fri Feb 24 16:27:09.933558 2017] [:error] [pid 20] [client] PHP Fatal error: Uncaught exception 'CAS_AuthenticationException' in /var/www/html/phpCAS/CAS/CAS/Client.php:3183\nStack trace:\n#0 /var/www/html/phpCAS/CAS/CAS/Client.php(1449): CAS_Client->validateCAS20('http://168.X.XX...', '', NULL, false)\n#1 /var/www/html/phpCAS/CAS/CAS/Client.php(1350): CAS_Client->isAuthenticated()\n#2 /var/www/html/phpCAS/CAS/CAS.php(1060): CAS_Client->checkAuthentication()\n#3 /var/www/html/wp/wp-content/plugins/wpcas/wpcas.php(88): phpCAS::checkAuthentication()\n#4 /var/www/html/wp/wp-settings.php(255): include_once('/var/www/html/w...')\n#5 /var/www/html/wp/wp-config.php(100): require_once('/var/www/html/w...')\n#6 /var/www/html/wp/wp-load.php(43): require_once('/var/www/html/w...')\n#7 /var/www/html/wp/wp-login.php(12): require('/var/www/html/w...')\n#8 {main}\n thrown in /var/www/html/phpCAS/CAS/CAS/Client.php on line 3183, referer: http://168.X.XX.XX:8080/wp/
查了无数帮助,包括stackoverflow都没有解决办法,只能祭出大招,把phpCAS的log打开,在wordpress的/wp-content/plugins/wpcas/wpcas.php中将cas的log打开
// Enable debugging
phpCAS::setDebug("/var/www/html/phpCAS.log");
// Enable verbose error messages. Disable in production!
phpCAS::setVerbose(true);
可以看到
D989 .| | | | could not open URL 'http://168.X.XX.XX/cas/serviceValidate?service=http%3A%2F%2F168.X.XX.XX%3A8080%2Fwp%2Fwp-login.php&ticket=ST-8-6v6FgAqONLAxDGovQ1I9-cas01.example.org' to validate (CURL error #7: Failed to connect to 168.X.XX.XX port 80: No route to host) [Client.php:3182]
D989 .| | | | => CAS_AuthenticationException::__construct(CAS_Client, 'Ticket not validated', 'http://168.X.XX.XX/cas/serviceValidate?service=http%3A%2F%2F168.5.15.19%3A8883%2Fwp%2Fwp-login.php&ticket=ST-8-6v6FgAqONLAxDGovQ1I9-cas01.example.org', true) [Client.php:3186]
D989 .| | | | | => CAS_Client::getURL() [AuthenticationException.php:76]
D989 .| | | | | <= 'http://168.X.XX.XX:8080/wp/wp-login.php'
D989 .| | | | | CAS URL: http://168.X.XX.XX/cas/serviceValidate?service=http%3A%2F%2F168.5.15.19%3A8883%2Fwp%2Fwp-login.php&ticket=ST-8-6v6FgAqONLAxDGovQ1I9-cas01.example.org [AuthenticationException.php:79]
的错误,是防火墙问题,即selinux开了
原来新服务器的selinux忘了关闭了
vi /etc/sysconfig/selinux
把里边的一行改为
SELINUX=disabled
改了之后保存,然后重启。
重启后别忘了iptables增加端口权限
宿主机防火墙上加上端口的允许
iptables -I INPUT -s 0/0 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 0/0 -p tcp --dport 8080 -j ACCEPT
iptables-save | cat >/etc/sysconfig/iptables
OK,一切问题都解决呢,考虑到提高速度,可以加上WP-ROCKET插件提高速度
分享到:
相关推荐
本文将详细解析"Uncaught exception com_exception with message Failed to create COM object"这一错误的原因以及如何解决。 当尝试在PHP中创建一个COM对象,如`InternetExplorer.Application`,用于模拟用户交互...
标题“Uncaught DOMException:”通常出现在JavaScript编程中,指的是在执行代码时遇到了一个未捕获的DOM(Document Object Model)异常。这个错误通常意味着在访问或操作DOM元素时发生了问题,可能是由于尝试访问不...
JS错误Uncaught SyntaxError: Cannot use import statement outside a module< 分析及解决方法 错误信息: 错误分析: HTML 网页中,浏览器通过 script 标签加载 JavaScript 脚本。由于浏览器脚本的默认语言是 ...
同一相站点,有些页面的客户端验证能工作,而有些死活不行。打开页面就出现Uncaught TypeError: Cannot set property __MVC_FormValidation of null错误
"UncaughtException不让Android应用异常退出"这个主题,就是关于如何处理程序中的未捕获异常,以防止应用突然崩溃,从而提升用户体验。在这个问题上,我们可以从以下几个方面来探讨: 1. **...
在Java编程语言中,`UncaughtException`处理是程序中不可或缺的一部分,因为它涉及到程序的健壮性和稳定性。当一个线程非正常终止,也就是说抛出了一个未捕获的异常,而这个异常没有被该线程或者其父线程的任何...
throw new Exception('请选择正确的发票方式'); } ``` 这里,我们首先检查`$_POST['invoice_action']`是否存在,然后使用`in_array`并启用严格模式进行类型匹配,确保用户提交的值既存在又符合预期。 总的来说,...
iframe跨域问题:Uncaught DOMException Blocked a frame with origin解决方法
本文实例讲述了JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法。分享给大家供大家参考,具体如下: Uncaught SyntaxError: Unexpected token ILLEGAL 未捕获的语法错误: 意想不到的非法...
unity 打包web包报错:Uncaught SyntaxError: Unexpected token '在打包文件添加此配置文件。 <mimeMap fileExtension
报错:Uncaught SyntaxError: Cannot use import statement outside a module 详解原文链接: ht
复制 php_sockets.dll 到ext目录 修改php.ini: extension=php_sockets.dll php4ts.dll php5ts.dll php_mime_magic.dll复制到C:\winnt\system32文件夹。 服务器
控制台的提示:Uncaught SyntaxError: Unexpected token < 按照提示进入文件,再看如下图: 仔细看了看 index.html 文件,发现原本我的 JS 文件是放在 /src/utils 文件夹下的,但引入 /src 和 /static 的文件是...
这个错误是在Master进程向子进程send消息时发现pipe已经关闭了的情况下由Master进程报出来的。 2019-12-16 14:33:02,pid-170096, Error [ERR_IPC_CHANNEL_CLOSED]: channel closed at ChildProcess.target.send ...
lnmp Fatal error: Uncaught Error: Class 'Redis' not found-附件资源
主要介绍了JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法,结合实例形式分析了javascript提示此类异常的常见原因与相关解决方法,需要的朋友可以参考下
安装完Wps office个人版最新的12012版后,按理说就完成了,但运行程序在服务器上报错如下: Fatal error: Uncaught exception ‘com_exception’ with message ‘Failed to create COM object `WPS.Application’: ...