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

11.14/11.15 Apache和PHP结合php

11.16/11.17 Apache默认虚拟主机html

 

 

 

 

11.14/11.15 Apache和PHP结合:linux

 

 

~~ONEapache

配置httpd支持php,步骤以下:vim

(咱们虽然知道Apache调用了php做为他的模块,但咱们还没作实验,还不知道他能不能解析php。因此咱们要编辑http的配置文件)windows

httpd主配置文件/usr/local/apache2.4/conf/httpd.conf浏览器

vim /usr/local/apache2.4/conf/httpd.conf //修改如下4个地方bash

实例1. ServerName 开启Apache不显示提示服务器

实例2. Require all denied 防止403php7

实例3. AddType application/x-httpd-php .php 解析PHP。要增长这一行

实例4. DirectoryIndex index.html index.php 增长索引页。后面要加index.php

/usr/local/apache2.4/bin/apachectl -t 测试,修改过配置文件完语法是否对

/usr/local/apache2.4/bin/apachectl graceful 从新加载配置文件,不会重启服务

/usr/local/apache2.4/bin/apachectl start 启动服务

 

netstat -lntp (这两个阿铭没说怎么用)

curl localhost

 

~~TWO

验证apache支持不支持解析php,步骤以下:

实例5.

vim /usr/local/apache2.4/htodcs/1.php 增长以下内容

咱们在访问的时候是访问的这个目录下的文件 /htodcs

<?php

phpinfo();

?>

 

~~THREE

若是遇到php不能解析的状况,要检查Apache的配置文件:

1. /usr/local/apache2.4/bin/apachectl -M 查看有没有加载php模块。

2. ls /usr/local/apache2.4/modules/libphp5.so 若是没有加载咱们要看一看这个模块,有没有这个文件

3. vim /usr/local/apache2.4/conf/httpd.conf 若是有.so这个文件,就看一下配置文件。有没有加载或被注释php模块

LoadModule php5_module modules/libphp5.so

#LoadModule php7_module modules/libphp7.so

4. vim /usr/local/apache2.4/conf/httpd.conf 还要检查配置文件,有没有加载AddType

AddType application/x-compress .Z

AddType application/x-gzip .gz .tgz

AddType application/x-httpd-php .php 咱们本身配置进去的这个(注意.php前面要加空格,根据前两行写)

5. vim /usr/local/apache2.4/conf/httpd.conf 还要检查有没有加载index.php (索引页)

<IfModule dir_module>

DirectoryIndex index.html index.php 咱们在后面加进去的

 

curl localhost/test.php (这个阿铭没说上面用)

 

 

 

实例:

1.

[root@localhost ~]# /usr/local/apache2.4/bin/apachectl start
开启Apache的时候会有提示

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message

[root@localhost  ~]# vi /usr/local/apache2.4/conf/httpd.conf viApache的配置文件。

# ServerName gives the name and port that the server uses to identify itself.

# This can often be determined automatically, but we recommend you specify

# it explicitly to prevent problems during startup.

#

# If your host doesn't have a registered DNS name, enter its IP address here.

#

ServerName www.example.com:80 搜索 ServerName,并把前面的注释去掉。再启动Apache就不会有提示了

 

[root@localhost  ~]# vi /usr/local/apache2/conf/httpd.conf viApache配置文件。

LoadModule php5_module modules/libphp5.so

#LoadModule php7_module modules/libphp7.so 把php7注释地掉,咱们用php5。否则会有冲突

 

2.

咱们先用浏览器访问如下咱们的IP,其实并不通

网页访问不了。

这种状况下,咱们用cmd ping一下IP,是通的

ping 192.168.30.133 是通的。

而后,在telnet80端口。须要打开telnet

步骤为,打开控制面案>程序>程序和功能>打开或关闭Windows功能>

找到 Telnet客户端,前面打上勾,点肯定

以上,Windows打开Telnet完成

咱们再回到cmd上,telent80端口,结果是不通。是由于在咱们linux上并无打开80端口

[root@localhost  ~]# iptables -nvL 看一下 iptables规则。也并无发现80端口

咱们先临时给他加上80端口

[root@localhost  ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT -j 为来源客户端所有打开,也能够-s指定来源客户

此时,咱们在浏览器上IP就通了

It works!

此时,咱们再回到cmd上。再次ping 80端口。显示如下画面,为通

telenet 192.168.30.133 80 通了

 

为防止浏览器出现403或测试为403,咱们要在配置文件里,配置一下 Require all denied

[root@localhost ~]# vi /usr/local/apache2.4/conf/httpd.conf

<Directory />

AllowOverride none

Require all denied 把这一行,denied改成granted

并检查下面Require all granted是否是也是为 granted

#

# Controls who can get stuff from this server.

#

Require all granted

[root@localhost  ~]# /usr/local/apache2.4/bin/apachectl -t 配置完配置文件要-t检查一下

Syntax OK

[root@localhost  ~]# /usr/local/apache2.4/bin/apachectl graceful 在graceful从新加载

 

 

3.

[root@localhost  ~]# vim /usr/local/apache2.4/conf/httpd.conf 修改配置文件

搜索 AddType

#

# If the AddEncoding directives above are commented-out, then you

# probably should define those extensions to indicate media types:

#

AddType application/x-compress .Z

AddType application/x-gzip .gz .tgz 找到这两行,这有两个,一个.Z一个.tgz的。不要加错了

增长 AddType application/x-httpd-php .php

 

 

4.

 

[root@localhost  ~]# vim /usr/local/apache2.4/conf/httpd.conf

搜索 Index

[root@localhost  ~]# /usr/local/apache2.4/bin/apachectl -t 修改完配置文件要 -t

Syntax OK

[root@localhost  ~]# /usr/local/apache2.4/bin/apachectl graceful 修改完配置文件要 graceful

 

 

5.

[root@localhost ~]# vi /usr/local/apache2.4/htdocs/1.php

<?php

phpinfo(); 函数,能够把PHP的相关信息打印出来

?>

咱们在浏览器上输入 192.168.30.133/1.php

这个界面出来,就表明php就支持解析

[root@localhost ~]# curl localhost/1.php
 

<?php

phpinfo(); 

?>

 

 

 

 

 

 

 

----------------------------------------------------------------------------------------------------------------------------------------------------

 

 

 

11.16/11.17 Apache默认虚拟主机

 

 

 

 

1. 可理解为,一台服务器能够访问多个网站,每一个网站都是一个虚拟主机

概念:域名(主机名)、DNS、解析域名、hosts

 

2. 咱们在linux上设置了hosts,可让他访问到1.php,是由于在apa配置文件里DocumentRoot定义了网站的根目录在哪里

DocumentRoot "/usr/local/apache2.4/htdocs"

他的域名就是配置文件里上面定义的ServerName www.example.com:80,这个ServerName可有用任何域名去访问他。而这个就是Apache的默认主机,也就是说任何一个域名,只要是指定到这个IP,都会指向到这个站点,这个站点就是默认虚拟主机

3. 一样windows上也是能够的,他的位置在 C:\Windows\System 32\drivers\etc\hosts

在里面写上192.168.30.133 www.123.com

咱们在访问www.123.com的时候就会访问到192.168.30.133

4. 任何一个域名解析到这台机器,均可以访问的虚拟主机就是默认虚拟主机。

若是咱们对Apache的这个配置文件没有作任何的修改,仅仅只是使用的是httpd.cong,他实际上就是咱们主配置文件里面定义的ServerName和DocumentRoot。若是咱们以为很差管理,不想让域名执行到这来,由于一个配置文件里面只能配置一个ServerName。咱们要打开一个虚拟主机配置文件:

~4.1 vim /usr/local/apache2.4/conf/httpd.conf 搜索httpd-vhost,去掉#。表明以上的ServerName DocumentRoot就不能用啦。

~4.2 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf 这个就是虚拟主机配置文件。改成以下

<VirtualHost *:80> 每个VirtualHost都表明一个主机

ServerAdmin admin@aminglinux.com 这个是定义管理员的邮箱,要不要都行

DocumentRoot "/data/wwwroot/abc.com" 网站根目录。只能写一个

ServerName abc.com 访问他的域名是什么。可支持alias

ServerAlias www.abc.com www.123.com 可写多个别名。意思是abc.com能访问,这些别名也能够访问

ErrorLog "logs/abc.com-error_log" 错误日志

CustomLog "logs/abc.com-access_log" common 访问日志

</VirtualHost>

 

<VirtualHost *:80>

DocumentRoot "/data/wwwroot/111.com"

ServerName 111.com

ErrorLog "logs/111.com-error_log"

CustomLog "logs/111.com-access_log" common

</VirtualHost>

~4.3 修改完要建立相应的目录

mkdir /data/wwwroot

mkdir /data/wwwroot/abc.com

mkdir /data/wwwroot/111.com

~4.3 在两个站点根目录下建立.php

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

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

~4.4 修改服务是否正确以及从新加载

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

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

~4.5 curl -x 测试

curl -x192.168.30.133:80 www.abc.com 测试咱们配置的这个域名访问这个IP的结果,是否是咱们以前设置的结果

 

总结:

1. 若是咱们没有设置的域名段,访问过来,他就会走第一个咱们设置的虚拟主机

2. 咱们一旦打开了这个虚拟主机配置(也就是咱们注释掉的httpd-vhost),咱们以前配置的SurverName DocumentRoot都会失效

3. 每个VirtualHost都表明一个站点,都是一个虚拟主机。在虚拟主机里有一个比较特殊的,就是默认虚拟主机。就是不管任何的域名解析到这个IP上,都会去访问这个默认虚拟主机

 

 

 

实例:

[root@localhost  ~]# vim /usr/local/apache2/conf/httpd.conf

# Virtual hosts

Include conf/extra/httpd-vhosts.conf

[root@localhost  ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

<VirtualHost *:80>

DocumentRoot "/data/wwwroot/abc.com"

ServerName abc.com

ServerAlias www.abc.com www.123.com

ErrorLog "logs/abc.com-error_log"

CustomLog "logs/abc.com-access_log" common

</VirtualHost>

 

<VirtualHost *:80>

DocumentRoot "/data/wwwroot/111.com"

ServerName 111.com

ServerAlias www.example.com

ErrorLog "111.com-error_log"

CustomLog "111.com-access_log" common

</VirtualHost>

[root@localhost  ~]# mkdir /data/wwwroot

[root@localhost  ~]# mkdir /data/wwwroot/abc.com

[root@localhost  ~]# mkdir /data/wwwroot/111.com

[root@localhost  ~]# vim /data/wwwroot/abc.com/index.php

[root@localhost ~]# vim /data/wwwroot/111.com/index.php

[root@localhost  ~]# /usr/local/apache2.4/bin/apachectl -t

Syntax OK

[root@localhost ~]# /usr/local/apache2.4/bin/apachectl graceful

[root@localhost  ~]# curl -x192.168.30.133:80 www.abc.com

[root@localhost  ~]# curl -x192.168.30.133:80 www.abc.cn

[root@localhost ~]# curl -x192.168.30.133:80 www.example.cn

[root@localhost  ~]# curl -x192.168.30.133:80 www.example.com

[root@localhost  ~]# curl -x192.168.30.133:80 111.com

相关文章
相关标签/搜索