最近正在學習CentOS7服務器的相關內容,最近實現了Apache(httpd)的多域名的精簡配置方式,寫下來以免忘記。
系統環境:騰訊云CentOS 7.2 x64
apache運行相關命令
命令 | 功能 |
---|---|
sudo systemctl stop httpd | 停止Apache服務: |
sudo systemctl start httpd | 啟動 |
sudo systemctl restart httpd | 重新啟動Apache服務: |
sudo systemctl reload httpd | 在進行一些配置更改后重新加載Apache服務: |
sudo systemctl disable httpd | 禁用Apache服務以在啟動時啟動: |
sudo systemctl enable httpd | 并重新啟用它: |
卸載
命令 | 說明 | |
---|---|---|
rpm -qa | grep httpd 或者:yum list | grep httpd | 查看系統是否安裝過httpd服務 | |
rpm -qf /路徑/程序名 | rpm查詢方法 | |
systemctl stop httpd.service | 先停止服務 | |
ps -ef|grep httpd | 查看是否存在進程 | |
kill -QUIT 2072 | 殺死進程 或者kill -TERM 2132或 kill -INT 2132 | |
yum erase httpd.x86_64 | 卸載,需要點確認 就是y;rpm -e 或者yum -erase 命令都可以,不過rpm -e命名必須要自己先卸載依賴包 | |
rpm -pa | grep mysql | 查找 | 查找出安裝的mysql軟件包和依賴包: |
rpm -e xxxx.x86_64 | 刪除 rpm -e 軟件包名 | |
rpm -e --nodeps xxxx.x86_64 | 強制刪除 rpm -e --nodeps 軟件包名.x86_64 | |
whereis php | 查看應用安裝路徑 | |
which php | 查詢運行文件所在地址 | |
rm -rf php | 逐個刪除存留文件夾 |
一、Apache(httpd)安裝
安裝
yum install httpd
訪問測試
然后,我們用curl訪問下本地:
curl 127.0.0.1
設置自啟
systemctl enable httpd.service
二、軟件配置
編輯httpd.conf就夠了,httpd.conf在/etc/httpd/conf中
vim /etc/httpd/conf/httpd.conf
1、用#注釋掉以下兩行(其實如果不注釋,好像沒有什么影響)
#ServerName www.example.com
#DocumentRoot /var/www/html
2、開放目錄使用權限
在httpd.conf中寫入,引號中的路徑是自定義的開放訪問的路徑,其子目錄也開放使用。
如果不寫這個段落,網頁會被重定向到默認頁面,虛擬主機中的自定義路徑設置無效。
Directory里的東西必修要寫而且必須要與DocumentRoot一致,不寫就打不開。。。親測
<Directory "/home/www">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
3、寫入虛擬主機信息
①開啟虛擬主機并確定其監聽的主機名與端口,* 表示省略,80為網頁默認端口。
NameVirtualHost *:80
②寫入單個虛擬主機信息
ServerName —— 主機名(域名或公網IP)
ServerAlias —— 別名(二級域名或其他域名或IP)
DocumentRoot —— 文件目錄(表示將域名映射至該文件目錄)。
按照模版有幾個寫幾個,不知道有沒有上限。。。
虛擬主機的文件目錄必須在上述的開放訪問的目錄下,不然無法訪問。
模版:
<VirtualHost *:80>
ServerName XXX
ServerAlias XXX2
DocumentRoot /XXX
</VirtualHost>
三、完整過程
示例僅供參考,如有其他需要,請根據情況自行修改。
1、控制臺命令
yum install httpd
systemctl enable httpd.service
systemctl start httpd.service
vim /etc/httpd/conf/httpd.conf
2、httpd.conf修改(略去不用修改的部分)
(DocumentRoot)和(Directory) 必須設置一致。留一組即可。其他的按需配置
然后需要在這個目錄下創建一個index.html 入口文件
然后就可以訪問了
命令 curl 127.0.0.1
#ServerName www.example.com
#DocumentRoot /var/www/html //這個必須要改成和<Directory "/home/www">這里雙引號里的地址一樣
DocumentRoot "/home/www"
<Directory "/home/www">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.mywebsite1.com
DocumentRoot /home/www/htmla
</VirtualHost>
<VirtualHost *:80>
ServerName mywebsite1.com
DocumentRoot /home/www/htmlb
</VirtualHost>
<VirtualHost *:80>
ServerName www.mywebsite2.com
ServerAlias mywebsite2.com
DocumentRoot /home/www/htmlc
</VirtualHost>
卸載
首先,要確認下是否有安裝過,或者是系統自帶了httpd服務,通過以下命令:
# rpm -qa | grep httpd
或者:
# yum list | grep httpd
我已經安裝過一次了,所以我這邊會顯示如下:
然后我先來卸載我的httpd,首先要停止httpd服務,命令如下:
systemctl stop httpd.service
然后通過 rpm -e 或者yum -erase 命令都可以,不過rpm -e命名必須要自己先卸載依賴包,所以我用yum -erase命令卸載,命令如下:
yum erase httpd.x86_64
中間會問一下是否確認,y就可以了,直到出現Complete! 代表卸載完成了。
安裝
如果你想確認是否卸載干凈,可以用list命令列出已經安裝的查看下(卸載的第一步)。我們這里就不做這不操作了,我們直接用列出yum 倉庫里面的httpd項,命令如下:
yum list | grep httpd
然后,看到又可用項之后,我們輸入以下命令進行安裝:
yum install httpd
中間輸入次‘y’,也就安裝完成啦。
然后我們通過如下命令查看httpd的運行狀態:
systemctl status httpd.service
如果現實httpd沒有啟動的話,我們可以通過下面的命令啟動服務:
systemctl start httpd.service
默認的www目錄在/var/www/html/下面,所以我們寫入一個html文件,查看下怎么樣了,輸入一下命令創建一個包含hello world字符串的文件:
echo 'hello world' > /var/www/html/index.html
訪問測試
然后,我們用curl訪問下本地:
curl 127.0.0.1