35

RHEL/CentOS 離線安裝 Nginx rpm

 3 years ago
source link: https://blog.darkthread.net/blog/offline-install-nginx-on-linux/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
RHEL/CentOS 離線安裝 Nginx rpm-黑暗執行緒

接到指令要安裝一台 Nginx 當 Reverse Proxy。依過去幾次經驗估計是件簡單任務,應可在半小時內搞定。基本上就是照著(How to install and use Nginx on CentOS 7 / RHEL 7)的步驟,再依先前筆記在 /etc/nginx/conf.d 加入一個 my-web1.conf:

server {
    listen        80;
    location / {
        proxy_pass         http://remote-server:5000;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

有別於過去自己玩是用 CentOS,這回要安裝的 Linux 版本是 RHEL,但問題不大,CentOS 是移除 RedHat 商標的 RHEL,本質相同。但另一個限制就讓缺乏經驗的 Linux 麻瓜狠摔一跤,難度由接小孩提高成進火場救人,工時也從 30 分鐘暴增到 3 小時。受限網路政策,要裝 Nginx 的 Linux 主機無法連上網際網路,yum install nginx 一行搞定安裝的如意算盤被砸個粉碎!

第一次遇到離線安裝 rpm 挑戰,摸索一陣子才找到解法,筆記如下:

  1. 找一台可上網的 CentOS 或 RHEL,使用指令 sudo yum nginx -y --downloadonly --downloaddir=/tmp/nginx
    Fig1_637080419151429139.png
    yum 會將相依套件一次下載到本機指定目錄。
  2. 使用 tar zcvf nginx.tgz /tmp/nginx 打包上傳到目的主機解開
  3. sudo yum localinstall nginx-1.16.1-1.el7.x86_64.rpm 即可安裝,但我遇到很麻煩的套件相依問題:安裝 nginx 前需先裝 nginx-all-modules,要裝 nginx-all-modules 則需要先裝 nginx-mod-stream,要裝 nginx-mod-stream 卻要求得先裝好 nginx。登楞! 出現迴圈,無解。
  4. yum 有 --exclude=packageName 、--skip-broken 兩個與相依性有關的參數可用,但實測都無法忽略缺少相依套件錯誤。
  5. 查到 rpm -ivh --nodeps --force nginx-1.16.1-1.el7.x86_64.rpm 可以無視依賴關係強迫安裝。參考

最後我寫了批次檔,對下載回來的每個套件都跑一次 rpm -ivh --nodeps --force,總算裝好 Nginx,感動!

折騰半天,收獲是再累積一些冷門經驗。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK