11.14/11.15 Apache和PHP结合 11.16/11.17 Apache默认虚拟主机
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了11.14/11.15 Apache和PHP结合 11.16/11.17 Apache默认虚拟主机相关的知识,希望对你有一定的参考价值。
九周第五次课(9月29日)
11.14/11.15 Apache和php结合
11.16/11.17 Apache默认虚拟主机
11.14 Apache和PHP结合(上)
httpd主配置文件/usr/local/apache2.4/conf/httpd.conf
- vim /usr/local/apache2.4/conf/httpd.conf //修改以下4个地方 ServerName Require all denied AddType application/x-httpd-php .php DirectoryIndex index.html index.php - /usr/local/apache2.4/bin/apachectl -t //测试语法- /usr/local/apache2.4/bin/apachectl start //启动服务- netstat -lntp - curl localhost- vim /usr/local/apache2.4/htodcs/test.php //增加如下内容 <?php echo 123; ?> curl localhost/test.php
先打开httpd的配置文件
- [[email protected] ~]# vim /usr/local/apache2.4/conf/httpd.conf[[email protected] ~]# vim /usr/local/apache2.4/conf/httpd.conf[1]+ 已停止 vim /usr/local/apache2.4/conf/httpd.conf [[email protected] ~]# /usr/local/apache2.4/bin/apachectl restartAH00558: httpd: Could not reliably determine the server‘s fully qualified domain name, using fe80::a152:bbdf:8b2b:db9b. Set the ‘ServerName‘ directive globally to suppress this message httpd not running, trying to start [[email protected] ~]# fgvim /usr/local/apache2.4/conf/httpd.conf#ServerAdmin [email protected]## 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## Deny access to the entirety of your server‘s filesystem. You must# explicitly permit access to web content directories in other # <Directory> blocks below.#<Directory /> AllowOverride none Require all denied </Directory>## Note that from this point forward you must specifically allow# particular features to be enabled - so if something‘s not working as# you might expect, make sure that you have specifically enabled it# below.#-- 插入 -- [[email protected] ~]# vim /usr/local/apache2.4/conf/httpd.conf[1]+ 已停止 vim /usr/local/apache2.4/conf/httpd.conf [[email protected] ~]# /usr/local/apache2.4/bin/apachectl restartAH00558: httpd: Could not reliably determine the server‘s fully qualified domain name, using localhost.localdomain. Set the ‘ServerName‘ directive globally to suppress this message httpd not running, trying to start /usr/local/apache2.4/bin/apachectl: 行 79: 2258 段错误 $HTTPD -k $ARGV [[email protected] ~]# fgvim /usr/local/apache2.4/conf/httpd.conf [[email protected] ~]# fg-bash: fg: 当前: 无此任务 [[email protected] ~]# /usr/local/apache2.4/bin/apachectl restarthttpd not running, trying to start /usr/local/apache2.4/bin/apachectl: 行 79: 2262 段错误 $HTTPD -k $ARGV [[email protected] ~]# vim /usr/local/apache2.4/conf/httpd.conf[[email protected] ~]# /usr/local/apache2.4/bin/apachectl restarthttpd not running, trying to start /usr/local/apache2.4/bin/apachectl: 行 79: 2266 段错误 $HTTPD -k $ARGV [[email protected] ~]# /usr/local/apache2.4/bin/apachectl stophttpd (no pid file) not running[[email protected] ~]# /usr/local/apache2.4/bin/apachectl start/usr/local/apache2.4/bin/apachectl: 行 79: 2272 段错误 $HTTPD -k $ARGV [[email protected] ~]# !vivim /usr/local/apache2.4/conf/httpd.conf [[email protected] ~]# /usr/local/apache2.4/bin/apachectl start[[email protected] ~]#
[[email protected] ~]# ps aux |grep httpdroot 2277 0.0 0.8 253580 8788 ? Ss 14:30 0:00 /usr/local/apache2.4/bin/httpd -k start daemon 2278 0.0 1.1 540408 11008 ? Sl 14:30 0:00 /usr/local/apache2.4/bin/httpd -k start daemon 2279 0.0 1.1 540408 11008 ? Sl 14:30 0:00 /usr/local/apache2.4/bin/httpd -k start daemon 2282 0.0 1.1 540408 11008 ? Sl 14:30 0:00 /usr/local/apache2.4/bin/httpd -k start root 2364 0.0 0.0 112680 976 pts/0 S+ 14:32 0:00 grep --color=auto httpd [[email protected] ~]#
刚才把servername打开了 也就不再提示那个错误了 httpd: Could not reliably determine the server‘s fully qualified domain name, using localhost.localdomain. Set the ‘ServerName‘ directive globally to suppress this message httpd not running, trying to start
这是第一处,第二处 Require all denied
用网页访问地址192.168.202.131(本机ip)带不开,再用windowsping 下,是可以ping通,试下telnet 访问下80端口 使用telnet 192.168.202.131 80
因为windows 并没有打开tenet的客户端,所以它会提示没有这个命令
打开telnet客户端方式-打开控制面板-程序-程序和功能-打开或关闭windows功能
使用telnet 192.168.202.131 80 结果是 C:\Users\Administrator.USER-20170629EN>telnet 192.168.202.131 80 正在连接192.168.202.131...无法打开到主机的连接。 在端口 80: 连接失败 80端口并不通,因为在linux服务器上并没有打开80端口
使用iptables -nvL 看下规则
[[email protected] ~]# iptables -nvL Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 660 54606 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED 1 80 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 25 1798 INPUT_direct all -- * * 0.0.0.0/0 0.0.0.0/0 25 1798 INPUT_ZONES_SOURCE all -- * * 0.0.0.0/0 0.0.0.0/0 25 1798 INPUT_ZONES all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID 23 1686 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 FORWARD_direct all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 FORWARD_IN_ZONES_SOURCE all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 FORWARD_IN_ZONES all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 FORWARD_OUT_ZONES_SOURCE all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 FORWARD_OUT_ZONES all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 545 packets, 76871 bytes) pkts bytes target prot opt in out source destination 545 76871 OUTPUT_direct all -- * * 0.0.0.0/0 0.0.0.0/0 Chain FORWARD_IN_ZONES (1 references) pkts bytes target prot opt in out source destination 0 0 FWDI_public all -- ens33 * 0.0.0.0/0 0.0.0.0/0 [goto] 0 0 FWDI_public all -- + * 0.0.0.0/0 0.0.0.0/0 [goto] Chain FORWARD_IN_ZONES_SOURCE (1 references) pkts bytes target prot opt in out source destination Chain FORWARD_OUT_ZONES (1 references) pkts bytes target prot opt in out source destination 0 0 FWDO_public all -- * ens33 0.0.0.0/0 0.0.0.0/0 [goto] 0 0 FWDO_public all -- * + 0.0.0.0/0 0.0.0.0/0 [goto] Chain FORWARD_OUT_ZONES_SOURCE (1 references) pkts bytes target prot opt in out source destination Chain FORWARD_direct (1 references) pkts bytes target prot opt in out source destination Chain FWDI_public (2 references) pkts bytes target prot opt in out source destination 0 0 FWDI_public_log all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 FWDI_public_deny all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 FWDI_public_allow all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 Chain FWDI_public_allow (1 references) pkts bytes target prot opt in out source destination Chain FWDI_public_deny (1 references) pkts bytes target prot opt in out source destination Chain FWDI_public_log (1 references) pkts bytes target prot opt in out source destination Chain FWDO_public (2 references) pkts bytes target prot opt in out source destination 0 0 FWDO_public_log all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 FWDO_public_deny all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 FWDO_public_allow all -- * * 0.0.0.0/0 0.0.0.0/0 Chain FWDO_public_allow (1 references) pkts bytes target prot opt in out source destination Chain FWDO_public_deny (1 references) pkts bytes target prot opt in out source destination Chain FWDO_public_log (1 references) pkts bytes target prot opt in out source destination Chain INPUT_ZONES (1 references) pkts bytes target prot opt in out source destination 25 1798 IN_public all -- ens33 * 0.0.0.0/0 0.0.0.0/0 [goto] 0 0 IN_public all -- + * 0.0.0.0/0 0.0.0.0/0 [goto] Chain INPUT_ZONES_SOURCE (1 references) pkts bytes target prot opt in out source destination Chain INPUT_direct (1 references) pkts bytes target prot opt in out source destination Chain IN_public (2 references) pkts bytes target prot opt in out source destination 25 1798 IN_public_log all -- * * 0.0.0.0/0 0.0.0.0/0 25 1798 IN_public_deny all -- * * 0.0.0.0/0 0.0.0.0/0 25 1798 IN_public_allow all -- * * 0.0.0.0/0 0.0.0.0/0 1 60 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 Chain IN_public_allow (1 references) pkts bytes target prot opt in out source destination 1 52 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 ctstate NEW Chain IN_public_deny (1 references) pkts bytes target prot opt in out source destination Chain IN_public_log (1 references) pkts bytes target prot opt in out source destination Chain OUTPUT_direct (1 references) pkts bytes target prot opt in out source destination [[email protected] ~]# ;临时增加一条规则,允许80端口访问 [[email protected] ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT[[email protected] ~]#
这个时候再来看网页 ,刷新下,显示可以了,能够访问了 It works !
再看下telenet 再试下,telnet 192.168.202.131 80 ,只要显示成这个样子说明80端口通了
按ctrl + ] 再输quit 就退出来了
再把那条规则删掉
[[email protected] ~]# iptables -D INPUT -p tcp --dport 80 -j ACCEPT
再来看看卡死了,再加上规则,就可以了,浏览器也可以访问了
[[email protected]st ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT[[email protected] ~]#
打开配置文件,把 Require all denied 改为 Require all granted
## Deny access to the entirety of your server‘s filesystem. You must# explicitly permit access to web content directories in other # <Directory> blocks below.#<Directory /> AllowOverride none Require all denied</Directory> #<Directory /> AllowOverride none Require all granted</Directory># 之所有能网页上能访问,DocumentRoot "/usr/local/apache2.4/htdocs" 指定了一个 <Directory "/usr/local/apache2.4/htdocs"> 后面有一个 Require all granted 如果把这个改成denied 肯定访问不了 AllowOverride None # # Controls who can get stuff from this server. # Require all granted</Directory> 改为 # Controls who can get stuff from this server. # #Require all granted Require all denied</Directory>[[email protected] ~]# vim /usr/local/apache2.4/conf/httpd.conf[[email protected] ~]# 改完配置,要做一个操作 重启,后者叫做 重新加载配置 /usr/local/apache2.4/bin/apachectl graceful, 这里告诉一个命令,用来检查配置文件语法是否正确/usr/local/apache2.4/bin/apachectl -t 结果是Syntax OK 就没问题,如果错了就会报错 [[email protected] ~]# vim /usr/local/apache2.4/conf/httpd.conf[[email protected] ~]# /usr/local/apache2.4/bin/apachectl -tSyntax OK [[email protected] ~]#[[email protected] ~]# /usr/local/apache2.4/bin/apachectl graceful[[email protected] ~]#
再来运行下网页, 打不开了
所以这个地方需要改成granted,上面那个地方也是要改成granted
# # Controls who can get stuff from this server. # Require all granted</Directory>
还有这个地方也是
# Deny access to the entirety of your server‘s filesystem. You must# explicitly permit access to web content directories in other # <Directory> blocks below.#<Directory /> AllowOverride none Require all granted</Directory>
这是第二处,第三处,需要增加一行和php 相关的配置
增加一行 AddType application/x-httpd-php .php
首先在胚子文件搜AddType,
# # AddType allows you to add to or override the MIME configuration # file specified in TypesConfig for specific file types. # #AddType application/x-gzip .tgz # # AddEncoding allows you to have certain browsers uncompress # information on the fly. Note: Not all browsers support this. # #AddEncoding x-compress .Z #AddEncoding x-gzip .gz .tgz # # 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 # # AddHandler allows you to map certain file extensions to "handlers": 增加一行 AddType application/x-httpd-php .php,如果不增加php就没办法解析 # 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 AddType application/x-httpd-php .php #-- 插入 -- [[email protected] ~]# vim /usr/local/apache2.4/conf/httpd.conf[[email protected] ~]# 还有一个地方,增加一个索引页 DirectoryIndex index.html index.php 打开一个网站 为什么不用输入inde.php 就可以访问呢? 打开配置文件vim /usr/local/apache2.4/conf/httpd.conf 搜索Index, 在DirectoryIndex index.html后加入 index.php Require all granted</Directory>## DirectoryIndex: sets the file that Apache will serve if a directory# is requested.#<IfModule dir_module> DirectoryIndex index.html index.php</IfModule>## The following lines prevent .htaccess and .htpasswd files from being -- 插入 -- 检查 /usr/local/apache2.4/bin/apachectl -t 重新加载 /usr/local/apache2.4/bin/apachectl graceful [[email protected] ~]# vim /usr/local/apache2.4/conf/httpd.conf[[email protected] ~]# /usr/local/apache2.4/bin/apachectl -tSyntax OK [[email protected] ~]# /usr/local/apache2.4/bin/apachectl graceful[[email protected] ~]#
11.15 Apache和PHP结合(下)
先来验证一下apache 到底支不支持 php呢
[[email protected] ~]# vi /usr/local/apache2.4/htdocs/1.php [[email protected] ~]# vi /usr/local/apache2.4/htdocs/1.php<?php phpinfo();?>~ ~ ~ ~ ~ ~ ~ :wq
保存之后,用浏览器打开访问一下
这个页面可以出来,说明你的php 支持解析了,如果不能出来,会是什么样的呢?
比如说我们没有加AddType 这一行,把它注释掉 # AddType application/x-httpd-php .php
[[email protected] ~]# vim /usr/local/apache2.4/conf/httpd.conf [[email protected] ~]# /usr/local/apache2.4/bin/apachectl -tSyntax OK [[email protected] ~]# /usr/local/apache2.4/bin/apachectl graceful [[email protected] ~]#
再来看下,打不开,
如果解析不了,需要检查一下你的apache文件,都检查哪几项呢?
1.第一项/usr/local/apache2.4/bin/apachectl -M 看看有没有加载php5_module (share)php5的模块
2.如果没有加载要看一看有没有这个模块 ls /usr/local/apache2.4/modules/libphp5.so 有没有这个文件,如果有文件并没有显示那就查看配置文件里面有没有加载这个libphp5.so 的这一行配置,如果没有肯定不能解析的
[[email protected] ~]# /usr/local/apache2.4/bin/apachectl -MLoaded Modules: core_module (static) so_module (static) http_module (static) mpm_event_module (static) authn_file_module (shared) authn_core_module (shared) authz_host_module (shared) authz_groupfile_module (shared) authz_user_module (shared) authz_core_module (shared) access_compat_module (shared) auth_basic_module (shared) reqtimeout_module (shared) filter_module (shared) mime_module (shared) log_config_module (shared) env_module (shared) headers_module (shared) setenvif_module (shared) version_module (shared) unixd_module (shared) status_module (shared) autoindex_module (shared) dir_module (shared) alias_module (shared) php5_module (shared) [[email protected] ~]# ls /usr/local/apache2.4/modules/libphp5.so /usr/local/apache2.4/modules/libphp5.so [[email protected] ~]#
如果没有模块,看下配置文件有没有LoadModule php5_module modules/libphp5.so 这一行配置
LoadModule php5_module modules/libphp5.so#LoadModule php7_module modules/libphp7.so<IfModule unixd_module> #
3.接下来检查你的配置文件,有没有加这一行AddType application/x-httpd-php .php 注意这个地方 有个空格,没加空格就说明有问题
有问题是可以检查出来的,使用命令/usr/local/apache2.4/bin/apachectl -t 如果显示结果是Syntnx OK
4.还有一步 就是这个index.php,这一行加不加倒也不影响,为什么要加这个呢,因为在访问一个网站的时候 有时候并没有输入www.aplearn.com/index.php 正常的这才是真正的地址,但是不加/index.php 也可以访问,就是有这个索引页index.php,就是定义了一个index
[[email protected] ~]# vim /usr/local/apache2.4/conf/httpd.conf [[email protected] ~]# /usr/local/apache2.4/bin/apachectl -tSyntax OK [[email protected] ~]# /usr/local/apache2.4/bin/apachectl graceful [[email protected] ~]#
再来看看
现在来试试这个php7 ,不要php5 了,进入配置文件,搜索libphp
#LoadModule php5_module modules/libphp5.soLoadModule php7_module modules/libphp7.so<IfModule unixd_module>## If you wish httpd to run as a different user or group, you must run# httpd as root initially and it will switch. ## User/Group: The name (or #number) of the user/group to run httpd as.# It is usually good practice to create a dedicated user and group for# running httpd, as with most system services.#User daemonGroup daemon</IfModule># ‘Main‘ server configuration#:wq [[email protected] ~]# vim /usr/local/apache2.4/conf/httpd.conf [[email protected] ~]# /usr/local/apache2.4/bin/apachectl -tSyntax OK [[email protected] ~]# /usr/local/apache2.4/bin/apachectl graceful [[email protected] ~]#
快捷键ctrl r 再输入命令相关词,可以快速帮你找到命令历史里相关的 命令
再打开网页,也是可以的
咱们看到的这个网页和/usr/local/php7/bin/php -i |less 看到的结果基本一致的,只不过一个是图形化表格化 格式,一个是文本文件格式
[[email protected] ~]# /usr/local/php7/bin/php -i |less phpinfo() PHP Version => 7.1.6System => Linux localhost.localdomain 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 Build Date => Oct 5 2017 23:52:17Configure Command => ‘./configure‘ ‘--prefix=/usr/local/php7‘ ‘--with-apxs2=/usr/local/apache2.4/bin/apxs‘ ‘--with-config-file-path=/usr/local/php7/etc‘ ‘--with-pdo-mysql=/usr/local/mysql‘ ‘--with-mysqli=/usr/local/mysql/bin/mysql_config‘ ‘--with-libxml-dir‘ ‘--with-gd‘ ‘--with-jpeg-dir‘ ‘--with-png-dir‘ ‘--with-freetype-dir‘ ‘--with-iconv-dir‘ ‘--with-zlib-dir‘ ‘--with-bz2‘ ‘--with-openssl‘ ‘--with-mcrypt‘ ‘--enable-soap‘ ‘--enable-gd-native-ttf‘ ‘--enable-mbstring‘ ‘--enable-sockets‘ ‘--enable-exif‘Server API => Command Line Interface Virtual Directory Support => enabled Configuration File (php.ini) Path => /usr/local/php7/etc Loaded Configuration File => (none) Scan this dir for additional .ini files => (none) Additional .ini files parsed => (none) PHP API => 20160303PHP Extension => 20160303Zend Extension => 320160303Zend Extension Build => API320160303,TS PHP Extension Build => API20160303,TS Debug Build => no Thread Safety => enabled Zend Signal Handling => enabled Zend Memory Manager => enabled Zend Multibyte Support => provided by mbstring IPv6 Support => enabled DTrace Support => disabled Registered PHP Streams => https, ftps, compress.zlib, compress.bzip2, php, file, glob, data, http, ftp, phar Registered Stream Socket Transports => tcp, udp, unix, udg, ssl, sslv3, tls, tlsv1.0, tlsv1.1, tlsv1.2Registered Stream Filters => zlib.*, bzip2.*, convert.iconv.*, mcrypt.*, mdecrypt.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk This program makes use of the Zend Scripting Language Engine: Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies :
11.16 Apache 默认虚拟主机 (上)
概念:域名(主机名)、DNS、解析域名、hosts
任何一个域名解析到这台机器,都可以访问的虚拟主机就是默认虚拟主机
vim /usr/local/apache2/conf/httpd.conf //搜索httpd-vhost,去掉#
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf //改为如下
<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/data/wwwroot/aming.com" ServerName aming.com ServerAlias www.aming.com ErrorLog "logs/aming.com-error_log" CustomLog "logs/aming.com-access_log" common </VirtualHost> <VirtualHost *:80> DocumentRoot "/data/wwwroot/www.123.com" ServerName www.123.com</VirtualHost>
/usr/local/apache2/bin/apachectl –t
/usr/local/apache2/bin/apachectl graceful
一台服务器可以访问多个网站,多个域名 ,每个网站都是一个虚拟主机
假如你的网站既能访问百度 有可以访问谷歌,同时都在一台服务器上运行,就用了一个httpd的服务,这个就是一个网站 多个域名,每个域名对应着一个虚拟主机
/DocumentRoot "/usr/local/apache2.4/htdocs"
<Directory "/usr/local/apache2.4/htdocs"> 这个参数定义了 这个网站的根目录在那里,域名就是上面的ServerNmae www.exaple.com :80 我用ip 也可以访问它,用www.aminglinux.com 也能访问它
先教大家在windows下怎么去写hosts
C:\Windows\System32\drivers\etc\hosts 这个和咱们的linux下的hosts 相似,可以在里面定义一个ip 定义一个域名,然后让这个域名指向到这个ip去,打开方式用记事本
# Copyright (c) 1993-2009 Microsoft Corp. ## This is a sample HOSTS file used by Microsoft TCP/IP for Windows. ## This file contains the mappings of IP addresses to host names. Each # entry should be kept on an individual line. The IP address should # be placed in the first column followed by the corresponding host name. # The IP address and the host name should be separated by at least one # space. ## Additionally, comments (such as these) may be inserted on individual # lines or following the machine name denoted by a ‘#‘ symbol. ## For example: ## 102.54.94.97 rhino.acme.com # source server # 38.25.63.10 x.acme.com # x client host# localhost name resolution is handled within DNS itself. # 127.0.0.1 localhost# ::1 localhost
在这里里面加上 192.168.202.131 www.abc.com www.123.com
# # For example: # # 102.54.94.97 rhino.acme.com # source server# 38.25.63.10 x.acme.com # x client host192.168.202.131 www.abc.com # localhost name resolution is handled within DNS itself. # 127.0.0.1 localhost # ::1 localhost
到底能不能指向这个192.168.202.131 呢,保存下这个文件
格式 先ip 域名 空格 域名 可以写多个,一行里面可以有多个域名
正常情况下不写这个hosts
再来访问下
这ip 61.132.13.130 很明显是一个公网ip,上面那个之所以可以访问到192。168.202.131那里是因为我们写了hosts,我们指向了这个ip 这个就是hosts 的作用,它的目的是就让你临时访问到一个服务器上去,比如上面的www.abc.com 或者 123.com
把这个域名指向到这台机器上去,这个是在什么情况下用呢,是在DNS 还没有生效的情况下
我们这个并没有在httpd 的配置文件上去定义,仅仅在ServerNamewww.example.com ,这个叫做 apache的默认主机 任何一个域名 只要是指定要这个ip,它都会访问到这个站点,那这个站点就叫做默认虚拟主机
如果你没有做任何的操作,仅仅是使用了httpd.conf
搜索这个extra 找到Virtual hosts #Include conf/extra/httpd-vhost.conf 把这行#去掉
[[email protected] ~]# vim /usr/local/apache2.4/conf/httpd.conf # Virtual hostsInclude conf/extra/httpd-vhosts.conf # Local access to the Apache HTTP Server Manual #Include conf/extra/httpd-manual.conf # Distributed authoring and versioning (WebDAV) #Include conf/extra/httpd-dav.conf:wq
打开一个二级配置文件就,这个既是虚拟主机配置文件,在这个配置文件里 可以定义多个ServerName ,vim /usr/local/apache2.4/conf/extra/httpd-vhoust-conf 虚拟主机配置文件
[[email protected] ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf # Virtual Hosts## Required modules: mod_log_config # If you want to maintain multiple domains/hostnames on your # Virtual Hosts## Required modules: mod_log_config # If you want to maintain multiple domains/hostnames on your # machine you can setup VirtualHost containers for them. Most configurations # use only name-based virtual hosts so the server doesn‘t need to worry about # IP addresses. This is indicated by the asterisks in the directives below. ## Please see the documentation at # <URL: # for further details before you try to setup virtual hosts. ## You may use the command line option ‘-S‘ to verify your virtual host# configuration. ## VirtualHost example: # Almost any Apache directive may go into a VirtualHost container. # The first VirtualHost section is used for all requests that do not# match a ServerName or ServerAlias in any <VirtualHost> block. #<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/usr/local/apache2.4/docs/dummy-host.example.com" ServerName dummy-host.example.com ServerAlias www.dummy-host.example.com ErrorLog "logs/dummy-host.example.com-error_log" CustomLog "logs/dummy-host.example.com-access_log" common</VirtualHost><VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/usr/local/apache2.4/docs/dummy-host2.example.com" ServerName dummy-host2.example.com ErrorLog "logs/dummy-host2.example.com-error_log"
改下这个配置文件
每一个这个都代表这一个主机,一个主机就是一个网站
现在要想给它区分开,就得打开虚拟主机配置文件,打开之后做一个更改
DocumentRoot 这个用来定义你网站的更目录在哪里
<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 "logs/111.com-error_log" CustomLog "logs/111.com-access_log" common </VirtualHost> :wq
[[email protected] ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf [[email protected] ~]# mkdir /data/wwwroot/ [[email protected] ~]# mkdir /data/wwwroot/abc.com [[email protected] ~]# mkdir /data/wwwroot/111.com [[email protected] ~]#
[[email protected] ~]# vim /data/wwwroot/abc.com/index.php<?php echo "abc.com";~ ~ [[email protected] ~]# vim /data/wwwroot/abc.com/index.php [[email protected] ~]# vim /data/wwwroot/111.com/index.php<?php ehco "111.com";~ ~
[[email protected] ~]# /usr/local/apache2.4/bin/apachectl -tSyntax OK [[email protected] ~]# /usr/local/apache2.4/bin/apachectl graceful[[email protected] ~]#
11.17 Apache 默认虚拟主机 (下)
新的命令curl -x
如果不绑定hosts 去ping www.abc.com,会访问到外网上去,
[[email protected] ~]# ping www.abc.comPING abc.com (199.181.132.250) 56(84) bytes of data. 64 bytes from 199.181.132.250 (199.181.132.250): icmp_seq=1 ttl=128 time=238 ms 64 bytes from 199.181.132.250 (199.181.132.250): icmp_seq=2 ttl=128 time=241 ms 64 bytes from 199.181.132.250 (199.181.132.250): icmp_seq=3 ttl=128 time=236 ms 64 bytes from 199.181.132.250 (199.181.132.250): icmp_seq=4 ttl=128 time=237 ms 64 bytes from 199.181.132.250 (199.181.132.250): icmp_seq=5 ttl=128 time=236 ms ^C --- abc.com ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 6519ms rtt min/avg/max/mdev = 236.087/238.031/241.597/1.958 ms [[email protected] ~]#
vim /etc/hosts 文件
还可以用curl -x192。168.202.131:80 abc.com
- [[email protected] ~]# curl -x192.168.202.131:80 abc.comabc.com[[email protected] ~]# curl -x192.168.202.131:80 www.abc.comabc.com[[email protected] ~]# curl -x192.168.202.131:80 www.abcd.comabc.com[[email protected] ~]# curl -x192.168.202.131:80 www.abcde.comabc.com[[email protected] ~]#
无论你输入任何一个域名都指向到192.168.202.131,它都会访问到htdocs下面
无论你访问什么域名 ,只要揭晓到这个ip,都会访问到abc.com 默认的虚拟主机就是abc.com
再来访问一个example
1.在主配置文件当中,httpd.conf里面打开了虚拟主机配置文件,这时候虚拟主机配置文件生效了,主配置文件里定义的 失效
2,虚拟主机配置文件一旦单开,里面可以定义多个vir host,每一个virtural host 都docunmentroot ,以及servername ,每一个vir host 杜代表一个站点,都代表一个虚拟主机
默认虚拟主机,无论任何域名解析到这个ip 上,都会去访问默认虚拟主机,
以上是关于11.14/11.15 Apache和PHP结合 11.16/11.17 Apache默认虚拟主机的主要内容,如果未能解决你的问题,请参考以下文章
11.14/11.15 Apache和PHP结合 11.16/11.17 Apache默认虚拟主机
11.14/11.15 Apache和PHP结合 11.16/11.17 Apache默认虚拟主机
11.14/11.15 Apache和PHP结合 11.16/11.17 Apache默认虚拟主机