Linux环境中Apache的安装与配置
注意:如果是普通用户需提权(sudo),root账号不用
安装:sudo yum install httpd
启动服务:sudo service httpd start
关闭服务:sudo service httpd stop
查询进程是否存在(存在会有apache开头的多条数据):ps -ef | grep httpd
网络统计(查看哪些端口可访问):sudo netstat -anpl | grep ‘http’
注意:如果不能访问端口,可将防火墙关闭掉.
关闭防火墙:sudo service firewalld stop
配置虚拟主机(使用多域名时,会使用虚拟主机)
为什么使用虚拟主机:因为一个域名可能配置很多个网站,那就需要多份配置来保证访问的内容和源代码是不一样的。
1.打开httpd.conf
- 进入到conf的目录下:cd /etc/httpd/conf/
- 打开httpd.conf:sudo vim httpd.conf
2.找到此下图位置,添加配置信息(可使用/virtual + enter键 来查找)
- 用小写 i 可进入编辑模式,Esc退出编辑模式,:wq保存退出
- 重启服务:sudo service httpd restart
说明:此ip地址不存在,为我随便写的,仅测试使用,大家也可随意指定名称测试。
<VirtualHost *:80>
ServerName www.qixing.com
DocumentRoot /data/www
</VirtualHost>
3.新建指定目录,放入文件
新建前看下目录是否存在,比如我上面指定的data目录,可使用命令: ll /data/ 查看是否存在,如果不存在就新建。
- 创建文件:sudo mkdir -p /data/www
- 改变文件所属人:sudo chown -R 用户名:用户名 /data
- 放入项目文件
- 修改host,解析域名到ip地址(下面介绍)
我们新建个文件演示下:vim index.html,随便编写内容即可。
4.修改host,解析域名到ip地址
linux,mac中配置:sudo vim /etc/hosts 添加 192.17.5.228 www.qixing.com
windows中配置:一般是在C:\Windows\System32\drivers\etc目录下,添加ip和域名对应信息,如下图:
5.修改80端口的默认访问目录(任意端口,这里只是用80端口举例)
- 在VirtualHost 下添加Directory
- 重启服务:sudo service httpd restart
<VirtualHost *:80>
ServerName www.qixing.com
DocumentRoot /data/www
<Directory "/data/www">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
6.如果有异常,不能正常访问,可查看Apache日志:
- 进入/etc/httpd/:cd /etc/httpd/
- 提权进入logs文件夹:sudo cd logs/
- 查看成功日志:tail -f access_log
- 查看错误日志:tail -f error_log
- Ctrl+c 可退出
举个常见例子:查看error_log日志,错误如下,可以发现是搜索权限的问题,这是关于防火墙安全策略的配置。
解决方法:sudo setenforce 0 (0为禁用策略,1为强制策略。注意:此设置是临时的)
永久修改安全策略配置:sudo vim /etc/selinux/config 修改 SELINUX=disabled - enforcing - 强制策略
- permissve - 宽松策略
- disabled - 禁用策略(即关闭掉)
7.配置多个虚拟主机
- 进入到Apache的conf目录下:cd /etc/httpd/conf
- 编辑httpd.conf :sudo vim httpd.conf
- 添加多个VIrrualHost配置,并修改配置信息:例子如下图
- 然后重启服务:sudo service httpd restart
注意:如果你是windows或mac,请重新修改host,添加ip和域名对应信息(上面第4步有介绍)。
另外,如果没对应文件夹请新建文件夹并添加文件。
最后测试:浏览器中输入地址,能正常显示你在index.html中的内容就可以了。
8.配置伪静态 (简单的说是一种通过自己定义规则,使用虚拟路径来访问指定规则中的真实路径)
- 编辑httpd.conf:sudo vim httpd.conf
- 搜索LoadModule:/LoadModule+Enter键
- 添加:LoadModule rewrite_module modules/mod_rewrite.so (加载重写伪静态配置)
- 伪静态规则设置:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*).htm$ index.html
</IfModule>
简单解释下:
<IfModule mod_rewrite.c>
为 如果mod_rewrite.c模块存在时进入伪静态规则设置
RewriteEngine On wei重写引擎打开
RewriteRule ^(.*).htm$ index.html 为 重写规则(我这里写的是htm结尾的所有文件,都访问index.html,具体规则大家自己定义)
测试:访问http://www.qixing.com/666.htm 直接显示的是http://www.qixing.com/index.html的内容。