CentOS httpd服务(Apache)

1、从ISO镜像安装,Apache 服务的软件包名称为 httpd

#检查源配置
[root@localhost media]# cat /etc/yum.repos.d/CentOS-Media.repo # CentOS-Media.repo # # This repo can be used with mounted DVD media, verify the mount point for # CentOS-7. You can use this repo and yum to install items directly off the # DVD ISO that we release. # # To use this repo, put in your DVD and use it with the other repos too: # yum --enablerepo=c7-media [command] # # or for ONLY the media repo, do this: # # yum --disablerepo=* --enablerepo=c7-media [command] [c7-media] name=CentOS-$releasever - Media baseurl=file:///media/CentOS/ file:///media/cdrom/ file:///media/cdrecorder/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#挂载cdrom,挂载点和repo配置相同
mount /dev/cdrom /media/cdrom
#安装httpd
[root@localhost media]# yum install httpd

#启动服务
[root@localhost media]# systemctl start httpd
[root@localhost media]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since 一 2019-01-21 16:11:38 CST; 5s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 6702 (httpd)
。。。 。。。

#设置自动启动
systemctl enable httpd
#永久打开80端口
[root@localhost media]# firewall-cmd --zone=public --add-port=80/tcp --permanent

#也可以打开防火墙的http服务,打开http服务后,默认会打开80端口,当时在firewall-cmd --list-ports里看不到
#可以在/etc/services里查看所有服务注册的端口
[root@bigdata-senior01 etc]# firewall-cmd --zone=public --add-service=http --permanent


至此,从浏览器可以访问缺省页面。

2、配置

缺省配置目录:

服务目录       /etc/httpd
主配置文件     /etc/httpd/conf/httpd.conf
网站数据目录   /var/www/html
访问日志      /var/log/httpd/access_log
错误日志     /var/log/httpd/error_log

2.1、配置文件主要参数/etc/httpd/conf/httpd.conf

ServerRoot  服务目录
ServerAdmin  管理员邮箱
User  运行服务的用户
Group  运行服务的用户组
ServerName  网站服务器的域名
DocumentRoot  网站数据目录
Directory 网站数据目录的权限
Listen  监听的 IP 地址与端口号
DirectoryIndex  默认的索引页页面
ErrorLog  错误日志文件
CustomLog  访问日志文件
Timeout  网页超时时间,默认为 300

2.2、替换网站缺省的页面

#静态网站一般以index.html为启动页面,在网络目录里放入一个index.html页面替换apache的缺省页面
[root@localhost html]# pwd
/var/www/html
[root@localhost html]# echo "welcome visit my homepage..." > index.html
[root@localhost html]# ls
index.html

生产环境网站的数据文件整体放入/var/www/html即可

2.3、重新设定网站的数据目录

[root@localhost html]# mkdir /home/wwwroot
[root@localhost html]# cd /home/wwwroot/
[root@localhost wwwroot]# echo "welcome my new page..." > index.html
[root@localhost wwwroot]# ls
index.html

#修改DocumentRoot和<Directory ""> [root@localhost conf]#
vi /etc/httpd/conf/httpd.conf # # DocumentRoot: The directory out of which you will serve your # documents. By default, all requests are taken from this directory, but # symbolic links and aliases may be used to point to other locations. # # DocumentRoot "/var/www/html" DocumentRoot "/home/wwwroot" # # Relax access to content within /var/www. # <Directory "/home/wwwroot"> AllowOverride None # Allow open access: Require all granted </Directory>


。。。。。。
#重启httpd服务
[root@localhost conf]# systemctl restart httpd


重新访问:

页面已经变化。

如果出现“Forbidden,You don't have permission to access /index.html on this server.”,则可能是SELinux的权限导致的。

这要重新配置SELinux权限,或者直接关闭SELinux权限。

#权限disabled
[root@localhost conf]# cat /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
#SELINUX=enforcing
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 

 3、开启个人用户主页

#编辑配置文件
[root@localhost conf.d]# vi /etc/httpd/conf.d/userdir.conf # # UserDir: The name of the directory that is appended onto a user's home # directory if a ~user request is received. # # The path to the end user account 'public_html' directory must be # accessible to the webserver userid. This usually means that ~userid # must have permissions of 711, ~userid/public_html must have permissions # of 755, and documents contained therein must be world-readable. # Otherwise, the client will only receive a "403 Forbidden" message. # <IfModule mod_userdir.c> # # UserDir is disabled by default since it can confirm the presence # of a username on the system (depending on home directory # permissions). # #UserDir disabled #是否允许个人主页 # # To enable requests to /~user/ to serve the user's public_html # directory, remove the "UserDir disabled" line above, and uncomment # the following line instead: # UserDir public_html #主页目录 </IfModule> # # Control access to UserDir directories. The following is an example # for a site where these directories are restricted to read-only. # <Directory "/home/*/public_html">

家目录的权限修改为 755,保证其他人也有权限读取

mkdir public_html
chmod -R 755 /home/es
[es@localhost public_html]$ echo "this is a homepage of es" > index.html




然后使用“网址/~用户名”(其中的波浪号是必需的,而且网址、波浪号、用户名之间没有空格),确保Selinux权限是关闭的。

4、给主页加上用户和密码认证

#生成两个用户es和xu.dm
[root@localhost httpd]# htpasswd -c /etc/httpd/.htpasswd es New password: Re-type new password: Adding password for user es [root@localhost httpd]# htpasswd /etc/httpd/.htpasswd xu.dm New password: Re-type new password: Adding password for user xu.dm [root@localhost httpd]# vi conf.d/userdir.conf # # Control access to UserDir directories. The following is an example # for a site where these directories are restricted to read-only. # <Directory "/home/*/public_html"> # AllowOverride FileInfo AuthConfig Limit Indexes # Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec # Require method GET POST OPTIONS AllowOverride all #刚刚生成出来的密码验证文件保存路径 authuserfile "/etc/httpd/.htpasswd" #当用户尝试访问个人用户网站时的提示信息 authname "need user&password privately website" authtype basic #用户进行账户密码登录时需要验证的用户名称,valid-user表示authuserfile里的用户 require valid-user </Directory> [root@localhost httpd]# systemctl restart httpd
参数:

AuthName:认证描述,填写的内容会出现在认证窗口的提示信息中。

AuthType:认证类型,在HTTP1.0中,只有一种认证类型:basic。在HTTP1.1中有几种认证类型,如:MD5。

AuthUserFile:指定一个包含用户名和密码的文本文件,每行对应一个用户。

AuthGroupFile:指定包含用户组清单和这些组的成员清单的文本文件。组的成员之间用空格分开,如:managers:user1 user2。

require:指定哪些用户或组才能被授权访问,如:

require user user1 user2 (只有用户user1和user2可以访问)

require group managers (只有组managers中成员可以访问)

require valid-user (在AuthUserFile指定的文件中任何用户都可以访问)

另外一种方式:

在需要认证的应用根目录下,创建.htaccess文件,内容如下:
AuthName "User Authentication"
AuthType basic
AuthUserFile /etc/hattpd/.htpasswd
require valid-user

修改/etc/httpd/conf/httpd.conf配置文件,或者是用户userdir.conf,将Directory标签中的AllowOverride参数值修改为All,如下:

AllowOverride All

修改后的配置表示的含义为:/var/www/html目录下或者/home/*/public_html每个应用的访问权限由该目录下的.htaccess文件来控制。

保存后,重启apache

 5、虚拟主机

利用虚拟主机功能,可以把一台处于运行状态的物理服务器分割成多个“虚拟的服务器”。

该技术无法实现目前云主机技术的硬件资源隔离,让这些虚拟的服务器共同使用物理服务器的硬件资源,供应商只能限制硬盘的使用空间大小。

Apache 的虚拟主机功能是服务器基于用户请求的不同 IP 地址、主机域名或端口号,实现提供多个网站同时为外部提供访问服务的技术。

5.1、基于IP,确保IP都可以连接

[root@bigdata-senior01 ~]# vi /etc/httpd/conf/httpd.conf
... ...
#追加如下内容
 <VirtualHost 192.168.31.10>
   DocumentRoot /home/wwwroot/10
   ServerName www.home10.com
         <Directory /home/wwwroot/10 >
           AllowOverride None
           Require all granted
        </Directory>
 </VirtualHost>
 <VirtualHost 192.168.31.11>
   DocumentRoot /home/wwwroot/11
   ServerName www.home11.com
        <Directory /home/wwwroot/11 >
          AllowOverride None
          Require all granted
         </Directory>
 </VirtualHost>
... ...

5.2、基于域名

[root@bigdata-senior01 bbs]# vi /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.31.10 bigdata-senior01.home.com www.home10.com
192.168.31.11 www.home11.com bbs.home.com


[root@bigdata-senior01 wwwroot]# vi /etc/httpd/conf/httpd.conf
。。。 。。。
<VirtualHost 192.168.31.10> DocumentRoot /home/wwwroot/10 ServerName www.home10.com <Directory /home/wwwroot/10 > AllowOverride None Require all granted </Directory> </VirtualHost> <VirtualHost 192.168.31.11> DocumentRoot /home/wwwroot/11 ServerName www.home11.com <Directory /home/wwwroot/11 > AllowOverride None Require all granted </Directory> </VirtualHost> <VirtualHost 192.168.31.11> DocumentRoot /home/wwwroot/bbs ServerName bbs.home.com <Directory /home/wwwroot/bbs > AllowOverride None Require all granted </Directory> </VirtualHost>
[root@bigdata-senior01 wwwroot]# systemctl restart httpd
#在本机上测试,没有浏览器,用curl简单测试
[root@bigdata-senior01 wwwroot]# curl bbs.home.com
this is a bbs

 5.3、基于端口

[root@bigdata-senior01 wwwroot]# ls
10  11  9092  9093  9094  bbs  index.html
[root@bigdata-senior01 wwwroot]# echo "listen port:9092" > 9092/index.html
[root@bigdata-senior01 wwwroot]# echo "listen port:9093" > 9093/index.html
[root@bigdata-senior01 wwwroot]# cat 9092/index.html 
listen port:9092

[root@bigdata-senior01 wwwroot]# vi /etc/httpd/conf/httpd.conf 
。。。。。。
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 80
Listen 9092
Listen 9093

 <VirtualHost 192.168.31.10:9092>
   DocumentRoot /home/wwwroot/9092
   ServerName www.home10.com
        <Directory /home/wwwroot/bbs >
          AllowOverride None 
          Require all granted
         </Directory>
 </VirtualHost>
 <VirtualHost 192.168.31.10:9093>
   DocumentRoot /home/wwwroot/9093
   ServerName www.home10.com
        <Directory /home/wwwroot/bbs >
          AllowOverride None
          Require all granted
         </Directory>
 </VirtualHost>
。。。
原文地址:https://www.cnblogs.com/asker009/p/10301262.html