LAMP(4)Apach和php结合、Apache默认虚拟主机

                        Apach和php结合



1.修改apache配置文件 

 vim /usr/local/apache2.4/conf/httpd.conf

(1)修改ServerName  把前面注释的#取消

(这里在启动httpd的时候,会提示要定义一个ServerName,若定义了则在启动时就不会再提示)


在window浏览器中访问我们的linux机器的ip:

出现这种问题的时候:我们首先排查网络的原因(在window测试)

第一步:ping 192.168.136.133

第二步:检查80端口:

 telnet 192.168.136.133 80

(若无telnet工具,则在 控制面板-->程序-->启动或关闭window功能->选中telnet客户端)

  若出现这种提示:

说明我们根本没有开启80端口 (iptables -nvL可以查看到)

添加80端口:

临时添加开启80:iptables -I INPUT -p tcp --dport 80 -j ACCEPT

添加了以后则可以在浏览器中访问到了

(2)修改Require (不修改的话,在浏览器访问时会出现403错误)

(修改了这里就不能在浏览器访问了)

修改完配置文件后执行命令:

(1)检查配置文件语法是否正确:

/usr/local/apache2.4/bin/apachectl -t

重新加载配置文件命令:(即使配置文件修改不成功时也不会杀死我们的进程)

/usr/local/apache2.4/bin/apachectl graceful


(2)重启apache服务

/usr/local/apache2.4/bin/apachectl restart


(3)添加一行和php相关的内容(不添加php无法解析)

AddType application/x-httpd-php .php


(4)修改一行索引页语句(加上了index.php时在访问地址时。可以省略地址栏的index.php)

DirectoryIndex index.html index.php

 修改完测试下是否我们的php能正常解析:

  创建一个php测试文本:vi /usr/local/apache2.4/htdocs/1.php


在修改完成以后在浏览器访问:http://192.168.136.133/1.php,出现不能解析,只是出现源代码:

检查错误:

第一步: 查看php5模块是否加载

/usr/local/apache2.4/bin/apachectl -M

第二步:查看是否有libphp5.so文件:

ls /usr/local/apache2.4/modules/libphp5.so


第三步:配置文件是否加了

AddType application/x-httpd-php .php (.php前面有个空格)

第四步:

是否修改成这样(其实这步不是最重要)

/usr/local/apache2.4/bin/apachectl -t


(在修改完配置文件后,执行 /usr/local/apache2.4/bin/apachectl -t

 判断配置文件是否修改正确)


(我在实验的时候所有的步骤都正确,但是在访问测试网页的时候,php无法解析

  解决方法:重启php服务: /usr/local/apache2.4/bin/apachectl restart

这样我们的php才是解析成功 的:


                                                 Apache默认虚拟主机

问题:为什么我们在 创建一个php测试文本:vi /usr/local/apache2.4/htdocs/1.php

把定义的测试网页放在 htdocs下,我们就能在浏览器访问到1.php呢?

答:原因是: vim /usr/local/apache2.4/conf/httpd.conf

配置文件中:

则它 的域名就是上面定义的ServerName

这个就是apache的默认主机,当任意一个域名指向到机器的ip就可以访问到我们机器的站点




window下hosts的使用:

Hosts文件是什么?

Hosts文件主要作用是定义IP地址和主机名的映射关系,是一个映射IP地址和主机名的规定。可以用文本文件打开!当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,浏览器会立即打开对应网页,如果没有找到,则浏览器会将网址提交DNS服务器进行IP地址解析。这也是提高快速打开网页的方法!

host路径:C:\Windows\System32\drivers\etc

在hosts文件定义一个域名让它解析到我们的ip

检测是否域名正确的解析到所指向的ip

ping 域名  看看显示是不是指向到我们的定义ip中

(这个是临时的让 定义的域名访问到我们ip服务器上,仅是在DNS未启用时有效)


默认虚拟主机的步骤:(可以定义多个ServerName)

好处是我们的一台服务器可以跑多个域名,不用局限所有域名都是解析到我们的同一个地方,一个配置文件只能定义到一个ServerName

1.打开默认虚拟主机

当我们打开了虚拟主机,则 原来httpd.conf这个文件下的

DocumentRoot就不会再生效,原来的ServerName也不会生效。


2.打开虚拟主机配置文件

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

(每一组<VirtualHost *80></VirtualHost>都代表一个主机,一个网站)

ServerAdmin:服务邮箱(可删除)

DocumentRoot:定义网站的根目录

ServerName   :网站域名  (这里只能定义一个)

ServerAlias  :网站域名别名(别名可多个,都是访问到同一个网站域名,访问内容哦都一样)

ErrorLog    :错误日志

 CustomLog:访问日志


3.创建对应的网站根目录


4.在对应的网站根目录创建一个站点

vim /data/wwwroot/abc.com/index.php

vim /data/wwwroot/111.com/index.php

配置完执行下面两条命令:

/usr/local/apache2.4/bin/apachectl -t  检查配置文件语法是否正确:

 /usr/local/apache2.4/bin/apachectl graceful  重新加载配置文件命令:(即使配置文件修改不成功时也不会杀死我们的进程)相当重启服务一样


   测试虚拟主机

此时我们直接ping 指定域名,并无解析访问到我们定义 abc.com在本机上。

1.编辑 hosts 文件 vim /etc/hosts

(如: 添加 192.168.136.133:80  abc.com )

2.使用  命令 curl  (这个命令就是浏览器的地址栏,可在命令行中看到虚拟主机内容))

curl -x192.168.136.133:80 abc.com



这里可以看出,当我们的一个域名,有定义的别名或无定义过的一个域名,当它在

解析的时候如果指向到我们服务器的ip,它都会解析到我们的默认虚拟主机

如果我们在相应的虚拟主机上定义了访问的域名,那么域名在解析ip时就会去访问被定义有该访问域名的虚拟主机。

http://192.168.136.133/index.php

那么在地址栏中怎么去访问到111.com这台虚拟主机的index.php

首先要在window下的hosts文件

增加  记录   192.168.136.133  111.com



                                    Apache的用户认证

(类似访问一个网站时,在显示内容前需要输入用户名密码后成功才显示内容)


vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //把111.com那个虚拟主机编辑成如下内容

<VirtualHost *:80>

DocumentRoot "/data/wwwroot/111.com"

ServerName 111.com

<Directory /data/wwwroot/111.com> //指定认证的目录

AllowOverride AuthConfig //这个相当于打开认证的开关

AuthName "111.com user auth" //自定义认证的名字,作用不大,可自定

AuthType Basic //认证的类型,一般为Basic

AuthUserFile /data/.htpasswd  //指定密码文件所在位置

require valid-user //指定需要认证的用户为全部可用用户,就是密码文件定义的用户

</Directory>

</VirtualHost>

/usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd cansheng

重新加载配置:

/usr/local/apache2.4/bin/apachectl -t

/usr/local/apache2.4/bin/apachectl graceful

绑定hosts,浏览器测试

curl -x192.168.136.133:80 111.com //状态码为401,则为需用户验证

curl -x192.168.136.133:80  -ucansheng:123456 111.com //状态码为200,表示正常

(-ucansheng:123456  表示用户名和密码)


步骤:

1.vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //把111.com那个虚拟主机编辑成如下内容


2.生成密码文件(/data/.htpasswd),和创建用户和密码:

/usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd cansheng

在增加一个用户(此时不用加 -c ,因为密码文件已创建)

/usr/local/apache2.4/bin/htpasswd  -m /data/.htpasswd zhangcansheng


测试:

测试前执行:(加载)

(1)/usr/local/apache2.4/bin/apachectl -t

(2)/usr/local/apache2.4/bin/apachectl graceful

1.curl -x192.168.136.133:80 111.com



 curl -x192.168.136.133:80 -ucansheng:123456 111.com 




1.修改配置文件:

2.创建要用户认证的文件:

vim /data/wwwroot/111.com/admin.php


测试前执行:(加载)

(1)/usr/local/apache2.4/bin/apachectl -t

(2)/usr/local/apache2.4/bin/apachectl graceful


此时访问111.com不用验证了,应为现在针对111.com下的admin.php 才要认证:


制定用户名密码:

成功验证登录


原文地址:http://blog.51cto.com/13589255/2086992

时间: 2024-10-26 19:33:04

LAMP(4)Apach和php结合、Apache默认虚拟主机的相关文章

LAMP架构(apache与php结合,apache默认虚拟主机)

一.apache与php结合 主配置文件/usr/local/apache2.4/conf/httpd.conf [[email protected] ~]# /usr/local/apache2.4/bin/apachectl graceful  (重新加载服务,并不重启服务) [[email protected] ~]# /usr/local/apache2.4/bin/apachectl start    (启动httpd服务) AH00558: httpd: Could not reli

Apache和PHP结合、Apache默认虚拟主机

Apache和PHP结合 1.先禁用之前的php7的模块 [[email protected] ~]# cat /usr/local/apache2.4/conf/httpd.conf| grep 'php' LoadModule php5_module        modules/libphp5.so #LoadModule php7_module        modules/libphp7.so 2.查看下是否禁用php7模块 [[email protected] ~]# /usr/lo

2018-3-1 10周2次课 Apache和PHP结合、Apache默认虚拟主机

11.14/11.15 Apache和PHP结合 1,修改ServerName 在启动apache时,会有类似错误提示 [[email protected] ~]# /usr/local/apache2.4/bin/apachectl restart AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 

Apache和PHP结合 Apache默认虚拟主机

11.14-11.15 Apache和PHP结合 Apache(httpd)的配置文件:/usr/local/apache2.4/conf/httpd.conf. 配置Apache 选择要调用的PHP 因为本机安装了两个版本的PHP,所以需要进行该配置,如果只装一个PHP服务则会默认调用存在的PHP服务(在此选用PHP5). [[email protected] ~]# vim /usr/local/apache2.4/conf/httpd.conf--LoadModule php5_modul

11.14/11.15 Apache和PHP结合 11.16/11.17 Apache默认虚拟主机

11.14/11.15 Apache和PHP结合 编辑:httpd主配置文件/usr/local/apache2.4/conf/httpd.conf 去掉#号 将php7加# Telnet IP+80 端口不通,需要开启iptables防火墙 更改require 更改配置后需要操作才能生效 重新加载服务 增加一行php进行解析 页面显示 结果访问的是源代码 如果遇到php无法解析,需要检查相关的apache的配置文件 (1)检查apache的php 有没有加载php5 查看是否有libphp5.

Apache与PHP的结合配置、Apache默认虚拟主机

Apache和PHP结合 配置httpd支持php 1. 修改配置文件: [[email protected] php-7.1.6]# vim /usr/local/apache2.4/conf/httpd.conf 修改一: 修改httpd的主配置文件/usr/local/apache2.4/conf/httpd.conf,搜索ServerName,把#ServerName www.example.com:80前面的#号删除. 找到如下内容更改: <Directory /> AllowOve

Apache默认虚拟主机

之前我们配置了两个域名:test和aaa,或者访问IP的时候也能跳转到discuz论坛,这有一个概念叫做默认的虚拟主机配置文件,不管是哪一个域名只要是你解析过来都能解析到该论坛,举个列子:比如我们打开计算机-C盘-windows-systmes32-drivers-etc-hosts用写字板打开 加入:192.168.140.100  www.test.com   www.aaa.com  www.222.com 它也能解析到192.168.140.100这个discuz论坛里面去,ping w

apache 默认虚拟主机

因为有默认虚拟主机 ,在配置域名时,用ip也能访问我们的域名,那么怎么能把禁止掉呢 很简单 vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 新增这些语句 <VirtualHost *:80> DocumentRoot "/data/www" ServerName www.123..com   随便一个域名 <Directory /data/www/> Order allow,deny deny from a

40.apache与php结合、Apache默认虚拟主机

一.apache与php结合 首先打开本地的telnet客户端(测试端口使用) /usr/local/apache2.4/bin/apachectl start //启动apache服务 修改apache配置文件 因为之前加载了php5和php7,所以这里关闭其中一个,运行其中一个vim /usr/local/apache2.4/conf/httpd.conf //修改以下4个地方 ServerName 前面的#去掉 Require all denied 改为 Require all grant