linux 之:Apache服务 (httpd的部署和基础配置)
Apache服务的概念:Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一**apache 的默认端口是80/tcp**1,apach服务的部署:yum install httpd-y#安装Apache的默认服务器软件:httpdsystemctl ...
Apache服务的概念:
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一
apache的基础信息:
主配置目录: /etc/httpd/conf
主配置文件: /etc/httpd/conf/httpd.conf
子配置目录: /etc/httpd/conf.d/
子配置文件: /etc/httpd/conf.d/*.conf # 在子配置目录中所有的以.conf结尾的文件
默认发布目录: /var/www/html
默认发布文件: /var/www/html/index.html #默认发布目录中index.html文件名称固定
apache 的默认端口是80/tcp
1,apach服务的部署:
yum install httpd -y #安装Apache的默认服务器软件:httpd
systemctl start httpd #开启服务
systemctl enable httpd #开机自启动服务
firewall-cmd --list-all #列出火墙信息
firewall-cmd --pernanent --add-service=http # 永久允许http
firewall-cmd --reload # 火墙重新加载策略
“Nothing to do’ 表示已经安装过了。
1)修改默认端口:
vim /etc/httpd/conf/httpd.conf #修改默认端口为8080
42行 Listen 8080
firewall-cmd --permanent --add-port=8080/tcp #更改通过防火墙的端口为8080
firewall-cmd --reload #火墙重新加载策略
firewall-cmd --list-all #列出火墙信息
2)添加默认端口:
semanage port -a -t http_port_t -p tcp 8888 #添加默认端口为8888
systemctl restart httpd重启服务。
semanage port -l | grep http #查看http服务器的默认端口
3)修改默认发布文件:
默认发布文件就是访问apache时没有指定文件名称时默认访问的文件,这个文件可以指定多个,有访问顺序。
vim /etc/httpd/conf/httpd.conf #编辑主配置文件,且默认端口必须是80
164行 DirectoryIndex test.html index.html #当test.html不存在时访问 index.html
vim /var/www/html/test #文件内容随便编辑
systemctl restart httpd重启服务。
测试:
在火狐游览器里面输入: 172.25.254.114查看内容是否被更改。
4)修改默认发布目录:
mkdir /www/html -p #创建新的目录
semanage fcontext -a t httpd_content_t '/www/html(/.*)?' #更改安全上下文
rstorecon -RvvF /www/ #刷新安全上下文
vim /www/html/index.html #编辑文件内容(随意编辑)
vim /etc/httpd/conf/http.conf #编辑配置文件
内容:
120行 DcumentRoot "/www/html"
121行 <Directory "/www/html">
122行 Require all granted
123行 </Directory>
systemctl reload httpd #重新加载服务,或者systemctl restart httpd重启服务。
5)访问控制(服务端)
ip控制:
-
ip控制(白名单):
编辑配置文件:vim /etc/httpd/conf/httpd.conf 120行 <Directory "/www/html"> 122行 Require all granted Order Deny,Allow #只允许172.25.254.14进入,其他 ip 不可进入,“Deny"表示黑名单,"Allow"表示白名单 Allow from 172.25.254.114 Deny from All 123行 </Directory>
设置所有ip 为黑名单,只有ip为172.25.254.114这台电脑是可以访问的。
注:可以看出,在172.25.254.15 这台电脑上是无法看到/www/html/index.html 网页的内容的,只有在ip 为172.25.254.114 这台电脑上是可以看到的,只有这台电脑是被允许看/www/html/index.html 网页的内容的内容的。
ip控制(黑名单):
120行 <Directory "/www/html">
122行 Require all granted
Order Allow,Deny #允许所有ip进入,172.25.254.14不可进入,“Deny"表示拒绝,
Allow from All
Deny from 172.25.254.114
123行 </Directory>
用户控制:
cd /etc/httpd #进入到指定目录
创建隐藏用户:
htpassed -cm yang haha #"yang"文件名称,“haha"表示用户名
htpassed -m yang haha1 #再次创建时不用加“c”
编辑配置文件:vim /etc/httpd/conf/httpd.conf
120行# <Directory "/www/html">
122行 # Require all granted
# Order Allow,Deny
# Allow from All
# Deny from 172.25.254.14
AuthUserFile "/etc/httpd/yang"
AuthType basic
AuthName "Please input username and password!!"
# Require user haha #只允许haha用户进入
Require valid-user #所有用户进入时都必须输入用户名和密码
6)apache的虚拟主机:
作用:可以在一个电脑上同时运行多个网站。
以下演示使用172.25.47.114 该一个ip对应 www.haha.com; music.haha.com; news.haha.com 三个站点
在服务端:
创建发布目录以及发布文件:
mkdir -p /yang/{music,news}/html #创建不同域名的发布目录
vim /yang/music/html/index.html #创建发布文件
vim /yang/news/html/index.html #创建发布文件
semanage fcontext -a -t httpd_sys_content_t ‘/yang(/.*)?’ # 修改发布目录安全上下文
restorecon -FvvR /yang/ #刷新发布目录安全上下文
创建虚拟主机配置文件:作为副配置文件,因该出现在/etc/httpd/conf.d/ 目录中。
vim /etc/httpd/conf.d/virthost.conf #编写虚拟主机的配置文件
<VirtualHost _default_:80> #创建默认虚拟主机,找不到虚拟主机的域名访问也由此主机提供服务。
DocumentRoot /var/www/html #指定发布目录
CustomLog logs/default.log combined #指定日志文件以及日志类型(所有 日志)
</Virtualhost>
<VirtualHost *:80>
DocumentRoot /virtdir/music/html #指定发布目录
ServerName music.toto.com #虚拟主机指定域名 music.toto.com
CustomLog logs/music.log combined #指定日志文件以及日志类型(所有 日志)
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /virtdir/news/html #指定发布目录
ServerName news.toto.com #虚拟主机指定域名 news.toto.com
CustomLog logs/news.log combined #指定日志文件以及日志类型(所有 日志)
</Virtualhost>
<Directory "/virtdir"> #对新建的发布目录进行认证
Require all granted #允许所有人可以访问该目录
</Directory>
测试:
在客户端编辑域名解析配置文件:/etc/hosts
对www.toto.com; music.toto.com; news.toto.com 三个域名进行解析记录,然后通过域名进行逐个访问。
7)apache支持的语言
html
之前编写的所有发布文件都是html。都是支持使用的。
php
rpm -q php # 查看是否安装php插件
yum install php -y #安装该插件
ls /etc/httpd/conf.d/ #当成功安装之后 在该目录中会生成 php.conf 文件
编写php语言发布文件:vim /var/www/html/index.php
cgi
mkdir /var/www/html/cgi #创建共享目录
semanage fcontext -a -t httpd_sys_script_exec_t ‘/var/www/html/cgi(/.*)?’ #修改目录安全上下文
restorecon -RvvF /var/www/html/cgi/ #刷新安全上下文
vim /var/www/html/cgi/index.cgi # 编辑共享文件
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print 'hello westos';
python /var/www/html/cgi/index.cgi #执行该文件
[root@sever cgi]# python /var/www/html/cgi/index.cgi
Content-type: text/html
hello westos
给予共享文件执行权限,执行查看效果
chmod +x /var/www/html/cgi/index.cgi
/var/www/html/cgi/index.cgi
vim /etc/httpd/conf.d/virthost.conf #编辑配置文件
<Directory "/var/www/html/cgi">
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>
systemctl reload httpd.service #重新加载服务配置
测试:访问 172.25.47.104/cgi/index.cgi
wsgi
yum install mod_wsgi.x86_64 -y #安装wsgi模块
cd /var/www/cgi-bin #切换到/var/www/cgi-bin 目录中
vim webapp.wsgi #生成文件
#!/usr/bin/env python
import time
def application (environ, start_response):
response_body = 'UNIX EPOCH time is now: %s\n' % time.time()
tatus = '200 OK'
response_headers = [('Content-Type', 'text/plain'),
('Content-Length', '1'),
('Content-Length', str(len(response_body)))]
start_response(status, response_headers)
return [response_body]
vim /etc/httpd/conf.d/virthost.conf #编辑配置文件
<VirtualHost *:80>
ServerName wsgi.westos.com
WSGIScriptAlias / /var/www/cgi-bin/webapp.wsgi
</Virtualhost>
systemctl restart httpd #重启服务
测试:
在测试主机中添加wsgi.westos.com 的本地域名解析 使用浏览器进行访问
更多推荐
所有评论(0)