第1、apache
一、web服务器的概念以及http的概念
架构: C/S : Client (浏览器) <-------> Server (apache)
网站的技术:静态和动态
静态页面:通常都是.html .htm .shtml
动态页面:通常是 .php .asp .jsp
特色:须要语言的解析模块去完成页面代码编译,最后把结果返回给web服务器,还有一个常见的特色就是涉及到数据库查询的php
二、apache软件包
# yum install httpd httpd-devel httpd-manual -yhtml
服务名字:httpd
进程名字:httpd
默认端口:80 (https:443)
:8080linux
服务的工做目录: /etc/httpd
主配置:/etc/httpd/conf/httpd.confweb
三、分析配置文件
分三部分:全局配置、局部配置、虚拟空间配置
全局:
ServerRoot "/etc/httpd" <---后面的路径不能添加 /,rpm安装不要去修改
Listen 80 <---监听的端口
Listen 8080
ServerName www.example.com:80 <---设定服务器默认网站绑定的域名(ip)和端口数据库
实例1:安装后直接重启,使用默认网站apache
service httpd restartvim
实例2:取消默认报错而且对主配置文件进行简单的修改
功能:取消test page的显示,显示咱们本身的首页浏览器
Listen 80
Listen 192.168.0.7:80
Listen 192.168.2.7:8080安全
一、vim /etc/httpd/conf/httpd.conf
ServerName 10.1.1.20:80
或者 vim /etc/hosts <---把你的主机名字和你的IP对应上服务器
二、vim /var/www/html/index.html 《---默认状况下,默认网站的根目录 /var/www/html
概念:网站的根目录--->网站页面程序存放的起始路径
默认状况下,apache读取一个网站的的默认首页就是index.html
DirectoryIndex index.html index.html.var 《---这里就是定义网站的,默认首页的名字
三、修改参数
DirectoryIndex index.htm index.html index.html.var
新建一个index.htm <---内容随便你,用来测试区别
四、service httpd restart
五、打开firefox,在浏览器中输入域名或者IP就能够。
实例3:修改默认网站的根目录
一、修改配置文件的根目录定义参数
DocumentRoot "/www"
二、建立定义的网站根目录
mkdir /www
vim /www/index.html
三、重启服务,让配置生效
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:口令验证控制
一、修改参数 ,把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>
二、创建.htaccess文件,定义验证配置文件
我要对网站的根目录进行验证,那么在根目录下建立 .htaccess
vim /www/.htaccess
authname "Just for test"
authtype basic
authuserfile /etc/httpd/userpw
require valid-user
三、创建密码账号文件
htpasswd -c /etc/httpd/userpw test
htpasswd /etc/httpd/userpw bbs
四、service httpd restart
实例7:创建用户我的空间
一、修改配置文件
搜索 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>
二、创建用户以及我的空间的目录
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进程没法访问,因此给予它访问的权限
三、重启服务,使配置生效
service httpd restart
4. 测试: http://localhost/~web/
===========================================================
实例8:创建目录别名
Alias /tobbs "/bbs" <---访问 IP/tobbs 的时候实际读取的内容是/bss(系统的绝对路径)
加入咱们的apache定义哪一个别名指向那个文件夹里面,存放的是一些cgi,perl...alias定义的别名就没法达到执行程序的目的。
ScriptAlias /tobbs "/bbs" <---这样就解决的执行脚本的问题
做用:方便扩容,隐藏目录增长安全性
实例9:虚拟空间 <---一个服务器跑多个网站
@@基于域名的虚拟空间: 《---在同一个服务器,在只有一个IP的状况下,经过不一样域名来区分不一样的网站
一、启用参数:
NameVirtualHost *:80 《--让apache在一个服务器上,单个IP 运行多个网站,每一个网站独立内容
二、添加虚拟主机配置
<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>
三、创建网站目录和文件
mkdir /www/uplooking
vim /www/uplooking/index.html
四、配置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的虚拟空间:
一、修改配置文件
#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>
二、修改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不一样端口:
一、修改参数文件
[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]#
二、增长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>
二、mkdir /www/uplooking;mkdir /bbs
vim /www/uplooking/index.html
This www.uplooking.com
vim /bbs/index.html
This bbs.uplooking.com
三、配置DNS添加别名记录
web IN A 10.1.1.20
www IN CNAME web
bbs IN CNAME web
service 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>/manual
3. change DocumentRoot
vim /etc/httpd/conf/httpd.conf
DocumentRoot "/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 ~oracle
6. .htaccess
相应目录控制语句里, 修改 AllowOverride all
eg:
/opt/www/abc
vim /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-user
7. cgi
a) 确认 cgi 模块是否加载
b) 确认存放 cgi 程序的目录:
ScriptAlias "/cgi-bin/" "/var/www/cgi"
c) 控制目录容许执行cgi程序:
<Directory /var/www/cgi>
Options +ExecCGI
</Directory>
b) 取消注释
AddHandler cgi-script .cgi
8. selinux --> cgi
chcon -t httpd_sys_script_exec_t /var/www/cgi-bin -R
9. v-host
a) port
vim /etc/httpd/conf/httpd.conf
Listen 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 在这里添加