在嵌入式Jetty(Embedded Jetty)中部署FastCGI Servlet载入PHP程序
这段时间由于服务器架构,需要研究在Java基础上的Jetty中部署PHP程序(Wordpress,Discuz)
在网上查了很多资料,都是用httpd或者nginx当前段Web Server,Jetty在后台服务器的。介于我之前用的嵌入式Jetty(embedded jetty),所以并不适合这种解决方案。
后来又搜索了一下,发现Jetty原来本身就有这个支持:
http://www.eclipse.org/jetty/documentation/9.2.7.v20150116/configuring-fastcgi.html
http://lutaf.com/141.htm
https://gutspot.com/2014/06/24/%E6%B5%8B%E8%AF%95jetty%E7%9A%84fastcgi%E6%94%AF%E6%8C%81/
由于官方说明给的是XML形式的配置,我把它转了如下的Java形式,这里特别注意两个servlet都要设置成AsyncSupported = true,不然Jetty会报错
public WebAppContext phpWebAppContext() throwsException {String root= "/root/php/yourPHPScriptLocation";WebAppContext ctx= newWebAppContext();ctx.setContextPath("/php");ctx.setResourceBase(root);ctx.setWelcomeFiles(new String[]{"index.php"});ServletHolder defaultServletHolder= new ServletHolder(DefaultServlet.class);defaultServletHolder.setAsyncSupported(true);ctx.addServlet(defaultServletHolder,"/");ServletHolder proxyHolder= new ServletHolder(FastCGIProxyServlet.class);proxyHolder.setAsyncSupported(true);proxyHolder.setInitParameter("proxyTo", "http://localhost:9000");proxyHolder.setInitParameter("scriptRoot", root);proxyHolder.setInitParameter("scriptPattern", "(.+?\\.php)");ctx.addServlet(proxyHolder,"*.php");returnctx; }
之后在服务器上启动,用服务器自带的Package Manager就可以下载到。
我启动了以后一切都正常,没有报错,可是显示页面的结果却一直是404 File Not Found。我查了半天,感觉设置都是对的,而且php-fpm的access log也成功显示接到请求了。
究竟什么原因呢??查了半天,在php-fpm的配置文件里看到这一段(样例配置文件可以看这里:https://github.com/perusio/php-fpm-example-config/):
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
user = apache
group = apache
发现运行的时候主进程和子进程都是以apache运行的,我在好奇心之下,把两个都改成root,然后用了php-fpm -R 运行(-R是允许用root运行)
一试,竟然好了!
真是晕倒,没有权限访问竟然也不提示错误,就说file not found。。。。
昏过去啊。。。。。
转载于:https://www.cnblogs.com/littlejedi/p/4334213.html
在嵌入式Jetty(Embedded Jetty)中部署FastCGI Servlet载入PHP程序相关推荐
- 在Windows Server 2016中部署RemoteApp
什么是RemoteApps? 指定在虚拟机上托管/运行但看起来像在本地桌面上一样在用户桌面上运行的单个应用程序.这些应用程序都有自己的任务栏条目,可以调整大小并在监视器之间移动.在安全,远程环境中部署 ...
- dc/os_DC / OS中具有Java和数据库应用程序的服务发现
dc/os 该博客将展示一个简单的Java应用程序如何使用DC / OS中的服务发现与数据库进行对话. 为什么要进行服务发现? 应用程序通常由多个组件组成,例如应用程序服务器,数据库,Web服务器,缓 ...
- DC / OS中具有Java和数据库应用程序的服务发现
该博客将展示一个简单的Java应用程序如何使用DC / OS中的服务发现与数据库进行对话. 为什么要进行服务发现? 应用程序通常由多个组件组成,例如应用程序服务器,数据库,Web服务器,缓存和消息传递 ...
- maven jetty/tomcat/wildfly plugin部署应用到本地容器
2019独角兽企业重金招聘Python工程师标准>>> <project xmlns="http://maven.apache.org/POM/4.0.0" ...
- jetty maven plugs 中的配置:
jetty maven plugs 中的配置: <pluginManagement><plugins><plugin><groupId>org.ecli ...
- linux jetty 配置文件,linux中Jetty的安装和配置方法
Jetty Jetty 是一个开源的servlet容器,它为基于Java的web内容,例如JSP和servlet提供运行环境.Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布.开 ...
- 在Tomcat中部署seam工程
在Tomcat中部署seam工程 众所周知,Tomcat.Resin是servlet的容器,反应迅速,启动时间快,配置简单(Resin反应应该更迅速一些),但如果用到EJB工程的的话,它们就不能胜任了 ...
- 在Azure Cloud Service中部署Java Web App(1)
Microsoft Azure是一个开放的,灵活的云平台,除了对自家的.Net平台有良好的支持外,对于各种开源的软件,语言,工具,框架都有着良好的支持,比如Java,Php,Python等等,你可以使 ...
- 【Jetty】Jetty 的工作原理以及与 Tomcat 的比较
Jetty 应该是目前最活跃也是很有前景的一个 Servlet 引擎.本文将介绍 Jetty 基本架构与基本的工作原理:您将了解到 Jetty 的基本体系结构:Jetty 的启动过程:Jetty 如何 ...
最新文章
- python经典练习题
- Javascript标准DOM Range操作
- 杭电 HOJ 2553 N皇后问题 解题报告
- Access 报表打印之分组页码实现(轉)
- ai去除水印_ai全自动视频剪辑软件,每天批量制作800条原创视频!
- 使用LocalTestServer对HTTP调用进行单元测试
- 如何尽量规避XSS(跨站点脚本)攻击
- 杭电2524 矩形A + B
- SAP License:FI-CO集成
- mORMot Js对象解析 Json 实例
- oa处理会签流程图_OA协同流程管理解决方案
- mysql 常用管理命令
- 利用Java编写自动关机程序(包括输入、输出、控制电脑自动关机)
- ftp文件服务器怎么迁移,ftp文件服务器迁移
- mysql pid无法写入_ERROR /usr/libexec/mysqld:写入文件'/var/run/mysqld/mysqld.pid'时出错(错误代码:28)...
- 学3D建模要注意什么问题?入行好几年,踩过的坑后的经验
- raptor流程图编程
- 系统安全与应用【下】
- Python将两个txt文件按行合并
- 上海域格NB模块主推型号介绍
热门文章
- linux下启动和关闭网卡命令
- Fully Convolutional Networks for Semantic Segmentation (FCN)论文翻译和理解
- 知识图谱学习小组学习大纲
- Android 8.0 中如何读取内部和外部存储以及外置SDcard
- RNN LSTM 循环神经网络 (分类例子)
- JZOJ 5931. 【NOIP2018模拟10.27】冒泡排序
- JZOJ 5263. 【NOIP2017模拟8.12A组】分手是祝愿
- 机器学习线性回归_机器学习-线性回归
- BZOJ-2761-不重复数字
- hdu5446(2015长春网络赛J题)