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 才要认证:
制定用户名密码:
成功验证登录
转载于:https://blog.51cto.com/13589255/2086992
LAMP(4)Apach和php结合、Apache默认虚拟主机相关推荐
- LAMP架构(apache与php结合,apache默认虚拟主机)
一.apache与php结合 主配置文件/usr/local/apache2.4/conf/httpd.conf [root@localhost ~]# /usr/local/apache2.4/bi ...
- 5月28日任务 Apache和PHP结合、Apache默认虚拟主机
2019独角兽企业重金招聘Python工程师标准>>> 11.14 Apache和PHP结合 1.编辑httpd配置文件 vim /usr/local/apache/conf/h ...
- 11.14/11.15 Apache和PHP结合 11.16/11.17 Apache默认虚拟主机
2019独角兽企业重金招聘Python工程师标准>>> 11.14-11.15 Apache和PHP结合 Apache(httpd)的配置文件:/usr/local/apache2. ...
- Apache和PHP结合、Apache默认虚拟主机
2019独角兽企业重金招聘Python工程师标准>>> 11.14/11.15 Apache和PHP结合 httpd主配置文件/usr/local/apache2.4/conf/ht ...
- 预习:11.16/11.17 Apache默认虚拟主机-11.24 静态元素过期时间
预习: 11.16/11.17 Apache默认虚拟主机 11.18 Apache用户认证 11.19/11.20 域名跳转 11.21 Apache访问日志 11.22 访问日志不记录静态文件 11 ...
- 4.12任务 apache结合php以及apache默认虚拟主机
apache和php结合 虽然我们现在已经安装好了apache,mysql,php.但是我们还没有让他们结合起来,虽然apache调用了php作为它的一个模块,但我们还不知道他是否能解析php.这时我 ...
- Apache 创建虚拟主机目录和设置默认访问页面
Apache 创建虚拟主机目录和设置默认访问页面 虚拟主机 (Virtual Host) 是在同一台机器搭建属于不同域名或者基于不同 IP 的多个网站服务的技术. 可以为运行在同一物理机器上的各个网站 ...
- Nginx安装、默认虚拟主机、Nginx用户认证、Nginx域名重定向
12.6 Nginx安装 安装包下载到/usr/local/src目录 [root@taoyuan ~]# cd /usr/local/src [root@taoyuan src]# wget htt ...
- linux的Nginx安装、默认虚拟主机、用户认证、域名重定向配置介绍
Nginx介绍 Nginx官网(http://nginx.org),最新版1.13,最新稳定版1.12 Nginx应用场景:web服务.反向代理.负载均衡 Nginx著名分支,淘宝基于Nginx开发的 ...
最新文章
- 对着电脑笑了二十分钟(2)
- SAP QM物料主数据里QM Material Authorization Group字段
- 如何开启和关闭开机自启动
- 【Java/JFrame/多线程】小球碰到边缘的回弹效果
- MySQL 定时任务event 按天建表 并将前一天数据导入新建的表中并删除总表数据 实现分表功能
- [bzoj1468][poj1741]Tree_点分治
- Spring boot CommandLineRunner接口使用例子
- 一文了解 Serverless 2021 大事件
- 【解决方案】PDF文字复制后乱码
- 半全局匹配算法:SGBM
- winpe加载raid_winpe集成raid驱动~
- 基于javaweb的客户信息管理系统搭建
- TensorFlow Seq2Seq模型样例:实现语言翻译
- linux 文件夹转gb2312,Linux下将UTF8编码批量转换成GB2312编码的方法
- Ubuntu问题:E45: ‘readonly‘ option is set (add ! to override)错误解决
- edgy trees_在Ubuntu Edgy上安装TrueCrypt
- promise是什么?
- 调查:人工智能技术的应用现状
- 十代服务器芯片组,Intel自曝400、495系列芯片组:搭档十代酷睿
- 华为新机预装鸿蒙,华为新机来了!预装鸿蒙OS,搭载麒麟9000