如何將 Flask 系統安裝在 Apache 下如何將 Flask 系統安裝在 Apache 下

Flask application 是一套成長快速的 web framework。它的核心小,擴充性佳。對中小型的系統來說,是很方便的工具。 如果你對使用 Flask 開發有興趣,可以參考官方的教學文件。在未來,我也會逐一向大家介紹說明。

本篇文章主要是用來說明,如何將已開發完成的 Flask application 安裝在 Apache 下。觀看實際的 demo. (http 自動轉向到 https, 並啟動 Flask application ) . 這樣做的目的,或是好處:

  1. 你可以將你所有開發的系統,都掛在同一個網域(domain) 下。就如同本站,只有一個 comhawk.com 的網域. 使用 WordPress 架設官網的 Blogs, Shopping mall ,但同時也使用 Flask 來開發大數據分析、股票分析網站。此時,用 apache 管理就很方便。
  2. Apache 在支援 https 上很容易。所以,同一個環境下的系統,都可以同時支援。
  3. 透過 Apache,當伺服器重啟時,所有的應用系統都會被一起重新啟動。你不用再將 Flask Application 設定成 service。

但完成這樣的設定,你需要做非常多的設定(只要用到的功能,都需要設定,但比個別系統設定方便很多)。以下是設定的項目及說明:

  1. 安裝 mod_wsgi 模組。 WSGI 不是伺服器,也不是用於與程式互動的API,更不是真實的程式碼,WSGI 只是一種介面,它只適用於 Python 語言,其全稱為 Web Server Gateway Interface。
  2. 接著要啟動 mod_wsgi 模組。它是 Apache 的一個模組,所以只要使用 a2enmod wsgi 就可以啟動。啟動後,你在 /etc/apache2/mods_enabled 目錄下,就會看到 wsgi.conf / wsgi.load 兩個檔案。
  3. 建立 Flask Applciation。在 /var/www 目錄下,你可以建立一個涵蓋未來所有 Flask applications 的主目錄。因為實務上,不同的系統,會載入各自所需的 modules or packages。所以,你會看到大部份的文章,都會建議你安裝 virtualenv。
  4. 這是一個重要的步驟。你為不同的 Flask application 建立不同的虛擬環境。指令: virtualenv -p /usr/bin/python3 <folder_name>. 會將虛擬機建立在指定目錄下。
  5. 進入指定目錄,建立 Flask application。
  6. 在指定目錄下,建立 WSGI 檔。這也是一個很重要的步驟。在這個檔案裏,你要指定虛擬主機執行的程式位置(有的人會在 Apache site-config 檔裏使用 python-path 指定);以及 Flask application 的進入點。
  7. 建立 site-config。這個檔案,是為了讓 Apache server 管理你的 web applications. 路徑是在 /etc/apache2/sites-available 下。預設是 000-default.conf。在這個檔中,你要定義 daemon process group;以及指定 WSGI 應用程式應該在定義的 daemon process group 中執行;指定 Flask Application 的別名( /prefix) 及目錄。
  8. 如果你有啟動 SSL 的功能。WSGI daemon process 的設定,就要移到 default-ssl.conf 中。

執行結果:

@app.route(‘/’)
@app.route(‘/river’)

注意:

在 Flask 中,主程式的執行呼叫,只要使用 app.run() 即可。Apache 會幫你處理其他的細節設定。如果你有多個系統,要指定不同的 port number。

在設定的過程中,應該會出現一些錯誤。你要知道如何去除錯。你會用到除錯的訊息紀錄,在以下三個地方:

  1. Apache log: in /var/log/apache2/error.log
  2. Apache 啟動狀態: sudo systemctl status apache2.service
  3. Flask running error: 直接使用 web browser 顯示

Leave a Reply

Your email address will not be published.

regexp

正則表達式與爬蟲正則表達式與爬蟲

不知道什麼是 Regexp 別說你懂爬蟲~~ 帶你了解 Regexp 正則的強大文字處理功能 什麼是 正則表達式 ( Regexp ) ? Regular Expression , 中文稱為正則表達式.  它的前世今生, 請看 WIKI  .   為什麼要在這裏說明什麼是 Regexp 呢? 即使是很多的程式設計師, 對於正則的使用, 也未必清楚. 在大數據時代來源之前, 正則的使用, 耳熟能詳的, 就只是在

使用 Python , Selenium 的適用場景使用 Python , Selenium 的適用場景

Selenium 是一個網站的測試工具. 使用的方法 可以透過 Selenium 建立測試碼. 可以透過 Python 自動化測試. 作法, 首先將 Selenium 的測試碼寫成 Python 物件. 再使用 Python 透過 iteration 的方式呼叫這個物件. 方法一, 這適合單筆單筆的進行測試. 尤其是公司內部進行網頁程式上線前的測試.方法二, 適合大量的網站連結測試, 或個別網站程式的測試. 適用場景: 公司企業網站的系統自動化測試. 它可以自動點擊或輸入欄位資料 建立自動化作業. 透過