bestlong 怕失憶筆記

當健忘由隨機逐漸趨向常態時,作筆記是非常必要的

Entries for the ‘Linux’ Category

docker: invalid restart policy unless-stopped.

在執行 docker run 啟動容器有使用到 –restart=unless-stopped 參數,結果得到 docker: invalid restart policy unless-stopped. 的錯誤訊息。

請先用 docker version 確認版本,因為 unless stopped restart policy 是到 1.9.0 版才新加入。舊版 docker 環境可以改回用 always policy 繞過問題。

Leave a Comment

主機搬家到 VPS (DigitalOcean)

隨著地球越來越熱,而常年來放在家中的 Linux 主機不斷的熱力四射,總和攻擊能量已經累積到令人無法忽視的地步,開冷氣進行反攻可是會影響口袋的深度。

換新的電腦應該可以改善,但硬體成本起碼要數千元還要再加上 24H 不關機的每月電費起碼 NTD 三百起跳,再說有實體機器還是會有熱度,想一想還是決定租主機吧。因為在此主機上跑很多種系統與服務,所以需要找 VPS 才能擁有完整的管理權。

網路上很多專業部落客都建議使用 Linode 每月 $10 USD 起價。如果想要更低價的話還有另一個不錯的選擇就是 DigitalOcean 每月 $5 USD 起價,不過相對的規格就會小一些。實際的差異請參考官網,兩家都可以用小時計費。

因為是小站,所以就衝著 512MB RAM / 20GB SSD 每個月只要 5 USD 這麼便宜的特色,就先來用看看。可惜的是 DigitalOcean 沒提供試用時間,但是可以在網路上找一下優惠碼取得一定的使用金額來補償一下,要注意的是一個賬戶只有使用一次優惠碼的機會,我只有找到 10 美金的,所以各位就想辦法找到金額最高的就是了。

申請帳戶基本上就是完成註冊驗證流程提供身份資料與設定付款方式,付款可以用信用卡與 Paypal 兩種,不過有一個重點就是因為 DigitalOcean 目前的服務條款是不退款的,所以用 Paypal 預付時請注意一下。

再來就是要新增虛擬主機了,在 DigitalOcean 稱為 Droplet (水滴) 應該是與公司名稱相關,因為大海是由水滴所累積而成的,可見其雄心壯志。

建立新主機可依下列圖示依序操作,點擊 Create 後輸入主機名稱然後選擇虛擬主機規格

digitalocean - create droplet part 1

然後選擇要放在哪個機房

digitalocean - create droplet part 2

接著就是選擇要安裝何種系統,也可以選擇套裝系統安裝,或從備份擋來還原成新主機

digitalocean - create droplet part 3

digitalocean - create droplet part 4

最後就是點選 Create Droplet 然後系統就會開始依選擇的條件開始建立虛擬主機

digitalocean - create droplet part 5

整個建立過程不到 5 分鐘,完成後系統會寄 mail 通知告知新主機的 ip 位址與 root 密碼,透過 ssh 連線首次登入就是修改密碼。

可以先嘗試一下重開機感受一下令很多人驚訝的速度,大概就 5 秒內就可以再次登入了,真的非常的快。

自己的 VPS 主機是選擇新加坡機房與 DigitalOcean 特調的 Ubuntu 14.04 x64 作業系統版本,剛開始只移轉 blog 過去,也碰到一些狀況,例如:網站會忽然無法連線,用 ssh 登入回應超級慢…等問題,都一一排除之後又陸續移轉其他服務,至今已上線快兩個月算是調整到可以穩定運作了,網頁回應的速度也比以往更順暢,也不必擔心停電或設備老舊故障等瑣碎事項,也算是資訊委外一種模式。

如果各位也想試用的話可以透過我的推薦連結去申請,可以讓我有機會加減省一些費用。

Leave a Comment

Nginx 502 Bad Gateway 錯誤 connect() to unix:/var/run/php5-fpm.sock failed (13: Permission denied)

進行 Ubuntu 14.04 apt-get upgrade 更新過程中有提示確認而將 www.conf 更新異動,然後網站就掛了。

檢視 /var/log/apt/history.log 確認相關版本變動 php5-fpm:amd64 (5.5.9+dfsg-1ubuntu4, 5.5.9+dfsg-1ubuntu4.1)

接著檢查 nginx/error.log 內容看到

2014/06/24 18:41:49 [crit] 2080#0: *1 connect() to unix:/var/run/php5-fpm.sock failed (13: Permission denied) while connecting to upstream, client: xxx.xxx.xxx.xxx, server: localhost, request: “GET / HTTP/1.1”, upstream: “fastcgi://unix:/var/run/php5-fpm.sock:”, host: “blog.bestlong.idv.tw”

比對 /etc/php5/fpm/pool.d/www.conf 與 www.conf.dpkg-old 發現預設被註解的參數 ;listen.mode = 0666 被改成 ;listen.mode = 0660
而且在 php5-fpm 啟動的狀態下去檢查 /var/run/php5-fpm.sock 的 owner 是 root 而權限也真的變成 0660 了,造成 Nginx 沒有足夠的權限透過 php5-fpm.sock 來與 php5-fpm 通訊,這樣的改變應該是為了提升安全性。

想要解決可以改成用 tcp 方式通訊或者調整設定,不過可別考慮直接將權限調回 0666 那可就退步了。

因為 nginx 與 php5-fpmp 的執行身分都是 www-data 所以可以修改 /etc/php5/fpm/pool.d/www.conf 的內容,將下列三行開頭註解符號 ; 給移除

;listen.owner = www-data
;listen.group = www-data
;listen.mode = 0660

變成

listen.owner = www-data
listen.group = www-data
listen.mode = 0660

然後存檔離開重新起動 php5-fpm 服務

service php5-fpm restart

再去檢查 /var/run/php5-fpm.sock 的 owner 是否為 www-data 而權限是 0660 就沒錯了,網站應該也恢復正常上線。

Comments (1)

關於 Linux 的 /tmp 暫存目錄,必需知道的特性

警告:放在 Linux 的 /tmp 目錄下的檔案與目錄,預設是會被自動清理的。

若是不知道或沒注意到這個特性而把重要檔案暫時放在 /tmp 目錄下,可能會發生慘案的。

在 RHEL\CentOS\Fedora 作業系统家族中,是由 tmpwatch 程式來處理的,安裝的檔案參考下列指令的查詢結果:

1
2
3
4
5
6
7
8
9
10
11
[root@bestlong.idv.tw ~]# rpm -ql tmpwatch
/etc/cron.daily/tmpwatch
/usr/bin/tmpwatch
/usr/sbin/tmpwatch
/usr/share/doc/tmpwatch-2.9.17
/usr/share/doc/tmpwatch-2.9.17/COPYING
/usr/share/doc/tmpwatch-2.9.17/ChangeLog
/usr/share/doc/tmpwatch-2.9.17/NEWS
/usr/share/doc/tmpwatch-2.9.17/README
/usr/share/man/man8/tmpwatch.8.gz
[root@bestlong.idv.tw ~]#

因為設定了 /etc/cron.daily/tmpwatch 所以會由 cron 服務每日定時執行一次,看一下程式碼內容:

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@bestlong.idv.tw ~]# cat /etc/cron.daily/tmpwatch
#! /bin/sh
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
        -x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
        -X '/tmp/hsperfdata_*' 10d /tmp
/usr/sbin/tmpwatch "$flags" 30d /var/tmp
for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
    if [ -d "$d" ]; then
        /usr/sbin/tmpwatch "$flags" -f 30d "$d"
    fi
done
[root@bestlong.idv.tw ~]#

可以看到指令中有 10d /tmp 的部份,簡單的解釋就是超過 10 天沒有存取的就會被清理。想進一步了解請服用 man tmpwatch 可以增進知識。

身為系統管理者,如果不喜歡或不需要系統自動清理的功能,可以將 /etc/cron.daily/tmpwatch 內容清空,讓程式變成空包彈,也可以直接刪除或更直接將 tmpwatch 整個移除。

Leave a Comment

減少主控台 mingetty 的執行數量

雖然現在電腦的記憶體很多又便宜, 但是還是能不要浪費就盡量做回收. 像是 console 登入畫面預設啟動 6 個, 同時間使用的機率非常小, 就給他調整成啟動兩個就好, 回收一些記憶體也不錯.

在舊版 Linux Server 上可以透過修改 /etc/inittab 來減少, 例如只保留兩個就可以把其他給註解掉:

1
2
3
4
5
6
7
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
#3:2345:respawn:/sbin/mingetty tty3
#4:2345:respawn:/sbin/mingetty tty4
#5:2345:respawn:/sbin/mingetty tty5
#6:2345:respawn:/sbin/mingetty tty6

但是新版 Linux 就開始改變架構以 Fedora 13 來說, 請修改 /etc/sysconfig/init 設定

1
2
# What ttys should gettys be started on?
ACTIVE_CONSOLES=/dev/tty[1-6]

修改成

1
2
# What ttys should gettys be started on?
ACTIVE_CONSOLES=/dev/tty[1-2]

然後重開機, 就可以用 top 來檢查系統行程是否有少掉 mingetty /dev/tty3 到 tty6 的項目.

Leave a Comment

  • 工商服務

    廣告讀取中...
  • 近期留言

  • 標籤

  • 彙整