使用Fedora包管理工具安裝完Postgresql後,不管怎麼折騰都無法隨機器自動啟動。今天花了點功夫仔細閱讀了一些相關檔案,終於找到瞭解決的辦法。其實也很簡單。
根本原因是,我在安裝完Postgresql後將資料庫放到了/var/pgsql/data,而Postgresql預設的存放位置是/var/lib/pgsql/data。因而使用預設的安裝配置無法找到資料庫,所以啟動失敗。
在解決的過程中,最開始想通過自訂一個開機指令碼來解決,可以網上的方案都有問題。根本原因是在Fedora15以後,使用Systemd替代了原來的init,因而網上的通過編寫或修改rc指令碼的方案不再可行。
在Systemd中,啟動服務配置在/etc/systemd/system和/lib/systemd/system中。在/lib/systemd/system/postgresql.service 檔案即是postgresql安裝的預設服務組態檔。按照推薦的做法(http://docs.fedoraproject.org/zh-CN/Fedora/16/html/Release_Notes/sect-Release_Notes-Changes_for_Sysadmin.html) 不應該直接修改此檔案,而是應該複製到/etc/systemd/system,然後修改之。
現在位置,改起來非常見到了:
sudo cp /lib/systemd/system/postgresql.service /etc/systemd/system
sudo servicectl enable postgresql.service #啟用postgresql服務
用編輯器開啟 /etc/systemd/system/postgresql.service,修改器PGDATA的設定為正確的路徑(我的是/var/pgsql/data)
sudo systemctl --system daemon-reload
大功告成.