通過搭建個人博客,我們可以自由的發(fā)表文章不用擔(dān)心下架,而且可以鍛煉個人的SEO優(yōu)化能力,不管是運維還是運營這塊對個人" />
時間:2023-02-03 14:24:01 | 來源:建站知識
時間:2023-02-03 14:24:01 來源:建站知識
# 下載配置文件到 /home/halo/.halo 目錄curl -o /home/halo/.halo/application.yaml --create-dirs https://dl.halo.run/config/application-template.yaml
修改配置文件,將數(shù)據(jù)庫調(diào)整為mysql,默認(rèn)是h2(可選)# 查看mysql容器的ip,mysql-prod替換成mysql容器名稱或者容器iddocker inspect --format='{{.NetworkSettings.IPAddress}}' mysql
修改后:# 拉取halo鏡像docker pull ruibaby/halo# 運行halo# -p 8090:8090 指定宿主機端口與容器端口映射,這里是將宿主機的8090映射到docker的8090# -v /home/halo/.halo:/root/.halo 掛載halo配置文件,我們在上一步下載了配置文件在宿主機的/home/halo/.halodocker run --rm -it -d --name halo -p 8090:8090 -v /home/halo/.halo:/root/.halo ruibaby/halo## 查看容器狀態(tài),確認(rèn)halo是否啟動成功,如果啟動失敗需要檢查下數(shù)據(jù)庫連接docker ps# 配置防火墻,注意,阿里云需要同時配置安全組8090端口# 開放8090端口firewall-cmd --permanent --add-port=8090/tcp#重啟防火墻(修改配置后要重啟防火墻)firewall-cmd --reload
正常情況應(yīng)該如下:# 下載nginx鏡像docker pull nginx# 啟動nginxdocker run -p 80:80 --name nginx -d nginx# 我們需要nginx使用我們自定義的配置,最方便的方法將nginx現(xiàn)在有的配置復(fù)制一份到宿主機目錄 /home/nginx docker container cp nginx:/etc/nginx /home/nginx# 移除我們剛創(chuàng)建的nginx,重新以宿主機配置目錄啟動docker stop nginxdocker rm nginx# 編輯 conf.d 下的default.conf 文件,默認(rèn)轉(zhuǎn)發(fā)到halo端口,ip地址為本機iplocation / { root /usr/share/nginx/html; index index.html index.htm;}改為,10.0.2.5 為本機ip,通過命令 ip addr 查看,端口是halo的端口: location / { proxy_pass http://10.0.2.5:8090; }# 重新創(chuàng)建nginxdocker run -p 80:80 --name nginx /-v /home/nginx/logs:/var/log/nginx /-v /home/nginx/nginx.conf:/etc/nginx/nginx.conf /-v /home/nginx/conf.d:/etc/nginx/conf.d /-d nginx# 配置防火墻,注意,阿里云需要同時配置安全組80端口# 開放80端口firewall-cmd --permanent --add-port=80/tcp#重啟防火墻(修改配置后要重啟防火墻)firewall-cmd --reload# 到這里,我們可以通過ip訪問halo了
到這一步如果不能使用ip直接訪問,首先確定halo啟動成功沒,然后查看nginx配置是否正確,最后再檢查防火墻和安全組。yum install git
# 安裝certbot,中間需要輸入y確認(rèn)yum install epel-releaseyum install certbot # 查看版本,如果安裝正常會顯示版本號certbot --version
# 配置防火墻,注意,阿里云需要同時配置安全組443端口# 開放443端口firewall-cmd --permanent --add-port=443/tcp#重啟防火墻(修改配置后要重啟防火墻)firewall-cmd --reload
重要提示:為避免遇到操作次數(shù)的限制,加入 dry-run 參數(shù),可以避免操作限制,等執(zhí)行無誤后,再進(jìn)行真實的 renew 操作# 申請證書,需要填入你的郵箱和域名, --dry-run 測試使用不會生成證書,我們先用這個命令看是否成功certbot certonly --email 你的郵箱@qq.com -d *.域名.cn -d 域名.cn --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory --dry-run# 如果沒有錯誤信息,去掉--dry-run真正生成證書certbot certonly --email 你的郵箱@qq.com -d *.域名.cn -d 域名.cn --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory# 手動續(xù)期certbot renew
安裝過程中,需要確認(rèn)選項,講一下手動安裝的重點:# 新建一個目標(biāo),拉取項目mkdir /home/certbotcd /home/certbotgit clone https://github.com/ywdblog/certbot-letencrypt-wildcardcertificates-alydns-aucd certbot-letencrypt-wildcardcertificates-alydns-auchmod 0777 au.sh# 編輯au.sh,加入我們上面申請的keyvi au.sh#填寫阿里云的AccessKey ID及AccessKey Secret#如何申請見https://help.aliyun.com/knowledge_detail/38738.htmlALY_KEY=""ALY_TOKEN=""# 運行命令,加上--dry-run 測試,如果沒問題去掉 --dry-run 執(zhí)行,腳本目錄就是我們上面創(chuàng)建的 /home/certbot/certbot-letencrypt-wildcardcertificates-alydns-aucertbot certonly -d *.yangwq.cn -d yangwq.cn --manual --preferred-challenges dns-01 --email 1075976874@qq.com --manual-auth-hook "/腳本目錄/au.sh python aly add" --manual-cleanup-hook "/腳本目錄/au.sh python aly clean" --dry-run;# 配置自動續(xù)期,使用crontab實現(xiàn)vi /etc/crontab# 加入以下命令,這個命令就是每周執(zhí)行一次腳本,如果需要續(xù)期就會自動更新0 0 * * 0 root certbot renew --manual --preferred-challenges dns --deploy-hook "docker restart nginx" --manual-auth-hook "/腳本目錄/au.sh python aly add" --manual-cleanup-hook "/腳本目錄/au.sh python aly clean" --manual-public-ip-logging-ok;
到這一步我們證書生成成功了,同樣存放在 /etc/letsencrypt/live/http://yangwq.cn/ 目錄,注意這里的文件是軟鏈接,我們實際上的文件在 etc/letsencrypt/archive/http://yangwq.cn 目錄# 編輯conf.d 下的default.confserver { listen 80 default; server_name yangwq.cn; # http自動轉(zhuǎn)https rewrite ^(.*)$ https://$host$1 permanent;}server { listen 443 ssl; server_name yangwq.cn; # 配置站點證書文件地址 ssl_certificate /etc/letsencrypt/archive/yangwq.cn/fullchain1.pem; # 配置證書私鑰 ssl_certificate_key /etc/letsencrypt/archive/yangwq.cn/privkey1.pem; # 配置服務(wù)器可使用的加密算法 ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; # 指定服務(wù)器密碼算法在優(yōu)先于客戶端密碼算法時,使用 SSLv3 和 TLS 協(xié)議 ssl_prefer_server_ciphers on; # ssl 版本 可用 SSLv2,SSLv3,TLSv1,TLSv1.1,TLSv1.2 # ie6 只支持 SSLv2,SSLv3 但是存在安全問題, 故不支持 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 配置 TLS 握手后生成的 session 緩存空間大小 1m 大約能存儲 4000 個 session ssl_session_cache shared:SSL:50m; # session 超時時間 ssl_session_timeout 1d; # 負(fù)載均衡時使用 此處暫時關(guān)閉 詳情見 https://imququ.com/post/optimize-tls-handshake.html # 1.5.9 及以上支持 ssl_session_tickets off; # 瀏覽器可能會在建立 TLS 連接時在線驗證證書有效性,從而阻塞 TLS 握手,拖慢整體速度。OCSP stapling 是一種優(yōu)化措施,服務(wù)端通過它可以在證書鏈中封裝證書頒發(fā)機構(gòu)的 OCSP(Online Certificate Status Protocol)響應(yīng),從而讓瀏覽器跳過在線查詢。服務(wù)端獲取 OCSP 一方面更快(因為服務(wù)端一般有更好的網(wǎng)絡(luò)環(huán)境),另一方面可以更好地緩存 以上內(nèi)容來自 https://imququ.com/post/my-nginx-conf-for-wpo.html # 1.3.7 及以上支持 ssl_stapling on; ssl_stapling_verify on; # 根證書 + 中間證書 ssl_trusted_certificate /etc/letsencrypt/archive/yangwq.cn/fullchain1.pem; # HSTS 可以告訴瀏覽器,在指定的 max-age 內(nèi),始終通過 HTTPS 訪問該域名。即使用戶自己輸入 HTTP 的地址,或者點擊了 HTTP 鏈接,瀏覽器也會在本地替換為 HTTPS 再發(fā)送請求 相關(guān)配置見 https://imququ.com/post/sth-about-switch-to-https.html add_header Strict-Transport-Security max-age=60; # 在此填寫原本 http 協(xié)議中的配置 location / { # 配置轉(zhuǎn)發(fā)到本機的halo端口,注意這里的ip應(yīng)該是機器的ip,不能使用127.0.0.1,使用ip addr 查看本機ip proxy_pass http://171.11.3.13:8080; } error_page 500 502 503 504 /50x.html; location = /50x.html { #重定向錯誤頁面到 /50x.html root /usr/share/nginx/html; }}
注意:將上面http://yangwq.cn相關(guān)的路徑換成你的域名路徑。注意proxy_pass的ip應(yīng)該是機器的ip,不能使用127.0.0.1,使用ip addr 查看本機ip。# 為了讓nginx能訪問到我們剛生成的證書,需要重新掛載證書路徑到nginxdocker stop nginxdocker rm nginx# 運行nginx,此處加入了443端口和證書路徑docker run -p 80:80 -p 443:443 --name nginx /-v /home/nginx/logs:/var/log//nginx /-v /home/nginx/nginx.conf:/etc/nginx/nginx.conf /-v /home/nginx/conf.d:/etc/nginx/conf.d /-v /etc/letsencrypt/archive/:/etc/letsencrypt/archive/ /-d nginx
此時我們就可以通過https域名訪問項目了,而且這個時候也可以新建二級域名訪問項目的(二級域名同樣是https)。作者:yangyqonly
鏈接:http://blog.csdn.net/a52233014/article/details/111087121
來源:csdn
關(guān)鍵詞:備案,證書,免費
微信公眾號
版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。