2021年5月24日 星期一

Docker入門教學01_筆記與心得

文章分成

Docker入門教學01_筆記與心得

一、shell快速完成安裝docker
二、建立一個Docker版的Node.js程式,並完成部署與分享
三、利用ENTRYPOINT進行指定的程序
四、建立一個Nginx的Web服務器

Docker入門教學02_筆記與心得

五、建立Python3.8的開發環境
六、建立PostgreSql資料庫
七、使用pgadmin4管理PostgreSQL資料庫
八、建立自己的快取Redis

Docker入門教學03_筆記與心得:

九、Docker Compose
十、Flask+Redis多服務開發部署
十一、建立Vue開發環境

一、shell快速完成安裝docker

Docker定義:
應用程式運行環境
開發工具:
Visual Studio Code
Docker版本:
Docker Engine - Community
Docker安裝
Docker Engine - Community for Ubuntu 18.04(LTS)
指令
#系統更新
$sudo apt update
#安裝系統套件包  
$sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent
$sudo apt-get install software-properties-common
或是
$sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
#加入Docker套件庫密鑰
$curl -fsSL https://download.docker.com/linux/ubuntu/gpg|sudo apt-key add -
9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
#密鑰確認
$apt-key list
#最後8位作為fingerprint參數
$sudo apt-key fingerprint 0EBFCD88
#將Docker套件庫加入本地端套件庫
$sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
#檢查ubuntu核心版本 同 檢查套件庫加入的位置與內容

$lsb_release -cs
#檢查套件庫加入的位置與內容
$cat /etc/apt/sources.list|grep docker
#系統更新
$sudo apt update
#取得apt內docker-ce的內容
$sudo apt show docker-ce
#安裝Docker-ce
$sudo apt-get install docker-ce docker-ce-cli containerd.io
#檢驗安裝
$docker help
$docker version
$sudo docker run hellp-world
#檢查docker狀態
$service docker status
#將自己的使用者帳號webadmin加入至 docker 群組:
$sudo usermod -aG docker webadmin
登出再重新登入之後,就可以開始使用 Docker 了

將上述指令寫成shell,快速完成安裝

檔名:DockerInstall.sh
#!/bin/bash
apt update
apt-get install apt-transport-https ca-certificates curl gnupg-agent
apt-get install software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg|sudo apt-key add -
apt-key fingerprint 0EBFCD88
add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
apt update
apt-get install docker-ce docker-ce-cli containerd.io
usermod -aG docker webadmin

二、建立一個Docker版的Node.js程式,並完成部署與分享

觀念:

1建立Docker Image
2.編寫程式
3.上傳到GitHub
4.DockerHub雲編譯打包
5.下載使用Docker Image

目標:

建立一個Docker版的Node.js程式,並完成部署與分享

實戰:

電腦一

1.建立Git->https://github.com/mark2470mark

2.將Git下載到本地端
$git clone https://github.com/mark2470mark/mynode
$cd mynode

3.取得Node.js 8.16.1 LTS的鏡像
$sudo docker image pull node:8.16.1
$sudo docker image ls

4.編寫Node.js程式
$pico hello.js
內容為
console.log("Hello World!!");

5.執行此程式,需先建立一個Node.js的執行環境(container/容器)
$pico Dockerfile
內容為
FROM node:8.16.1
RUN mkdir /src
COPY hello.js /src
CMD ["node","/src/hello.js"]

6.編譯打包我們的執行環境
$sudo docker image build -t mark2470mark/mynode:v01 .
$sudo docker image ls

7.在目前環境中執行我們的程式
$sudo docker container run mark2470mark/mynode:v01

8.Git 提交
$git add .
$git commit -m "mynode1"
$git push
$git tag v01
$git tag
$git push origin v01

9.Docker Hub 雲編譯->https://hub.docker.com/

電腦二

1.取得執行環境,執行應用
$sudo docker image pull mark2470/mynode:latest
$sudo docker container run mark2470/mynode:latest
$sudo docker image pull mark2470/mynode:v01
$sudo docker container run mark2470/mynode:v01


三、利用ENTRYPOINT進行指定的程序

觀念:

ENTRYPOINT
ENTRYPOINT 具CMD功能,且可以跟CMD合用。
例如:
ENTRYPOINT ["curl"]
CMD ["http://www.skjh.chc.edu.tw/"]

container 啟動時會執行 curl http://www.skjh.chc.edu.tw/

實戰:

1.取得最新版的node.js鏡像
$sudo docker image pull node:latest
或
$sudo docker pull node:latest
2.啟動container,執行container內命令
$sudo docker container run node:latest ls /etc/
$sudo docker container run node:latest cat /etc/hosts
$sudo docker container run node:latest cat /etc/os-release
3.執行node進程,顯示版本號
$sudo docker image ls
$sudo docker container run node:latest node -v
$sudo docker container run node:latest node -help
4.設置node為預設的程序,然後顯示版本號
$pico Dockerfile
其內容為
FROM node:latest
ENTRYPOINT ["node"]
CMD [""]

$sudo docker image build -t mynode:latest .

$sudo docker image ls
$sudo docker container run mynode:latest -v
等同步驟3.$sudo docker container run node:latest node -v
$sudo docker container run mynode:latest -help
等同步驟3.$sudo docker container run node:latest node -help
5.使用CMD命令指定程序的預設參數
$pico Dockerfile
其內容為
FROM node:latest
ENTRYPOINT ["node"]
CMD ["-v"]

$sudo docker image build -t mynode:latest .
$sudo docker container run -it mynode:latest
等同步驟4.$sudo docker container run mynode:latest -v
等同步驟3.$sudo docker container run node:latest node -v
$sudo docker container run -it mynode:latest -help
等同步驟4.$sudo docker container run mynode:latest -help
等同步驟3.$sudo docker container run node:latest node -help
這意思是若指定參數-help,則原先的參數-v,則會被覆蓋。
$sudo docker container run -it mynode:latest -e "console.log('hello')"
-e 執行js腳本


四、建立一個Nginx的Web服務器

觀念:

1.在Docker Hub找可用的Image
2.Image的使用方法

實戰:

1.找到需要的Image,並下載到本地端
(1)到 Nginx.org,查閱目前最新版
(2)到Docker Hub,查詢Nginx

image版本說明:
image中alpine的意思是?
答:alpine 等於最小化系统,功能相同。
$sudo docker pull nginx:1.19.0-alpine
$sudo docker image ls



2.列出container內目錄
$sudo docker container run nginx:1.19.0-alpine ls

3.確認container 核心版本
$sudo docker container run nginx:1.19.0-alpine cat /etc/os-release

4.列出/etc/nginx目錄下的檔案或目錄
$sudo docker container run nginx:1.19.0-alpine ls -R -l /etc/nginx
ㄎㄧ

5. 列出nginx 全域設定檔案nginx.conf
$sudo docker container run nginx:1.19.0-alpine cat /etc/nginx/nginx.conf

6.列出Web虛擬主機的預設文件default.conf
$sudo docker container run nginx:1.19.0-alpine cat /etc/nginx/conf.d/default.conf

7.確認虛擬目錄下的內容
$sudo docker container run nginx:1.19.0-alpine ls -R -l /usr/share/nginx/html

8.啟動容器,確認效果
$sudo docker container run --name myweb -d -p 8088:80 nginx:1.19.0-alpine
$sudo docker container ls

9.服務動作確認
$curl http://127.0.0.1:8088

10.停止容器服務
$sudo docker container stop myweb
(1)停止所有容器與刪除所有容器
$sudo docker stop $(docker ps -a -q)  && sudo docker rm  $(docker ps -a -q) 
11.啟動現有的container
$sudo docker container start myweb
12.列出所有container
$sudo docker container ls -a
13.刪除指定的container
$sudo docker container rm -f myweb
14.刪除所有的容器
$sudo docker container prune
15.如何在本地端建立自己的網頁目錄與相關的html
$mkdir myweb
$cd myweb
$pico index.html
其內容為
<html>
<head>
<title></title>
</head>
<body>
<h1>Nginx Container index.html</h1>
</body>
</html>
$sudo docker container run --name myweb -d -p 8088:80 -v /home/webadmin/myweb:/usr/share/nginx/html:ro nginx:1.19.0-alpine
$curl http://127.0.0.1:8088

將上述指令寫成shell,快速完成安裝

檔案名稱:DockerNginxInstall.sh
檔案內容:
#!/bin/bash
docker container prune
docker pull nginx:1.19.0-alpine
mkdir myweb
cd myweb
echo "<html>" >index.html
echo "<head>" >>index.html
ec

一、shell快速完成安裝docker

Docker定義:
應用程式運行環境
開發工具:
Visual Studio Code
Docker版本:
Docker Engine - Community
Docker安裝
Docker Engine - Community for Ubuntu 18.04(LTS)
指令
#系統更新
$sudo apt update
#安裝系統套件包  
$sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent
$sudo apt-get install software-properties-common
或是
$sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
#加入Docker套件庫密鑰
$curl -fsSL https://download.docker.com/linux/ubuntu/gpg|sudo apt-key add -
9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
#密鑰確認
$apt-key list
#最後8位作為fingerprint參數
$sudo apt-key fingerprint 0EBFCD88
#將Docker套件庫加入本地端套件庫
$sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
#檢查ubuntu核心版本 同 檢查套件庫加入的位置與內容

$lsb_release -cs
#檢查套件庫加入的位置與內容
$cat /etc/apt/sources.list|grep docker
#系統更新
$sudo apt update
#取得apt內docker-ce的內容
$sudo apt show docker-ce
#安裝Docker-ce
$sudo apt-get install docker-ce docker-ce-cli containerd.io
#檢驗安裝
$docker help
$docker version
$sudo docker run hellp-world
#檢查docker狀態
$service docker status
#將自己的使用者帳號webadmin加入至 docker 群組:
$sudo usermod -aG docker webadmin
登出再重新登入之後,就可以開始使用 Docker 了

將上述指令寫成shell,快速完成安裝

檔名:DockerInstall.sh
#!/bin/bash
apt update
apt-get install apt-transport-https ca-certificates curl gnupg-agent
apt-get install software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg|sudo apt-key add -
apt-key fingerprint 0EBFCD88
add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
apt update
apt-get install docker-ce docker-ce-cli containerd.io
usermod -aG docker webadmin

二、建立一個Docker版的Node.js程式,並完成部署與分享

觀念:

1建立Docker Image
2.編寫程式
3.上傳到GitHub
4.DockerHub雲編譯打包
5.下載使用Docker Image

目標:

建立一個Docker版的Node.js程式,並完成部署與分享

實戰:

電腦一

1.建立Git->https://github.com/mark2470mark

2.將Git下載到本地端
$git clone https://github.com/mark2470mark/mynode
$cd mynode

3.取得Node.js 8.16.1 LTS的鏡像
$sudo docker image pull node:8.16.1
$sudo docker image ls

4.編寫Node.js程式
$pico hello.js
內容為
console.log("Hello World!!");

5.執行此程式,需先建立一個Node.js的執行環境(container/容器)
$pico Dockerfile
內容為
FROM node:8.16.1
RUN mkdir /src
COPY hello.js /src
CMD ["node","/src/hello.js"]

6.編譯打包我們的執行環境
$sudo docker image build -t mark2470mark/mynode:v01 .
$sudo docker image ls

7.在目前環境中執行我們的程式
$sudo docker container run mark2470mark/mynode:v01

8.Git 提交
$git add .
$git commit -m "mynode1"
$git push
$git tag v01
$git tag
$git push origin v01

9.Docker Hub 雲編譯->https://hub.docker.com/

電腦二

1.取得執行環境,執行應用
$sudo docker image pull mark2470/mynode:latest
$sudo docker container run mark2470/mynode:latest
$sudo docker image pull mark2470/mynode:v01
$sudo docker container run mark2470/mynode:v01


三、利用ENTRYPOINT進行指定的程序

觀念:

ENTRYPOINT
ENTRYPOINT 具CMD功能,且可以跟CMD合用。
例如:
ENTRYPOINT ["curl"]
CMD ["http://www.skjh.chc.edu.tw/"]

container 啟動時會執行 curl http://www.skjh.chc.edu.tw/

實戰:

1.取得最新版的node.js鏡像
$sudo docker image pull node:latest
或
$sudo docker pull node:latest
2.啟動container,執行container內命令
$sudo docker container run node:latest ls /etc/
$sudo docker container run node:latest cat /etc/hosts
$sudo docker container run node:latest cat /etc/os-release
3.執行node進程,顯示版本號
$sudo docker image ls
$sudo docker container run node:latest node -v
$sudo docker container run node:latest node -help
4.設置node為預設的程序,然後顯示版本號
$pico Dockerfile
其內容為
FROM node:latest
ENTRYPOINT ["node"]
CMD [""]

$sudo docker image build -t mynode:latest .

$sudo docker image ls
$sudo docker container run mynode:latest -v
等同步驟3.$sudo docker container run node:latest node -v
$sudo docker container run mynode:latest -help
等同步驟3.$sudo docker container run node:latest node -help
5.使用CMD命令指定程序的預設參數
$pico Dockerfile
其內容為
FROM node:latest
ENTRYPOINT ["node"]
CMD ["-v"]

$sudo docker image build -t mynode:latest .
$sudo docker container run -it mynode:latest
等同步驟4.$sudo docker container run mynode:latest -v
等同步驟3.$sudo docker container run node:latest node -v
$sudo docker container run -it mynode:latest -help
等同步驟4.$sudo docker container run mynode:latest -help
等同步驟3.$sudo docker container run node:latest node -help
這意思是若指定參數-help,則原先的參數-v,則會被覆蓋。
$sudo docker container run -it mynode:latest -e "console.log('hello')"
-e 執行js腳本


四、建立一個Nginx的Web服務器

觀念:

1.在Docker Hub找可用的Image
2.Image的使用方法

實戰:

1.找到需要的Image,並下載到本地端
(1)到 Nginx.org,查閱目前最新版
(2)到Docker Hub,查詢Nginx

image版本說明:
image中alpine的意思是?
答:alpine 等於最小化系统,功能相同。
$sudo docker pull nginx:1.19.0-alpine
$sudo docker image ls



2.列出container內目錄
$sudo docker container run nginx:1.19.0-alpine ls

3.確認container 核心版本
$sudo docker container run nginx:1.19.0-alpine cat /etc/os-release

4.列出/etc/nginx目錄下的檔案或目錄
$sudo docker container run nginx:1.19.0-alpine ls -R -l /etc/nginx
ㄎㄧ

5. 列出nginx 全域設定檔案nginx.conf
$sudo docker container run nginx:1.19.0-alpine cat /etc/nginx/nginx.conf

6.列出Web虛擬主機的預設文件default.conf
$sudo docker container run nginx:1.19.0-alpine cat /etc/nginx/conf.d/default.conf

7.確認虛擬目錄下的內容
$sudo docker container run nginx:1.19.0-alpine ls -R -l /usr/share/nginx/html

8.啟動容器,確認效果
$sudo docker container run --name myweb -d -p 8088:80 nginx:1.19.0-alpine
$sudo docker container ls

9.服務動作確認
$curl http://127.0.0.1:8088

10.停止容器服務
$sudo docker container stop myweb
(1)停止所有容器與刪除所有容器
$sudo docker stop $(docker ps -a -q)  && sudo docker rm  $(docker ps -a -q) 
11.啟動現有的container
$sudo docker container start myweb
12.列出所有container
$sudo docker container ls -a
13.刪除指定的container
$sudo docker container rm -f myweb
14.刪除所有的容器
$sudo docker container prune
15.如何在本地端建立自己的網頁目錄與相關的html
$mkdir myweb
$cd myweb
$pico index.html
其內容為
<html>
<head>
<title></title>
</head>
<body>
<h1>Nginx Container index.html</h1>
</body>
</html>
$sudo docker container run --name myweb -d -p 8088:80 -v /home/webadmin/myweb:/usr/share/nginx/html:ro nginx:1.19.0-alpine
$curl http://127.0.0.1:8088

將上述指令寫成shell,快速完成安裝

檔案名稱:DockerNginxInstall.sh
檔案內容:
#!/bin/bash
docker container prune
docker pull nginx:1.19.0-alpine
mkdir myweb
cd myweb
echo "<html>" >index.html
echo "<head>" >>index.html
echo "<title>myweb</title>" >>index.html
echo "</head>" >>index.html
echo "<body>" >>index.html
echo "<h1>Nginx Container index.html</h1>" >>index.html
echo "</body>" >>index.html
echo "</html>" >>index.html
docker container run --name myweb -d -p 8088:80 -v /home/webadmin/myweb:/usr/share/nginx/html:ro nginx:1.19.0-alpine
curl http://127.0.0.1:8088

ho "<title>myweb</title>" >>index.html
echo "</head>" >>index.html
echo "<body>" >>index.html
echo "<h1>Nginx Container index.html</h1>" >>index.html
echo "</body>" >>index.html
echo "</html>" >>index.html
docker container run --name myweb -d -p 8088:80 -v /home/webadmin/myweb:/usr/share/nginx/html:ro nginx:1.19.0-alpine
curl http://127.0.0.1:8088

2021年4月27日 星期二

在 Windows 10 x64 1909版,用BAT快速安裝派發彰化縣公文的文書組用的主機

       本篇是為了快速安裝快速安裝派發彰化縣公文的文書組用的主機。在原本的快速安裝公文系統基礎上,再加裝OEMSCHCG_Client。但是OEMSCHCG_Client需在.NetFramework v4.0安裝完成後,才能啟動。因此需要判別系統是否安裝.NetFramework v4.0。

適用系統:Win 7 與 Win10

影片教學與測試

檔案下載 解壓密碼:demo1234

檔案名稱:安裝彰化縣公文文書機.BAT
檔案內容:
@echo off
REM ----------------以下為設定檔-可修改-----------------
REM ----------------以下為讀卡機驅動程式----------------
set driver01_86=%~dp0AutoInstall\EZ100_Driver_32bit.exe
set driver01_64=%~dp0AutoInstall\EZ100_Driver_64bit.exe
REM ----------------以下為筆硯公文系統----------------
set driver02=%~dp0AutoInstall\docNinstall.msi
set driver03=%~dp0AutoInstall\docNcomp42@0_13a42.msi
REM ----以下為內政部HiCOS卡片管理工具ver3.0.3.62814----
set driver04=%~dp0AutoInstall\HiCOS_Client.exe
REM ----------------以下為公文電子交換服務系統----------------
set driver05=%~dp0AutoInstall\OEMSCHCG_Client_Setup.exe
set driver06=%~dp0AutoInstall\OEMSCHCG_Client_Setup_withDotNet45.exe
REM ----------------以下為IE啟動網頁----------------
set homepage01=http://gdms.chcg.gov.tw/
set homepage02=http://oems.chcg.gov.tw/\0
set homepage03=https://edit.chcg.gov.tw/kw/\0
set homepage04=http://172.20.3.50/httpweb/admin/public/login.asp\0
REM ----------------以下為程式碼-不可修改---------------------------
echo "確認MOICA內政部憑證管理程式安裝狀況"
if exist "C:\Program Files (x86)\Chunghwa Telecom" (
  @echo 安裝MOICA內政部憑證管理程式所在路徑為 %driver04%
   "%driver04%" /quiet /norestart
  @echo "安裝MOICA內政部憑證管理程式 OK"
) else (
  @echo "已安裝MOICA內政部憑證管理程式"
)
set IEpath=HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main
echo 設置首頁索引標籤
@reg add "%IEpath%" /v "Start Page" /t REG_SZ /d "%homepage01%" /f
@reg add "%IEpath%" /v "Secondary Start Pages" /t REG_MULTI_SZ /d "%homepage02%%homepage03%%homepage04%" /f
echo 設置首頁索引標籤 OK
echo "設定安全區域ActiveX控制項...."
set bl=2
set regpath=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\%bl%
echo 正在進行ActiveX的配置,請稍候...
@reg add "%regpath%" /v "1001" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "1004" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "1201" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "1206" /d "3" /t REG_DWORD /f
@reg add "%regpath%" /v "1207" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "1208" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "1209" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "120A" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "120B" /d "3" /t REG_DWORD /f
@reg add "%regpath%" /v "120C" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "1402" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "1405" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "1406" /d "3" /t REG_DWORD /f
@reg add "%regpath%" /v "1407" /d "1" /t REG_DWORD /f
@reg add "%regpath%" /v "1408" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "1409" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "140A" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "140C" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "1601" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "1604" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "1605" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "1606" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "1607" /d "3" /t REG_DWORD /f
@reg add "%regpath%" /v "1608" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "1609" /d "1" /t REG_DWORD /f
@reg add "%regpath%" /v "160A" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "160B" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "1802" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "1803" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "1804" /d "1" /t REG_DWORD /f
@reg add "%regpath%" /v "1806" /d "1" /t REG_DWORD /f
@reg add "%regpath%" /v "1809" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "1812" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "1A00" /d "131072" /t REG_DWORD /f
@reg add "%regpath%" /v "1A02" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "1A03" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "1A04" /d "3" /t REG_DWORD /f
@reg add "%regpath%" /v "1A05" /d "1" /t REG_DWORD /f
@reg add "%regpath%" /v "1A06" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "1A10" /d "1" /t REG_DWORD /f
@reg add "%regpath%" /v "1C00" /d "65536" /t REG_DWORD /f
@reg add "%regpath%" /v "2000" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "2001" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "2004" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "2005" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "2007" /d "65536" /t REG_DWORD /f
@reg add "%regpath%" /v "2100" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "2101" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "2102" /d "3" /t REG_DWORD /f
@reg add "%regpath%" /v "2103" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "2104" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "2105" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "2106" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "2107" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "2108" /d "3" /t REG_DWORD /f
@reg add "%regpath%" /v "2200" /d "3" /t REG_DWORD /f
@reg add "%regpath%" /v "2201" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "2300" /d "1" /t REG_DWORD /f
@reg add "%regpath%" /v "2301" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "2302" /d "3" /t REG_DWORD /f
@reg add "%regpath%" /v "2400" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "2401" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "2402" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "2500" /d "3" /t REG_DWORD /f
@reg add "%regpath%" /v "2600" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "2700" /d "3" /t REG_DWORD /f
@reg add "%regpath%" /v "2701" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "2702" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "2703" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "2704" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "2707" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "2708" /d "3" /t REG_DWORD /f
@reg add "%regpath%" /v "2709" /d "3" /t REG_DWORD /f
@reg add "%regpath%" /v "270B" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "270C" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "270D" /d "0" /t REG_DWORD /f
@reg add "%regpath%" /v "CurrentLevel" /d "0" /t REG_DWORD /f
@reg add "HKCU\Software\Microsoft\Internet Explorer\New Windows" /v "PopupMgr" /t REG_DWORD /d "0" /f
@reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v "SyncMode5" /t REG_DWORD /d "3" /f
echo "設定安全區域ActiveX控制項OK!!"
@echo 設定信任網站清單
regedit.exe /s "%~dp0AutoInstall\信任網站清單.reg"
@echo -------------------------------------------------------------------------------
@echo 設定完成
@echo -------------------------------------------------------------------------------
copy "%~dp0AutoInstall\公文整合資訊系統.url" "%USERPROFILE%\desktop"
@echo 捷徑複製完成
echo 安裝筆硯安裝程式所在路徑為 %driver02%
msiexec /package %driver02% /quiet /norestart
echo 安裝筆硯安裝程式所在路徑為 %driver03%
msiexec /package %driver03% /quiet /norestart
echo "安裝筆硯安裝程式 OK"
echo "安裝公文電子交換服務系統"
set regPath4="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\v4.0"
reg QUERY %regPath4%>nul 2>nul&& set varNf4=1 || set varNf4=0
if %varNf4% == 1 (
  echo ".NETFramework v4.0 is installed."
  start /wait %driver05% /S
) else (
  echo ".NETFramework v4.0 is not installed."
  start /wait %driver06% /S
)
echo "安裝公文電子交換服務系統OK"
if "%PROCESSOR_ARCHITECTURE%" == "x86" goto x86
if "%PROCESSOR_ARCHITECTURE%" == "AMD64" goto x64
rem 針對win10有32跟64位元的判斷
:x86
echo "x86"
echo 安裝讀卡機驅動程式所在路徑為 %driver01_86%
start /wait %driver01_86% /S /v/qn
echo "安裝讀卡機驅動程式 OK"
echo "請重新開機,完成所有設定"
pause
exit
:x64
echo "x64"
echo 安裝讀卡機驅動程式所在路徑為 %driver01_64%
start /wait %driver01_64% /S /v/qn
echo "安裝讀卡機驅動程式 OK"
echo "請重新開機,完成所有設定"
pause
exit

2021年4月24日 星期六

在 Windows 10 x64 1909版,用BAT快速安裝人事ECPA網(公文系統已完成安裝)

第一篇 在 Windows 10 x64 1909版,使用BAT快速安裝人事服務網(自然人憑證)版

第二篇 在 Windows 10 x64 1909版,使用BAT快速安裝公文系統與人事服務網(自然人憑證)版

第三篇 在 Windows 10 x64 1909版,用BAT快速安裝人事ECPA網(公文系統已完成安裝)

20210424完成。

   適用對象主機:已完成安裝公文系統的行政人員主機。

   本篇是為了解決原本已經安裝公文系統的電腦,再安裝人事ECPA網。在第二篇中,其實可以用第二篇的檔案重新安裝公文與人事ECPA系統。但是第二篇的檔案高達62M,希望能降低下載的檔案量(只有6.33M)。換句話說,在已經安裝公文系統的電腦上,只要再執行檔案內的BAT,就可以加裝人事ECPA網。而且執行的時間更短。

影片教學

檔案下載 解壓密碼:demo1234

檔案名稱:已安裝公文系統_人事服務網快速安裝.BAT
檔案內容:
@echo off
REM ----------------以下為設定檔-可修改-----------------
REM ----------------以下為IE啟動網頁----------------
set homepage01=http://gdms.chcg.gov.tw/
set homepage02=https://edit.chcg.gov.tw/kw/\0
set homepage03=https://ecpa.dgpa.gov.tw/\0
set homepage04=http://172.20.3.50/httpweb/admin/public/login.asp\0
REM ----------------以下為程式碼-不可修改---------------------------
set IEpath=HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main
echo 設置首頁索引標籤
@reg add "%IEpath%" /v "Start Page" /t REG_SZ /d "%homepage01%" /f
@reg add "%IEpath%" /v "Secondary Start Pages" /t REG_MULTI_SZ /d "%homepage02%%homepage03%%homepage04%" /f
echo 設置首頁索引標籤 OK
echo "設定安全區域ActiveX控制項...."
set bl=2
set regpath=HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\%bl%
echo 正在進行ActiveX的配置,請稍候...
@reg add "%regpath%" /v "2300" /d "0" /t REG_DWORD /f
echo "設定安全區域ActiveX控制項OK!!"
@echo "安裝eCPA登入元件開始......"
msiexec /package %~dp0AutoInstall\eCPA_Setup.msi /quiet /norestart
@echo "安裝eCPA登入元件OK"
@echo "安裝System ActiveX開始......"
start /wait %~dp0AutoInstall\System_ActiveX_Setup.exe /S /v/qn
@echo "安裝System ActiveX OK"
@echo -------------------------------------------------------------------------------
copy "%~dp0AutoInstall\eCPA.url" "%USERPROFILE%\desktop"
@echo 捷徑複製完成
pause
exit

資料來源:
1.在 Windows 10 x64 1909版,使用BAT快速安裝人事服務網(自然人憑證)版
2.在 Windows 10 x64 1909版,使用BAT快速安裝彰化縣公文系統
3.在Windows 7,用 BAT 一鍵安裝彰縣公文系統

2021年4月22日 星期四

只要會用滑鼠點兩下,啟用Windows 10 Administrator 帳戶

        最近幫同事安裝Namo Webeditor 5.5,明明已經輸入完序號。重開機完後,再次使用Namo Webeditor 5.5。卻出現[授權碼已經遺失]的訊息,然後就無法使用 Namo Webeditor 5.5。即使解除安裝 Namo Webeditor 5.5,再重新安裝 Namo Webeditor 5.5,一樣會出現 [授權碼已經遺失]。心裡想著是不是沒有移除乾淨,於是到原先安裝的資料夾中,發現解除安裝後,依舊有Namo的資料夾。於是刪除所有Namo的資料夾,再次重新安裝。沒想到還是出現[授權碼已經遺失]的訊息。最後,啟用Windows 10 Administrator 帳戶,直接用Administrator 帳戶安裝安裝Namo Webeditor 5.5並輸入帳號。重開機後,再次啟用Namo Webeditor 5.5,就看不到[授權碼已經遺失]的訊息。而且可以正常使用[授權碼已經遺失]的訊息。
        若能在一開始完成Windows 10 的安裝,接下來啟用Administrator與關閉Windows 10 的初始設定的帳號。以後都使用Administrator,就可以避免上述的情況。

程式碼使用影片教學

程式目的:啟用Windows 10 Administrator 帳戶
檔案名稱:EnabledAdministrator.bat
檔案內容:
@echo off
REM ---------------以下是程式碼,不需更改---------------
REM :: BatchGotAdmin (Run as Admin code starts)
REM --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
REM :: BatchGotAdmin (Run as Admin code ends)
REM :: Your codes should start from the following line
net user administrator /active:yes
shutdown /r /f /T 0 -C "Reboot in 0 seconds"

程式目的:停用Windows 10 Administrator 帳戶
檔案名稱:DisabledAdministrator.bat
檔案內容:
@echo off
REM ---------------以下是程式碼,不需更改---------------
REM :: BatchGotAdmin (Run as Admin code starts)
REM --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
REM :: BatchGotAdmin (Run as Admin code ends)
REM :: Your codes should start from the following line
net user administrator /active:no
shutdown /r /f /T 0 -C "Reboot in 0 seconds"




2021年4月12日 星期一

只要會用滑鼠點兩下,停用與啟用Windows 10 更新

        在學校使用Windows 10電腦上課,卻發現正在進行更新。需要等到更新結束,重開機後才能使用電腦上課。非常不便,造成大家的困擾。希望能寫個BAT,快速對這個BAT點兩下就能停用更新或是啟用更新。

        過去所寫的BAT,速度有點慢且需要系統管理員的權限。現在只要點兩下2次,系統就會停用更新與重開機。

範例檔案下載,解壓密碼demo1234

教學影片:

目的:停用Windows 10 更新
檔案名稱:StopWin10Update.bat
內容:
@echo off
REM ---------------以下是程式碼,不需更改---------------
REM :: BatchGotAdmin (Run as Admin code starts)
REM --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
REM :: BatchGotAdmin (Run as Admin code ends)
REM :: Your codes should start from the following line
sc stop wuauserv
sc stop BITS
sc config wuauserv start= disabled
sc config BITS start= disabled
shutdown /r /f /T 0 -C "Reboot in 0 seconds"

目的:啟用Windows 10 更新
檔案名稱:StartWin10Update.bat
內容:
@echo off
REM ---------------以下是程式碼,不需更改---------------
REM :: BatchGotAdmin (Run as Admin code starts)
REM --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
REM :: BatchGotAdmin (Run as Admin code ends)
REM :: Your codes should start from the following line
sc config wuauserv start= auto
sc config BITS start= auto
sc start wuauserv
sc start BITS
shutdown /r /f /T 0 -C "Reboot in 0 seconds"


 注意事項:在Windows 10,要以系統管理員身分執行BAT。
範例檔案下載,解壓密碼demo1234
   在電腦教室,想要關閉Windows10更新,需要很多步驟。希望能夠快速關閉。
檔案名稱:StopWin10Update.bat
內容:
@echo off
echo "STOP wuauserv"
sc stop wuauserv
echo "STOP wuauserv OK,STOP BITS"
sc stop BITS
echo "STOP BITS OK,Disable wuauserv"
sc config wuauserv start= disable
echo "Disable wuauserv OK,Disable BITS"
sc config BITS start= disable
echo "Disable BITS OK,reboot in 5 seconds"
PAUSE
shutdown /r /f /T 5 -C "Reboot in 5 seconds"


那要如何知道,wuauserv 與 BITS 的狀態?
檔案名稱:StatusWin10Update.BAT
內容:
@echo off
echo "wuauserv的狀態"
sc query wuauserv
echo "BITS的狀態"
sc query BITS 
PAUSE

檔案名稱:StartWin10Update.bat
內容:
@echo off
echo "Enable wuauserv"
sc config wuauserv start= auto
echo "Enable wuauserv OK,Enable BITS"
sc config BITS start= auto
echo "Enable BITS OK,Start wuauserv"
sc start wuauserv
echo "STOP wuauserv OK,Sart BITS"
sc start BITS
echo "STOP BITS OK,Reboot in 5 seconds"
PAUSE
shutdown /r /f /T 5 -C "Reboot in 5 seconds"

   在電腦教室,有時需要傳BAT給學生。但是又怕學生會留下這個BAT。所以希望學生執行一次,BAT就消失。
檔案名稱:DeleteSelf.bat
內容:
start del /f /q DeleteSelf.bat
執行完,DeleteSelf.bat 就會消失。



資料來源:

如何用shell在linux升級 Apache2

1.ubuntu 升級 Apache2 的指令
$sudo add-apt-repository ppa:ondrej/apache2
$sudo apt-get update
$sudo apt install apache2

1.01 shell 升級 Apache2
檔案名稱:UbuntuApache2Update.sh
檔案內容: 
#!/bin/bash
add-apt-repository ppa:ondrej/apache2
apt-get update
apt install apache2

2.CentOS7 升級 http 的指令
$sudo cd /etc/yum.repos.d && wget https://repo.codeit.guru/codeit.el`rpm -q --qf "%{VERSION}" $(rpm -q --whatprovides redhat-release)`.repo
$sudo yum install httpd
$sudo systemctl restart httpd

2.01 shell 升級 Apache2
檔案名稱:CentOSHttpUpdate.sh
檔案內容: 
 #!/bin/bash
cd /etc/yum.repos.d && wget https://repo.codeit.guru/codeit.el`rpm -q --qf "%{VERSION}" $(rpm -q --whatprovides redhat-release)`.repo
yum install httpd
systemctl restart httpd


只要點兩下就能將 彰化縣EIP系統全校學生帳號總表 依 各班級 分成 各班級學生帳號總表

系列文章: 1. 只要點兩下就能產出彰化縣Cloud School 學生帳號密碼匯入彰化縣EIP系統學生帳號密碼的CSV 1. https://skjhcreator.blogspot.com/2025/08/cloud-school-eipcsv.html 2. 只要點兩下就能...