其他Posted on 2023-12-11
摘要 : ubuntu 20.04 版本
需要先设置好 80 端口的站点指向(/etc/apache2/sites-available/000-default.conf)
❱ 先设置好 80 端口的站点指向
sudo nano /etc/apache2/sites-available/000-default.conf
添加一下代码,修改正确网址:
<VirtualHost *:80>
ServerName YOURWEBSITE.com
ServerAlias www.YOURWEBSITE.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/YOURWEBSITE_PATH
</VirtualHost>
如果希望 http 自动跳转到 https,可以修改为:
<VirtualHost *:80>
ServerName YOURWEBSITE.com
ServerAlias www.YOURWEBSITE
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/YOURWEBSITE_PATH
RewriteEngine on
RewriteCond %{SERVER_NAME} =YOURWEBSITE.com [OR]
RewriteCond %{SERVER_NAME} =www.YOURWEBSITE.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
❱ 启动三个模块
sudo a2enmod http2
sudo a2enmod ssl
sudo a2enmod rewrite // 这样才能让 http自动切换成 https
❱ 重启 Apache
看看设置有没有问题
sudo service apache2 restart
sudo systemctl status apache2.service // 查看 apache2 的状态
❱ 开始从 Let’s Encrypt 获得证书
参考:
https://certbot.eff.org/lets-encrypt/ubuntufocal-apache❱ ubuntu 20.04 已经有 snap了,所以直接用 snap 来安装
sudo snap install core; sudo snap refresh core
❱ 安装 certbot机器人
sudo snap install --classic certbot
❱ 生成证书后,手动配置
sudo certbot certonly --apache
期间会要求输入邮箱、询问是否同意(同意),选择部分(或全部)站点域名,等待即可。
❱ 手动配置default-ssl.conf 并启用
sudo nano /etc/apache2/sites-available/default-ssl.conf
添加:
<ifModule mod_ssl.c>
<VirtualHost *:443>
ServerName YOURWEBSITE.com
ServerAlias www.YOURWEBSITE.com
SSLEngine on
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/YOURWEBSITE_PATH
# Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/YOURWEBSITE.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/YOURWEBSITE.com/privkey.pem
</VirtualHost>
</ifModule>
❱ 把default-ssl.conf 启用 (不启用 a2dissite)
sudo a2ensite default-ssl
❱ 查看自动更新是否成功
sudo certbot renew --dry-run
❱ 重启 Apache
看看设置有没有问题
sudo service apache2 restart
sudo systemctl status apache2.service // 查看 apache2 的状态
❱ 其他命令
// 证书更新命令 ,一般不需要,因为有定时更新了
sudo certbot renew
// 强制更新
sudo certbot renew --force-renew
// 单独申请证书。(可以额外申请)
sudo certbot certonly
// 单独删除某个证书。(一个服务器可以有多个证书)
sudo certbot delete
❱ 安装证书后apache出错退出的解决办法
创建以下文件:
sudo nano /etc/apache2/conf-available/mutex-file.conf
添加一下内容在新创建的文件中
Mutex file:${APACHE_LOCK_DIR} default
保存文件后,再执行:
sudo a2enconf mutex-file // 启用新的配置文件
sudo systemctl restart apache2 //重新启动 Apache