以前的服務器是 Ubuntu 18.04 ,上週週末想升級一下服務器系統,從 18.04 升級到 20.04,結果升級升掛了...
後來 SSH 始終連不上,索性刪除從新部署了一個,新部署了一個 Centos 8 的系統,新部署以後不少東西須要配置,折騰了好幾天,簡單記錄一下容易踩的坑。html
Azure 上的服務器默認新建的時候須要配置網絡安全組(NSG),此次新建以後想着使用以前的網絡安全組配置,這樣就不須要再配置一下端口白名單了,結果這樣部署了以後,SSH 常常超時,可是從內網走的話會很快,沒有問題,使用 Azure Cloud Shell SSH 沒有超時的問題,從另一個服務器上 SSH 也是正常的。
後來刪除了,又從新建了一個,此次徹底是新建的,沒有用以前的網絡安全組配置,此次 SSH 再沒有超時的問題了……linux
新建的時候能夠指定服務器要開放的端口,通常 22,80,443 先打開,SSH以及 web server 的端口先開放nginx
服務器新建完成後,修改 IP 地址,默認是動態 IP,修改成靜態 IP,這樣能夠方便作 DNS 解析git
新建的服務器和以前的 IP 不一致,須要修改域名解析,將原來的域名解析配置修改成新的服務器的 IPgithub
有幾個應用使用的是雲數據庫,須要修改數據庫服務器防火牆,把原來服務器的 IP 修改成新的服務器 IP 地址web
使用 suo yum install nginx -y
來安裝 nginx,安裝完成以後能夠經過上面配置的域名解析或者直接用 IP 地址在瀏覽器中訪問,應該能夠看到 nginx 的默認頁面docker
執行 sudo systemctl enable nginx
來配置開機啓動數據庫
安裝以後默認的配置是 /etc/nginx
目錄,默認的 nginx 配置修改 /etc/nginx/nginx.conf
文件,若是要新增配置能夠添加在 /etc/nginx/conf.d
目錄下面json
修改默認的 nginx 配置,將默認站點轉發到後端服務中,修改 location 配置,添加 proxy_pass
後端
location / { proxy_pass http://172.18.0.2:31230; }
添加了以後發現服務轉發有問題,後來終於在網上找了解決方案,原來默認 nginx 不能進行 Http 的轉發,要轉發須要配置一下 selinux 的一個配置 httpd_can_network_connect
能夠參考:https://stackoverflow.com/questions/27435655/proxy-pass-isnt-working-when-selinux-is-enabled-why
後來在配置 HTTPS 的時候讀取證書文件的時候出現了 Permission Denied 的狀況,後來排查下來也是 SELinux 的問題,關掉 SELinux 以後就能夠了,後來在網上看了看,不少人推薦直接關掉 SELinux,因而就索性直接把 SELinux 給關掉了。
HTTPS 證書使用的是免費的 Let's Encrypt 的證書,使用 acme.sh 進行配置,安裝好 acme.sh,配置好 DNS 的 Access Key 執行一行命令就能夠了,並且還會生成一個 crontab 定時任務按期會更新證書(Let's Encrypt 免費證書默認 90 天內有效)
經過執行 curl https://get.acme.sh | sh
來安裝 acme.sh
安裝成功以後配置 DNS 的配置,個人域名在阿里雲上,從阿里雲生成 AccessKey 來更新域名配置,會添加或更新一個 _acme-challenge
的域名解析記錄
個人域名在阿里雲上,就以阿里云爲例子,將下面的 Key 和 Secret 替換成本身實際的 Key 和 Secret
export Ali_Key="111111" export Ali_Secret="222222"
申請泛域名證書,泛域名證書須要指定兩個 domain,以下面的示例:
acme.sh --issue --dns dns_ali -d *.weihanli.xyz -d weihanli.xyz
執行以後會看到相似下面這樣的截圖:
Nginx 配置:
listen 443 ssl default_server; listen [::]:443 ssl default_server; ssl_certificate /home/liweihan/.acme.sh/*.weihanli.xyz/*.weihanli.xyz.cer; ssl_certificate_key /home/liweihan/.acme.sh/*.weihanli.xyz/*.weihanli.xyz.key; if ($scheme = http) { return 301 https://$host$request_uri; }
SELinux(Security-Enhanced Linux) 是美國國家安全局(NSA)對於強制訪問控制的實現,是 Linux歷史上最傑出的新安全子系統。可是配置起來非常繁瑣,很容易由於這個致使不少問題,浪費不少時間,因此仍是直接關掉好了。
SELinux 有三種狀態,分別是:
經過 sestatus
能夠查看 SELinux 當前的狀態
若是要臨時修改 selinux 的狀態能夠經過命令 sudo setenforce 0
禁用 selinux 或 sudo setenforce Permissive
若是要永久性的修改 selinux 狀態須要修改配置文件 /etc/selinux/config
參考 docker 官方文檔或者參考 Centos 安裝 docker
須要注意的是,你可能會須要配置 docker group,把須要的用戶配置到 docker 這個用戶組裏以避免每次 docker ps
的時候都要使用管理員權限 sudo
本身玩 k8s 的話推薦使用 kind 部署 k8s,我本身就是在使用 kind 部署 k8s,具體的安裝步驟能夠參考以前的文章介紹
http://www.javashuo.com/article/p-ecedhxjz-bz.html
以前的 kind 都會有一個問題,每次系統重啓或 docker daemon 重啓的時候會致使原來的建立的集羣不可用,須要從新建立才能夠,從 0.8 版本開始,kind 再也不須要從新建立集羣了,基於這個集羣的資源部署也會自動重啓,無需再手動從新部署了,很是方便了
SSR 的配置在 Github 上找了一個基於 docker 部署的,能夠參考 https://github.com/winterssy/SSR-Docker
首先能夠執行 lsmod | grep bbr
命令,若是已經有 bbr 則證實已經開啓了 BBR 加速,若是沒有進行下面的配置
sudo echo "net.core.default_qdisc=fq" | sudo tee --append /etc/sysctl.conf sudo echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee --append /etc/sysctl.conf sudo sysctl -p
執行以後再執行 lsmod | grep bbr
命令,若是已經有 bbr 則證實已經開啓了 BBR 加速
若是沒有安裝 docker-compose 能夠執行下面的命令來進行安裝
compose_version=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d\" -f4) sudo curl -L "https://github.com/docker/compose/releases/download/${compose_version}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
能夠將項目 clone 到服務器上,若是沒有安裝 Git,能夠 sudo yum install git -y
來安裝,以後 git clone https://github.com/winterssy/SSR-Docker.git
克隆到本地以後能夠根據本身須要修改 /etc/config.json
文件中的配置
config.json
配置能夠參考:https://github.com/winterssy/SSR-Docker/blob/f0439c232add3a4addbbce68f3c1be32464e0d18/etc/README.md
能夠根據須要修改 docker-compose 映射到本地的端口
配置好以後執行 docker-compose up -d
便可啓動 SSR 服務,啓動以後在虛擬機對應的網絡安全組配置中開放須要的端口
還有一些配置,腳本須要準備一下來部署服務,索性大多數的服務我都是有 k8s deploy yaml 的,只是有些 configMap 裏的數據要更新一下。
整理一下放在服務器上,最後整理出一個 k8s 服務部署腳本
若是出現了什麼意外狀況或者要從新部署 k8s 只要執行一下這個腳本便可~
其餘服務的 Nginx 配置,須要新增服務配置的時候只要在 /etc/nginx/conf.d
目錄下增長對應服務的配置便可
server { listen 443; server_name sparktodo.weihanli.xyz; location / { proxy_pass http://172.18.0.2:31256; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
折騰的遇到最多的問題就是服務器 SSH 超時問題和 Nginx SELinux 的問題,之後再部署的時候服務器資源要徹底新建,SELinux 要禁用