day42:虚拟主机及apache和php结合:
2018-08-24 23:42
387 查看
1、虽然apache和php安装完成,但是它们要结合到一起才可以使用:如下:
1:要修改httpd的主配置文件: /usr/local/apache2.4/conf/httpd.conf #修改完成后需要重启服务:有四处需要修改:
2:检查配置文件需要是否正确: /usr/local/apapche2.4/bin/apache -t
3:重启服务,即使配置文件有问题,也不会把进程杀掉: /usr/local/apapche2.4/apache graceful
注释:在httpd.conf的配置文件里有两个部分需要修改granted才可以,会影响虚拟主机或者访问为403Forbidden了:
注释:有时候重启apapche时会有以下提示,则是需要安装如下操作:
2、apahce结合php:如上,我们在httpd的配置文件里定义了index.php,让支持php的语法:
测试:需要在默认页/usr/local/apapche2.4/htdoc/目录下:写入一个1.php,内容如下:
注释:它同/usr/local/php/etc/php -i显示的信息会是同一个内容的:
为什么默认页面会显示/usr/local/apache/htdocs/,因为在httpd中有定义默认根目录的位置:
2、默认虚拟主机:是指apache的一个服务下面跑了多个网站,其实在httpd.conf里有一个默认虚拟主机www.example.com:80,并且一个虚拟主机只能定义一个servername,此时我们通过任何一个绑定该虚拟机ip的域名进行访问都会调转到改默认主机,也会让多个域名都指向到那一个htdocs目录,不方便管理:一台服务是器可以跑多个域名,也为了方便管理,需要对虚拟主机管理:
图例:我们可以修改编辑本地的hosts的文件,并指定多个域名,然后默认访问的还是指向了www.example.com这个网站:
本地hosts所在目录: C:\Windows\System32\drivers\etc\hosts #因为解析会优先解析本地hosts文件:
然后在浏览器里访问时,还是会调转到www.exaple.com那个页面:
配置虚拟主机:
注释:一旦虚拟主机生效了,默认主机www.example.com就失效了:
1:修改配置文件: /usr/local/apapche2.4/conf/httpd.conf #打开虚拟主机配置文件入口: conf/extra/httpd-vhost.conf
2:修改二级虚拟主机配置文件: /usr/local/apapche2.4/conf/extra/httpd-vhost.conf
注释:这个文件里面可以定义多个虚拟主机,该配置下每一段"< VirtualHost *:80 >"可以是一个虚拟主机:用来跑一个网站:
3:我们分别编辑第一个网站和第二个网站,内容如下: /usr/local/apapche2.4/conf/extra/httpd-vhost.conf
如上图例:此时我们定义了两个网站:网站的核心参数如下:
DocumentRoot:网站根目录:
ServerName:网站域名: ServierAlias:网站别名:
ErrorLog:访问日记: CustomLog:访问错误的日记:
4:创建相应的虚拟主机目录: /data/wwwroot/abc.com(第一个主机) /data/wwwroot/111.com(第二个主机)
5:网站创建完成,此时需要在本地/etc/hosts,或者用curl命令来测试:
curl -x192.168.149.130:80 www.abc.om #以本机的80端口去访问www.abc.com
注释:此时访问所有未定义的域名都会将访问地址只指向到默认虚拟主机,而因为我们已经开启虚拟主机配置文件(主配置文件会失效),所以此时的默认虚拟主机为配置文件conf/extra/httpd-vhosts.conf的第一个虚拟主机(在此为abc.com),效果如下:
默认虚拟主机:无论你访问什么域名,只有是解析到这个IP上,都会访问这个网站对应的虚拟主机配置:配置里的的第一个主机:
而此时访问www.example.com会访问到第二个虚拟主机,而不是主配置文件了,因为在虚拟配置文件第二个虚拟主机有定义的:
所以有两点需要注意下:
1、一旦打开了虚拟主机配置文件(httpd-vhosts),去掉注释,则主配置文件则会失效了(servername documentroot):
2、每个虚拟主机配置文件里,每一个VirtualHost都代表一个虚拟主机,第一个VirtualHost都代表一个虚拟主机:
3、默认虚拟主机,无论任何域名,解析到这个IP上,只要在虚拟主机里没有定义,都会访问这个域名:
1:要修改httpd的主配置文件: /usr/local/apache2.4/conf/httpd.conf #修改完成后需要重启服务:有四处需要修改:
[root@localhost_002 ~]# vim /usr/local/apapche2.4/conf/httpd.conf ServerName www.example.com:80 #第一处把#号去掉: <Directory /> AllowOverride none Require all denied #第二处需要把denied修改为granted # Require all granted </Directory> AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType application/x-httpd-php .php #第三处新增这一行,用于支持php的语法: <IfModule dir_module> DirectoryIndex index.html index.php #第四处新增index.php索引页: </IfModule>
2:检查配置文件需要是否正确: /usr/local/apapche2.4/bin/apache -t
[root@localhost_002 ~]# /usr/local/apapche2.4/bin/apachectl -t Syntax OK
3:重启服务,即使配置文件有问题,也不会把进程杀掉: /usr/local/apapche2.4/apache graceful
[root@localhost_002 ~]# /usr/local/apapche2.4/bin/apachectl graceful
注释:在httpd.conf的配置文件里有两个部分需要修改granted才可以,会影响虚拟主机或者访问为403Forbidden了:
<Directory /> AllowOverride none Require all granted #从denied修改为granted: </Directory> # Note that from this point forward you must specifically allow # particular features to be enabled - so if something's not working as AllowOverride None # Controls who can get stuff from this server. Require all granted #此处也要修改denied为granted: </Directory>
注释:有时候重启apapche时会有以下提示,则是需要安装如下操作:
[root@localhost_002 ~]# /usr/local/apapche2.4/bin/apachectl restart AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.149.130. Set the 'ServerName' directive globally to suppress this message [root@localhost_002 ~]# vim /usr/local/apapche2.4/conf/ extra/ httpd.conf httpd.conf.bak magic mime.types original/ [root@localhost_002 ~]# vim /usr/local/apapche2.4/conf/httpd.conf [root@localhost_002 ~]# grep -i 'servername' /usr/local/apapche2.4/conf/httpd.conf ServerName www.example.com:80 #需要把这一行的#号去掉才可以:
2、apahce结合php:如上,我们在httpd的配置文件里定义了index.php,让支持php的语法:
测试:需要在默认页/usr/local/apapche2.4/htdoc/目录下:写入一个1.php,内容如下:
[root@localhost_002 ~]# cd /usr/local/apapche2.4/htdocs/1.php <? phpinfo(); ?> </div></body></html>[root@localhost_002 htdocs]# curl -I 192.168.149.130/1.php HTTP/1.1 200 OK
注释:它同/usr/local/php/etc/php -i显示的信息会是同一个内容的:
为什么默认页面会显示/usr/local/apache/htdocs/,因为在httpd中有定义默认根目录的位置:
[root@localhost_002 htdocs]# grep 'htdocs' /usr/local/apapche2.4/conf/httpd.conf DocumentRoot "/usr/local/apapche2.4/htdocs" <Directory "/usr/local/apapche2.4/htdocs"> #定义了网站的根目录的位置在/usr/local/apache2.4/htdocs:
2、默认虚拟主机:是指apache的一个服务下面跑了多个网站,其实在httpd.conf里有一个默认虚拟主机www.example.com:80,并且一个虚拟主机只能定义一个servername,此时我们通过任何一个绑定该虚拟机ip的域名进行访问都会调转到改默认主机,也会让多个域名都指向到那一个htdocs目录,不方便管理:一台服务是器可以跑多个域名,也为了方便管理,需要对虚拟主机管理:
图例:我们可以修改编辑本地的hosts的文件,并指定多个域名,然后默认访问的还是指向了www.example.com这个网站:
本地hosts所在目录: C:\Windows\System32\drivers\etc\hosts #因为解析会优先解析本地hosts文件:
#112.80.255.214 730.nuomi.n.shifen.com #123.125.114.5 www.hao123.com 192.168.149.130 www.123.com www.abc.com #此为需要指向的域名:
然后在浏览器里访问时,还是会调转到www.exaple.com那个页面:
配置虚拟主机:
注释:一旦虚拟主机生效了,默认主机www.example.com就失效了:
1:修改配置文件: /usr/local/apapche2.4/conf/httpd.conf #打开虚拟主机配置文件入口: conf/extra/httpd-vhost.conf
[root@localhost_002 htdocs]# vim /usr/local/apapche2.4/conf/httpd.conf #Include conf/extra/httpd-info.conf #Virtual hosts Include conf/extra/httpd-vhosts.conf #把#号去掉:打开虚拟主机配置:
2:修改二级虚拟主机配置文件: /usr/local/apapche2.4/conf/extra/httpd-vhost.conf
注释:这个文件里面可以定义多个虚拟主机,该配置下每一段"< VirtualHost *:80 >"可以是一个虚拟主机:用来跑一个网站:
[root@localhost_002 apapche2.4]# vim conf/extra/httpd-vhosts.conf
3:我们分别编辑第一个网站和第二个网站,内容如下: /usr/local/apapche2.4/conf/extra/httpd-vhost.conf
[root@localhost_002 apapche2.4]# vim conf/extra/httpd-vhosts.conf cat conf/extra/httpd-vhosts.conf # Virtual Hosts #第一个网站: <VirtualHost *:80> ServerAdmin yuanhh@forebix.com #管理员的邮箱: DocumentRoot "/data/wwwroot/abc.com" ###网站根目录:----核心文件之一: ServerName abc.com #网站域名(只能定义一个),核心文件之二: ServerAlias www.abc.com www.123.com #网站别名(可以有多个): ErrorLog "logs/abc.com-error_log" #网站访问日记(格式在主配置文件httpd.conf中定义) CustomLog "logs/abc.com-access_log" common #网站错误访问日记: </VirtualHost> 第二个网站: <VirtualHost *:80> ServerAdmin yuanhh@forebix.com #管理员的邮箱: DocumentRoot "/data/wwwroot/111.com" ###网站根目录:----核心文件之一: ServerName 111.com #网站域名(只能定义一个),核心文件之二: ServerAlias www.example.com #网站别名(可以有多个): ErrorLog "logs/111.com-error_log" #网站访问日记(格式在主配置文件httpd.conf中定义) CustomLog "logs/111.com-access_log" common #网站访问日记(格式在主配置文件httpd.conf中定义) </VirtualHost>
如上图例:此时我们定义了两个网站:网站的核心参数如下:
DocumentRoot:网站根目录:
ServerName:网站域名: ServierAlias:网站别名:
ErrorLog:访问日记: CustomLog:访问错误的日记:
4:创建相应的虚拟主机目录: /data/wwwroot/abc.com(第一个主机) /data/wwwroot/111.com(第二个主机)
[root@localhost_002 apapche2.4]# mkdir /data/wwwroot/ #创建目录 [root@localhost_002 apapche2.4]# mkdir /data/wwwroot/abc.com #创建第一个虚拟主机目录: [root@localhost_002 apapche2.4]# mkdir /data/wwwroot/111.com #创建第二个虚拟主机目录: #定义第一个主机的网站内容: [root@localhost_002 apapche2.4]# cd /data/wwwroot/abc.com/ #进入第一个虚拟主机目录,待写入相关配置: [root@localhost_002 abc.com]# vim index.php #写入第一个虚拟主机的测试脚本: <?php echo "abc.com"; #顶一个第二个主机的网站内容: [root@localhost_002 wwwroot]# cd /data/wwwroot/111.com/ #进入第一个虚拟主机目录,待写入相关配置: [root@localhost_002 111.com]# vim index.php #写入第一个虚拟主机的测试脚本: <?php echo "abc.com"; [root@localhost_002 111.com]# /usr/local/apapche2.4/bin/apachectl -t #检查是否有错误: Syntax OK [root@localhost_002 111.com]# /usr/local/apapche2.4/bin/apachectl graceful #重启服务:
5:网站创建完成,此时需要在本地/etc/hosts,或者用curl命令来测试:
curl -x192.168.149.130:80 www.abc.om #以本机的80端口去访问www.abc.com
[root@localhost_002 ~]# curl -x192.168.149.130:80 abc.com abc.com[root@localhost_002 ~]# curl -x192.168.149.130:80 www.abc.com abc.com[root@localhost_002 ~]#
注释:此时访问所有未定义的域名都会将访问地址只指向到默认虚拟主机,而因为我们已经开启虚拟主机配置文件(主配置文件会失效),所以此时的默认虚拟主机为配置文件conf/extra/httpd-vhosts.conf的第一个虚拟主机(在此为abc.com),效果如下:
[root@localhost_002 ~]# curl -x192.168.149.130:80 www.abcde.com abc.com[root@localhost_002 ~]# curl -x 192.168.149.130:80 www.aaaaaa.com abc.com[root@localhost_002 ~]#
默认虚拟主机:无论你访问什么域名,只有是解析到这个IP上,都会访问这个网站对应的虚拟主机配置:配置里的的第一个主机:
而此时访问www.example.com会访问到第二个虚拟主机,而不是主配置文件了,因为在虚拟配置文件第二个虚拟主机有定义的:
所以有两点需要注意下:
1、一旦打开了虚拟主机配置文件(httpd-vhosts),去掉注释,则主配置文件则会失效了(servername documentroot):
2、每个虚拟主机配置文件里,每一个VirtualHost都代表一个虚拟主机,第一个VirtualHost都代表一个虚拟主机:
3、默认虚拟主机,无论任何域名,解析到这个IP上,只要在虚拟主机里没有定义,都会访问这个域名:
相关文章推荐
- Apache和PHP结合、Apache默认虚拟主机
- Apache和PHP结合,Apache默认虚拟主机
- linux学习第三十八篇: Apache和PHP结合,Apache默认虚拟主机
- 11.14/11.15 Apache和PHP结合 11.16/11.17 Apache默认虚拟主机
- 11.14/11.15 Apache和PHP结合 11.16/11.17 Apache默认虚拟主机
- 2018-3-1 10周2次课 Apache和PHP结合、Apache默认虚拟主机
- 【LAMP环境搭建】Apache和PHP结合、Apache默认虚拟主机
- Apache和PHP结合、Apache默认虚拟主机
- Apache和PHP结合、Apache默认虚拟主机
- Linux中Apache与php结合以及Apache的虚拟主机配置文件
- 11.14/11.15 Apache和PHP结合 11.16/11.17 Apache默认虚拟主机
- PHP和Apache结合 Apache默认虚拟主机
- PHP和Apache结合 Apache默认虚拟主机
- 4.Apache和PHP结合 Apache默认虚拟主机
- Apache和PHP结合,Apache虚拟主机
- Apache和PHP结合,Apache默认虚拟主机
- LAMP架构(apache与php结合,apache默认虚拟主机)
- 11.14/11.15 Apache和PHP结合 11.16/11.17 Apache默认虚拟主机
- day 41 Apache和PHP结合及Apache虚拟主机
- Apache与PHP的结合配置、Apache默认虚拟主机