邁向 RHCE 之路 (Day26) - Apache 網頁伺服器
本篇將在 SELinux 安全機制及 IPTables 防火牆開啟的環境下實作,分別實作簡單網頁服務及虛擬主機 Virtual Host 設定,最後則是實作網頁中需要保護網頁時可以透過 .htaccess 機制進行保護,關於 Apache 網頁伺服器內容及更詳細設定參數可以參考官方文件 RedHat - Deployment Guide Chapter 14. Web Servers。以下為 Apache 網頁伺服器實作環境:(若執行 semanage 指令發現系統中沒有此一指令請安裝 policycoreutils-python 套件即可(yum -y install policycoreutils-python)。
* OS: CentOS 6.0 (32 bit)
* Apache 套件資訊: httpd-2.2.15-5.el6.centos.i686
* Apache 設定檔: /etc/httpd/conf/httpd.conf
* IPTables 防火牆: TCP 協定 Port 80
* SELinux 權限: httpd_sys_content_t
* Apache 根目錄預設路徑: /var/www/html
* Apache 根目錄變更後路徑: /home/web
----- 安裝 Apache 網頁伺服器套件 -----
請使用 yum 指令搭配 Apache 套件名稱 httpd 即可進行套件安裝。
- #yum -y install httpd //安裝 Apache 套件
- #rpm -qa httpd //查詢 Apache 套件版本
- httpd-2.2.15-5.el6.centos.i686
- #rpm -qc httpd | grep httpd.conf$ //查詢 Apache 設定檔路徑
- /etc/httpd/conf/httpd.conf
----- 設定 IPTables 防火牆規則 -----
Apache 網頁服務屆時啟動會 Listen TCP 協定 Port 80(HTTP)、443(HTTPs),因此必須修改 IPTables 防火牆規則以便網頁服務啟動後可進行測試,請修改 IPTables 防火牆規則設定檔「/etc/sysconfig/iptables」加上允許 TCP Port 80、443 規則,修改防火牆規則後請使用指令「service iptables restart」重新啟動防火牆服務,以便防火牆規則套用生效,並且使用「service iptables status」指令確定目前防火牆規則是否允許 TCP Port 80。
- #vi /etc/sysconfig/iptables //修改防火牆規則(加入如下二行)
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
- #service iptables restart //重新啟動防火牆服務
- #service iptables status | grep -E '80|443' //查看防火牆規則是否套用生效
- 5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
- 6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:443
- #chkconfig httpd on //開機自動啟動 Apache 服務
----- 修改 Apache 設定檔 -----
修改 Apache 設定檔「/etc/httpd/conf/httpd.conf」,主要為修改網頁根目錄「DocumentRoot」設定,將根目錄路徑由預設「/var/www/html」修改至「/home/web」 掛載點,下列僅列出 Apache 設定檔中需要修改的地方其預設值及修改後內容。
- #cd /etc/httpd/conf //切換至 Apache 設定檔資料夾
- #cp httpd.conf httpd.conf.bak //備份 Apache 設定檔
- #vi httpd.conf //修改 Apache 設定檔
- DocumentRoot "/var/www/html" //預設值,網頁根目錄
- DocumentRoot "/home/web" //修改後
- <Directory "/var/www/html"> //預設值,網頁根目錄設定
- <Directory "/home/web"> //修改後
接著建立屆時 Apache 網頁伺服器測試首頁「/home/web/index.html」,利用「echo」指令將字串「Apache Work!!」送入測試首頁檔案內
- #echo 'Apache Work!!' > /home/web/index.html
----- 修改 SELinux 設定值 -----
修改 SELinux 安全機制設定值,因為將 Apahe 網頁伺服器網頁根目錄由 「/var/www/html」 修改至 「/home/web」,因此資料夾其 SELinux 安全機制的權限勢必與原來不同,若不修改屆時啟動 Apache 服務時便可能會因為 SELinux 權限問題造成無法啟動 Apache 服務的狀況。
- #ls -dZ /var/www/html /home/web
- drwxr-xr-x. root root unconfined_u:object_r:home_root_t:s0 /home/web
- drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html
接著透過「semanage fcontext -a -t」指令配合 SELinux 權限「httpd_sys_content_t」,指定「/home/web」資料夾及所有子資料夾及檔案都設定此權限為「SELinux預設權限」,之後使用「restorecon -Rv」指令把 /home/web 資料夾還原至剛才設定的 SELinux 預設權限,完成套用權限動作後再次查看二個資料夾 SELinux 權限便一模一樣。
- #semanage fcontext -a -t httpd_sys_content_t "/home/web(/.*)?" //設定 SELinux 預設權限
- #restorecon -Rv /home/web //還原 SELinux 權限
- #ls -dZ /var/www/html /home/web //查看資料夾 SELinux 權限
- drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /home/web
- drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html
----- 啟動 Apache 服務 -----
修改 SELinux 安全機制權限設定後,可以放心啟動 Apache 網頁服務,請使用指令「service httpd start」啟動 Apache 服務,並且於服務啟動後使用「netstat」指令查看系統是否開啟了 TCP Port 80,以及「ps」指令查看 Apache 執行序(httpd)是否運作。
- #service httpd start //啟動 Apache 服務
- Starting httpd: [ OK ]
- #netstat -tunpl | grep :80 //查看是否開啟 Port 80
- tcp 0 0 :::80 :::* LISTEN 904/httpd
- #ps aux |grep httpd //查看 httpd 執行序
- apache 906 0.0 0.2 12680 2132 ? S 15:58 0:00 /usr/sbin/httpd
- apache 907 0.0 0.2 12680 2132 ? S 15:58 0:00 /usr/sbin/httpd
- ...略...
啟動 Apache 網頁服務成功後,開啟瀏覽器測試 Apache 網頁服務是否真的運作以及看到剛才建立的測試首頁。
----- 虛擬主機 Virtual Host 設定 -----
簡單說虛擬主機 Virtual Host 為讓 Apache 網頁伺服器可以同時運作多個網站的機制,若伺服器只有一個 IP 位址即可依靠 DNS 名稱解析機制來達成,請注意!! 當設定 Virtual Host 之後原本的設定將被覆蓋。
- #vi /etc/httpd/conf/httpd.conf //修改設定檔內容如下
- <VirtualHost 10.10.25.115:80>
- ServerAdmin webmaster@weithenn.org
- DocumentRoot /home/web/colo-a
- ServerName colo-a.weithenn.org
- ErrorLog logs/colo-a.weithenn.org-error_log
- CustomLog logs/colo-a.weithenn.org-access_log common
- </VirtualHost>
- #mkdir /home/web/colo-a //建立 Virtual Host 資料夾
- #echo 'Colocation-A work!!' > /home/web/colo-a/index.html //建立測試首頁
- #service httpd reload //重新載入 Apache 服務(套用生效)
- Reloading httpd:
重新載入 Apache 網頁服務成功後,測試是否可以看到測試首頁。
----- 設定 Apache 支援 .htaccess 保護功能 -----
當您網站上有某些網頁不想讓人可以隨便瀏覽 (例如:管理介面、程式後台.....),此時可利用 Apache 內的 .htaccess 功能來替網頁進行管制保護,以下為利用 .htaccess 來保護指定網頁其設定注意事項:
* AllowOverride AuthConfig: 使用 帳號/密碼 進行管制保護
* AllowOverride Limit: 使用 管制來源 IP 進行管制保護
* AllowOverride None: .htaccess 功能失效
- #vi /etc/httpd/conf/httpd.conf //修改設定檔內容
- AllowOverride None //預設值
- AllowOverride Authconfig //修改後
- #mkdir /home/web/colo-a/admin //建立後台資料夾
- #echo 'Web Site Admin Page!!' > /home/web/colo-a/admin/index.html //建立測試首頁
- #vi /home/web/colo-a/admin/.htaccess //修改 .htaccess 檔案內容如下
- AuthType Basic
- AuthName "Admin Page Login"
- AuthUserFile /home/web/colo-a/admin/.htpasswd
- require valid-user
- #htpasswd -mc /home/web/admin/.htpasswd weithenn //第二筆帳號使用 -m 即可
- New password: //輸入登入密碼
- Re-type new password: //再次輸入密碼以確認
- Adding password for user weithenn
- #chgrp apache home/web/colo-a/admin/.htpasswd //設定檔案權限
- #chmod 640 /home/web/colo-a/admin/.htpasswd //設定檔案權限
- #service httpd reload //重新載入服務套用生效
- Reloading httpd:
設定完成後若成功運作則要瀏覽 admin 資料夾時便會彈跳出使用者帳號密碼驗證視窗,通過驗證即可看到網頁內容。

http://ithelp.ithome.com.tw/question/10080681
邁向 RHCE 之路 (Day26) - Apache 網頁伺服器的更多相关文章
- [转载]在網頁上加入HTML5 的Video Tag,直接播放MP4、OGG…等
在之前有一篇文章提到HTML5(為何iPhone,iPod,iPad不支援Flash,HTML5將更普及於網路世界!!)的重要性,而Html 5的主要革新是在他的語意標籤,像是<video> ...
- eafier 簡單易用 HTML、CSS 網頁編輯器(可自動插入 Tag 標籤)
很久很久以前,一般人要做網頁的話大概都會用 FrontPage 之類的工具,更進階一點的會用 Dreamweaver 等軟體.雖然上述軟體提供很方便的「所見即所得」的編輯預覽模式,但寫出來的網頁程式碼 ...
- 問題排查:行動裝置網頁前端 UI 設計 (1)
這是最近開始接手的一個微信公眾平台專案, 在重整後端程式碼時,因為也需要透過前端來看效果, 所以就因此在前端的部分遇到了不少問題, 畢竟這是以前沒接觸過的領域 (早年的網頁應用程式開發沒有那麼多分工) ...
- PHP微信登錄(網頁授權)之後的獲取用戶的信息
//這部峯代碼是封裝的庫文件,<?php /** * Created by PhpStorm. * User: root * Date: 16-6-23 * Time: 下午3:29 */ cl ...
- 解除網頁無法選取文字、鎖右鍵限制:Enable Copy(Chrome 擴充套件)
有些网页因会因为某些因素而禁止浏览者直接复制网页上的内容,虽然我们了解站方的意思,不过有些时候会造成一些不必要的困扰. Enable Copy 这款Chrome 扩充套件可以帮你一键解除封锁右键和选取 ...
- jQueryMobile 網頁使用 ASP.NET Web API 服務
微軟的 ASP.NET Web API 框架,能以 RESTful 輕量級的架構風格,建立 HTTP 服務,讓多種不同的用戶端,如: 手機.平板.電腦(PC),透過 HTTP 的 GET.POST.P ...
- python学习之路---day26
网络的基本知识点 一:网络通信原理 连接两台计算机之间的Internet之间的协议一系列协议为互联网协议 互联网协议的功能是:定义计算机如何接入Internet,以及Internet的计算机通信标准 ...
- 問題排查:行動裝置網頁前端 UI 設計 (2)
之前上網找了個星級評分的範例來玩, 當然這個範例已經用在另一個專案了, 目前看起來沒什麼狀況, 不過在移植到目前的專案之後, 就出現了怪現象: 1. 在大部份時間裡,點擊星星不會有任何反應 2. 即便 ...
- Apache CXF自定义拦截器
为什么设计拦截器?1.为了在webservice请求过程中,能动态操作请求和响应数据,CXF设计了拦截器 拦截器分类: 1.按所处的位置分:服务器端拦截器,客户端拦截器. 2.按消息的方向分:入拦截器 ...
随机推荐
- Hyper-v: Snapshot merge
我有一个Hyper-V上的虚拟机, 在使用的过程中我给这个虚拟机创建了多个snapshots. 有一天我把整个的snapshots tree从root删掉了(delete snapshot with ...
- zookeeper集群,每个服务器上的数据是相同的,每一个服务器均可以对外提供读和写的服务,这点和redis是相同的,即对客户端来讲每个服务器都是平等的。
zookeeper集群,每个服务器上的数据是相同的,每一个服务器均可以对外提供读和写的服务,这点和redis是相同的,即对客户端来讲每个服务器都是平等的.
- 【java】弃用System.out.println(),迎接log
展示性能差异: 1.System.out.println()输出 package com.sxd.swapping.test; import org.junit.Test; public class ...
- ecside 列表排序问题
ecside列表首先点击某一列排序,没有问题,再点第二列的时候没有起作用.原因是第二次排序的时候还包含着第一次排序的字段.所以排序始终是第一次的排序结果. 修改ecside.js 的ECSideUti ...
- poi 技术动态更新 Excel模板内容,动态更新内容
1.控制器方法 private URL base = this.getClass().getResource(""); /** * 流拍之后,可以下载询价单 * * @param ...
- Android(安卓)开发通过NDK调用JNI,使用opencv做本地c++代码开发配置方法 边缘检测 范例代码
以前写过两个Android开发配置文档,使用NDK进行JNI开发,这样能够利用以前已经写好的C++代码. 前两篇博客地址: http://blog.csdn.net/watkinsong/articl ...
- 巧妙使用 CSS3 的褪色和动画效果制作消息提醒框
现代Web设计技术允许开发者快速实现大多数浏览器支持的动画.我想警告消息是很常见的,因为默认的JavaScript警告框的样式往往(与你自己设计的漂亮样式)很不协调很囧.这使开发者步入找出哪种解决方案 ...
- RS特殊报表样式需求处理
收到一朋友求助:如下图的报表格式 思路如下 第一步:处理出基础数据是每个用户每个月属于每个区间的数据savemoney_bymonthmonth user save_qujian201412 a1 5 ...
- Dreamweaver界面主要菜单功能介绍
启动界面有四个功能:主要使用新建HTML,其中HTML有很多版本,由于国内IE6.0占据了将近百分之七十的比例,所以最新的HTML1.1对他支持的不好,我们主要使用XHTML 1.0 Transiti ...
- Python Post and Get 登陆web后台系统并抓取页面
#coding=utf8 #! /usr/bin/env python import httplib import re import socket import urllib timeout = 6 ...