作業環境如下-
CentOS Linux 7.3
Apache/2.4.6 (CentOS)
PostgreSQL 9.2.18
一支簡單的PHP程式,連線本機的PostgreSQL資料庫發生錯誤
....could not connect to server: Permission denied....
Google查到可能是SELinux保護功能阻擋了連線
確認SELinux狀態:
指令:
/usr/sbin/sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 28
確實SELinux是作用中,不太懂,只好查查設定值:
指令:
/usr/sbin/getsebool -a | grep httpd
httpd_can_network_connect --> off
果然! 預設不允許httpd主動發起連線
修改設定:
指令:
/usr/sbin/setsebool -P httpd_can_network_connect on
等了大約30秒,shell prompt終於回來了(上面getsebool指令可確認結果)
再測試PHP網頁,成功連線讀取PostgreSQL資料!
ciao~
2017年5月18日 星期四
2017年5月11日 星期四
Debian 6.0 VM 複製到 ESXi 6.0 網路卡問題
Debian VM原運作於VMWare Player,因匯入失敗,乾脆將整個目錄(含vmdk檔等)直接上傳到ESXi資料存放區
由於檔案格式不同,先用以下指令轉換為ESXi相容格式
vmkfstools -i <原vmdk檔> <新vmdk檔>
建立VM後成功啟動系統,發現網路卡都沒出現
Google搜尋結果:
正確運作的系統會由udev於開機時偵測到網路卡,自動建立設定檔為/etc/udev/rules.d/70-persistent-net.rules。但我的/etc/udev/rules.d/下沒這個檔案!
執行 ifconfig -a 有看到 eth0 裝置,不過 ifup eth0 失敗
重新開機數次,確認系統不會自動找回網路卡
一番瞎搞後,終於成功救活,紀錄如下:
(此非正規作法,請斟酌參考,專家勿罵,留言批評者請順便提供正確教學)
(作法參考某論壇國外先進討論串,但已搜尋不到該文,對不起~)
1.手動讓它產生正確的 70-persistent-net.rules 檔
a.下指令 ifconfig -a 找出正確的 eth0 mac 位址如(00:a0:11:22:33:44)
b.複製原script(幫不上忙的那個)準備手動執行
cp /lib/udev/write_net_rules /lib/udev/my_net_rules
c.編輯手動版script (vi /lib/udev/my_net_rules),加上
INTERFACE=eth0
MATCHADDR="00:a0:11:22:33:44" << 步驟a 抄下來的 mac位址
d.修改權限
chmod 744 /lib/udev/my_net_rules
e.執行!
/lib/udev/my_net_rules
f.檢查結果
/etc/udev/rules.d/70-persistent-net.rules 出現!!!
2.測試新的設定檔
a.重新載入設定檔
/sbin/udevadm control --reload-rules
b.手動啟動 eth0
ifup eth0
c.看看結果
ifconfig (此時應該要有eth0了,沒有就是.....失敗)
其實還有些細節,寫多了偏離主題,下方網路設定檔供參考
/etc/network/interfaces 檔案內容
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.254
dns-nameserver 168.95.192.1
如果 ifup eth0 得到 don't seem to have all the variables... 錯誤,檢查上面這個檔的內容
由於檔案格式不同,先用以下指令轉換為ESXi相容格式
vmkfstools -i <原vmdk檔> <新vmdk檔>
建立VM後成功啟動系統,發現網路卡都沒出現
Google搜尋結果:
正確運作的系統會由udev於開機時偵測到網路卡,自動建立設定檔為/etc/udev/rules.d/70-persistent-net.rules。但我的/etc/udev/rules.d/下沒這個檔案!
執行 ifconfig -a 有看到 eth0 裝置,不過 ifup eth0 失敗
重新開機數次,確認系統不會自動找回網路卡
一番瞎搞後,終於成功救活,紀錄如下:
(此非正規作法,請斟酌參考,專家勿罵,留言批評者請順便提供正確教學)
(作法參考某論壇國外先進討論串,但已搜尋不到該文,對不起~)
1.手動讓它產生正確的 70-persistent-net.rules 檔
a.下指令 ifconfig -a 找出正確的 eth0 mac 位址如(00:a0:11:22:33:44)
b.複製原script(幫不上忙的那個)準備手動執行
cp /lib/udev/write_net_rules /lib/udev/my_net_rules
c.編輯手動版script (vi /lib/udev/my_net_rules),加上
INTERFACE=eth0
MATCHADDR="00:a0:11:22:33:44" << 步驟a 抄下來的 mac位址
d.修改權限
chmod 744 /lib/udev/my_net_rules
e.執行!
/lib/udev/my_net_rules
f.檢查結果
/etc/udev/rules.d/70-persistent-net.rules 出現!!!
2.測試新的設定檔
a.重新載入設定檔
/sbin/udevadm control --reload-rules
b.手動啟動 eth0
ifup eth0
c.看看結果
ifconfig (此時應該要有eth0了,沒有就是.....失敗)
其實還有些細節,寫多了偏離主題,下方網路設定檔供參考
/etc/network/interfaces 檔案內容
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.254
dns-nameserver 168.95.192.1
如果 ifup eth0 得到 don't seem to have all the variables... 錯誤,檢查上面這個檔的內容
訂閱:
文章 (Atom)