云服务器Centos7部署Nginx让Apache+PHP和Tomcat+Java同时运行(同一IP多域名多网站配置)

  • Post author:
  • Post category:java



—-发现错误或遗漏,请联系本人更正—-




一、前言

我有一台云服务器,一个公网IP,一个域名。目前准备搭建两个网站,分别使用Java和PHP开发。我想要这两个网站都部署在一台云服务器上,且别人可以通过域名访问这两个网站,不需要输入IP和端口号。

本人是个菜鸟,很多东西都不懂。在百度、CSDN、B站搜了一整天,各种安装配置报错,怒而多次重装服务器。半夜不睡觉,搞到凌晨3点多,综合了好几处资料,才摸索成功,实现在云服务器上利用Nginx让Apache+PHP和Tomcat+Java同时运行,通过默认的80端口的访问请求都到了Nginx,Nginx根据子域名进行转发。这样别人使用子域名就能访问我在同一个服务器上部署的不同编程语言写的多个网站了,也不用使用我觉得碍眼的端口。



二、准备

1.准备一台云服务器,一般云服务器会自带一个公网IP,我用的是腾讯云,操作系统是CentOS 7.6

2.准备一个主域名,并解析子域名。比如主域名aaa.com,解析b.aaa.com与c.aaa.com两个子域名,每个子域名用来指向一个网站

3.去云服务器后台放开端口号限制(只要保证跟后面配置文件设定的一致就行,我用的是8081,8082)

image-20220403140210974

4.准备Java与PHP网站代码,随便找个测试网页就行,后期做好网站再替换上去



三、安装

1.安装Apache和PHP

yum -y install httpd
yum -y install php

注意:使用此方法安装Apache,httpd.conf配置文件位置在/etc/httpd/conf目录下

2.安装php的扩展

yum -y install php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc

3.安装java及tomcat

yum -y install java-1.8.0-openjdk
yum -y install tomcat

注意:使用此方法安装Tomcat,server.xml配置文件位置在/etc/tomcat目录下

4.安装Nginx

yum -y install nginx

注意:使用此方法安装Nginx,nginx.conf配置文件位置在/etc/nginx目录下

安装Nginx时,若遇到缺少rpm包的情况,解决方法是先安装Nginx的yum源

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

5.安装MySQL,参照这个帖子即可

转载于:

https://blog.csdn.net/Bb15070047748/article/details/106245223

安装MySQL时,若遇到GPG 密钥已过期的情况,解决方法是重新导入新的秘钥

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

6.常用操作命令(服务的启动、关闭与自启设置)

6.1 Tomcat

启动Tomcat服务

systemctl start tomcat.service

关闭Tomcat服务

systemctl stop tomcat.service

设置开机自动启动

systemctl enable tomcat.service

6.2 Apache

启动Apache服务

systemctl start httpd.service

关闭Apache服务

systemctl stop httpd.service

设置开机自动启动

systemctl enable httpd.service

6.3 Nginx

启动Nginx服务

systemctl start nginx.service

关闭Nginx服务

systemctl stop nginx.service

设置开机自动启动

systemctl enable nginx.service

6.4 查看某服务的状态或报错信息

systemctl status tomcat.service
systemctl status httpd.service
systemctl status nginx.service

7.在开始端口修改之前先使用上面的命令关闭这三个服务

systemctl stop tomcat.service
systemctl stop httpd.service
systemctl stop nginx.service



四、配置

1.修改Tomcat端口号

在/etc/tomcat目录下,将server.xml配置文件的默认端口号8080改为8081

cd /etc/tomcat
vim server.xml

image-20220403144154478

2.修改Apache端口号

在/etc/httpd/conf目录下,将httpd.conf配置文件的默认端口号80改为8082

cd /etc/httpd/conf
vim httpd.conf

image-20220403143613660

3.修改Nginx

在/etc/nginx/conf.d目录下,新建后缀名为.conf的配置文件,一个网站建一个配置文件。配置文件名称需要与下文要修改的nginx.conf配置文件保持一致,我写的是javablog.conf和phptest.conf

cd /etc/nginx/conf.d
vim javablog.conf
  upstream java {
        server 127.0.0.1:8081;
 #将127.0.0.1更换为云服务器的公网IP,8081是前面配置的Tomcat端口号,保持一致即可
  }
  server {
          listen       80;
          server_name b.aaa.com; 
          #将b.aaa.com替换为自己准备的Java网站子域名
         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://java;
              index  index.html index.php;
          }
  }
vim phptest.conf
  upstream php {
        server 127.0.0.1:8082;
 #将127.0.0.1更换为云服务器的公网IP,8082是前面配置的Apache端口号,保持一致即可
  }
  server {
          listen       80;
          server_name c.aaa.com; 
          #将c.aaa.com替换为自己准备的PHP网站子域名
         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://php;
              index  index.html index.php;
          }
  }

在/etc/nginx目录下,修改nginx.conf配置文件,将下图标出来的两行代码注释掉

cd /etc/nginx
vim nginx.conf

image-20220403155735971

将下文两行信息放在自己注释的第一行代码下面

include /etc/nginx/conf.d/javablog.conf; #将javablog.conf替换为自己写的java网站配置文件名称
include /etc/nginx/conf.d/phptest.conf; #将phptest.conf替换为自己写的PHP网站配置文件名称

image-20220403155753190

每次修改nginx.conf配置文件,需要加载才能生效

nginx -c /etc/nginx/nginx.conf
nginx -s reload

可能需要用到的命令(杀进程)

netstat -ntlp|grep 80
kill -9 26136 #将26136替换为查询到的端口号



五、启动

1.将Java网站文件放在/var/lib/tomcat/webapps/ROOT目录下

image-20220403161916389

2.将PHP网站文件放在/var/www/html目录下

image-20220403162053689

3.启动Tomcat、Apache、Nginx服务,Nginx服务必须最后启动

systemctl start tomcat.servic
systemctl start httpd.service
systemctl start nginx.service

4.设置各服务开机自动启动

systemctl enable tomcat.service
systemctl enable httpd.service
systemctl enable nginx.service



六、访问

1.在浏览器输入自己设置的子域名,即可进行访问。如果网页出现Welcome to Nginx 或Welcome to Centos,可能就是Nginx配置错误,配置不生效等问题。我的解决办法就在上文,按我写的操作方法,目前亲测未遇到问题。

image-20220403163248097

2.顺便说一下,Nginx配置错误,配置不生效情况下,默认访问的是Nginx默认目录/usr/share/nginx/html,网页上展示的就是其中的index.html文件

image-20220403164550593



—-发现错误或遗漏,请联系本人更正—-



版权声明:本文为QQ784966072原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。