3-2 Linux上隨系統開機啟動服務
以Centos 7 發行版為例
-
請注意, 此時提供服務的主机為Linux, 所以redirect uri 也必須更改為此台要執行更改密碼服務的主机IP
-
為方便測試, 請先將selinux及防火牆停用
安裝openjdk8
# yum install java-1.8.0-openjdk.x86_64 |
檢查是否有java 環境
# java -version openjdk version "1.8.0_212" OpenJDK Runtime Environment (build 1.8.0_212-b04) OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)
|
將Windows AD的ip與名稱加到/etc/hosts中
/etc/hosts
192.168.1.160 happy.tc.edu.tw happy |
Ping windows AD的主机名稱
# ping happy.tc.edu.tw PING happy.tc.edu.tw (192.168.1.160) 56(84) bytes of data. 64 bytes from happy.tc.edu.tw (192.168.1.160): icmp_seq=1 ttl=128 time=3.78 ms |
將更改密碼程式移到 /opt下
#mv -f /home/igogo/passwd /opt/ |
先手動執行服務看看是否能順利接上Windows AD
#java -jar passwd.jar |
隨開機啟動設定
交由systemd 啟動, 先產生一個能識別是更改密碼的服務檔名
# touch /etc/systemd/system/passwd.service |
編輯此檔
# vi /etc/systemd/system/passwd.service |
[Unit] Description=passwd After=syslog.target
[Service] User=igogo WorkingDirectory=/opt/passwd ExecStart=/usr/bin/java -Djava.net.preferIPv4Stack=true -Dserver.port=8080 -jar /opt/passwd/passwd.jar SuccessExitStatus=143
[Install] WantedBy=multi-user.target |
-
如果此台Linux主机只打算跑更改密碼服務, 那麼8080可以隨意更改, 若此台机器若原先已經運行httpd在80 port, 則可以預設8080, 下節設定反向代理的方式由80轉向8080 , 讓多個服務同時運行
-
下載的更改密碼程式, 為了方便版本辨識,會加上版號, 例如 passwd-1.x.jar, 建議加入systemd 的服務時, 直接改為passwd.jar, 將來更新時, 只要把passwd.jar 覆蓋過去即可
-
User=igogo 是此程式要交由誰執行, 不可以是root, 如果已安裝httpd, 則交給apache, 或是建一個使用者, 讓該使用者有/opt/passwd的讀寫權限
這裡以交付apache為例
# chown -R apache.apache /opt/passwd/ |
加入隨開機啟動
# systemctl enable passwd |
手動啟動
# systemctl start passwd |
檢測看看是否成功啟動
# systemctl status passwd # ss -ltn |
在80 port 執行服務
1. 一般80 port 可能已執行其它服務, 例如學校首頁
2. systemd 預設並不允許交由一般user 執行程式佔住 80 port
所以本章節旨在說明利用反向代理架構執行更改密碼服務
以Apache當成httpd server
轉內部8080 port 到 到對外服務的 80 port
如果原先已有設定,請找詢此段<VirtualHost *:80> </VirtualHost> 加入以下檔案內容, 如果沒有則先建立一個空檔如下
# touch /etc/httpd/conf.d/default-site.conf |
編輯default-site.conf
<VirtualHost *:80> <Location /passwd/> ProxyPass "http://127.0.0.1:8080/" ProxyPassReverse "http://127.0.0.1:8080/" Order deny,allow Allow from all </Location>
</VirtualHost> |
記得/passwd/ 後面還有一個斜線
打開瀏覽器打上 http://linux ip/passwd/ 測試是否設定成功