今天在虛擬環境下測試 CentOS 時發生了無法上網的問題,安裝作業系統時我選擇了最小安裝,且在安裝完畢後輸入 sudo yum update
系統噴了下圖錯誤訊息給我。
CentOS
[WordPress] 在Windows Server 2012 R2中使用 Disqus Comment System 連結帳號失敗
最近手賤把Disqus解除帳號連結,卻發現怎麼樣都無法連結帳號,一直顯示Unable to connect to the Disqus API servers
如下:
拜了Google大神很久都找不到原因,無論重新安裝Windows Server還是使用國外HostGator Web Hosting(Windows)都發生同樣錯誤,忽然想起之前安裝這個外掛的時候也有發生這個問題,後來改用Linux後就正常了,於是乎懷疑是否是作業系統的問題,立即開了虛擬機安裝一台Linux測試,在Linux底下沒有做什麼特別的設定,按下登入馬上就連結成功到Disqus。
個人猜測在Windows裡安裝的php套件少了什麼東西,導致外掛無法正常運作,雖然切回Windows後無法同步留言回Wordpress,但是此外掛還是有正常在運作中可以正常留言,那就先這樣結案吧!
Selinux 安全性設定造成php-mysql無法正常連線
今天在測試Google Cloud SQL的時候,明明權限設定沒有問題,但不知為何在我CentOS上面就是無法執行mysql_connect
函式,搞了幾個小時,發現又是Selinux安全性在搞鬼,找到問題來源自然好解決。
- 取得 selinux 和httpd有關的參數
getsebool -a | grep 'httpd'
- 把他打開就可以了
setsebool httpd_can_network_connect_db 1
CentOS 7.X fail2ban防止駭客暴力破解密碼
每次看到我的SSH登入LOG都一堆嘗試紀錄,看來真的有很多無聊人士在那邊try我的密碼,就找了fail2ban來防止無聊人士。
- 安裝fail2ban
sudo yum install fail2ban
- 打開文件/etc/fail2ban/jail.conf設定規則
搜尋[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
CentOS 7.X 安裝VPN PPTP
- 安裝yum第三方EPEL套件庫
sudo yum install epel-release -y
清除快取
sudo yum clean all -y
更新套件庫
sudo yum update -y
- 安裝PPTP
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 *
- 啟動pptp
service pptpd start chkconfig pptpd on
參考:
CentOS 7.X Wrodpress 上傳的檔案無法被移動至wp-content/uploads/
在移植完Wrodpress測試是否正常時,發生了媒體無法上傳的問題,錯誤訊息給出上傳的檔案無法被移動至wp-content/uploads/
,就翻了之前寫的文章WordPress 資料權限修復,這邊有一點點不太一樣的就是在CentOS裡面Apache的使用者不是www-data
而是apache
,修正完資料夾權限後竟然還是無法正常上傳媒體,爬文爬了一整晚將近12小時,下了各種關鍵字都找不到原因,最後快要放棄時逛逛PTT Linux版時無意間看到了這篇,才發現原來除了預設的資料夾權限以外,還多了SELinux安全性的問題。
解決方法有兩種如下:
- 給予權限寫入資料 (推薦!!)
- 給予httpd讀取的權限
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
- 給予httpd讀取的權限
- 完全關閉SELinux (不推薦)
- 開啟路徑
/etc/sysconfig/selinux
- 搜尋
SELINUX
修改為disabled
//預設enforcing為開啟,disabled為關閉 SELINUX=disabled
- 重開機
- 開啟路徑
查詢SELinux是否開啟(Enforcing為開啟,disabled為關閉)
:
getenforce
參考:
CentOS 7.X Lamp環境安裝 (Linux+Apache+MariaDB+PHP)
看到網路上的人都推說,Linux Server使用CentOS架設比較適合,從預設開啟防火牆就知道了,我就來試試看CentOS與目前本站使用的Ubuntu Server差在哪。
安裝CentOS與更新套件清單
- 從CentOS官方網站下載最新版CentOS-7-x86_64-DVD-1511.iso,安裝過程就省略了,本人是使用最小安裝,所以只有指令介面,反正要當Server使用,如果安裝GUI的話反而浪費資源對吧?
- Ubuntu與CentOS安裝套件的方式有點不太一樣,Ubuntu是使用
apt-get
這個指令來安裝,但CentOS是使用yum
來安裝套件,這點需要注意一下。首先先更新一下列表吧,使用管理員權限的帳號輸入sudo yum update -y
-y 是忽略詢問是否同意直接更新
安裝Apache網頁伺服器
- 安裝前記得先使用上面的指令更新套件清單唷,不然可能會有奇怪的問題。
- 輸入指令
sudo yum install httpd -y
- 安裝完畢後接著就要啟用服務拉,輸入指令
service httpd start
安裝MariaDB(MySQL)資料庫伺服器
- 在CentOS 7.X中MySQL是被替換成MariaDB的,所以就借此也來體驗看看MariaDB的資料庫囉。
輸入指令sudo yum install mariadb mariadb-server -y
這樣就安裝成功囉!
- 來啟動服務吧
service mariadb start
設定MariaDB伺服器
- 安裝完畢後,就來設定一些資料庫的基本設定吧!
輸入指令/usr/bin/mysql_secure_installation
這裡因為是第一次安裝,所以直接按
Enter
繼續即可。
- 是否要設定root的密碼,輸入
y
開始設定
- 重複輸入兩次相同的密碼
- 是否要刪除匿名帳號,輸入
y
同意刪除,不然日後會有很多安全性問題
- 是否要開放root管理員透過外網登入,這邊請輸入
y
限制管理員只能從本地連線較為安全
- 是否刪除test資料庫輸入
y
- 是否重新載入權限表輸入
y
- 設定完成!
安裝PHP+phpMyAdmin管理資料庫
- 安裝php與連接資料庫套件
sudo yum install php php-mysql -y
- 安裝yum第三方EPEL套件庫
sudo yum install epel-release -y
清除快取
sudo yum clean all -y
更新套件庫
sudo yum update -y
- 安裝phpMyAdmin
sudo yum install phpmyadmin -y
- 重新啟動網頁伺服器
service httpd restart
設定防火牆
- 永久允許網頁伺服器通過防火牆
sudo firewall-cmd --add-service=http --permanent
- 若需要https服務則輸入
sudo firewall-cmd --add-service=https --permanent
查詢防火牆規則
firewall-cmd --list-all --permanent
--permanent
為永久規則 - 重新啟動防火牆
service firewalld restart
設定phpMyAdmin
- 預設除了本地是不允許訪問phpMyAdmin,但因為我們現在要設定所以需要修改一下預設值,使用WinSCP連線到主機上面打開
/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
參考:
Linux 筆記 – 查詢自己的ip
Ubuntu
ifconfig
CentOS 7.X
ip addr
[Linux] 7zip 解壓縮程式
Linuix安裝7zip。
Ubuntu
下載:
sudo apt-get install p7zip-full
壓縮:
7z a FileName.7z FileName
使用密碼 (PASSWORD) 壓縮:
7z a FileName.7z FileName -p PASSWORD
解壓縮:
7z x FileName.7z
CentOS
安裝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