一、前提條件
在開始安裝之前,要確保你以 sudo 權(quán)限用戶身份登錄。
二、安裝 Apache
Apache 被包含在默認的 Ubuntu 軟件源中。
安裝非常直接。在 Ubuntu 和 Debian 系統(tǒng)中,Apache 軟件包和服務被稱為?apache2
。
運行下面的命令來更新軟件包索引,并且安裝 Apache:
sudo apt update
sudo apt install apache2
當安裝過程完成,Apache 服務將會被自動啟動。
你可以通過輸入下面的命令,驗證 Apache 是否正在運行:
sudo systemctl status apache2
輸出將會告訴你,服務正在運行,并且啟動了開機啟動。
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2020-05-09 19:28:40 UTC; 36min ago
...
就這些,你已經(jīng)成功地在你的 Ubuntu 20.04上安裝了 Apache,你可以開始使用它了。
三、打開 HTTP 和 HTTPS 端口
Apache 監(jiān)聽了端口80
(HTTP)和443
(HTTPS)。你需要在防火墻打開那些端口,以便網(wǎng)站服務器從互聯(lián)網(wǎng)上是可以訪問的。
假設(shè)你正在使用UFW
,你可以通過啟用Apache Full
配置,它包含了這兩個端口的規(guī)則:
sudo ufw allow 'Apache Full'
驗證改變:
sudo ufw status
輸出如下:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
Apache Full ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
Apache Full (v6) ALLOW Anywhere (v6)
四、驗證 Apache 安裝
想要驗證一切都順利工作,打開你的瀏覽器,輸入服務器 IP 地址http://YOUR_IP_OR_DOMAIN/
,你可以看到默認的 Ubuntu 20.04 Apache 歡迎頁面,如圖所示:
以下非必要設(shè)置
五、設(shè)置一個虛擬主機
一個虛擬主機,是一個 Apache 配置指令,它允許你在一個服務器上運行多個網(wǎng)站。典型的例子,一個虛擬主機描述了一個網(wǎng)站。
Apache 默認啟動了一個虛擬主機。所有域名都指向服務器 IP 地址,匹配了默認的虛擬主機。如果你只托管一個簡單的網(wǎng)站,你需要將網(wǎng)站內(nèi)容上傳到/var/www/html
,并且編輯虛擬主機配置,/etc/apache2/sites-enabled/000-default.conf
文件。
如果你想托管更多網(wǎng)站,你需要為每一個網(wǎng)站創(chuàng)建一個虛擬主機配置。在這一節(jié),我們將會為一個域名"example.com"設(shè)置網(wǎng)站。你可能需要將"example.com"替換成你自己的域名。
第一步就是創(chuàng)建根目錄文件夾,域名的網(wǎng)站文件將會被存放在這里并且響應用戶請求。運行下面的命令,創(chuàng)建文件夾:
sudo mkdir -p /var/www/example.com
為了測試,在域名根文件夾下創(chuàng)建一個index.html
文件:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Welcome to example.com</title>
</head>
<body>
<h1>Success! example.com home page!</h1>
</body>
</html>
創(chuàng)建完成后,保存并且退出。
如果想要避免權(quán)限問題,可以修改域名根文件夾的用戶歸屬為apache 用戶(www-data
):
sudo chown -R www-data: /var/www/example.com
接下來就是為域名“example.com”創(chuàng)建一個虛擬主機配置。最佳實踐就是將每一個虛擬主機配置存儲成一個獨立的文件。
Apache虛擬主機配置文件存儲在/etc/apache2/sites-available
目錄。標準命名是使用域名來命名配置文件。
打開你的文本編輯器,并且創(chuàng)建如下文件/etc/apache2/sites-available/example.com.conf
:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin webmaster@example.com
DocumentRoot /var/www/example.com/public_html
<Directory /var/www/example.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>
Apache 不會讀取/etc/apache2/sites-available
文件夾下的配置文件,除非它們被鏈接到/etc/apache2/sites-enabled
文件夾。
想要激活虛擬主機配置,使用a2ensite
創(chuàng)建一個鏈接:
sudo a2ensite example.com
測試配置文件,是否有任何語法錯誤:
sudo apachectl configtest
如果沒有任何錯誤,你將會看到下面的輸出:
Syntax OK
重啟 Apache 服務,使修改生效:
sudo systemctl restart apache2
以下開始配置SSL
1.證書準備,上傳到服務器,建議在apache2目錄下建立ssl目錄來放置證書文件
2. 配置證書
在這里,我假設(shè)你已經(jīng)會配置基本的/etc/apache2/sites-available/000-default.conf這個文件來達到已經(jīng)可以通過 http 的方式來訪問你的站點。
在/etc/apache2這個目錄下,有兩個有關(guān)的目錄sites-available和sites-enabled,我們進入sites-enabled目錄下可以發(fā)現(xiàn),里面有一個文件000-default.conf
$ ll
lrwxrwxrwx 1 root root 35 Dec 28 15:24 000-default.conf -> ../sites-available/000-default.conf
實質(zhì)上這個文件是/etc/apache2/sites-available/000-default.conf這個文件的軟鏈接。
我們要配置另 ssl 證書,要依靠另一個文件,也就是default-ssl.conf,首先我們需要設(shè)置一個軟鏈接,把這個文件鏈接到sites-enabled這個文件夾中:
ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/000-default-ssl.conf
然后去修改這個文件000-default-ssl.conf,因為已經(jīng)做了軟鏈接,其實這時候修改000-default-ssl.conf或default-ssl.conf都一樣。
這個文件沒有做任何修改前長這樣子(去除自帶的注釋之后):
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
然后把從阿里云上面下載好的證書(3個文件)傳到你自定義的目錄中
然后我們需要修改一下,修改成這樣:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin 你的郵箱
DocumentRoot /var/www/你的目錄
ServerName 你的域名
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
# 注意,需要添加這三行
SSLCertificateFile 你自定義的路徑/2_xxx.xxx.xxx.crt
SSLCertificateKeyFile 你自定義的路徑/3_xxx.xxx.xxx.key
SSLCertificateChainFile 你自定義的路徑/1_root_bundle.crt
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
重要的三個參數(shù)的作用如下表:
配置文件參數(shù) | 說明 |
---|---|
SSLEngine on | 啟用 SSL 功能 |
SSLCertificateFile | 證書文件 |
SSLCertificateKeyFile | 私鑰文件 |
SSLCertificateChainFile | 證書鏈文件 |
改好之后保存。
然后這時,我們加載一下 Apache2 的 SSL 模塊:
sudo a2enmod ssl #加載模塊
sudo service apache2 restart # 重啟服務
這時,在瀏覽器輸入https://你的域名應該已經(jīng)可以通過 https 的方式來訪問網(wǎng)站了,這時瀏覽器那里應該也已經(jīng)有了一個綠色的小鎖。
但是,但是…這還不夠,因為我們?nèi)绻恢鲃虞斎雋ttps://的話,直接輸入域名,還是會直接跳轉(zhuǎn)到 80 端口的普通的 http 方式訪問,所以我們需要強制使用 https 來訪問
強制使用https
我們只需要打開/etc/apache2/sites-available/000-default.conf這個文件,在你的這個標簽內(nèi)隨便一個地方加上三行:
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]
然后保存,然后啟動 Apache2 的重定向:
sudo a2enmod rewrite
然后再重啟 Apache2,至此大功告成:文章來源:http://www.zghlxwxcb.cn/news/detail-406179.html
sudo service apache2 restart
然后,打開瀏覽器直接輸入域名,就會自動跳轉(zhuǎn)到 https 的方式。文章來源地址http://www.zghlxwxcb.cn/news/detail-406179.html
到了這里,關(guān)于ubuntu apache2 安裝和配置安裝ssl證書的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!