一、 安装Apache服务器
安装命令:
yum install httpd -y
查询Apache软件包安装后的目录和文件位置可用命令:
rpm -ql httpd
启动服务:
systemctl start httpd
操作成功以后,可以查看到默认的首页
查看的命令为:
curl http://172.16.171.135 //注意要写成你自己的电脑IP
或者
curl http://127.0.0.1
如果你想建立一个自己的测试网页,可以写一个index.html文件,比如内容为文字: Hello!!
把这个文件放到目录 /var/www/html/中去,这里可以简单地使用vim 命令
vim /var/www/html/index.html
写入内容,存盘退出。
可以简单地直接用重定向命令写入文件,不必用vim编辑
echo 'Hello!!' > /var/www/html/index.html
再查看网页,就是你改写后的页面内容。
在字符模式下测试网页 ,你可以安装工具elinks
yum install elinks -y
使用方法:
elinks http://www.baidu.com
elinks ftp://172.16.170.50
elinks 127.0.0.1
也可以:
elinks 回车
注意:http://可以省略,ftp://不可以
关闭按 ctrl-c
http://172.16.171.135 //访问
二、 建立个人主页
案例描述 在IP地址为172.16.0.135的Apache服务器中,为系统用 户useadmin设置个人主页。该用户的家目录为/home/useadmin ,个人项 所在目录为html。 |
这里的IP 要改为你电脑的实际IP
1、首先我们要在linux操作系统上创建用户lily并且给它设置登录密码
useradd useadmin
passwd useadmin
下面我们查看一下home目录
ls /home
可以看到建立用户的同时,自动建立了用户的家目录 /home/useadmin
2、我们在lily家目录下创建一个子目录public_html用来存放个人主页
mkdir /home/useadmin/public_html
3、写主页文件index.html内容并修改处理文件权限
进入目录中去操作
cd /home/useadmin/public_html
在当前目录下新建个人主页文件 index.html,文件的内容是文字:Lily's homepage.
这里当然可以用vim编辑工具来写,教科书提供了另外一种方法:
先介绍一下命令:
echo "useadmin's homepage."
echo可看成打印命令,这条命令是在屏幕上显示文字: "useadmin's homepage."
linux中的符号>是输出重定向符号,它把本来应该在屏幕上显示的内容输出到文件中去
比如 echo 显示内容 > 文件名
这也就是另一种向文件中写入内容的方法
echo "useadmin's homepage." > index.html
把文字 "useadmin's homepage."写入到 主页文件index.html中
写完后可以用命令 cat index.html 查看文件内容,可以用命令ls -l查看当前目录文件列表
这里重点说一下文件权限:
文件权限是按rwx固定排列的,分别表示读、写、执行权限
没有权限的位置用-占位,比如r-x表示可读、不可写、可执行
文件权限用十个符号标示: -rw-r--r--
第一位标注文件是目录还是文件(文件是-,目录是d)
后面的9位等分成3组-rw-r--r--
分别表示:
拥有者 所属组 其他人 权限
上面的-rw-r--r--意思就是:
第一个 “-” 表示这是一个文件
拥有者 权限为:rw- 可读、可写、不可执行
所属组 权限为:r-- 可读、不可写、不可执行
其他人 权限为:r-- 可读、不可写、不可执行
我们可以使用命令查看目录 /home中的文件的属性
ls -l /home
本机上有两个普通用户,nczy和useadmin,在创建用户时会自动创建家目录,还创建一个用户组,组名字与用户名相同。用户对自己的家目录拥有读、写、执行权
我们现在是用root用户在操作,index.html这个文件是root用户建立的,所以文件拥有者是root,文件所属组也是root组,得把这些移交给用户useadmin,执行命令:
chown useadmin:useadmin index.html
接下来还要更改读写执行权限,执行命令:
chmod 755 index.html
命令解释:
更改读写执行权限,使用的八进制格式
八进制 二进制 rwx权限 角色
7 111 rwx 拥有者
5 101 r-x 所属组
5 101 r-x 其他人
上面的规律是1有权限、0无权限用-占位,经过修改后的权限为:
-rwxr-xr-x
给文件配置这种权限是比较适当的,文件所有者lily应该拥有全部读、写、执行权限,而与它同组的用户和其他用户不可写文件,也就是不能修改。它们可以访问网页(读和执行)。Linux对用户的身份和权限区分非常的严格,当网络上某一个无名的用户来访问useadmin的主页,用户的身份就属于其他人,你不给权限他就无法访问。
同样我们需要把用户lily整个家目录及其子目录的权限移交给lily,并开放给别人访问。
chown useadmin:useadmin -R /home/useadmin
解释:
之所以要做这一步是因为我们现在是用root用户在操作,我们建立的文件及目录都属于root用户,比如我们先前建立的public_html,虽然在lily的家目录之下,但它却没有访问权。所以要移交权限,这里用 -R 选项,表示包含的所有子目录的权限都要修改。
下面还要给其它用户一些访问权限。同样也要将包含的所有子目录的权限都修改
chmod 755 -R /home/useadmin
4、修改文件userdir.conf启用个人主页功能
vim /etc/httpd/conf.d/userdir.conf
需要修改的地方有两处,修改后如图所示:
配置修改好以后,可以用命令检查错误
httpd -t
出现 Syntax OK表示语法正确,但不等于配置正确,只是没有语法错误。有问题会显示在哪里。
5、重启httpd服务
systemctl restart httpd
6、测试网页
elinks 172.16.171.135/~useadmin (IP请改成你自己本机的IP)
提示: 如果在测试网页时出现错误,或者希望从其它电脑上访问网页,请处理防火墙和SELinux 关闭防火墙:
处理SELinux:
注意:上面的设置都是为了实验临时做的设置,如果重启系统就失效。 |
三、 创建虚拟目录
使用虚拟目录可以隐藏真实目录结构,提高系统安全性。另外,虚拟目录也可以方便磁盘空间的分配,提高磁盘空间管理的灵活性。此外,还可以缩短访问路径长度,便于目录访问。
案例描述 在IP地址为172.16.171.135的Apache服务器中创建名为 /vfolder的虚拟目录,它对应的物理路径是/var/tfolder. |
案例分析 在httpd.conf配置文件中, 模 块中Alias语句用来将网络路径映射到真实路径,从而实现虚拟 目录功能。 |
这里的IP 要改为你电脑的实际IP
1、建立目录/var/tfolder。
mkdir /var/tfolder
2、在目录/var/tfolder下建立网页文件index.html并写入内容
echo "Virtual directory sample." >> /var/tfolder/index.html
3、编辑修改配置文件 /etc/httpd/conf/httpd.conf
vim /etc/httpd/conf/httpd.conf
需要修改的地方如下:
将下面的文本插入文件中:
Alias /vfolder /var/tfolder
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
4、重启httpd服务
systemctl restart httpd
5、测试网页
elinks 172.16.171.135/vfolder/ (IP请改成你自己本机的IP)
四、 配置虚拟主机
前面的操作配置了个人主页,这种方式适合为一台linux机上的多个用户单独建立个人主页,而配置虚拟目录则适合为一个网站下的多个部门建立子网页。
现在我们希望在一台主机上建立多个不同的独立网站,实现一机多用,这就需要配置虚拟主机。要实现这一目的,可以有三种方式。
1、 基于多个不同的IP来建立多个网站
一台电脑上可以有多个IP,在一块网卡上是允许设置多个IP的,不过我的电脑上本来就有两块网卡,一块的IP是192.168.2.1,另一块连接互联网的IP为172.16.171.xx,现在就尝试在这两块网卡上分别建立独立的网站。
(1) 准备好两个网站的页面
网站 存放位置 主页名字 主页文字内容 域名
web1 /var/web1 index.html nczy1 www.web1.com
web2 /var/web2 index.html nczy2 www.web2.com
用如下命令创建:
mkdir /var/web1
mkdir /var/web2
echo "nczy1" > /var/web1/index.html
echo "nczy2" > /var/web2/index.html
(2) 新建错误记录error.log文件
用如下命令创建:
mkdir -p /var/log/httpd/www.web1.com/
mkdir -p /var/log/httpd/www.web2.com/
touch /var/log/httpd/www.web1.com/error.log
touch /var/log/httpd/www.web2.com/error.log
(3) 编辑文件 /etc/httpd/conf.d/httpd-vhosts.conf
vim /etc/httpd/conf.d/httpd-vhosts.conf
DocumentRoot /var/web1
DocumentRoot /var/web2
文件中输入的内容如上
(4) 重启httpd服务
systemctl restart httpd
(5) 测试网页
elinks 172.16.171.135
elinks 192.168.2.1
我们会发现不能访问192.168.2.1这个网址,因为这个IP不存在
我们现在来添加一个IP (同一块网卡可以设置绑定多个IP)
上面的两个IP做成的网页,从电脑只能访问http://172.16.171.135
另一个网页的IP为192.168.2.1,与电脑不在同一个网段,不能访问,你需要设置路由或者通过iptables设置NAT来实现访问。
2、 基于多个不同域名来建立多个网站
前面使用多个IP在一台服务器上建立多个网站,但IP资源有限,我们一般会用一个IP对应多个不同的域名来建立多个网站。
网站 存放位置 主页名字 主页文字内容 域名
web1 /var/web1 index.html nczy1 www.web1.com
web2 /var/web2 index.html nczy2 www.web2.com
(1)解析域名
用域名服务器来配合工作,就是解析出下面这样的结果:
网站 域名 IP地址
www.web1.com 172.16.171.135
www.web2.com 172.16.171.135
也就是多个域名,对应同一个IP,这样就能把多个网站建在一个服务器上,输入不同的域名登录不同的网站,但它们都在同一个IP上。
你可以在前面的DNS服务器上去添加记录进行解析,那个是正规的方法,这里我们用简化的方法来实验。
vim /etc/hosts
注意:这里的IP改成你自己的电脑IP
在 /etc/hosts文件中写入两行解析(这种仅限自己用,别人是访问不了的)
下面用命令测试解析
ping www.web1.com
ping www.web2.com
看看能不能够解析成功。
(2)编辑文件 /etc/httpd/conf.d/httpd-vhosts.conf
vim /etc/httpd/conf.d/httpd-vhosts.conf
添加下面的内容:
DocumentRoot /var/web1
ServerName www.web1.com
DocumentRoot /var/web2
ServerName www.web2.com
这里面同样标明了虚拟主机的IP和网站根目录位置,增加了域名,IP相同。
(3)重启httpd服务
systemctl restart httpd
(4)测试网页
elinks www.web1.com
elinks www.web2.com
3、 基于多个不同端口来建立多个网站
案例描述 假设Apache服务器IP地址为172.16.171.135 ,现需要创建基 于8085和8086端口的两个虚拟主机。 |
案例分析 为了使用端口区分两个虚拟主机,首先需要在httpd.conf 文件中使用Listen指令开启8085和8086端口的监听,然后分 别设置两个通过virtualhost标签分别设置两个虚拟主机。 |
IP还是用自己电脑的实际IP,网站用前面已经建立的那两个,在IP不变的情况下,配上不同的端口去访问网站,用8085端口访问web1网站,8086端口访问web2网站
(1) 修改主配置文件httpd.conf
vim /etc/httpd/conf/httpd.conf
Listen 8085 和 Listen 8086两条指令开启监听8085和8086端口,原来是只监听80默认端口
(2) 编辑文件 /etc/httpd/conf.d/httpd-vhosts.conf
vim /etc/httpd/conf.d/httpd-vhosts.conf
添加下面的内容
DocumentRoot /var/web1
DocumentRoot /var/web2
这里面同样标明了虚拟主机的IP和网站根目录位置,IP相同,增加了端口号。
(3) 重启httpd服务
systemctl restart httpd
(4) 测试网页
elinks 172.16.171.135:8085
elinks 172.16.171.135:8086
这里可以看出,这种方法访问网站要在IP后面带上端口号,不太方便,以上三种方法中,比较好的方法还是域名访问。
最后再来总结介绍一下配置文件的结构,主配置文件是/etc/httpd/conf/httpd.conf在它最后有一行: IncludeOptional conf.d/*.conf
其中的Include 就是包含,Optional 是选项,conf.d/*.conf 的意思是/etc/httpd/conf.d/目录下的*.conf文件(注意它用的是相对路径,我们加上了主目录,表示成了绝对路径),那么整个意思就是:/etc/httpd/conf.d/目录下的所有.conf文件都会包含到主文件中来。也就是说,你的文件名只要是.conf结尾,随便取个名字,放到/etc/httpd/conf.d/目录,就会被读入到主配置文件中。这样你就不必把所有内容都往主配置文件中写,而是拆分成多个文件,取不同的名字,方便识别和分类管理。我们前面的文件 /etc/httpd/conf.d/httpd-vhosts.conf就是自己编的一个名字,当然你也可以给三种虚拟主机各编一个文件名分别写,而不必全部写在一个文件中,它们通通都会被加入。
另外配置文件中也可以把 某些相同部分适当合并
xxxxxxxxxx
ServerAdmin admin@web1.com
DocumentRoot /var/web1
ServerName www.web1.com
ErrorLog /var/log/httpd/www.web1.com/error.log
ServerAdmin admin@web2.com
DocumentRoot /var/web2
ServerName www.web2.com
ErrorLog /var/log/httpd/www.web2.com/error.log