[mac] 安裝 mysql, php, phpmyadmin

前一陣子剛入門使用了 mac,也花點時間學了一些 mac 的快捷鍵就是 ….. 藉此機會紀錄一下在 mac 安裝 mysql, php及 phpmyadmin 我剛拿到的 macOS 版本是 10.12.3,可能有些東西比舊版預裝好了. 以下都會使用 brew 套件管理工具來安裝,我拿到這台電腦時已經預裝好 brew 了 還沒裝的可以參考官網說明安裝 首先先把 brew 的套件清單及套件更新: brew update brew upgrade 安裝及啟動 mysql: brew install mysql mysql.server start ps. mysql 的相關設定檔會在 /usr/local/opt/mysql/ mac 本身已經安裝了 apache 及 php,但 php 模組預設不開啟 開啟 apache 伺服器: apachectl start 這時候可以先試著連線 http://localhost/ 將 php […]

Continue reading


[php] 移除 x-powered-by 伺服器與 php 資訊

在預設的 php 設定檔中,會將 expose_php 這個選項設定為 On 這樣預設會讓 http(s) 的回應 header 顯示 x-powered-by: [伺服器 or php 版本資訊],其實並沒有任何實質上的幫助 除此之外,還可能會導致惡意的使用者利用此版本資訊做進一步的攻擊。 如下圖: 移除此 header 的方法: vim /etc/php5/apache2/php.ini    # 編輯 php.ini 設定檔 ; 關閉 header 顯示 php 版本資訊 expose_php = Off sudo service apache2 restart    # 重啟 apache,讓 apache 重新讀取 php 設定 這樣就可以移除掉 x-powered-by 這個敏感資訊的 header 囉!   參考資料: […]

Continue reading


[apache] apache 2.4.17 支援 http/2,開啟 http/2 增進我的網頁載入速度

最新的 apache 2.4.17 支援了 http/2 http/2 的詳細內容 簡單來說,支援了壓縮的 http header、平行下載與多工發送伺服器請求、資源優先下載控制與向下支援 http/1.1。 網路上有非常多 http/2 與  http/1.1 的比較測試。 如:http2與 http1.1 差別測試 這邊先看一下目前瀏覽器支援 http/2 的狀況,目前主流瀏覽器都只支援 https 才能使用 http/2。(紫色框框) 首先要先將 apache 更新至 2.4.17,或安裝最新版。(由於各版本更新方法各有不同,這邊就不詳述) 設定 https 加密連線 (如:安裝letsencrypt) 開啟 mod_http2 模組 sudo a2enmod http2 測試網站是否成功支援 http/2 https://tools.keycdn.com/http2-test 參考資料: https://simular.co/knowledge/site-build/68-about-http2-and-http11.html

Continue reading


[apache] 同時使用 apache 與 nodejs,反向代理 nodejs

這幾天有一些服務後端用到 nodejs,但主要的網頁服務還是 apache 來處理,因此想說是否可以同時運行 nodejs 與 apache。   其實如果可以的話,使用 nginx 來做代理伺服器會更好(比 apache 處理的效能好,比較不會這麼限制 nodejs 速度) 由於我機器上面已經裝有LAMP的環境,並且運行部分服務,因此先使用 apache 來做代理伺服器堪用一下。 開啟 mod_proxy 及 mod_proxy_http sudo a2enmod proxy sudo a2enmod proxy_http 重新啟動 apache sudo service apache2 restart 編輯 /etc/apache2/sites-enabled/000-default.conf,nodejs 預設 port 為 3000 <VirtualHost *:80> # reverse proxy <Proxy *> Order deny,allow Allow from all </Proxy> <Location /> […]

Continue reading


[apache] apache 設定 HSTS ( HTTP Strict Transport Security )

之前曾經介紹過如何透過 apache 的.htaccess 強制使用 https 連線,但實際上此作法瀏覽器還是可能與機器建立 http 連線之後,再改而建立 https 連線。 如果可以的話,我們會希望一開始就嘗試建立 https 連線。   HSTS( HTTP Strict Transport Security ) https://developer.mozilla.org/en-US/docs/Web/Security/HTTP_strict_transport_security 簡單說明一下,原則上就是我們在網頁伺服器端( 如: apache、nginx 等)設置 response 的 header,瀏覽器若支援HSTS則會根據 header 作日後相對應的行為。 如:Strict-Transport-Security: max-age=31536000; includeSubDomains 支援 HSTS 的瀏覽器,會在日後一年對此網域的網站嘗試直接建立 https 連線。 支援度: 各主流瀏覽器大多皆有支援 好處: 有很多攻擊 https 網站的手法( sslstrip 等),都是透過剝離 https 連線,轉而取代使用 http 連線,進而達到資料竊取或攻擊的行為,使用 HSTS 可以有效避免此類攻擊。 apache設定: 開啟 apache […]

Continue reading


[apache] 強制網站及 wordpress 使用 https 私人連線

安裝完了 letscrypt 後,當然要讓自己的網站都強制使用 https 較安全的連線囉! 首先要先開啟 rewrite module sudo a2enmod rewrite 打開 /etc/apache2/apache2.conf ,加入以下程式碼 <Directory /var/www/> Options Indexes FollowSymLinks AllowOverride All Require all granted RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R] </Directory> 若為 wordpress ,則要進入wordpress 目錄後複寫 .htaccess # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ – [L] RewriteCond %{REQUEST_FILENAME} !-f […]

Continue reading


[ubuntu] apt-get update、upgrade 與 dist-upgrade 差別

update 更新我們的套件清單 /etc/apt/sources.list,這樣在我們更新時才能比對最新的套件清單,決定是否更新 upgrade 根據前述的更新清單 /etc/apt/sources.list,比對是否更新套件。若有相依性問題,則放棄更新。 dist-upgrade 根據前述的更新清單 /etc/apt/sources.list,比對是否更新套件。若有相依性問題,會嘗試做安裝/移除,將相依性問題解決並更新。 PS. 通常視為較危險的更新 參考資料: man page update update is used to resynchronize the package index files from their sources. The indexes of available packages are fetched from the location(s) specified in /etc/apt/sources.list. For example, when using a Debian archive, this command retrieves and scans the Packages.gz files, so that information […]

Continue reading


[apache] virtual host 虛擬網站/虛擬主機

最近買了 domain,比如 xxxx.com 但我們可能想設個人網站為 personal.xxxx.com,部落格網站為 blog.xxxx.com 然而這兩個網站都對應到同一台主機,這時候我們就需要 virtual host的 功能了。   複製/etc/apache2/sites-available/000-default.conf <VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear […]

Continue reading


[ubuntu] apache ServerName 警告訊息

過去在 ubuntu 安裝完 apache,啟動時總是會出現以下這段訊息 apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this message 最近才試著去解決產生此訊息的問題 其實是 apache2 抓不到 hostname,因此我們正確的設定 hostname 就正常了 sudo hostname ubuntu.mydomain.com 參考文章:http://blog.miniasp.com/post/2012/06/23/apache2-Could-not-reliably-determine-the-server-fully-qualified-domain-name-using-for-ServerName.aspx  

Continue reading


[ubuntu 14.04] apache 目錄開啟.htaccess 覆寫

啟用apache 的 mod_rewrite 模組 sudo a2enmod rewrite 重新啟動apache,重新讀取模組,設定才會生效 sudo service apache2 restart 更改目錄設定檔為允許覆寫,如(/etc/apache2/apache2.conf) <Directory /var/www/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> 重新啟動apache,重新讀取設定檔,設定才會生效 sudo service apache2 restart  完成,可以在目錄下創建.htaccess檔案,覆寫設定

Continue reading