瀏覽標籤:

Apache

[Apache] 限制目錄列表

很多人設定Apache都會碰到的問題之一,就是該怎麼限制別人瀏覽自己網站的目錄。如果沒限制,目錄內所有檔案的位置都會被看到,有更新但還未公開在首頁的檔案就會被看到。

  1. 找到路徑/etc/apache2/sites-available
  2. 找到自己網站的conf設定檔
  3. Directory節點的Options拿掉Indexes
    範例如下:

    <IfModule mod_ssl.c>
    <VirtualHost *:443>
    	#管理者郵箱 
    	ServerAdmin [email protected]
    	#網站名稱 
    	ServerName blog.exfast.me
    	#網站別名
    	ServerAlias blog.exfast.me
    	#網站的根目錄
    	DocumentRoot /var/www/blog
    	#網站的錯誤日誌檔存放的位置與檔名
    	ErrorLog /var/log/error/blog.log
    	#網站日誌檔存放的位置與檔名
    	CustomLog /var/log/access/blog.log combined
    	<Directory "/var/www/blog/">
    		AllowOverride All
    		Options FollowSymLinks MultiViews
    	</Directory>
    </VirtualHost>
    </IfModule>

     

 

 

原文:Apache設定限制目錄瀏覽的方法

       

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
       

利用 Apache 的 htaccess 進行轉址

  1. 設定 httpd.conf
    <Directory "D:/test/">
            AllowOverride All
    </Directory>
  2. 新增文件.htaccess
    RewriteEngine on
    # 不管使用者輸入 sofast.info 或 www.sofast.info,一律導向 blog.exfast.me
    RewriteCond %{HTTP_HOST} ^sofast.info$ [OR]
    RewriteCond %{HTTP_HOST} ^www.sofast.info$
    RewriteRule ^(.*)$ https://blog.exfast.me/$1 [R=301,L]
       

[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