开心六月综合激情婷婷|欧美精品成人动漫二区|国产中文字幕综合色|亚洲人在线成视频

    1. 
      
        <b id="zqfy3"><legend id="zqfy3"><fieldset id="zqfy3"></fieldset></legend></b>
          <ul id="zqfy3"></ul>
          <blockquote id="zqfy3"><strong id="zqfy3"><dfn id="zqfy3"></dfn></strong></blockquote>
          <blockquote id="zqfy3"><legend id="zqfy3"></legend></blockquote>
          打開APP
          userphoto
          未登錄

          開通VIP,暢享免費電子書等14項超值服

          開通VIP
          服務(wù)器重新部署踩坑記

          服務(wù)器重新部署踩坑記

          Intro

          之前的服務(wù)器是 Ubuntu 18.04 ,上周周末想升級一下服務(wù)器系統(tǒng),從 18.04 升級到 20.04,結(jié)果升級升掛了...
          后來 SSH 始終連不上,索性刪除重新部署了一個,新部署了一個 Centos 8 的系統(tǒng),新部署之后很多東西需要配置,折騰了好幾天,簡單記錄一下容易踩的坑。

          虛擬機配置

          Azure 上的服務(wù)器默認新建的時候需要配置網(wǎng)絡(luò)安全組(NSG),這次新建之后想著使用之前的網(wǎng)絡(luò)安全組配置,這樣就不需要再配置一下端口白名單了,結(jié)果這樣部署了之后,SSH 經(jīng)常超時,但是從內(nèi)網(wǎng)走的話會很快,沒有問題,使用 Azure Cloud Shell SSH 沒有超時的問題,從另外一個服務(wù)器上 SSH 也是正常的。
          后來刪除了,又重新建了一個,這次完全是新建的,沒有用之前的網(wǎng)絡(luò)安全組配置,這次 SSH 再沒有超時的問題了……

          新建的時候可以指定服務(wù)器要開放的端口,一般 22,80,443 先打開,SSH以及 web server 的端口先開放

          服務(wù)器新建完成后,修改 IP 地址,默認是動態(tài) IP,修改為靜態(tài) IP,這樣可以方便做 DNS 解析

          新建的服務(wù)器和之前的 IP 不一致,需要修改域名解析,將原來的域名解析配置修改為新的服務(wù)器的 IP

          有幾個應用使用的是云數(shù)據(jù)庫,需要修改數(shù)據(jù)庫服務(wù)器防火墻,把原來服務(wù)器的 IP 修改為新的服務(wù)器 IP 地址

          Nginx 配置

          使用 suo yum install nginx -y 來安裝 nginx,安裝完成之后可以通過上面配置的域名解析或者直接用 IP 地址在瀏覽器中訪問,應該可以看到 nginx 的默認頁面

          執(zhí)行 sudo systemctl enable nginx 來配置開機啟動

          安裝之后默認的配置是 /etc/nginx 目錄,默認的 nginx 配置修改 /etc/nginx/nginx.conf 文件,如果要新增配置可以添加在 /etc/nginx/conf.d 目錄下面

          修改默認的 nginx 配置,將默認站點轉(zhuǎn)發(fā)到后端服務(wù)中,修改 location 配置,添加 proxy_pass

          location / {
              proxy_pass http://172.18.0.2:31230;
          }
          

          添加了之后發(fā)現(xiàn)服務(wù)轉(zhuǎn)發(fā)有問題,后來終于在網(wǎng)上找了解決方案,原來默認 nginx 不能進行 Http 的轉(zhuǎn)發(fā),要轉(zhuǎn)發(fā)需要配置一下 selinux 的一個配置 httpd_can_network_connect

          可以參考:https://stackoverflow.com/questions/27435655/proxy-pass-isnt-working-when-selinux-is-enabled-why

          后來在配置 HTTPS 的時候讀取證書文件的時候出現(xiàn)了 Permission Denied 的情況,后來排查下來也是 SELinux 的問題,關(guān)掉 SELinux 之后就可以了,后來在網(wǎng)上看了看,很多人推薦直接關(guān)掉 SELinux,于是就索性直接把 SELinux 給關(guān)掉了。

          HTTPS 配置

          HTTPS 證書使用的是免費的 Let's Encrypt 的證書,使用 acme.sh 進行配置,安裝好 acme.sh,配置好 DNS 的 Access Key 執(zhí)行一行命令就可以了,而且還會生成一個 crontab 定時任務(wù)定期會更新證書(Let's Encrypt 免費證書默認 90 天內(nèi)有效)

          通過執(zhí)行 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
          

          執(zhí)行之后會看到類似下面這樣的截圖:

          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 配置

          SELinux(Security-Enhanced Linux) 是美國國家安全局(NSA)對于強制訪問控制的實現(xiàn),是 Linux歷史上最杰出的新安全子系統(tǒng)。但是配置起來很是繁瑣,很容易因為這個導致很多問題,浪費很多時間,所以還是直接關(guān)掉好了。

          SELinux 有三種狀態(tài),分別是:

          • Enforcing: 默認的配置,默認強制使用,發(fā)生權(quán)限問題的時候就直接報錯,阻止應用程序的執(zhí)行
          • Permissive:允許訪問,當出現(xiàn)權(quán)限問題的時候不會阻止應用程序的執(zhí)行,但是會記錄一條 Wanring 級別的日志
          • Disabled: 完全禁用,應用程序的執(zhí)行不會被 SELinux 所影響,也不會有任何日志

          通過 sestatus 可以查看 SELinux 當前的狀態(tài)

          如果要臨時修改 selinux 的狀態(tài)可以通過命令 sudo setenforce 0 禁用 selinux 或 sudo setenforce Permissive

          如果要永久性的修改 selinux 狀態(tài)需要修改配置文件 /etc/selinux/config

          Docker 配置

          參考 docker 官方文檔或者參考 Centos 安裝 docker

          需要注意的是,你可能會需要配置 docker group,把需要的用戶配置到 docker 這個用戶組里以免每次 docker ps 的時候都要使用管理員權(quán)限 sudo

          K8S 配置

          自己玩 k8s 的話推薦使用 kind 部署 k8s,我自己就是在使用 kind 部署 k8s,具體的安裝步驟可以參考之前的文章介紹

          https://www.cnblogs.com/weihanli/p/12831225.html

          之前的 kind 都會有一個問題,每次系統(tǒng)重啟或 docker daemon 重啟的時候會導致原來的創(chuàng)建的集群不可用,需要重新創(chuàng)建才可以,從 0.8 版本開始,kind 不再需要重新創(chuàng)建集群了,基于這個集群的資源部署也會自動重啟,無需再手動重新部署了,非常方便了

          SSR 配置

          SSR 的配置在 Github 上找了一個基于 docker 部署的,可以參考 https://github.com/winterssy/SSR-Docker

          開啟 BBR

          首先可以執(zhí)行 lsmod | grep bbr 命令,如果已經(jīng)有 bbr 則證明已經(jīng)開啟了 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
          

          執(zhí)行之后再執(zhí)行 lsmod | grep bbr 命令,如果已經(jīng)有 bbr 則證明已經(jīng)開啟了 BBR 加速

          安裝 docker-compose

          如果沒有安裝 docker-compose 可以執(zhí)行下面的命令來進行安裝

          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 到服務(wù)器上,如果沒有安裝 Git,可以 sudo yum install git -y 來安裝,之后 git clone https://github.com/winterssy/SSR-Docker.git

          克隆到本地之后可以根據(jù)自己需要修改 /etc/config.json 文件中的配置

          config.json 配置可以參考:https://github.com/winterssy/SSR-Docker/blob/f0439c232add3a4addbbce68f3c1be32464e0d18/etc/README.md

          可以根據(jù)需要修改 docker-compose 映射到本地的端口

          配置好之后執(zhí)行 docker-compose up -d 即可啟動 SSR 服務(wù),啟動之后在虛擬機對應的網(wǎng)絡(luò)安全組配置中開放需要的端口?

          More

          還有一些配置,腳本需要準備一下來部署服務(wù),索性大多數(shù)的服務(wù)我都是有 k8s deploy yaml 的,只是有些 configMap 里的數(shù)據(jù)要更新一下。
          整理一下放在服務(wù)器上,最后整理出一個 k8s 服務(wù)部署腳本

          如果出現(xiàn)了什么意外情況或者要重新部署 k8s 只要執(zhí)行一下這個腳本即可~

          其他服務(wù)的 Nginx 配置,需要新增服務(wù)配置的時候只要在 /etc/nginx/conf.d 目錄下增加對應服務(wù)的配置即可

          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;
              }
          }
          

          折騰的遇到最多的問題就是服務(wù)器 SSH 超時問題和 Nginx SELinux 的問題,以后再部署的時候服務(wù)器資源要完全新建,SELinux 要禁用

          Reference

          本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
          打開APP,閱讀全文并永久保存 查看更多類似文章
          猜你喜歡
          類似文章
          讓Docker實現(xiàn)自動化運維的專業(yè)方法
          Docker Compose的安裝和使用步驟
          CentOS下的Docker-Compose離線安裝
          docker
          Docker 部署前后端項目
          誰說前端不用懂,手摸手 Docker 從入門到實踐
          更多類似文章 >>
          生活服務(wù)
          分享 收藏 導長圖 關(guān)注 下載文章
          綁定賬號成功
          后續(xù)可登錄賬號暢享VIP特權(quán)!
          如果VIP功能使用有故障,
          可點擊這里聯(lián)系客服!

          聯(lián)系客服