增加 YUM 儲存庫
安裝 Gogs 加入下面這兩個 YUM 儲存庫,會讓我們在安裝的過程中比較順利一點。
增加 nginx YUM 儲存庫
echo "[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1" | tee /etc/yum.repos.d/nginx.repo
增加 Gogs YUM 儲存庫
echo "[gogs]
name=Repository for pkgr/gogs application.
baseurl=https://rpm.packager.io/gh/pkgr/gogs/centos7/pkgr
enabled=1" | tee /etc/yum.repos.d/gogs.repo
安裝 MariaDB
MariaDB 是 MySQL 的一個分支,自從 MySQL 被 Oracle 買走之後,MySQL 有了閉源的風險(Oracle 實在讓我愈來愈反感),開源社群的神人們就從 MySQL 分支出 MariaDB 來避開侵權的風險,我們就輸入下列指令把 MariaDB 安裝起來。
yum -y install mariadb-server mariadb
啟動 MariaDB
systemctl enable mariadb
systemctl start mariadb
設定 root 密碼
mysqladmin -u root password "{密碼}"
mysqladmin -u root --password="{密碼}" password "{密碼}"
建立 gogs 資料庫
mysql -u root -p{密碼} -e "CREATE DATABASE IF NOT EXISTS gogs; use gogs; set global storage_engine=INNODB;"
-p{密碼}
中間沒有空格安裝 nginx
yum -y install nginx
設定 nginx 反向代理
cat > /etc/nginx/conf.d/default.conf <<EOF
server {
listen 80;
server_name {HOSTNAME};
location / {
proxy_pass http://localhost:3000;
}
}
EOF
啟動 nginx
systemctl enable nginx
systemctl start nginx
安裝 Gogs
# Import RPM Key
rpm --import https://rpm.packager.io/key
yum -y install gogs
開啟防火牆 3000 埠號
firewall-cmd --permanent --add-port=3000/tcp
firewall-cmd --reload
初始化 Gogs 設定
上面的步驟都完成之後,這時候只要在瀏覽器打上 http://{HOST_NAME}:3000/
就會出現初始設定畫面。
我們針對下面這些必要的參數進行設定,其餘的參數如果不確定的話就保持預設值即可,更詳細的參數說明請參考 Configuration Cheat Sheet。
Application General Settings
- Application URL: 請設定成 http://{HOST_NAME}:3000/ 或 http://{IP}:3000/
Database Settings
- Password: 輸入您設定的 MySQL root 帳號的密碼。
Admin Account Settings
建立 Gogs 的第一個使用者,這個第一個使用者預設就是管理者。
- Username: 使用者名稱(即登入帳號)
- Password: 使用者密碼(即登入密碼)
- Confirm Password: 再次輸入使用者密碼
- Admin Email: 使用者的 Email 信箱
參數設定完成之後,按下 Install Gogs
按鈕,稍待一會兒就會以預設管理者的身份登入系統並顯示首頁。
設定 LDAP
Gogs 安裝成功之後,預設是讓使用者用自行註冊的方式來建立帳號,如果我們已經有 AD 了就可以透過 LDAP 直接跟 AD 接起來做使用者的驗證。
進入 Admin Panel
用具有管理者帳號的身份登入,在右上角的大頭貼點開,進入 Admin Panel
。
Add New Source
接著到 Authentications
區塊,點擊 Add New Source
按鈕來新增的一個驗證來源。
LDAP (via BindDN)
- Authentication Type: 請選擇
LDAP (via BindDN)
- Authentication Name: 指定一個 Source 的名稱
- Host: AD 的 Hostname
- Port: 通常是 389
- Bind DN: 指定一個使用者的 DN,以上面圖片中的設定值為例,意思就是在 chef.com.tw 這個網域的 Users 群組的 administrator。
- Bind Password: Bind DN 使用者的密碼
- User Search Base: 要尋找使用者用的基礎 DN
- User Filter: 用來告訴 AD 要過濾的方式,輸入
(&(objectCategory=person)(objectClass=user)(sAMAccountName=%s))
。 - Email attribute: 輸人
mail
按下 Add News Source
按鈕就設定成功了,之後使用者只要輸入 AD 的帳號及密碼就可以登入使用了。
另外在選擇 Authentication Type 的時候,我們有看到另外一個設定叫 LDAP (simple auth)
,差別在於 LDAP (simple auth) 在設定時不需要先給一個 Bind DN,但是 User DN
的設定值必須要是完全符合的 DN 規則,舉例來講,我們要開放系統給一個在 Users 群組裡面叫 Admin 的人使用,傳送給 AD 的 DN 就會是 CN=Admin,CN=Users,DC=chef,DC=com,DC=tw
,可是如果我們要開放給一個在 IT 群組裡面叫 Johnny 的人使用的話,LDAP (simple auth) 就做不到,所以我們的組織結構如果是很單純的只有一個群組,裡面有所有允許被開放使用的人,就用 LDAP (simple auth),如果要被開放的人是屬於不同群組,我們就必須選用 LDAP (via BindDN)。