今天在虛擬環境下測試 CentOS 時發生了無法上網的問題,安裝作業系統時我選擇了最小安裝,且在安裝完畢後輸入 sudo yum update 系統噴了下圖錯誤訊息給我。

興趣使然的軟體工程師,擅長 Exception。
最近手賤把Disqus解除帳號連結,卻發現怎麼樣都無法連結帳號,一直顯示Unable to connect to the Disqus API servers如下:

拜了Google大神很久都找不到原因,無論重新安裝Windows Server還是使用國外HostGator Web Hosting(Windows)都發生同樣錯誤,忽然想起之前安裝這個外掛的時候也有發生這個問題,後來改用Linux後就正常了,於是乎懷疑是否是作業系統的問題,立即開了虛擬機安裝一台Linux測試,在Linux底下沒有做什麼特別的設定,按下登入馬上就連結成功到Disqus。
個人猜測在Windows裡安裝的php套件少了什麼東西,導致外掛無法正常運作,雖然切回Windows後無法同步留言回Wordpress,但是此外掛還是有正常在運作中可以正常留言,那就先這樣結案吧!
今天在測試Google Cloud SQL的時候,明明權限設定沒有問題,但不知為何在我CentOS上面就是無法執行mysql_connect函式,搞了幾個小時,發現又是Selinux安全性在搞鬼,找到問題來源自然好解決。
getsebool -a | grep 'httpd'

setsebool httpd_can_network_connect_db 1
每次看到我的SSH登入LOG都一堆嘗試紀錄,看來真的有很多無聊人士在那邊try我的密碼,就找了fail2ban來防止無聊人士。
sudo yum install fail2ban
[sshd]
在下方增加
enabled = true
[DEFAULT],設定相關參數ignoreip = 127.0.0.1/8
禁止秒數
bantime = 3600
依據秒數(例:在3600秒內錯誤5次則BAN掉)
findtime = 3600
嘗試次數
maxretry = 5
sudo service fail2ban start sudo chkconfig fail2ban on
查詢已ban掉的IP清單
fail2ban-client status sshd
解除ban
fail2ban-client set sshd unbanip IPADDRESS
sudo yum install epel-release -y
清除快取
sudo yum clean all -y
更新套件庫
sudo yum update -y
sudo yum install ppp pptpd -y

cp /etc/pptpd.conf /etc/pptpd.conf.bak
/etc/pptpd.conf,拉到最下面新增
localip 10.0.10.1 remoteip 10.0.10.2-254
cp /etc/ppp/options.pptpd /etc/ppp/options.pptpd.bak
ms-dns,將前面#去掉如下
ms-dns 8.8.8.8 ms-dns 8.8.4.4
cp /etc/sysctl.conf /etc/sysctl.conf.bak
net.core.wmem_max = 12582912 net.core.rmem_max = 12582912 net.ipv4.tcp_rmem = 10240 87380 12582912 net.ipv4.tcp_wmem = 10240 87380 12582912 net.core.wmem_max = 12582912 net.core.rmem_max = 12582912 net.ipv4.tcp_rmem = 10240 87380 12582912 net.ipv4.tcp_wmem = 10240 87380 12582912 net.core.wmem_max = 12582912 net.core.rmem_max = 12582912 net.ipv4.tcp_rmem = 10240 87380 12582912 net.ipv4.tcp_wmem = 10240 87380 12582912 net.ipv4.ip_forward = 1
/etc/rc.d/rc.local,新增設定
iptables -t nat -A POSTROUTING -s 10.0.10.0/24 -o eth0 -j MASQUERADE
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -i eth0 -p tcp --dport 1723 -j ACCEPT firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p gre -j ACCEPT firewall-cmd --permanent --direct --add-rule ipv4 filter POSTROUTING 0 -t nat -o eth0 -j MASQUERADE firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ppp+ -o eth0 -j ACCEPT firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth0 -o ppp+ -j ACCEPT firewall-cmd --reload
/etc/ppp/chap-secrets
username pptpd password *
service pptpd start chkconfig pptpd on
參考:
在移植完Wrodpress測試是否正常時,發生了媒體無法上傳的問題,錯誤訊息給出上傳的檔案無法被移動至wp-content/uploads/,就翻了之前寫的文章WordPress 資料權限修復,這邊有一點點不太一樣的就是在CentOS裡面Apache的使用者不是www-data而是apache,修正完資料夾權限後竟然還是無法正常上傳媒體,爬文爬了一整晚將近12小時,下了各種關鍵字都找不到原因,最後快要放棄時逛逛PTT Linux版時無意間看到了這篇,才發現原來除了預設的資料夾權限以外,還多了SELinux安全性的問題。
解決方法有兩種如下:
sudo chcon -t httpd_sys_content_t /var/www/html/ -R
sudo chcon -t httpd_sys_rw_content_t /data/www/html/sofast/wp-content/* -R
/etc/sysconfig/selinux
SELINUX修改為disabled
//預設enforcing為開啟,disabled為關閉 SELINUX=disabled
查詢SELinux是否開啟(Enforcing為開啟,disabled為關閉):
getenforce
參考:
看到網路上的人都推說,Linux Server使用CentOS架設比較適合,從預設開啟防火牆就知道了,我就來試試看CentOS與目前本站使用的Ubuntu Server差在哪。
apt-get這個指令來安裝,但CentOS是使用yum來安裝套件,這點需要注意一下。首先先更新一下列表吧,使用管理員權限的帳號輸入
sudo yum update -y
-y 是忽略詢問是否同意直接更新
sudo yum install httpd -y
service httpd start
sudo yum install mariadb mariadb-server -y
這樣就安裝成功囉!

service mariadb start

/usr/bin/mysql_secure_installation
這裡因為是第一次安裝,所以直接按Enter繼續即可。

y開始設定

y同意刪除,不然日後會有很多安全性問題
y限制管理員只能從本地連線較為安全
y
y


sudo yum install php php-mysql -y

sudo yum install epel-release -y
清除快取
sudo yum clean all -y
更新套件庫
sudo yum update -y
sudo yum install phpmyadmin -y

service httpd restart
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
查詢防火牆規則
firewall-cmd --list-all --permanent
--permanent為永久規則
service firewalld restart
/etc/httpd/conf.d/phpMyAdmin.conf
<RequireAny> Require ip 127.0.0.1 Require ip ::1 </RequireAny>
在Require ip ::1下方新增自己的IP
<RequireAny> Require ip 127.0.0.1 Require ip ::1 Require ip 你的IP </RequireAny>
service httpd restart

每次開機都要手動啟用服務,這樣實在太麻煩了,輸入以下指令可以在每次開機後自動啟用服務
chkconfig httpd on chkconfig mariadb on
參考:
Ubuntu
ifconfig
CentOS 7.X
ip addr
Linuix安裝7zip。
下載:
sudo apt-get install p7zip-full
壓縮:
7z a FileName.7z FileName
使用密碼 (PASSWORD) 壓縮:
7z a FileName.7z FileName -p PASSWORD
解壓縮:
7z x FileName.7z
安裝yum第三方EPEL套件庫
sudo yum install epel-release -y
清除快取
sudo yum clean all -y
更新套件庫
sudo yum update -y
下載:
sudo yum install -y p7zip
壓縮:
7za a FileName.7z FileName
使用密碼 (PASSWORD) 壓縮:
7za a FileName.7z FileName -p PASSWORD
解壓縮:
7za x FileName.7z