最近正在学习CentOS7服务器的相关内容,最近实现了Apache(httpd)的多域名的精简配置方式,写下来以免忘记。
系统环境:腾讯云CentOS 7.2 x64
apache运行相关命令
命令 | 功能 |
---|---|
sudo systemctl stop httpd | 停止Apache服务: |
sudo systemctl start httpd | 启动 |
sudo systemctl restart httpd | 重新启动Apache服务: |
sudo systemctl reload httpd | 在进行一些配置更改后重新加载Apache服务: |
sudo systemctl disable httpd | 禁用Apache服务以在启动时启动: |
sudo systemctl enable httpd | 并重新启用它: |
卸载
命令 | 说明 | |
---|---|---|
rpm -qa | grep httpd 或者:yum list | grep httpd | 查看系统是否安装过httpd服务 | |
rpm -qf /路径/程序名 | rpm查询方法 | |
systemctl stop httpd.service | 先停止服务 | |
ps -ef|grep httpd | 查看是否存在进程 | |
kill -QUIT 2072 | 杀死进程 或者kill -TERM 2132或 kill -INT 2132 | |
yum erase httpd.x86_64 | 卸载,需要点确认 就是y;rpm -e 或者yum -erase 命令都可以,不过rpm -e命名必须要自己先卸载依赖包 | |
rpm -pa | grep mysql | 查找 | 查找出安装的mysql软件包和依赖包: |
rpm -e xxxx.x86_64 | 删除 rpm -e 软件包名 | |
rpm -e --nodeps xxxx.x86_64 | 强制删除 rpm -e --nodeps 软件包名.x86_64 | |
whereis php | 查看应用安装路径 | |
which php | 查询运行文件所在地址 | |
rm -rf php | 逐个删除存留文件夹 |
一、Apache(httpd)安装
安装
yum install httpd
访问测试
然后,我们用curl访问下本地:
curl 127.0.0.1
设置自启
systemctl enable httpd.service
二、软件配置
编辑httpd.conf就够了,httpd.conf在/etc/httpd/conf中
vim /etc/httpd/conf/httpd.conf
1、用#注释掉以下两行(其实如果不注释,好像没有什么影响)
#ServerName www.example.com
#DocumentRoot /var/www/html
2、开放目录使用权限
在httpd.conf中写入,引号中的路径是自定义的开放访问的路径,其子目录也开放使用。
如果不写这个段落,网页会被重定向到默认页面,虚拟主机中的自定义路径设置无效。
Directory里的东西必修要写而且必须要与DocumentRoot一致,不写就打不开。。。亲测
<Directory "/home/www">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
3、写入虚拟主机信息
①开启虚拟主机并确定其监听的主机名与端口,* 表示省略,80为网页默认端口。
NameVirtualHost *:80
②写入单个虚拟主机信息
ServerName —— 主机名(域名或公网IP)
ServerAlias —— 别名(二级域名或其他域名或IP)
DocumentRoot —— 文件目录(表示将域名映射至该文件目录)。
按照模版有几个写几个,不知道有没有上限。。。
虚拟主机的文件目录必须在上述的开放访问的目录下,不然无法访问。
模版:
<VirtualHost *:80>
ServerName XXX
ServerAlias XXX2
DocumentRoot /XXX
</VirtualHost>
三、完整过程
示例仅供参考,如有其他需要,请根据情况自行修改。
1、控制台命令
yum install httpd
systemctl enable httpd.service
systemctl start httpd.service
vim /etc/httpd/conf/httpd.conf
2、httpd.conf修改(略去不用修改的部分)
(DocumentRoot)和(Directory) 必须设置一致。留一组即可。其他的按需配置
然后需要在这个目录下创建一个index.html 入口文件
然后就可以访问了
命令 curl 127.0.0.1
#ServerName www.example.com
#DocumentRoot /var/www/html //这个必须要改成和<Directory "/home/www">这里双引号里的地址一样
DocumentRoot "/home/www"
<Directory "/home/www">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.mywebsite1.com
DocumentRoot /home/www/htmla
</VirtualHost>
<VirtualHost *:80>
ServerName mywebsite1.com
DocumentRoot /home/www/htmlb
</VirtualHost>
<VirtualHost *:80>
ServerName www.mywebsite2.com
ServerAlias mywebsite2.com
DocumentRoot /home/www/htmlc
</VirtualHost>
卸载
首先,要确认下是否有安装过,或者是系统自带了httpd服务,通过以下命令:
# rpm -qa | grep httpd
或者:
# yum list | grep httpd
我已经安装过一次了,所以我这边会显示如下:
然后我先来卸载我的httpd,首先要停止httpd服务,命令如下:
systemctl stop httpd.service
然后通过 rpm -e 或者yum -erase 命令都可以,不过rpm -e命名必须要自己先卸载依赖包,所以我用yum -erase命令卸载,命令如下:
yum erase httpd.x86_64
中间会问一下是否确认,y就可以了,直到出现Complete! 代表卸载完成了。
安装
如果你想确认是否卸载干净,可以用list命令列出已经安装的查看下(卸载的第一步)。我们这里就不做这不操作了,我们直接用列出yum 仓库里面的httpd项,命令如下:
yum list | grep httpd
然后,看到又可用项之后,我们输入以下命令进行安装:
yum install httpd
中间输入次‘y’,也就安装完成啦。
然后我们通过如下命令查看httpd的运行状态:
systemctl status httpd.service
如果现实httpd没有启动的话,我们可以通过下面的命令启动服务:
systemctl start httpd.service
默认的www目录在/var/www/html/下面,所以我们写入一个html文件,查看下怎么样了,输入一下命令创建一个包含hello world字符串的文件:
echo 'hello world' > /var/www/html/index.html
访问测试
然后,我们用curl访问下本地:
curl 127.0.0.1