第一、apache
1、web服务器的概念以及http的概念 架构: C/S : Client (浏览器) <-------> Server (apache) 网站的技术:静态和动态 静态页面:一般都是.html .htm .shtml 动态页面:一般是 .php .asp .jsp 特点:需要语言的解析模块去完成页面代码编译,最后把结果返回给web服务器,还有一个常见的特点就是涉及到数据库查询的2、apache软件包
# yum install httpd httpd-devel httpd-manual -y服务名字:httpd
进程名字:httpd 默认端口:80 (https:443) :8080服务的工作目录: /etc/httpd
主配置:/etc/httpd/conf/httpd.conf3、分析配置文件
分三部分:全局配置、局部配置、虚拟空间配置 全局: ServerRoot "/etc/httpd" <---后面的路径不能添加 /,rpm安装不要去修改 Listen 80 <---监听的端口 Listen 8080 ServerName www.example.com:80 <---设定服务器默认网站绑定的域名(ip)和端口实例1:安装后直接重启,使用默认网站
service httpd restart
实例2:取消默认报错并且对主配置文件进行简单的修改
功能:取消test page的显示,显示我们自己的首页Listen 80
Listen 192.168.0.7:80 Listen 192.168.2.7:80801、vim /etc/httpd/conf/httpd.conf
ServerName 10.1.1.20:80 或者 vim /etc/hosts <---把你的主机名字和你的IP对应上2、vim /var/www/html/index.html 《---默认情况下,默认网站的根目录 /var/www/html
概念:网站的根目录--->网站页面程序存放的起始路径 默认情况下,apache读取一个网站的的默认首页就是index.htmlDirectoryIndex index.html index.html.var 《---这里就是定义网站的,默认首页的名字
3、修改参数
DirectoryIndex index.htm index.html index.html.var新建一个index.htm <---内容随便你,用来测试区别
4、service httpd restart
5、打开firefox,在浏览器中输入域名或者IP就可以。 实例3:修改默认网站的根目录1、修改配置文件的根目录定义参数
DocumentRoot "/www"2、创建定义的网站根目录
mkdir /www vim /www/index.html 3、重启服务,让配置生效 service httpd restart实例4:学习目录控制参数
<Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride None # 是否启动.htaccess Order allow,deny Allow from all </Directory>xml
分析参数:
Options Indexes <---是否对于没有默认首先目录下面的文件以及子目录进行索引,去掉之后就取消这个功能 FollowSymLinks <---跟踪软连接,存在的意义:隐藏目录的真实路径,可以方便网站扩容<Directory "/www"> <---取消indexes的配置
Options FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>实例5:启用访问控制
<Directory "/www">
Options FollowSymLinks AllowOverride None Order allow,deny <-----定义acl控制的顺序,这里代表先允许,不再允许范围内的都拒绝 Allow from all <----定义允许所有 </Directory> <Directory "/www"> Options FollowSymLinks AllowOverride None Order allow,deny <-----定义acl控制的顺序,这里代表先允许,不再允许范围内的都拒绝 Allow from 10.1.1.0/24 <----定义只允许10.1.1.0/24 </Directory>----------------------------
<Directory "/www">
Options FollowSymLinks AllowOverride None Order deny,allow Deny from 10.1.2.0/24 《---只拒绝10.1.2.0/24这个网段访问 </Directory>实例6:口令验证控制
1、修改参数 ,把AllowOverride none 改成 AllowOverride ALL
<Directory "/www"> Options FollowSymLinks AllowOverride ALL 《---ALL启用口令验证,none关闭口令验证 Order deny,allow Deny from 10.1.2.0/24 《---只拒绝10.1.2.0/24这个网段访问 </Directory> 2、建立.htaccess文件,定义验证配置文件我要对网站的根目录进行验证,那么在根目录下创建 .htaccess
vim /www/.htaccessauthname "Just for test"
authtype basic authuserfile /etc/httpd/userpw require valid-user3、建立密码帐号文件
htpasswd -c /etc/httpd/userpw test
htpasswd /etc/httpd/userpw bbs
4、service httpd restart
实例7:建立用户个人空间 1、修改配置文件 搜索 UserDir <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 disable#
# To enable requests to /~user/ to serve the user's public_html # directory, remove the "UserDir disable" line above, and uncomment # the following line instead: # UserDir public_html 《---启用用户个人空间的功能,访问http://ip/~mary --》读取/home/mary/public_html</IfModule>
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory>2、建立用户以及个人空间的目录
useradd web
mkdir /home/web/public_html 《---建立个人空间根目录 vim /home/web/public_html/index.html This is Web's Home!chmod o+x /home/web <---默认用户家目录权限是700,httpd进程无法访问,所以给予它访问的权限
3、重启服务,使配置生效
service httpd restart
4. 测试: http://localhost/~web/
===========================================================
实例8:建立目录别名Alias /tobbs "/bbs" <---访问 IP/tobbs 的时候实际读取的内容是/bss(系统的绝对路径)
加入我们的apache定义哪个别名指向那个文件夹里面,存放的是一些cgi,perl...alias定义的别名就无法达到执行程序的目的。
ScriptAlias /tobbs "/bbs" <---这样就解决的执行脚本的问题
作用:方便扩容,隐藏目录增加安全性
实例9:虚拟空间 <---一个服务器跑多个网站
@@基于域名的虚拟空间: 《---在同一个服务器,在只有一个IP的情况下,通过不同域名来区分不同的网站 1、启用参数: NameVirtualHost *:80 《--让apache在一个服务器上,单个IP 运行多个网站,每个网站独立内容2、添加虚拟主机配置
<VirtualHost *:80> DocumentRoot /www/uplooking ServerName www.uplooking.com ErrorLog logs/www.uplooking.com-error_log CustomLog logs/www.uplooking.com-access_log common </VirtualHost>3、建立网站目录和文件
mkdir /www/uplooking vim /www/uplooking/index.html4、配置DNS
做A记录或CNAME记录都行, 如果都做A记录不行, 就把其中一个域名做A记录,
其他的做CNAME记录真正在互联网该如何操作?
背景:公司搭建一台web服务器,绑定的网址 www.uplooking.com,IP是公网:61.191.53.56
公司想建立一个论坛,绑定的网址bbs.uplooking.com,网站是建立同一个服务器上a、添加虚拟主机配置
<VirtualHost *:80> DocumentRoot /bbs ServerName bbs.uplooking.com ErrorLog logs/bbs.uplooking.com-error_log CustomLog logs/bbs.uplooking.com-access_log common </VirtualHost>b、建立网站目录和文件
mkdir /bbs vim /bbs/index.html 测试: http://www.uplooking.com --->访问的是/www/uplooking http://bbs.uplooking.com --->访问的是/bbs下的内容 @@@基于IP的虚拟空间: 1、修改配置文件#NameVirtualHost *:80 <---注释这个配置
<VirtualHost 10.1.1.21:80>
DocumentRoot /bbs ServerName bbs.uplooking.com ErrorLog logs/bbs.uplooking.com-error_log CustomLog logs/bbs.uplooking.com-access_log common </VirtualHost>2、修改DNS,添加A记录
bbs IN A 10.1.1.21 测试: http://bbs.uplooking.com 过程: Client ---> 数据包[dst:10.1.1.21 url:bbs.uplooking.com]-->Server@@@基于同一个IP不同端口:
1、修改参数文件[root@kadefor ule-sa3]# grep ^Listen /etc/httpd/conf/httpd.conf
Listen 80 Listen 8080 <---增加apache监听的端口 [root@kadefor ule-sa3]# tail -12 !$ tail -12 /etc/httpd/conf/httpd.conf <VirtualHost 192.168.56.1:80> DocumentRoot /www2 ServerName web.kadefor.com ErrorLog logs/www2.kadefor.com-error_log CustomLog logs/www2.kadefor.com-access_log common </VirtualHost> <VirtualHost 192.168.56.1:8080> DocumentRoot /www ServerName web.kadefor.com ErrorLog logs/www.kadefor.com-error_log CustomLog logs/www.kadefor.com-access_log common </VirtualHost> [root@kadefor ule-sa3]#2、增加DNS记录
测试 过程: Client ---> 数据包[dst:192.168.56.1 url:web.kadefor.com port:8080]-->Server
http://web.kadefor.com:8080/
http://web.kadefor.com
作业:
建立两个虚拟主机(vhost),分别帮定两个网址是: www.uplooking.com 和 bbs.uplooking.com www.uplooking.com对应的网站根目录是/www/uplooking,随便编写一个默认首页测试,方便区别不同网站 bbs.uplooking.com对应的网站根目录是/bbs 要求利用其中一种别名的方法,让访问www.uplooking.com/bbs的时候,实际访问的是/bbs下的内容 网站所用的网址要求使用自己的DNS服务器去解析,而不是修改hosts文件 网站要求只允许10.1.1.0网段去访问,但不能让10.1.1.20访问
答案:
1 vim /etc/httpd/conf/httpd.conf NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /www/uplooking ServerName www.uplooking.com ErrorLog logs/www.uplooking.com-error_log CustomLog logs/www.uplooking.com-access_log common Alias /bbs "/bbs" <Directory "/www/uplooking"> Order allow,deny deny from 10.1.1.20 allow from 10.1.1.0/24 </Directory> </VirtualHost><VirtualHost *:80>
DocumentRoot /bbs ServerName bbs.uplooking.com ErrorLog logs/bbs.uplooking.com-error_log CustomLog logs/bbs.uplooking.com-access_log common <Directory "/www/uplooking"> Order allow,deny deny from 10.1.1.20 allow from 10.1.1.0/24 </Directory> </VirtualHost>2、mkdir /www/uplooking;mkdir /bbs
vim /www/uplooking/index.html This www.uplooking.com vim /bbs/index.html This bbs.uplooking.com3、配置DNS添加别名记录
web IN A 10.1.1.20 www IN CNAME web bbs IN CNAME webservice named restart
service httpd restart 怎样设置只能通过域名访问, 而不能通过IP访问?方法1.
添加一个虚拟主机可以实现:
<VirtualHost *:80> ServerName localhost DocumentRoot /nosite # 这个目录不存在! </VirtualHost> 方法2 <VirtualHost *:80> ServerName localhost #DocumentRoot /nosite <Location /> # 禁止所有人访问 order deny,allow deny from all </Location> </VirtualHost> 1. yum install httpd -y 2. yum install httpd-manual -y /etc/init.d/httpd restart firefox http://<ip>/manual3. change DocumentRoot
vim /etc/httpd/conf/httpd.confDocumentRoot "/var/www/html"
--> DocumentRoot "/opt/www" <Directory "/var/www/html"> --> <Directory "/opt/www">4. control directory
<Directory "/opt/www/abc"> order deny,allow deny from 192.168.248.1 </Directory> 5. UserDir UserDir disabled --> UserDir public_html<Directory "/home/*/public_html">
Options Indexes FollowSymlinks AllowOverride None </Directory>test:
su - oracle mkdir public_html chown o+x ~oracle6. .htaccess
相应目录控制语句里, 修改 AllowOverride all
eg:
/opt/www/abcvim /etc/httpd/conf/httpd.conf
<Directory />
allowoverride all </Diretory>or: 如果有:
<Directory "/opt/www/abc"> allowoverride all </Diretory>vim /opt/www/abc/.htaccess
authname "Must auth"
authtype basic authuserfile /etc/httpd/conf/user.db require valid-user7. cgi
a) 确认 cgi 模块是否加载
b) 确认存放 cgi 程序的目录: ScriptAlias "/cgi-bin/" "/var/www/cgi"c) 控制目录允许执行cgi程序:
<Directory /var/www/cgi> Options +ExecCGI </Directory>b) 取消注释
AddHandler cgi-script .cgi8. selinux --> cgi
chcon -t httpd_sys_script_exec_t /var/www/cgi-bin -R
9. v-host
a) port
vim /etc/httpd/conf/httpd.confListen 8080
<VirtualHost *:80>
ServerAdmin root@localhost ServerName www.up.com DocumentRoot /opt/www80 ErrorLog logs/www80.error.log CustomLog logs/www80.access.log common </VirtualHost><VirtualHost *:8080>
ServerAdmin root@localhost ServerName www.up.com DocumentRoot /opt/www8080 ErrorLog logs/www8080.error.log CustomLog logs/www8080.access.log common </VirtualHost>b) name-based
vim /etc/httpd/conf/httpd.conf
NameVitrualHost *:80
<VirtualHost *:80>
ServerAdmin root@localhost ServerName www.up.com DocumentRoot /opt/www ErrorLog logs/www80.error.log CustomLog logs/www80.access.log common </VirtualHost><VirtualHost *:80>
ServerAdmin root@localhost ServerName blog.up.com DocumentRoot /opt/blog ErrorLog logs/blog.error.log CustomLog logs/blog.access.log common </VirtualHost>c) ip
vim /etc/httpd/conf/httpd.conf
Listen *:80
<VirtualHost 192.168.248.11:80>
ServerAdmin root@localhost ServerName www.up.com DocumentRoot /opt/www80 ErrorLog logs/www80.error.log CustomLog logs/www80.access.log common </VirtualHost><VirtualHost 172.16.248.11:80>
ServerAdmin root@localhost ServerName blog.up.com DocumentRoot /opt/www8080 ErrorLog logs/www8080.error.log CustomLog logs/www8080.access.log common </VirtualHost> 10. 禁止使用ip,或非法解析的域名来访问:建立第一个虚拟主机, 使之不可访问
<VirtualHost 192.168.248.11:80>
DocumentRoot /www/docs <Directory /www/docs> order deny,allow deny from all </Directory> </VirtualHost> https [root@dns ~]# yum install openssl mod_ssl -y [root@dns ~]# ls /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf [root@dns ~]# [root@dns ~]# cd /etc/pki/tls/certs [root@dns certs]# ls Makefile Makefile [root@dns certs]# make testcert [root@dns certs]# [root@dns certs]# ls ../private/localhost.key ../private/localhost.key [root@dns certs]# ls localhost.crt localhost.crt [root@dns certs]# mkdir /etc/httpd/ssl [root@dns certs]# cp ../private/localhost.key /etc/httpd/ssl/server.key [root@dns certs]# cp localhost.crt /etc/httpd/ssl/server.crt [root@dns certs]# [root@dns certs]# vim /etc/httpd/conf.d/ssl.conf [root@dns certs]# grep server.key /etc/httpd/conf.d/ssl.conf SSLCertificateKeyFile /etc/httpd/ssl/server.key [root@dns certs]# grep server.crt /etc/httpd/conf.d/ssl.conf SSLCertificateFile /etc/httpd/ssl/server.crt #SSLCACertificateFile /etc/httpd/ssl/server.crt [root@dns certs]# /etc/init.d/httpd restart [root@dns certs]# --> password [root@dns certs]# [root@dns certs]# openssl rsa -in /etc/httpd/ssl/server.key -out /etc/httpd/ssl/nopw.key Enter pass phrase for /etc/httpd/ssl/server.key: writing RSA key [root@dns certs]# vim /etc/httpd/conf/httpd.conf [root@dns certs]# vim /etc/httpd/conf.d/ssl.conf [root@dns certs]# grep nopw.key /etc/httpd/conf.d/ssl.conf SSLCertificateKeyFile /etc/httpd/ssl/nopw.key [root@dns certs]# [root@dns certs]# /etc/init.d/httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ] [root@dns certs]# 注意 1,DirectoryIndex index.html index.html index.html.var 设置默认访问页面 2,/etc/httpd/conf/httpd.conf 修改httpd 的配置文件目录 3,index.html文件建在设置的DocumentRoot /www/up18 这个家目录里面4. elinks 字符界面浏览器 curl 查看网页信息
5,/etc/httpd/conf.d 在这里添加