顯示具有 apache 標籤的文章。 顯示所有文章
顯示具有 apache 標籤的文章。 顯示所有文章

2019年6月14日 星期五

如何佈署Django專案到apache上


Django就是網站的框架,

利用Django建立的專案,

最終目的就是上線運行,

所以今天就來教大家

如何佈署Django專案到apache上


首先要先安裝apache套件


sudo apt-get install libapache2-mod-wsgi-py3


WSGI全名Web Server Gatway Interface,

它是一種規範,

定義了server與web application之間的連接,

簡單的說,

wsgi是一個橋樑,

一邊連結web server,

另一邊則是連接web application



接著找到/etc/apache2/sites-available

新增一個conf檔案給新網站

內容大致為:

    ServerName 新站的domain name
    ServerAdmin 管理者信箱
  
    Alias /static/ 靜態檔案的絕對路徑
  
  
   
        Require all granted
   

    WSGIScriptAlias / 專案的絕對路徑/wsgi.py
   
  
   
   
        Require all granted
   
   

最後就是設定好wsgi.py

這樣就完工了?

如果上面描述設定都沒問題的話,

當然最好,

但通常都不會這麼順利的,



舉例來說:

通常IDE是用來加速開發速度的,

所以利用Pycharm所預設的wsgi設定應該就能馬上佈署上線才對,

其實不然,

一個Pycharm專案預設的wsgi.py長的如底下:


實際上還得加上專案的絕對路徑,

網站才能正常上線

import os
import sys
from os.path import join,dirname,abspath

PROJECT_DIR = dirname(dirname(abspath(__file__)))

sys.path.insert(0,PROJECT_DIR) 
sys.path.append('專案絕對路徑/venv/lib/python3.5/site-packages')

from django.core.wsgi import get_wsgi_application

os.environ['DJANGO_SETTINGS_MODULE'] = 'test1.settings'
application = get_wsgi_application()


這樣的寫法並不是絕對的,

甚至部份的設定可移至apache的網站conf中,

故專案上線的話,

還是得多花點時間試驗看看



另外還有一個簡單的方法:

就是在 apache 設定中加上紅框中的兩行即可



如果有多個 Django 專案在同一台伺服器上跑,

記得將專案的 wsgi.py 改為底下:

os.environ["DJANGO_SETTINGS_MODULE"] = "{{ project_name }}.settings"

2019年2月22日 星期五

在Apache上安裝SSL憑證


SSL全名為Secure Sockets Layer,

安全通訊層,

用來保持網路連線安全防止系統間傳遞的資料被讀取或修改,

若有安裝SSL憑證的網站,

其網址就會是 https://網站名

而今天的主題就是

在Apache上安裝SSL憑證

這裡以

SSL for Free  及 Gandi 作為範例來介紹,

首先前往SSL for Free官網,

並在首頁填入要加入SSL的網域

 官方提供了三種方法驗證網域的使用權,

選擇任何一種即可,

這裡是以DNS 紀錄作驗證

 簡單的說,

只有三個步驟

按下Retry   Manual   Verification得到DNS新增TXT紀錄的資料,

到DNS控制台新增TXT紀錄,

下載免費SSL憑證
先到Gandi登入並選擇域名進入控制台


直接到區域檔紀錄進行更改


在右上角選擇新增紀錄




 根據上述的TXT資料新增,

Gandi的話,

沒辦法設定TTL 為1秒

暫定以300秒作為設定



建立之後等待幾分鐘,

等待DNS更新完畢以後,

按下verify acme-challenge出現成功以後,

在點選底下的下載憑證,

就會產生三個檔案供SSL憑證安裝

接著到XAMPP的控制台設定Apache,

先設定httpd-conf


找到

VirtualHost *:80

DocumentRoot "\projects\www\xhome\"
ServerName xhome.twshop.asia

#設定http自動轉址為https
RewriteEngine On
RewriteRule ^/(.*)$ https://xhome.twshop.asia/$1 [R=301,L]



接著設定httpd-ssl-conf

Listen 443

確定監控443 port

找到自己的伺服器設定

VirtualHost *:443

#   General setup for the virtual host
DocumentRoot "D:/projects/php/xampp/htdocs"
ServerName xhome.twshop.asia:443
ServerAdmin admin@mail

ErrorLog "D:/projects/php/xampp/apache/logs/error.log"
TransferLog "D:/projects/php/xampp/apache/logs/access.log"

#   SSL Engine Switch:
#   Enable/Disable SSL for this virtual host.
SSLEngine on

SSLCertificateFile "conf/ssl.crt/certificate.crt"
SSLCertificateKeyFile "conf/ssl.key/private.key"
SSLCertificateChainFile "conf/ssl.crt/ca_bundle.crt"




將底下三個設定,

改為上述在SSL for Free最後步驟下載的檔案

SSLCertificateFile "conf/ssl.crt/certificate.crt"
SSLCertificateKeyFile "conf/ssl.key/private.key"
SSLCertificateChainFile "conf/ssl.crt/ca_bundle.crt"



重新啟動apache,

網站就能以Https運行


當然,

免費的憑證有效期為三個月,

到期之後需要登入網站來renew的,