Linux下配置Nginx+Apache+PHP+Tomcat+Java

转载他人的一篇文章,只为分享知识,我是java共享者,共创java未来!!

 

公司业务需要,要在Linux上同时运行一个Java项目和一个php项目。服务器外网IP绑定的一个顶级域名指向Java项目,此顶级域名解析出的一个二级域名指向php项目。设置Apache和Tomcat监听不同端口。通过Nginx的请求转发,把用户请求(访问链接)转发到对应的端口去处理即可实现此需求。
反向代理:所谓的反向代理就是来自互联网的请求不直接访问web服务器,而是先访问反向代理服务器(我们这里用Nginx),之后Nginx服务器将请求转发到(内网环境)服务器。

一、准备工作
版本:Linux(Ubuntu 16.4)

1、软件安装(参考我的这几篇博客)
安装jdk、mysql,Tomcat
阿里云服务器配置java生产环境jdk1.7+tomcat7.0+mysql5.5(一)
阿里云服务器配置java生产环境jdk1.7+tomcat7.0+mysql5.5(二)
Linux(Ubuntu)安装和完美卸载mysql详细教程

安装Apache:Linux(Ubuntu)安装和完美卸载Apache详细教程

安装php:Linux(Ubuntu)安装和完美卸载PHP7详细教程

安装Nginx:Linux(Ubuntu)安装和完美卸载Nginx(是否开启Nginx服务)

2、重要的配置文件位置
Tomcat的server.xml在:Tomcat安装目录/conf下

Apache的apache2.conf:在/etc/apache2下,Apache还有一些很重要的配置文件都在/etc/apache2下的子目录里,后面会用到

Nginx的nginx.conf:在/usr/local/nginx/conf下,后面还会新建一些配置文件

二、配置
服务器上原来正在运行的是Java项目,访问www.xxxx.com(我这里的顶级域名我就用xxxx代替),就会跳转到Tomcat下webapps面的指定的项目。我这里是Java项目正在运行,需要添加php项目,我就不写怎么让Java项目运行了,就写如何添加php项目。有些同学的情况可能是php正在运行,需要添加Java项目,有些同学可能是两个都还没运行起来。总之,你先让一个项目先跑起来,再添加另一个,都是一样的道理。

由于此次配置要修改的配置文件很多,我就把它们都下载下来了,在编辑器上编辑的,这样好比较,查看。没有用vim编辑。

关于端口:不管什么服务,都不能占用同一个端口,因为安装服务之后就会默认启动,此时它们的默认端口几乎都是80。譬如服务器运行着Tomcat(监听的80端口),此时又在安装Nginx,安装完就会自动启动Nginx服务,启动就会报错:80端口被占用。此时只要去修改配置文件的监听端口就好了。

关于默认的80端口:浏览网页服务默认的端口号都是80,因此只需输入网址即可,不用输入“:80”了。

1、修改Tomcat的server.xml
我的文件位置:/usr/tomcat/apache-tomcat-8.5.11/conf/server.xml

找到你原来的监听端口,默认8080。我这里把它改成了8099,让Tomcat监听8099端口。

 

这里的443是配置的https,有些同学可能没有配,不用管。

2、修改Apache的配置文件
先把php项目上传到”/var/www/html”目录下,这是apache2默认的项目根目录。

创建两个日志文件:/etc/apache2/logs/access.log和/etc/apache2/logs/error.log

文件目录:

 

修改/etc/apache2/ports.conf,把”Listen 80”修改为”Listen 8088 “。让Apache监听8088端口。可以看到在apache2.conf里面引入了ports.conf

 

在apache2.conf底部找到:

 

前面加上”#”,把这句注释掉。为了直接在apache2.conf中配置虚拟主机,看起来直观点。就不去sites-enabled/*.conf中配置了。

在apache2.conf中找到‘ #ServerRoot “/etc/apache2”‘,在下面添加如下配置信息:

 

DocumentRoot 这一行就是你的项目地址,我这里的项目名叫MetInfo。
ServerName 就是我的二级域名(我这里配置这个二级域名指向这个php项目)。

修改/etc/apache2/mods-enabled/dir.conf文件,把index.php放到最前面来:

 

3、修改Nginx的配置文件
我在/usr/local/nginx目录下新建了一个文件夹dnconf来放我的自定义配置文件:

 

编辑/usr/local/nginx/conf/nginx.conf文件,我的整个nginx.conf文件内容如下:

user Michael;
worker_processes 1;
error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid logs/nginx.pid;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
include /usr/local/nginx/dnconf/*.conf;//引入自定义配置文件
}


在/usr/local/nginx/logs目录下新建两个访问地址专用的日志文件:content.xxxx.com.access.log,xxxx.com.access.log

 

在dnconf目录下新建两个配置文件:javaset.conf和phpset.conf

javaset.conf:

server {
listen 80;
server_name www.xxxx.com localhost;
access_log logs/xxxx.com.access.log;
location /
{
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8099;
}
}
phpset.conf

server {
listen 80;
server_name content.xxxx.com;
access_log logs/content.xxxx.com.access.log;
location /
{
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8088;
}
}

Nginx只监听80端口,不同的域名访问进来控制跳转到访问不同的端口,就到不同的项目中去了。

Ngixn文档:英文文档,中文文档

4、启动服务
开启Tomcat和Apache服务,最后启动Nginx服务。

测试访问ok,日志文件都有记录。

有疑问的可以交流 QQ:839450693。

第一次感受到Nginx的强大之处!
---------------------
作者:Mistra丶
来源:CSDN
原文:https://blog.csdn.net/Axela30W/article/details/78865165
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/bcsdn/p/10887822.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值