一台服务器通过apache安装多个web应用

news/2024/11/19 22:38:02/

当我们只有一台linux服务器资源但有创建多个网站的需求时,我们可以通过安装一个网站服务器Apache进行搭建,此次服务器使用Centos 7

下面分别介绍一个域名多个端口和多个域名用Apache来搭建多个网站的操作过程。

一、使用apache 服务器  (一个域名的多个端口)

1. 安装 Apache 服务:

   ```
   sudo yum install httpd

2. 启动 Apache 服务:

   ```
   sudo systemctl start httpd
   ```

3. 在 `/var/www/` 目录下创建两个网站文件夹,假设它们分别为 `site1` 和 `site2`:

以下是默认创建的两个文件夹

   

```
   sudo mkdir /var/www/site1
   sudo mkdir /var/www/site2
  ```

4. 将 `site1` 和 `site2` 文件夹的权限分别设置为 Apache 用户:

   ```
   sudo chown -R apache: /var/www/site1
   sudo chown -R apache: /var/www/site2
   ```

  • chown 是更改Linux系统上文件和目录的所有权命令。
  • -R 选项,表示递归(recursive),将更改指定目录及其所有子目录和文件的拥有者。
  • apache 表示要更改拥有者为 apache 用户。
  • : 后是要更改的组,这里是 apache 组,如果该组不存在可以无需在这里指定,chown 命令会自动创建。
  • /var/www/site1 是要更改拥有者的目录路径。

5. 创建两个网站的网页文件,比如:

   ```
   echo "This is site1" | sudo tee /var/www/site1/index.html
   echo "This is site2" | sudo tee /var/www/site2/index.html
   ```

命令解释如下:

  • echo 命令表示输出指定的文本。
  • "This is site1" 是您要输出的文本。您可以将其更改为您自己的HTML代码,以自定义您的网站。
  • | 管道符号将上一个命令的输出重定向到下一个命令的输入。
  • sudo tee 命令将标准输入中的内容保存到指定的文件中。使用 sudo 是因为普通用户没有写入 /var/www/site1 的权限。

6. 首先,修改 Apache 的主配置文件,假设您要使用域名的不同端口来访问这两个网站,比如 `site1.com:8080` 和 `site1.com:8081`:

   ```
   vim  /etc/httpd/conf/httpd.conf
   ```

  找到以下行:

   ```
        #Listen 12.34.56.78:80
        Listen 80
   ```

添加监听:

Listen 80

Listen 8080

Listen 8081

然后我们再将配置文件    /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf 复制 /etc/httpd/conf.d/

cp  /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf /etc/httpd/conf.d/

然后编辑复制过来的文件,可以在直接改,也可以直接在下面进行添加
<virtualhost 47.120.35.180:8080>
documentroot "/var/www/site1"
</virtualhost>

<virtualhost 47.120.35.180:8081>
documentroot "/var/www/site2"
</virtualhost>

 

7. 现在重新启动 Apache 服务:

   ```
   sudo systemctl restart httpd

或者 sudo systemctl status httpd.service
   ```

<如果启动失败 需要查看日志信息 cat /var/log/messages

没有启动的原因可能是端口不安全导致

需要添加安全端口

命令行输入:

semanage port -a -t http_port_t -p tcp 8080

semanage port -a -t http_port_t -p tcp 8081  >

   现在,您可以通过以下 URL 访问这两个网站:

   - `http://site1.com:8080`
   - `http://site1.com:8081`

###如果访问网站发现出现apache 测试页,需要到/etc/httpd/conf.d/下的 welcome.conf 注销掉重新访问

二、使用apache 服务器  (多个域名)

 1. 安装 Apache 服务:

   ```
   sudo yum install httpd

2. 启动 Apache 服务:

   ```
   sudo systemctl start httpd
   ```

3. 在 `/var/www/` 目录下创建两个网站文件夹,假设它们分别为 `site1` 和 `site2`:

以下是默认创建的两个文件夹

   

```
   sudo mkdir /var/www/site1
   sudo mkdir /var/www/site2
  ```

4. 将 `site1` 和 `site2` 文件夹的权限分别设置为 Apache 用户:

   ```
   sudo chown -R apache: /var/www/site1
   sudo chown -R apache: /var/www/site2
   ```

  • chown 是更改Linux系统上文件和目录的所有权命令。
  • -R 选项,表示递归(recursive),将更改指定目录及其所有子目录和文件的拥有者。
  • apache 表示要更改拥有者为 apache 用户。
  • : 后是要更改的组,这里是 apache 组,如果该组不存在可以无需在这里指定,chown 命令会自动创建。
  • /var/www/site1 是要更改拥有者的目录路径。

5. 创建两个网站的网页文件,比如:

   ```
   echo "This is site1" | sudo tee /var/www/site1/index.html
   echo "This is site2" | sudo tee /var/www/site2/index.html
   ```

命令解释如下:

  • echo 命令表示输出指定的文本。
  • "This is site1" 是您要输出的文本。您可以将其更改为您自己的HTML代码,以自定义您的网站。
  • | 管道符号将上一个命令的输出重定向到下一个命令的输入。
  • sudo tee 命令将标准输入中的内容保存到指定的文件中。使用 sudo 是因为普通用户没有写入 /var/www/site1 的权限。

6.首先将默认文件拷贝到/etc/httpd/conf.d/下

 例如2.4.6版本下的apache  /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf 复制 /etc/httpd/conf.d/

命令:cp  /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf /etc/httpd/conf.d/

然后编辑复制过来的文件,可以在直接改,也可以直接在下面进行添加

<VirtualHost 47.120.35.180:80>
   # ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/var/www/site1"
    ServerName xcx.senmumu.cn
   # ServerAlias www.dummy-host.example.com
   # ErrorLog "/var/log/httpd/dummy-host.example.com-error_log"
   # CustomLog "/var/log/httpd/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost 47.120.35.180:80>
   # ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/var/www/site2" 
    ServerName xcx.senmumu.com
   # ErrorLog "/var/log/httpd/dummy-host2.example.com-error_log"
   # CustomLog "/var/log/httpd/dummy-host2.example.com-access_log" common
</VirtualHost>
 

7. 现在重新启动 Apache 服务:

   ```
   sudo systemctl restart httpd

或者 sudo systemctl status httpd.service
   ```


http://www.ppmy.cn/news/98531.html

相关文章

图的邻接矩阵表示

设图有n个顶点&#xff0c;则邻接矩阵是一个n*n的方阵&#xff1b;若2个顶点之间有边&#xff0c;则方阵对应位置的值为1&#xff0c;否则为0&#xff1b; 看几个例子&#xff1b; 此图的邻接矩阵是 0 1 1 1 1 0 1 0 1 1 0 1 1 0…

蓝桥杯嵌入式STM32G431RBT6竞赛指南与模板——最后的绝唱

谨以此文和我去年前的一篇蓝桥杯单片机的教程构成电子类的青铜双壁. 国信长天单片机竞赛训练之原理图讲解及常用外设原理&#xff08;遗失的章节-零&#xff09;_昊月光华的博客-CSDN博客 目录 时钟树 串口重定向&#xff1a;printf输出 动态点灯(点灯大师) 按键(常用状态…

Python代码写好了怎么运行

Python代码写好了怎么运行&#xff1f;相信问这样问题的朋友一定是刚刚入门Python的初学者。本文就来为大家详细讲讲如何运行Python代码。 一般来讲&#xff0c;运行Python代码的方式有两种&#xff0c;一是在Python交互式命令行下运行&#xff1b;另一种是使用文本编辑器&…

logstash 采集的文件mv后

1.logstash [oswatch@rce1 conf]$ cat test.conf input { file { path=>["/tmp/test/test.log*"] } } output { stdout { codec=>rubydebug{} } } 2.python脚本: [oswatch@rce1 conf]$ cat t1.py #!/usr/bin/python # -*- coding: UTF-…

virtualbox报错

virtualbox 报错 See “systemctl status virtualbox.service” and “journalctl -xe” for details. invoke-rc.d: initscript virtualbox, action “restart” failed. ● virtualbox.service - LSB: VirtualBox Linux kernel module Loaded: loaded (/etc/init.d/virtualbo…

Mysql面试必知的知识点-干货分享

文章目录 底层索引为什么使用B树,而不用B树?为什么Innodb索引建议必须建主键?为什么主键推荐使用整形自增?Mysql底层索引只有B树吗?联合索引底层长什么样子?数据库隔离级别中串行化是怎么实现的?查询方法需要加事务吗?大事务有什么影响? 底层索引为什么使用B树,而不用B…

解决websocket在部署到服务器https下无法使用的问题

目录 一、问题 1.1 问题描述 1.2 问题详细描述 二、解决 2.1 https下的链接类型 2.2 修改Nginx的配置 一、问题 1.1 问题描述 一个小项目中使用到了websocket&#xff0c;这个websocket在本地完全是完全正常运行的&#xff0c;不管是前后台的信息通讯 还是 异常报错接收…

XDP入门--eBPF程序实现网桥/二层交换机转发功能

本文目录 1、试验环境2、eBPF字节码源代码实现3、用户态应用层管理与控制程序的源代码实现4、编译与运行5、测试结果 我们在此文的进阶部分 或者 此文中已经描述了如何设置Linux网桥&#xff0c;并将多个以太接口加入网桥后实现一个最基本的二层交换机的二层交换转发功能。Linu…