list123342 发表于 2018-11-18 11:50:28

Apache服务搭建

Apache服务器
1: www: worldwideweb      万维网
http 协议:    超文本传输协议
HTML语言: 超文本标识语言 index.html
  

2: URL:统一资源定位: 协议+域名:端口+网页文件名
http://www.baidu.com:80/phpmyadmin/index.php
  

3:搭建www的服务器的方法
windows: IIS+asp+SQLserver
IIS: InternetInformationserver
Linux   apache+mysql+php
            nginx
apache配置文件      
                     源码包安装:/usr/lcoal/apache2/etc/httpd.conf(主配置文件)
                                          /usr/local/apache/etc/extra/*.conf(子配置文件)
                     rpm包安装:/etc/httpd/conf/httpd.conf
                     网页保存位置:
                     源码包:       /usr/local/apache2/htdocs/
                     rpm包安装:/var/www/html/
                     日志保存位置
                     源码包:/usr/local/apache2/logs/
                     rpm包: /var/log/httpd/

注意:apache配置文件严格区分大小写
1:针对主机环境的基本配置
       ServerRoot    apache主目录 /usr/local/apache2
       Listen      监听端口:80
       LoadModule   加载的相关模块php5         
       User
       Group               用户和组
       ServerAdmin       管理员邮箱
       ServerName      服务器名(没有域名解析时,使用临时解析。默认不开启)
       ErrorLog "logs/error_log                               错误日志
       CustomLog "logs/access_log" common      正确访问日志
       DirectoryIndex index.html index.php            默认网页文件名,优先级顺序
       Includeetc/extra/httpd-vhosts.conf          子配置文件中内容也会加载生效
  

2 :主页目录及权限
       DocumentRoot "/usr/local/apache2//htdocs"
       #网页文件存放目录(默认)
      
       #定义指定目录的权限
       Options Indexes FollowSymLinks
            #options
                            None:      没有任何额外权限
                            All:             所有权限
                            Indexes:   浏览权限(当此目录下没有默认网页文件时,显示目录内容)
                            FollowSymLinks:准许软连接到其他目录
AllowOverride None
            #定义是否允许目录下.htaccess文件中的权限生效
                            None:.htaccess中权限不生效
                            All:文件中所有权限都生效
                            AuthConfig:文件中,只有网页认证的权限生效。
Require all granted    访问控制列表
         #定义此目录的允许访问权限
  

例1:仅允许IP为192.168.1.1的主机访问

      Require allgranted
      Require ip 192.168.1.1

  

例2:仅允许192.168.0.0/24网络的主机访问

      Require allgranted
      Require ip 192.168.1.0/24

  

例3:禁止192.168.1.2的主机访问,其他的都允许访问,

      Require allgranted
      Require not ip 192.168.1.2

  

例4:允许所有访问,
Require allgranted(授权)                     
  

例5:拒绝所有访问,
Require alldenied

实验环境:
       使用lamp环境安装好的apache进行试验
  

       安装完成后,先启动apache进行服务验证,是否安装成功,并且主页是否可以访问。
       注:发现启动服务报错:AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
         解决办法:打开主配置文件httpd.conf
         搜索ServerName   (约在200行左右)
         修改为 ServerNamelocalhost:80(并且去掉前面的#注释)
  

实验一:目录别名:
可以使特定的网站程序不出现在网站根目录下面,而这样的话,就可以避免和原来的程序本身发生混淆和冲突;缩短网页目录的纵深,减少URL的长度。

实验一:目录别名
可以使特定的网站程序不出现在网站根目录下面,而这样的话,就可以避免和原来的程序本身发生混淆和冲突;缩短网页目录的纵深,减少URL的长度。


[*]打开apache主配置文件
#Include etc//extra/httpd-autoindex.conf (将#号去掉)

[*] 进到子配置文件目录extra下,打开httpd-autoindex.conf
仿照例子写一个别名:
Alias/a/"/www/a/"               #实际目录结束要有/

    Options Indexes MultiViews
    AllowOverride None
    Require all granted

在/www/a/目录下手动创建index.html文件


[*]将apache服务重启:
/usr/local/apache2/bin/apachectl stop
/usr/local/apache2/bin/apachectl start
注:重启源码包安装的apache需要先关闭,再启动。


[*]验证试验结果:
打开浏览器输入   服务器IP/a/

打开Apache主配置文件
#Include etc//extra/httpd-autoindex.conf (将#号去掉)

进到子配置文件目录extra下,打开httpd-autoindex.conf
仿照例子写一个别名:
Alias/a/"/www/a/"               #实际目录结束要有/

    Options Indexes MultiViews
    AllowOverride None
    Require all granted

在/www/a/目录下手动创建index.html文件


将apache服务重启:
/usr/local/apache2/bin/apachectl stop
/usr/local/apache2/bin/apachectl start
注:重启源码包安装的apache需要先关闭,再启动。
  
验证试验结果:
打开浏览器输入   服务器IP/a/

实验二:用户认证
       提高网站安全性,保护个别页面的信息,限制特定目录,只有指定用户可以访问。

实验二:用户验证:
提高网站安全性,保护个别页面的信息,限制特定目录,只有指定用户可以访问。
1.    打开主配置文件在最下面添加:
   #被保护目录
    Options Indexes
    AllowOverride All                           #(开启权限认证文件.htaccess)
    Require all granted

修改配置文件:
高版本中Apache权限设置:(httpd-2.4.7)   (用这个)



2.    在指定目录下创建权限文件:
cd/usr/local/apache2/htdocs/baohu
Vi   .htaccess#添加下面的内容
AuthName "50 docs"
#提示信息
AuthType basic
#加密类型
AuthUserFile /usr/local/apache2/htdocs/baohu/apache.passwd
#密码文件,文件名自定义。(但是路径要对,使用绝对路径)
require valid-user
#允许密码文件中所有用户访问
3.    建立密码文件,加入允许访问的用户。(此用户和系统用户无关)
htpasswd-c/usr/local/apache2/htdocs/baohu/apache.passwdtest1
-c建立密码文件,只有添加第一个用户时,才能-c
htpasswd-m/usr/local/apache2/htdocs/baohu/apache.passwdtest2
-m再添加更多用户时,使用-m 参数

4.    验证访问:(自己手动去目录下创建index.html文件)
浏览器输入 服务器IP/baohu/index.html

浏览器验证:


实验三:***虚拟主机***

虚拟主机的分类:

[*]基于IP的虚拟主机:一台服务器,多个ip,搭建多个网站
                           Ifconfigeth0:0IP      #建立网卡子端口

[*]基于端口的虚拟主机:一台服务器,一个ip,搭建多个网站,每个网络使用不同端口访问
[*]基于名字的虚拟主机:一台服务器,一个ip,搭建多个网站,每个网站使用不同域名访问


[*]实验搭建(准备工作)
a.    域名解析:准备两个域名
www.sohu.com
www.sina.com
                     b.    没搭建DNS,只能手动添加到本地hosts文件内进行解析
                            Windows系统中:
                                 C:\WINDOWS\system32\drivers\etc\hosts
                            Linux系统中:
                                 /etc/hosts
                     c.    网站主页目录规划
在//htdocs/目录下分别创建sohu 和 sina 两个目录
并且在分别在新建目录内创建index.html文件(分别写不一样的内容)
2.    实验流程(修改配置文件)
A.    vi/usr/local/apache2/etc/httpd.conf         #修改主配置文件开启文件关联
                                 Include etc//extra/httpd-vhosts.conf    #此行取消注释
   
B.    vi/usr/local/apache2/etc/extra/ httpd-vhosts.conf
    #添加下方内容(添加之前先把原先存在的示例删除掉)
   

Options Indexes
AllowOverride None
Require all granted



Options Indexes
AllowOverride None
Require all granted


                                       
ServerAdmin webmaster@sina.com                        
DocumentRoot "/usr/local/apache2/htdocs/sina"   
ServerName www.sina.com                                       
ErrorLog "logs/sina-error_log"                     
CustomLog "logs/sina-access_log" common   



ServerAdmin webmaster@sohu.com
DocumentRoot "/usr/local/apache2/htdocs/sohu"
ServerName www.sohu.com
ErrorLog "logs/sohu.com-error_log"
CustomLog "logs/sohu.com-access_log" common


C.      重启服务,验证结果
Windows 下:浏览器下输入两个不同的域名验证网页内容
Linux下:通过elinks命令验证:elinks 域名
  

实验三:虚拟主机:

基于名字的虚拟主机:
a.    域名解析:准备两个域名
www.sohu.com
www.sina.com
b.    没搭建DNS,只能手动添加到本地hosts文件内进行解析
                            Windows系统中:
                                 C:\WINDOWS\system32\drivers\etc\hosts
                            Linux系统中:
                                 /etc/hosts
c.   网站主页目录规划
在//htdocs/目录下分别创建sohu 和 sina 两个目录
并且在分别在新建目录内创建index.html文件(分别写不一样的内容)

搭建DNS服务器,能够解析到sohu、sina的域名:




将客户端DNS设置成DNS服务器IP


修改Apache虚拟主机配置文件:
取消虚拟机主机关联注释:



客户端访问(将客户端DNS设置成DNS服务器IP)


拓展:低版本的Apache配置(2.2.9)

带用户验证模式:


这里的地址解析是用的Hosts文件:实际应使用DNS






实验四:地址重写
在URL中输入一个地址,会自动跳转为另一个,多用于网站更换或者添加新域名。
实验要求:
A   虚拟主机能正常访问
B   打开主配置文件开启重写模块
       LoadModule rewrite_module modules/mod_rewrite.so    #取消注释
域名跳转实验:
1.    修改虚拟主机配置文件
vi*/extra/httpd-vhosts.conf

Options Indexes FollowSymLinks
AllowOverride All
Require all granted


2.    创建规则匹配文件
vi*/.htaccess                  #在指定的网站网页目录下创建
RewriteEngine on
#开启rewrite功能
RewriteCond %{HTTP_HOST} www.sina.com
#把以www.sina.com   开头的内容赋值给HTTP_HOST变量
RewriteRule.*   http://www.sohu.com
#.*输入任何地址,都跳转到http://www.sohu.com

3.    重启服务器,进行访问验证

静态向动态跳转:
1.    修改虚拟主机配置文件
vi */extra/httpd-vhosts.conf

Options Indexes FollowSymLinks
AllowOverride All
Require all granted


2.    创建规则文件
vi*/.htaccess
RewriteEngine on
RewriteRule index(\d+).html index.php?id=$1
#输入index(数值).html时,跳转到index.php文件

3.    重启服务,进行访问验证
验证方式:在*/htdocs/sohu/目录下新建index.php文件
访问www.sohu.com/index(数值).html 看访问的是否是你的index.php的网页
注:静态网页向动态网页跳转这个实验,只有完整的lamp环境下才能访问。


六 常用子配置文件
httpd-default.conf      #apache线程控制,必须开启
Timeout 300      #超时时间
KeepAlive On
#开启线程控制(不开启的话用户访问页面会产生一个进程,访问其他页面会产生另一个进程,这样的话一个用户会产生好多个进程,会降低apache性能。开启此项,当用户访问网站时会产生一个进程,打开其他页面时会产生线程,保证了一个用户只产生一个进程。网站此项功能必须开启。)
MaxKeepAliveRequests 100   #最大线程连接数
httpd-info.conf    #apache状态统计

SetHandler server-status
Order deny,allow
Deny from all
Allow from .example.com

#通过访问www.domain.com/server-status可以查看apache状态。如果页面显示not found 则需要修改目录权限,在Deny from all下加上allow from ip(允许的ip)。
httpd-manual.conf   #apache帮助文档
通过访问www.domain.com/manual 查看apache帮助文档,一般为英文,没用,可以到apache官网下载帮助文档。
httpd-languages.conf    #语言编码
要使其生效需要在主配置文件中打开,如果中文乱码不是浏览器编码的原因可能是此配置文件注释没打开。
  




页: [1]
查看完整版本: Apache服务搭建