瀏覽標籤:

教學

CentOS 7.X Wrodpress 上傳的檔案無法被移動至wp-content/uploads/

在移植完Wrodpress測試是否正常時,發生了媒體無法上傳的問題,錯誤訊息給出上傳的檔案無法被移動至wp-content/uploads/,就翻了之前寫的文章WordPress 資料權限修復,這邊有一點點不太一樣的就是在CentOS裡面Apache的使用者不是www-data而是apache,修正完資料夾權限後竟然還是無法正常上傳媒體,爬文爬了一整晚將近12小時,下了各種關鍵字都找不到原因,最後快要放棄時逛逛PTT Linux版時無意間看到了這篇,才發現原來除了預設的資料夾權限以外,還多了SELinux安全性的問題。

解決方法有兩種如下:

  1. 給予權限寫入資料 (推薦!!)
    • 給予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
  2. 完全關閉SELinux (不推薦)
    • 開啟路徑
      /etc/sysconfig/selinux
    • 搜尋SELINUX修改為disabled
      //預設enforcing為開啟,disabled為關閉
      SELINUX=disabled
    • 重開機

查詢SELinux是否開啟(Enforcing為開啟,disabled為關閉)

getenforce

參考:

  1. CentOS 7 + SELinux + PHP + Apache – cannot write/access file no matter what
  2. CentOS 關閉SELinux方式
  3. [問題] CentOS 7 apache資料夾權限
       

CentOS 7.X Lamp環境安裝 (Linux+Apache+MariaDB+PHP)

看到網路上的人都推說,Linux Server使用CentOS架設比較適合,從預設開啟防火牆就知道了,我就來試試看CentOS與目前本站使用的Ubuntu Server差在哪。

安裝CentOS與更新套件清單

  1. CentOS官方網站下載最新版CentOS-7-x86_64-DVD-1511.iso,安裝過程就省略了,本人是使用最小安裝,所以只有指令介面,反正要當Server使用,如果安裝GUI的話反而浪費資源對吧?
  2. Ubuntu與CentOS安裝套件的方式有點不太一樣,Ubuntu是使用apt-get這個指令來安裝,但CentOS是使用yum來安裝套件,這點需要注意一下。首先先更新一下列表吧,使用管理員權限的帳號輸入
    sudo yum update -y

    -y 是忽略詢問是否同意直接更新

安裝Apache網頁伺服器

  1. 安裝前記得先使用上面的指令更新套件清單唷,不然可能會有奇怪的問題。
  2. 輸入指令
    sudo yum install httpd -y
  3. 安裝完畢後接著就要啟用服務拉,輸入指令
    service httpd start

安裝MariaDB(MySQL)資料庫伺服器

  1. 在CentOS 7.X中MySQL是被替換成MariaDB的,所以就借此也來體驗看看MariaDB的資料庫囉。
    輸入指令

    sudo yum install mariadb mariadb-server -y

    這樣就安裝成功囉!
    01

  2. 來啟動服務吧
     service mariadb start

    01

設定MariaDB伺服器

  1. 安裝完畢後,就來設定一些資料庫的基本設定吧!
    輸入指令

    /usr/bin/mysql_secure_installation

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

  2. 是否要設定root的密碼,輸入y開始設定
    01
  3. 重複輸入兩次相同的密碼
    01
  4. 是否要刪除匿名帳號,輸入y同意刪除,不然日後會有很多安全性問題
    01
  5. 是否要開放root管理員透過外網登入,這邊請輸入y限制管理員只能從本地連線較為安全
    01
  6. 是否刪除test資料庫輸入y
    01
  7. 是否重新載入權限表輸入y
    01
  8. 設定完成!
    01

安裝PHP+phpMyAdmin管理資料庫

  1. 安裝php與連接資料庫套件
    sudo yum install php php-mysql -y

    01

  2. 安裝yum第三方EPEL套件庫
    sudo yum install epel-release -y

    清除快取

    sudo yum clean all -y

    更新套件庫

    sudo yum update -y
  3. 安裝phpMyAdmin
     sudo yum install phpmyadmin -y

    01

  4. 重新啟動網頁伺服器
     service httpd restart

設定防火牆

  1. 永久允許網頁伺服器通過防火牆
    sudo firewall-cmd --add-service=http --permanent
  2. 若需要https服務則輸入
    sudo firewall-cmd --add-service=https --permanent

    查詢防火牆規則

    firewall-cmd --list-all --permanent

    --permanent為永久規則

  3. 重新啟動防火牆
     service firewalld restart

設定phpMyAdmin

  1. 預設除了本地是不允許訪問phpMyAdmin,但因為我們現在要設定所以需要修改一下預設值,使用WinSCP連線到主機上面打開
    /etc/httpd/conf.d/phpMyAdmin.conf
  2. 找到
    <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>
  3. 重啟網頁伺服器
    service httpd restart
  4. 這樣就可以正常登入囉!
    01

 

開機自動啟動服務

每次開機都要手動啟用服務,這樣實在太麻煩了,輸入以下指令可以在每次開機後自動啟用服務

chkconfig httpd on
chkconfig mariadb on

 

參考:

  1. [Centos7] 新的防火牆firewalld
  2. Installing LAMP (Linux, Apache, MariaDB, PHP/PhpMyAdmin) in RHEL/CentOS 7.0
       

IIS 使用 Let’s Encrypt 的 SSL 免費憑證

  1. 首先在你的IIS伺服器上新增一個web.config檔案,這樣他才可以識別等等要新增的驗證檔案,加以確認這個網域是你的。
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <staticContent>
                <mimeMap fileExtension="." mimeType="text/plain" />
            </staticContent>
        </system.webServer>
    </configuration>
  2. 接著到這個下載letsencrypt-win-simple.v1.9.0.zip,解壓縮到你的Server上面,對著解壓縮後的資料夾按著Shift+右鍵選擇在此處開啟命令視窗(W)
    圖一
  3. 輸入指令如圖二(Help)
    letsencrypt.exe --accepttos --manualhost 網域名稱 --webroot wwwroot路徑
    

    圖二

  4. 結果如圖三,這裡顯示是否替換現有的憑證,我選擇Y (沒出現這段沒關係,可能是我已經安裝過)
    圖三
  5. 這裡詢問是否要指定使用者,選擇N
    圖四
  6. 看到圖五這裡就表示憑證已經自動放入你的IIS裡面了
    圖五
  7. 開啟IIS管理介面繫結->新增->類型(https)->連接埠(443)->主機名稱(剛剛申請的網域名稱)->SSL(剛剛產生的新憑證)
    圖六
  8. 測試一下SSL是否正常顯示吧!
    圖七

延伸閱讀:IIS 使用 Let’s Encrypt 的 SSL 免費憑證 – 多站台申請

       

MySQL 修改 timeout 時間以改善效能

環境:Ubuntu Server 15.10 x64

剛剛在後台發現一堆連線數以sleep狀態卡在那,
感覺就怪怪的,如果沒有使用的話為什麼不會timeout呢?
查了一下才發現,

SHOW variables;

0
原來mysql預設的數字是八小時…
這也太久了吧,不會造成連線數都卡死嗎??
於是乎開始修改找資料嘗試修改,
不知道為何,我的lamp套件與別人的安裝路徑都不一樣,
最後我是在

/etc/mysql/mysql.conf.d

裡面加上下面這幾行,儲存重開mysql服務後解決

# 防止連線數卡死
wait_timeout = 180
interactive_timeout = 180

 

參考1:http://note.tc.edu.tw/421.html

參考2:http://dba.stackexchange.com/questions/1558/how-long-is-too-long-for-mysql-connections-to-sleep

       

Apache 使用 Let’s Encrypt 的 SSL 免費憑證

SSL憑證服務,用於建立瀏覽器和網站伺服器之間的安全通道,提供伺服器身分鑑別及資料傳輸加密。 透過SSL機制建立一個安全通道,保護網路使用者所傳輸的個人資料(如信用卡號、帳號、密碼等)在傳輸過程中不被駭客截取或竄改,保護網站用戶個人資料,強化網路使用者對於網路交易信心。

  1. 下載官方自動安裝憑證程式
    sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
  2. 進入剛剛下載的資料夾
    cd letsencrypt
  3. 將網域輸入(如有多網址則輸入多次,批量會出錯)
    ./letsencrypt-auto --apache -d example.com
  4. 程式會幫你自動加載SSL資料進conf,所以無需做任何設定

 

若無則手動加入:

<IfModule mod_ssl.c>
    <VirtualHost www.example.com:443>	
	#管理者郵箱 
	ServerAdmin [email protected]
	#網站名稱 
	ServerName abc
	#網站別名
	ServerAlias www.example.com
	#網站的根目錄
	DocumentRoot /var/www/example.com/public_html/
	#網站的錯誤日誌檔存放的位置與檔名
	ErrorLog /var/www/example.com/logs/error.log
	#網站日誌檔存放的位置與檔名
	CustomLog /var/www/example.com/logs/access.log combined
	SSLEngine on
	# Let's encrypt
        SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
        SSLCACertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    </VirtualHost>
</IfModule>
       

使用 CloudFlare Flexible SSL 服務時 phpMyAdmin 發生錯誤

當使用CloudFlare Flexible SSL免費服務時,phpmyadmin會誤以為你有ssl憑證,自動把網址導向443 port,但其實你用的只是一種中繼的方式,伺服器與CloudFlare溝通時依然是走80 port,所以會發生此錯誤。

解決方案如下:

  1. 開啟以下檔案
    /usr/share/phpmyadmin/libraries/Config.class.php
  2. 搜尋
    ($url['scheme'] == 'https' && $url['port'] != 443)
  3. 把這句判斷式註解掉,如下圖
    01
  4. 解決!

參考:phpMyAdmin uses port 80 on CloudFlare Flexible SSL

       

[Ubuntu] phpMyAdmin 安裝後發生錯誤

環境:Ubuntu Server 15.10 x64

使用sudo apt-get install phpmyadmin安裝後跳出這個錯誤

尚未設定 phpMyAdmin 設定儲存空間,部份延伸功能將無法使用。 了解原因。 或者前往任一個資料庫的 '操作' 頁籤設定。

01
02

最後發現是config.inc.php少了一行

$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';

加上去就解決了,上面明明都沒問題,唯獨少了這行,真詭異。

       

[Linux] Ubuntu Apache新增網域/虛擬網站/虛擬主機

紀錄一下基本的設定檔,以便日後複製用。

  1. 建立設定檔
    在下面的路徑,建立一個檔案名稱叫做 blog.exfast.me.conf 的文字檔

    /etc/apache2/sites-available
  2. 內容如下(範例)
    <VirtualHost *:80>
    	#管理者郵箱 
    	ServerAdmin [email protected]
    	#網站名稱 
    	ServerName sofast
    	#網站別名
    	ServerAlias blog.exfast.me
    	#網站的根目錄
    	DocumentRoot /var/www/blog.exfast.me/public_html/
    	#網站的錯誤日誌檔存放的位置與檔名
    	ErrorLog /var/www/blog.exfast.me/logs/error.log
    	#網站日誌檔存放的位置與檔名
    	CustomLog /var/www/blog.exfast.me/logs/access.log combined
    	<Directory "/var/www/blog.exfast.me/public_html/">
    		AllowOverride All
    	</Directory>
    </VirtualHost>
  3. 建立網站資料夾
    sudo mkdir -p /var/www/blog.exfast.me/public_html
    sudo mkdir -p /var/www/blog.exfast.me/logs
    
  4. 啟用網站
    sudo a2ensite blog.exfast.me
  5. 重新啟動服務
    service apache2 restart

如果要停用網站的話使用以下指令:

sudo a2dissite blog.exfast.me
service apache2 restart

轉載:http://www.arthurtoday.com/2009/11/apache.html