前言:本文是學習網易微專業的《python全棧工程師》 中的《服務器運維開發工程師》專題的課程筆記,歡迎學習交流。同時感謝老師們的精彩傳授!
一、課程目標
apache httpd
服務器簡介httpd
安裝httpd
配置
二、詳情解讀
2.1.httpd
簡介
2.1.1.apache httpd
簡介
httpd web
服務器是apache
基金會下的一個開源服務器項目。httpd
服務器能夠提供靜態網頁服務以及通過擴展提供動態程序訪問。
官方網站:http://httpd.apache.org/
2.2.httpd
服務器安裝
2.2.1.安裝配置
1.httpd
服務器可以直接通過yum
命令安裝。
yum install httpd
2.服務器管理
apachectl start|stop
3.配置文件位置
/etc/httpd/conf/httpd.conf
說明:如果找不到httpd.conf
文件,可以使用find
命令查找
find / -name httpd.conf
直接在find
後面寫上-name
,表明要求系統按照文件名查找,最後寫上httpd.conf
這個目標文件名即可。
實操:
Step1
: 啓動虛擬機。選擇“無界面啓動”,因爲是遠程登錄,不需要看到界面。
Step2
: 遠程登錄服務器。啓動putty
,輸入以下命令:
ssh -l root 192.168.1.119
**Step3
:安裝httpd
服務器。
首先查看主機上是否有httpd
這個安裝包
yum search httpd
如下結果,表示有這個安裝包:
輸入以下命令,進行安裝:
yum install httpd
說明:如果發生無法連接網絡的錯誤,要檢查網卡的配置。
查看httpd.conf
是否存在
ls /etc/httpd
Step4
: 啓動httpd
服務器
apachectl start
在瀏覽器輸入服務器的ip
地址:http://192.168.3.119
這是因爲主機啓動了防火牆,把它關閉即
service firewalld stop
重新訪問主機ip
,出現如下頁面,表示apachd
安裝成功
Step5:
配置apache
。
首先安裝vim
yum install vim
打開apache
的配置文件,
vim /etc/httpd/conf/httpd.conf
說明:如果忘記配置文件名,輸入到文件夾conf/
時,按tab
鍵,系統會列出conf
文件夾下所有文件。
2.2.2.配置文件
1.Listen ip:port
:指定web
服務器綁定到哪個ip
及端口號,可以只指定端口號,如80、8080
2.LoadModule
:模塊加載,通過加載不同的模塊實現不同功能
3.ServerName
:服務器名稱,需要明確指定,默認註釋,需要去掉註釋符#
並指定,才能啓動httpd
4.<Directory/>
:目錄權限設置塊
5.DocumentRoot
:指定web
服務器根目錄
6.ErrorLog
錯誤:日誌位置
7.<IfModule log_config_module>
:訪問日誌位置
8.Include
:加載其他配置文件
2.2.3.httpd
主進程控制
Apache
修改配置後需要重啓後才能生效
1.啓動httpd
:/usr/local/apache2/bin/apachectl start
2.停止httpd
運行:/usr/local/apache2/bin/apachectl stop
3.重啓httpd
:/usr/local/apache2/bin/apachectl restart
4.平滑重啓:/usr/local/apache2/bin/apachectl graceful
5.平滑關閉:/usr/local/apache2/bin/apachectl graceful-stop
2.3.靜態網頁部署
2.3.1.配置文件
Step1
: 修改DocumentRoot
,指定web
服務器根目錄。
Step2
: 關閉selinux
將/etc/selinux/config
文件中的SELINUX=enforcing
修改爲SELINUX=disabled
Step3
: 重啓 reboot
Step4
: 啓動apache web
服務器
apachectl start
Step5
: 關閉防火牆
service firewalld stop
實操:
步驟一: 創建web
目錄
mkdir -p /wwwroot/myweb
說明:-p
表示遞歸創建目錄,即使上級目錄不存在,會按目錄層級自動創建目錄
步驟二: 進入myweb
目錄,並創建index.html
文件
cd /wwwroot/myweb
vim index.html
按i
鍵,進入編輯模式,隨便寫入點內容,比如:hello world
。
再按ESC
鍵,進入命令模式,再輸入:wq
保存並退出。
步驟三: 編輯apache
配置文件
vim /etc/httpd/conf/httpd.conf
進入文件httpd.conf
後,按下/
,輸入DocumentRoot
查找它,
1.將DocumentRoot "/var/www/html
修改爲DocumentRoot /wwwroot/myweb
2.刪除下面的內容
<Directory />
AllowOverride none
Require all denied
</Directory>
3.將下面中的路徑修改爲 /wwwroot/myweb
<Directory "/var/www"> # 這裏修改爲"/wwwroot/myweb"
AllowOverride None
# Allow open access:
Require all granted
</Directory>
步驟四: 修改selinux
vim /etc/selinux/config
將/etc/selinux/config
文件中的SELINUX=enforcing
修改爲SELINUX=disabled
步驟五: 重啓服務器
reboot
步驟六: 重新登錄虛擬機的服務器,並重啓服務
apachectl restart
步驟七: 關閉防火牆
service firewalld stop
此時,訪問瀏覽器http://192.168.3.119
推薦用防火牆命令打開80
端口,這樣就不用每次都關閉防火牆了,防火牆爲了安全作用還是得開着好。
firewall-cmd --zone=public --add-port=80/tcp --permanent
示例圖如下:
2.4.虛擬主機部署
2.4.1.虛擬主機
Step1:
創建新的web
目錄,比如:/wwwroot/myweb2
。通過如下命令可以創建:
mkdir /wwwroot/myweb2
Step2:
通過sftp
命令上傳網站文件到web
目錄,也可以下載一個winscp
程序
sftp
連接遠程服務器:sftp [email protected]
。
使用put
命令,可以將本地文件上傳到服務器中;使用get
命令可以將服務器中的文件下載到本地。
sftp
的使用可以參考文章:Linux:CentOS中SFTP工具的使用
Step3:
創建/web/logs
目錄用於存入日誌文件。通過下面命令可以創建:
mkdir -p /web/logs
Step4
: 通過chown apache:apache /web/logs
修改文件擁有者與屬組。在/etc/httpd/conf/httpd.conf
文件中,有如下圖所示的配置:
所以要修改文件擁有者和屬組爲apache
,否則apache
沒有權限訪問這些文件。
Step5
: 通過chmod -R 755 /wwwroot/myweb2
修改權限。
此處755
表示三種用戶的權限:第一個7
是root
用戶自己的權限(7
表示可讀、可寫、可執行的權限),第二個5
是與所有者同組的其他組員的權限(5
表示可讀、不可寫、可執行的權限),第三個5
是其他人的權限。
-R
表示遞歸地將文件夾裏所有文件的權限都修改。
Step6
: 在httpd.conf
中添加Listen 81
端口。此處用不同的端口與其他的網站區別開來。
實操:
步驟一: 創建好目錄/wwwroot/myweb2
後,新打開一個終端,使用sftp
連接:
sftp [email protected]
步驟二: 切換目錄。
服務器上的目錄切換:
cd /wwwroot/myweb2
本地的目錄切換:(注意是lcd
,而不是cd
)
lcd ~/test
查看服務器上的目錄用ls
,查看本地的目錄用lls
:
步驟三: 上傳文件用put + 文件名
,上傳文件夾用put + -r + 文件名
put -r flask-cms
上傳完成之後,使用exit
退出。
步驟四: 修改權限。
首先查看權限
ls -al /wwwroot/myweb2
ls -al /web/logs
然後修改爲apache
所有者
chown -R apache:apache /web
結果:
chmod -R 755 /wwwroot/myweb2
結果:
步驟五: 添加端口號:
vim /etc/httpd/conf/httpd.conf
如下圖,添加Listen 81
步驟六: 創建文件host2.conf
。
在/etc/httpd/conf/httpd.conf
文件的末尾,有如下配置:
所以我們可以創建文件:
touch /etc/httpd/conf.d/host2.conf
編輯這文件,寫入如下內容:
<VirtualHost 192.168.3.119:81>
DocumentRoot "/wwwroot/myweb2"
ServerName localhost
ServerAlias server1
ErrorLog "/web/logs/web1-error_log"
CustomLog "/web/logs/web1-access_log" common
</VirtualHost>
步驟七: 重啓apache
apachectl restart
如果想知道apache
的配置有沒有錯,可以運行下面的命令測試一下:
apachectl -t
出現如下圖的ok
,表示配置成功
步驟八: 開啓81
端口,並重啓防火牆
firewall-cmd --zone=public --add-port=81/tcp --permanent
service firewalld restart
瀏覽器訪問:http://192.168.3.119:81
一般apache
中的配置文件如下:
<VirtualHost IP:port>
DocumentRoot "/web/web1/" # 站點目錄
ServerName mywebserver # 站點域名
ServerAlias yourwebserver # 站點別名
ErrorLog "/web/logs/web1-error_log" # 錯誤日誌
CustomLog "/web/logs/web1-access_log" common
</VirtualHost>
2.5.域名
1.直接IP
訪問服務器,不方便記憶。域名是爲了方便訪問服務器。
2.域名需要DNS
服務器解析成IP
地址,如果沒有解析記錄,就沒有辦法通過域名訪問。
3.域名必須註冊,常用的是國際域名。比如:.com
、.net
,然後是國家域名.cn
、.com.cn
,另外還有很多其他的域名,比如.io
、.org ......
4.域名結構:域名.com,二級域名:www.域名.com,api.域名.com
5.本地測試,可以通過架設dns
服務器或者通過修改本地hosts
文件來模擬域名
6.apache
可以通過域名綁定多個虛擬主機
由於域名需要解析,所以比直接使用ip
要慢,因此,在我們服務器內部,儘量使用ip
,比如mysql
的連接,使用127.0.0.1
,要比localhost
要快。
比如下面的示例apache
配置:
<VirtualHost *:80>
DocumentRoot "/web/web1/" # 站點目錄
ServerName luxp.com # 站點域名
ServerAlias mypython.com # 站點別名
ErrorLog "/web/logs/web1-error_log" # 錯誤日誌
CustomLog "/web/logs/web1-access_log" common
</VirtualHost>
實操:
Step1
: 修改hosts
文件
vim /etc/hosts
添加如下圖的兩行內容:
按ESC
鍵,輸入:wq
,保存並退出。
Step2
: 修改服務端中的配置文件host2.conf
先拷貝一份配置文件
cp /etc/httpd/conf.d/host2.conf /etc/httpd/conf.d/host3.conf
修改host3.conf
這個文件爲如下內容:
<VirtualHost *:80>
DocumentRoot "/web/web1/" # 站點目錄
ServerName luxp.com # 站點域名
ServerAlias mypython.com # 站點別名
ErrorLog "/web/logs/web1-error_log" # 錯誤日誌
CustomLog "/web/logs/web1-access_log" common
</VirtualHost>
Step3
: 重啓apache
apachectl restart
在瀏覽器訪問http://luxp.com
和http://mypython.com
,出現如下結果,表示部署成功。
三、課程小結
- 01
apache httpd
:httpd
是apache
的進程。 - 02
web
配置:通過配置不同的文件,可以部署多個不同的網站。 - 03 進程控制:通過
apachectl
的命令,來控制apache
的啓動和重啓。