環境準備
站點伺服器:Debian 11
個人PC:Vscode , nodejs , git , xshell遠端工具
這裡的站點伺服器可以是雲伺服器,也可以實體機子,我這裡使用家裡的NAS-unraid開了一臺Debian11虛擬機器,虛擬機器用任意linux發行最新版本均可。
因為某些原因需要去熟悉Debian,發現在Debian系統上編輯文件有點困難 Debian系統vi把我方向鍵吃了q.q,還是習慣redhat,nas雖然能vnc但是總是不穩定,所以unraid設定虛擬機器網路橋接後,直接用遠端工具+本地文件編寫+git版本管理同步進行搭建。
搭建開始
初步想法就是,基於hexo用靜態頁面做個人部落格站點,hexo有些主題挺貼我的喜好。
快速搭建hexo站點
遠端到Debian後,安裝git,nodejs,然後使用npm安裝hexo,這裡選擇全域性安裝,方便除錯
$ npm install -g hexo-cli
建立一個站點目錄,進行初始化
$ mkdir -p /home/hexo
$ hexo init /home/hexo/demo
$ cd /home/hexo/demo
$ npm install
在站點的根目錄下配置站點的基本資訊,一般只要去編輯# Site
和# URL
兩個部分,其他部分保持預設即可
$ vi /home/hexo/demo/_config.yml
配置好_config.yml
檔案後,直接啟動hexo服務把站點啟動,記得目錄保持在hexo初始化的根目錄。
$ hexo server
#INFO Validating config
#INFO Start processing
#INFO Hexo is running at http://localhost:4000/ . Press Ctrl+C to stop.
當無ERROR日誌則說明順利啟動,並且預設監聽在4000埠上,直接訪問該頁面,站點將按官方預設主題啟動,不過講真預設主題已經蠻好看的了。
Ngnix配置HTTPS
不難發現,雖然站點起來了,但是發現只能用http訪問,使用https卻訪問不了。
經過一段時間的百度,考慮採用ngnix做代理轉發,將http轉成https。首先需要先安裝ngnix,apt安裝理論上是可行的,因為本地編譯安裝沒嘗試過,找了個帖子跟著做試試。
先下載ngnix最新原始檔包,apt安裝必要的編譯工具。
$ apt install -y build-essential libpcre3 libpcre3-dev openssl zlib1g-dev libssl-dev
# 下載原始碼
$ wget http://nginx.org/download/nginx-1.20.2.tar.gz
# 解壓並準備編譯
$ tar -xf nginx-1.20.2.tar.gz
$ cd nginx-1.20.2
# 參考帖子的編譯引數指令碼,其中:
#--prefix:Nginx主要安裝路徑,後續Nginx子目錄依照這個變數展開
#--user:設定Nginx程序啟動時,所屬的使用者
#--group:設定Nginx程序啟動時,所屬的使用者組
$ ./configure \
--prefix=/usr/local/nginx \
--user=www \
--group=www \
--sbin-path=/usr/local/nginx/sbin/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--with-file-aio \
--with-threads \
--with-http_addition_module \
--with-http_auth_request_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_mp4_module \
--with-http_random_index_module \
--with-http_realip_module \
--with-http_secure_link_module \
--with-http_slice_module \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_sub_module \
--with-http_v2_module \
--with-mail \
--with-mail_ssl_module \
--with-stream \
--with-stream_realip_module \
--with-stream_ssl_module \
--with-stream_ssl_preread_module
輸入配置命令後,如果按如下提示說明無誤,可以進行編譯
Configuration summary
+ using threads
+ using system PCRE library
+ using system OpenSSL library
+ using system zlib library
nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/nginx/sbin/nginx"
nginx modules path: "/usr/local/nginx/modules"
nginx configuration prefix: "/usr/local/nginx"
nginx configuration file: "/usr/local/nginx/nginx.conf"
nginx pid file: "/var/run/nginx.pid"
nginx error log file: "/var/log/nginx/error.log"
nginx http access log file: "/var/log/nginx/access.log"
nginx http client request body temporary files: "/var/cache/nginx/client_temp"
nginx http proxy temporary files: "/var/cache/nginx/proxy_temp"
nginx http fastcgi temporary files: "/var/cache/nginx/fastcgi_temp"
nginx http uwsgi temporary files: "/var/cache/nginx/uwsgi_temp"
nginx http scgi temporary files: "/var/cache/nginx/scgi_temp"
$ make
編譯順利直接安裝,然後建立systemctl守護服務
$ make install
$ vi /usr/lib/systemd/system/nginx.service
按如下內容填寫
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
這樣一來,那麼ngnix服務就已經安裝好了,需要注意如下資訊
/usr/local/nginx:為Nginx編譯安裝的地址。
/usr/local/nginx/nginx.conf:Nginx預設配置檔案。
使用systemctl對Nginx進行管理:
啟動Nginx服務:systemctl start nginx
。
過載Nginx配置:systemctl reload nginx
。
停止Nginx服務:systemctl stop nginx
。
與systemctl相關的擴充可參考這篇教程:《Linux系統服務神器:systemctl的配置與使用》
接著開始編寫配置檔案vi /usr/local/nginx/nginx.conf
,前面部分內容不需要修改,主要將配置檔案最後關於https的部分取消註釋並按如下內容填寫
# http 80埠可以直接註釋掉,本專案暫時用不到
# 注意縮排格式
# HTTPS server
#
server {
listen 443 ssl;
# 可填寫域名或者ip地址
server_name xxx.xxx.xxx.xxx;
# ssl檔案目錄,圖方便直接丟/etc/nginx目錄
ssl_certificate /etc/nginx/server.crt;
ssl_certificate_key /etc/nginx/server.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# 這裡為站點的資源目錄,hexo靜態檔案存放在hexo專案根目錄xxx/public中
root /xxx/xxx/public;
# 這裡填寫根目錄,如果hexo上沒有設定子目錄就按預設填寫/即可,如果有設定就填寫/子目錄名/,proxy_pass位置同理
location / {
index index.html index.htm;
proxy_pass http://xxx.xxx.xxx.xxx:4000/;
}
}
剛剛配置檔案中我們填寫了ssl檔案,直接過載nginx配置會直接報錯,我們需要先準備ssl檔案並放到配置的目錄中。
正常站點是需要進行站點備案、申請域名,然後再填寫資訊去申請ssl證書。
考慮到目前搭建的只是區域網內使用的,不對外開放,也沒有申請域名,直接使用自籤SSL證書
ps:雖然對外訪問的站點也可以使用自簽證書,但因為自簽證書安全性不高不推薦使用,僅限除錯測試使用。
生成rsa私鑰,使用des3演算法,2048位,私鑰檔案儲存為server.key
$ openssl genrsa -des3 -out server.key 2048
接下來生成CSR(證書籤名請求),執行該語句後會要求依次輸入國家,地區,城市,組織,組織單位,Common Name和Email等資訊反正是假的,無腦回車按預設值就行
$ openssl req -new -key server.key -out server.csr
最後生成自簽名證書,輸出自簽證書server.crt
$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
將兩個檔案放到配置檔案填寫的目錄,過載ngnix配置檔案
$ systemctl reload ngnix
然後直接訪問https://站點/
,除了瀏覽器會提示告警外,已經可以使用https進行訪問了。
最後編輯時間 2023/02/26 01:26
References:
- ngnix安裝
Debian上編譯安裝Nginx:https://www.gxlsystem.com/yunwei-33237.html
debian11編譯安裝nginx最新穩定版1.22.1https://www.rezhuji.com/os/debian11/build/how_to_make_install_nginx_on_debian11.html
Debian apt安裝nginx並配置反向代理:https://pangruitao.com/post/2106 - 反向代理與延伸
Nginx透過location反向代理網站找不到CSS,JS及圖片問題解決方案:https://blog.csdn.net/chengliang666/article/details/126230750
nginx 配置多個server與多個location:https://blog.csdn.net/GDKbb/article/details/124398453
Nginx常見場景代理轉發配置:https://blog.csdn.net/faye0412/article/details/75200607/ - hexo站點搭建
Hexo官方文件:https://hexo.io/zh-cn/docs/
Hexo-Redefine主題文件:https://redefine-docs.ohevan.com/docs/intro
Hexo新增分類及標籤:https://juejin.cn/post/6844903830216261645
Redefine作者站點搭建分享:https://ohevan.com/vercel-hexo-configuration.html