Linux初入19 Apache服务

1 什么叫Apache服务,如何启动

1.1Apache

:中小型web服务的主流,web服务使用目前排名第一。简单的理解,apache可帮我们把开启网站,我们可以通过前端后端、运维实现一个项目。

1.2启动Apache

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to
/usr/lib/systemd/system/httpd.service.
[root@localhost ~]# firewall-cmd --add-port=80/tcp --permanent
success
[root@localhost ~]# firewall-cmd --reload
success

1.3 了解主要的文件内容。

配置文件名称 存放的位置
服务目录 /etc/httpd
著配置文件 /etc/httpd/conf/httpd.conf
网站数据目录 /var/www/html
访问日志 /var/log/httpd/access_log
错误日志 var/log/httpd/error_log

1.4.了解apache服务的配置文件

<1>首先先来了解apace的配置文件,/etc/httpd/conf/httpd.con文件里,里面的格式大概就是这么的。同时每个配置项所包含的含义就在这里
参数名 |含义

参数名 含义
ServerRoo 服务目录(第31行)
ServerAdmin 管理员邮箱(第85行)
User 运行服务的用户(第65行附近)
Group 运行服务的用户组(第66行附近)
ServerName 网站服务器的域名(在每个区域配置里)
DocumentRoot 网站数据目录(在每个区域配置里)
Listen 监听的IP地址与端口号(第42行附近)
DirectoryIndex 默认的索引页页面的文件名
ErrorLog 错误日志文件
CustomLog 访问日志文件
Timeout 网页超时时间,默认为300秒

<2>修改其中的主页配置项。需要确定修改主页页面文件在哪里

DocumentRoot "/var/www/html"
....
<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>
[root@localhost ~]# echo "Welcone To Mynote" > /var/www/html/index.html

<3>可以发现成功修改主页

2 Selinux子系统

他的存在就是为了管理Linux中各个行为,例如在某个目录下只能干什么,不能干什么。

2.1 了解Selinux的状态

1.SELinux服务有三种配置模式,具体如下。
• enforcing:强制启用安全策略模式,将拦截服务的不合法请求。
• permissive:遇到服务越权访问时,只发出警告而不强制拦截。
• disabled:对于越权的行为不警告也不拦截

2.2 启动或关闭Selinux的功能

1.方法(1)通过修改配置文件,我们这里启动Selinxu的enforcing模式,永久有效,需要重启/
2.方法(2)直接命令修改和查看,暂时有效。
建议先通过方法1关闭或开启,再通过方法2关闭或开启。这样就可以立即和永久生效。

[root@localhost ~]# vim /etc/selinux/config .
SELINUX=enforcing
SELINUXTYPE=targeted
[root@localhost ~]# getenforce #查看selinux的状态
Enforcing
[root@localhost ~]# ls -Zd /var/www/html
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html
• 用户段system_u代表系统进程的身份
• 角色段object_r代表文件目录的角色
• 类型段httpd_sys_content_t代表网站服务的系统文件

3 个性化的网站

3.1 修改主页文件

3.1.1.首先我们要到http服务的配置文件中修改网页所在的目录。并且创建这个目录,在目录中写入内容

[root@localhost www]# vim /etc/httpd/conf/httpd.conf 
119 DocumentRoot "/home/www"
120 
121 #
122 # Relax access to content within /var/www.
123 #
124 <Directory "/home/www">
125     AllowOverride None
126     # Allow open access:
127     Require all granted
128 </Directory>
[root@localhost www]# cat /home/www/index.html 
this is new index

[root@localhost www]# systemctl restart httpd

3.1.2发现权限问题

显示的还是默认apache页面,由于Selinux不知道访问这个页面的用户是否安全,就是说访问这个页面的用户没有权限。
在哪里创建文件,就会继承相应的所在目录的服务权限,就是最后的那个权限。
原本home是存储用户文件的,非得要创建一个网站服务文件夹,home目录肯定不愿意了。

[root@localhost www]# ls -Zd /home/www/
drwxr-xr-x. root root unconfined_u:object_r:home_root_t:s0 /home/www/
[root@localhost www]# ls -Zd /var/www/html/
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
其中,用户段system_u代表系统进程的身份,角色段object_r代表文件目录的角色,类型段httpd_sys_content_t代表网站服务的系统文件

3.1.3 解决,推荐用方法2

方法(1)关闭Selinux的功能(不推荐)

[root@promote ~]# setenforce 0
[root@promote ~]# getenforce
Permissive

方法(2)修改新的文件夹的权限、
yum -y install policycoreutils-python.x86_64 安装selinux管理工具

[[root@localhost ~]# semanage fcontext -a -t httpd_sys_content_t /home/www/*
[root@localhost ~]# semanage fcontext -a -t httpd_sys_content_t /home/www/
[root@localhost ~]# restorecon -Rv /home/www/
restorecon reset /home/www/index.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

3.2 创建用户主页和用户主页的密码

3.2.1 开启用户主页的功能

大约在17 行,开启主页功能,并且在第31行查看用户主页文件夹的名称(可以修改这个名称,不过要在家目录下创建相应的文件夹)

[root@localhost home]# vim /etc/httpd/conf.d/userdir.conf
 17     #UserDir disabled
 24     UserDir public_html
 31 <Directory "/home/*/public_html">

3.2.2.用户家目录下创建public_html文件并且在里面创建一个index.html文件。

肯定需要一个文件夹来存放主页文件呀

[root@localhost admin]# cd public_html/
[root@localhost public_html]# vim index.html
[root@localhost public_html]# cat index.html 
这是用户主页文件

3.2.3.修改目录的admin用户家目录的权限为755

为了让其他用户能访问

[root@localhost public_html]# chmod -Rf 775 /home/admin/public_html/

3.2.4.selinux的安全规则设置

这里可能要多次执行命令,一次可能没有改变

[root@localhost ~]# getsebool -a | grep http
httpd_enable_homedirs --> off
[root@localhost ~]# setsebool -P httpd_enable_homedirs=on

3.2.5 创建个人主页密码

root@localhost ~]# htpasswd -c /etc/httpd/passwd admin
New password: 
Re-type new password: 
Adding password for user admin
[root@localhost ~]# vim /etc/httpd/conf.d/userdir.conf 
 31 <Directory "/home/*/public_html">
 32         #密码文件的保存路径
 33     authuserfile "/etc/httpd/passwd"
 34         #当用户尝试过访问个人用户网站时的提示信息
 35         authname "尝试进入跟人网页"
 36         authtype basic
 37         #用户进行账号密码登陆时需要验证的用户
 38         require user admin
 39 </Directory>

[root@localhost ~]# systemctl restart httpd

4 虚拟主机功能

4.1基于ip

4.1.1 nmtui添加网卡

添加三个ip
在这里插入图片描述

4.1.2 修改httpd区域配置文件

1.由三个配置区域组成,<VirtualHost></VirutalHost>。组成一个配置区域
2.当访问时,会从上到下匹配ip,如果访问的就是这个IP,就看这个配置区域
3.ServerName暂时不用管。
4.DocumentRoot指向对应的网站文件夹。

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf 
113行开始
<VirtualHost 192.168.225.103>
DocumentRoot /home/www/103
ServerName www.huang.com
<Directory /home/www/103>
AllowOverride None
Require all granted
</Directory>
</VirtualHost>

<VirtualHost 192.168.225.104>
DocumentRoot /home/www/104
ServerName shequ.huang.com
<Directory /home/www/104>
AllowOverride None
Require all granted
</Directory>
</VirtualHost>

<VirtualHost 192.168.225.105>
DocumentRoot /home/www/105
ServerName tieba.huang.com
<Directory /home/www/105>
AllowOverride None
Require all granted
</Directory>

4.1.3 在相应的目录下创建主页文件

[root@localhost ~]# echo "192.168.225.103">/home/www/103/index.html
[root@localhost ~]# echo "192.168.225.104">/home/www/104/index.html
[root@localhost ~]# echo "192.168.225.105">/home/www/105/index.html

4.1.4 修改selinux限制

并且修改selinux

[root@localhost ~]# semanage fcontext -a -t httpd_sys_content_t /home/www/103
[root@localhost ~]# semanage fcontext -a -t httpd_sys_content_t /home/www/103/* 
[root@localhost ~]# semanage fcontext -a -t httpd_sys_content_t /home/www/104
[root@localhost ~]# semanage fcontext -a -t httpd_sys_content_t /home/www/104/*
[root@localhost ~]# semanage fcontext -a -t httpd_sys_content_t /home/www/105
[root@localhost ~]# semanage fcontext -a -t httpd_sys_content_t /home/www/105/*
[root@localhost ~]# restorecon -Rv /home/www/

4.2 基于域名

不常用,因为要修改客户机的hosts文件,我们这里把本机当作客户机测试。

4.1.1 修改host文件

在最后一行上进行域名与ip映射

[root@localhost ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.103 www.huang.com tieba.huang.com shequ.huang.com

4.1.2 修改httpd区域配置文件

其实已经配置好了,刚才在配置基于ip的虚拟主机的时候,我们就已经顺便把域名配置了。

4.1.3 在相应的目录下创建主页文件

我们配置文件里的对应关系
DocumentRoot /home/www/103 ServerName www.huang.com
DocumentRoot /home/www/104 ServerName tieba.huang.com
DocumentRoot /home/www/105 ServerName shequ.huang.com

4.1.4 修改selinux限制

刚才的文件已经修改过了
测试:

[root@localhost ~]# curl -I tieba.huang.com
HTTP/1.1 200 OK

4.3 基于端口号

这个非常重要,要注意,我们把虚拟机恢复到刚刚启动http服务的状态,再详细的做一遍这个。

4.1.1 增加侦听端口

默认侦听的就是80端口,访问不加端口号访问的就是80端口,添加一个10001

vim /etc/httpd/conf/httpd.conf 
 42 Listen 80
 43 Listen 10001

4.1.2 修改httpd区域配置文件

在110行左右开始写区域配置,


124 <VirtualHost 192.168.225.103:10001>
125 DocumentRoot /home/www/10001
126 ServerName www.huang.com
127 <Directory /home/www/10001>
128 AllowOverride None
129 Require all granted
130 </Directory>

4.1.3 在相应的目录下创建主页文件

[root@localhost ~]# mkdir /home/www/80
[root@localhost ~]# mkdir /home/www/10001
[root@localhost ~]# echo "访问80端口">/home/www/80/index.html
[root@localhost ~]# echo "访问10001端口">/home/www/10001/index.html

4.1.4 修改selinux限制

[root@localhost ~]# semanage fcontext -a  -t httpd_sys_content_t /home/www
[root@localhost ~]# semanage fcontext -a  -t httpd_sys_content_t /home/www/10001
[root@localhost ~]# semanage fcontext -a  -t httpd_sys_content_t /home/www/10001/*
[root@localhost ~]# restorecon -Rv /home/www/

4.1.5 为http开放端口

默认只有一些端口为http服务开放

[root@localhost ~]# semanage port -l | grep http
http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010
http_cache_port_t              udp      3130
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t            tcp      5988
pegasus_https_port_t           tcp      5989
[root@localhost ~]# semanage -a -t http_port -p tcp 10001

成功

5 访问控制

最后一个功能,不想写了。这是我学习的资料
https://www.linuxprobe.com/chapter-10.html#106_Apache

猜你喜欢

转载自blog.csdn.net/weixin_44055272/article/details/88345463
今日推荐