2019年6月20日 星期四

Open edX第三方帳號登錄(Oauth2)


由於Open edX的開放,

所以對於第三方網站的支援也蠻多樣的,

針對第三方登錄,

Open edX是採用與現有Open edX帳號綁定的方式,

而非直接註冊一個新帳號給予第三方帳號使用,



Open edX支援底下幾種類型的第三方伺服器:


  • 基於Oauth的provider

  • Security Assertion Markup Language (SAML)  V2

  • LTI


既然Open edX支援,

接下來就教大家如何將此服務開啟

Open edX第三方帳號登錄(Oauth2)


1.
首先找到  /edx/app/edxapp/lms.env.json ,

找到

"FEATURES" : {
    ...
    "ENABLE_COMBINED_LOGIN_REGISTRATION": true,
    "ENABLE_THIRD_PARTY_AUTH": true
}

並確認ENABLE_THIRD_PARTY_AUTH為enable


2.
接著就是到django admin中找到底下



以Oauth為範例,

選擇Provider configuration (OAuth)後的 Add,

新增一個provider設定


3.
比較重要的幾個設定為

已啟用(Enable)  :  此選項當然要打勾啟用

icon class / icon image:  此兩者必須要設定其中一項

Name:  即provider的名字

site: 填寫目前Open edX網域名稱



Visible:  當然要打勾, 不然就使用者無法看到登入選項

Backend name:  目前的第三方下拉式選單,預設有Google , Facebook, Linkedin, Azuread等

再來就是Oauth中由Provider所提供的

Client ID與 Client Secret

按下儲存



4.
在Open edX登入畫面即可看到如以下的按鈕

使用者可根據自己需求,

點選不同第三方進行登錄


5.
前面有提到Open edX的第三方登入必須綁定現有的帳號才能使用,

所以第一次使用第三方登入必須先以平台的帳號登入,

在右上角下拉式選單中選擇 "帳號"(Account),

再到"已連結帳號"分頁進行綁定




除了Google , Facebook 等等,

據說還支援了其他不少的第三方Provider,

不過預設在系統中並未列出來,

僅在官方文件有提到:

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年6月13日 星期四

[影視戲劇]自白Confession


今天要來推薦的是韓劇

自白Confession


這部片表面上看起來是男主角崔道賢為父親冤獄平反的搜查劇,

實際上卻扯出國防弊案的重大事件


崔道賢從小患有心臟病,

父親崔必秀則是從事國防軍備驗收相關的軍人,

奇蹟似得到心臟移植後,

父親卻因殺人罪入獄


長大後的崔道賢成為律師,

希望找出十年前的真相,

該劇很用心的將每個事件的真相打散隱藏在每一個案件中,

要為父親洗親冤屈,

就必須從每個案件隱藏的線索拼湊起來,

從當年的目擊證人一一被滅口之後,

真相並沒有被隱藏起來,

反而因為凶殺案的關係,

牽扯出當年的真相





原來當年,

父親為了救兒子一命,

接受了交易,

選擇頂罪與掩蓋真相,

也因為這樣,

造成當年事件的目擊者一一被滅口

從調查弊案的檢察官盧宣厚,

化名雪花的金善熙,

護士曹晶善,

軍火說客Jenny宋,

等等

當然還有命大沒死的

駕駛兵韓鐘國,

兇手曹基卓,

秘書黃教植等

這一概人等

都是拼湊出真相的重要一環,

做為一個純追劇的影迷,

大家一起幫崔道賢,

找出當年的真相吧