python 3 禪風

當我們執行以下指令

python -c "import this"

將會出現

其中這幾句話果然很對我的味

 Now is better than never.
 Although never is often better than *right* now.
 If the implementation is hard to explain, it's a bad idea.
 If the implementation is easy to explain, it may be a good idea.
 Namespaces are one honking great idea -- let's do more of those! 

mail出現好奇怪的log “…. rip=::1, lip=::1, secured, session” problem

有時候出現就一大堆, 最後出現too many open files , 有夠怪異, 只好讓限制 imap 與 pop3 只 listen 特定的 ip (ipv4) , 這樣就可以避掉疑似ipv6嘗試入侵的問題, 我自己是覺得可能是系統與dovecot之前某段出了狀況.
請修改 /etc/dovecot/conf.d/10-master.conf

service imap-login {
   inet_listener imap {
     address = x.x.x.x y.y.y.y
     #port = 143
   }
   inet_listener imaps {
     address = x.x.x.x y.y.y.y
     #port = 993
     #ssl = yes
   } 
}
service pop3-login {
   inet_listener pop3 {
     address = x.x.x.x y.y.y.y
     #port = 110
   }
   inet_listener pop3s {
     address = x.x.x.x y.y.y.y
     #port = 995
     #ssl = yes
   }
} 


docker container啟動管理supervisord設定心得

supervisord是常用的docker啟動管理程序, 通常我們都把一大堆服務寫進去supervisord.conf, 我最近弄的docker mail server (綁定AD) , 常常遇到container重啟時(docker restart) , supervisord裡面的service會出現already started字樣, 爬了文, 好像是這個參數搞的鬼, startsecs , 官網解釋如下

The total number of seconds which the program needs to stay running after a startup to consider the start successful (moving the process from the STARTING state to the RUNNING state)

也就是說這些service啟動成功後, supervisord預設會等個1秒才移除STARTING狀態, 但有可能造成service本身誤判, 誤以為已啟動,又再啟動一次, 所以service會重複跑個幾次 , 甚至有時候就再起不能了.

目前測試結果可以修改兩個參數, 一個是startsecs=0(立即更新成running狀態) , 另一個是startretries=0(重複啟動次數)
我是決定只改 startsecs=0 , 果然就沒出現already started字樣


ps. 這只是我個人測試自己docker mail server的心得, 沒有多次驗證

python初體驗hello world

不學python不行啊
曾有位高人說過:
python因為簡單,所以很難
想必python如同珍瓏棋局, 當世高人紛紛堪不破(aka: 學越多越難懂python),
只有心中毫無雜念之人(初心者)才能真正了解python啊

學了兩天, 終於搞定hello world

這是我搞定Hello World的心智圖筆記

最後發現python3 與 python2差異頗大, 借書只能借到舊版, 只好買了最新版碁峯 python 3.9 技術手冊

買筆電除了M$ OFFICE外的選擇”onlyoffice”

我們買windows筆電, 搭載的是試用版office 365, 若不想租用office 365, 可以移除後, 改用與M$相容性極高的onlyoffice.

onlyoffice 是免費軟體, 平台支援linux , windows, 與mac (包括mac m1) ç, 比之前open office , libre office 更貼近M$ office , 非常推薦使用., 千萬不要使用謎版的M$ office, 以免侵權.

PS. 可搭配免費可商用的字型 CNS11643全字庫 (全字庫首頁)

移除windows server上分享的印表機

通常把印表機刪除就好了, 但是有時候還真的不知道為何, 在使用者端還是會看到之前分享的印表機.
這時候只好到註冊表刪除看看了,

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion

若在註冊表看到不該出現的印表機設定, 就勇敢的刪除下去吧,
刪除完畢, server重開機, 再從使用者端看看幽靈印表機還有沒有出現.

誤刪docker 某個image, 重啟後, 相關連的container都無法使用了

真的手殘, 錯誤地停用某個 mariadb database 並且刪除了 image, 還好平常有記錄當時docker 執行的指令, 設定檔案也都在, 很快地就把該container 還原起來了.

但是參考到該container也跟著無法使用, 出現以下錯誤訊息:

 Cannot link to a non running container 

重開這些container, 也無法解決問題, 最後重新啟動 docker service ,才如願解決這個狀況.
我想應該是重啟docker時, 系統重新規劃這些container 內部ip, 就能順利參考到了.

docker安裝moodle線上學習初體驗

# 2024/05/03
這邊提醒一下,預設安裝,資料庫不需要密碼就能連線,這樣一般都不會有問題,因為資料庫沒有開放對外。
若資料庫開放外面連線的話,建議先設定資料庫密碼,然後再改設定開放外面連線。

以下是我將資料庫改完密碼後,再開放到外面透過3307連線
=========================== docker-compose.yml =====================================
version: '2'
services:
mariadb:
image: 'docker.io/bitnami/mariadb:10.6.8'
ports:
- '3307:3306'
environment:
# - ALLOW_EMPTY_PASSWORD=yes
- MARIADB_ROOT_PASSWORD=root的密碼
- MARIADB_USER=bn_moodle
- MARIADB_PASSWORD=密碼
- MARIADB_DATABASE=bitnami_moodle
- MARIADB_CHARACTER_SET=utf8mb4
- MARIADB_COLLATE=utf8mb4_unicode_ci
volumes:
- 'mariadb_data:/bitnami/mariadb'
moodle:
image: 'docker.io/bitnami/moodle:4.1.5'
ports:
- '8090:8080'
- '8446:8443'
environment:
- MOODLE_DATABASE_HOST=192.168.1.1(主機名稱或ip)
- MOODLE_DATABASE_PORT_NUMBER=3307
- MOODLE_DATABASE_USER=bn_moodle
- MOODLE_DATABASE_NAME=bitnami_moodle
- MOODLE_DATABASE_PASSWORD=密碼
- MOODLE_DATABASE_ROOT_PASSWORD=root的密碼
# - ALLOW_EMPTY_PASSWORD=yes

- MOODLE_SMTP_HOST=郵件伺服器IP
- MOODLE_SMTP_PORT=587
- MOODLE_SMTP_USER=帳號
- MOODLE_SMTP_PASSWORD=密碼
- MOODLE_SMTP_PROTOCOL=tls
volumes:
- 'moodle_data:/bitnami/moodle'
- 'moodledata_data:/bitnami/moodledata'
depends_on:
- mariadb
hostname:
'moodle.test.com'
volumes:
mariadb_data:
driver: local
moodle_data:
driver: local
moodledata_data:
driver: local
=========================== docker-compose.yml =====================================

若一開始測試系統安裝成功後(不需要密碼),之後要改需要密碼方式,這樣啟動會報告錯誤。
請改docker volume moodle_data 裡面的config.php ,在裡面加上密碼,才能正常運作。
$CFG->dbpass = '密碼';




docker搜尋一下, 找到 bitnami 製作的moodle images , 照著做滿簡單就能架站

0. 建立網路

docker network create moodle-network


1. 下載docker compose yaml檔案

curl -sSL https://raw.githubusercontent.com/bitnami/bitnami-docker-moodle/master/docker-compose.yml > docker-compose.yml

2. 修改yml如下

version: '2'
services:
mariadb:
image: 'docker.io/bitnami/mariadb:10.6'
hostname: mariadb
environment:
# 若開放外面連線,請務必加上#,否則很容易被入侵
- ALLOW_EMPTY_PASSWORD=yes

- MARIADB_USER=bn_moodle
- MARIADB_DATABASE=bitnami_moodle
- MARIADB_CHARACTER_SET=utf8mb4
- MARIADB_COLLATE=utf8mb4_unicode_ci
volumes:
- 'mariadb_data:/bitnami/mariadb'
moodle:
image: 'docker.io/bitnami/moodle:4.0.1'
ports:
- '8088:8080'
- '8445:8443'
environment:
- MOODLE_DATABASE_HOST=mariadb
- MOODLE_DATABASE_PORT_NUMBER=3306
- MOODLE_DATABASE_USER=bn_moodle
- MOODLE_DATABASE_NAME=bitnami_moodle
# 若開放外面連線,請務必加上#,否則很容易被入侵
- ALLOW_EMPTY_PASSWORD=yes

- MOODLE_SMTP_HOST=ip
- MOODLE_SMTP_PORT=587
- MOODLE_SMTP_USER=xxx
- MOODLE_SMTP_PASSWORD=yyy
- MOODLE_SMTP_PROTOCOL=tls

volumes:
- 'moodle_data:/bitnami/moodle'
- 'moodledata_data:/bitnami/moodledata'
depends_on:
- mariadb
hostname: moodle
volumes:
mariadb_data:
driver: local
moodle_data:
driver: local
moodledata_data:
driver: local

3. 這個moodle container 內部預設的http port 8080 , https port 8443, 我改成 80888445

docker-compose up -d

4. 瀏覽器輸入 https://ip:8445 登入, 預設帳號 user , 密碼 bitnami

5. 設定docker本體主機上面的let’s enpcrypt後, 進行httpd apache 與container對應工作

<VirtualHost *:443>
  ServerName 主機名稱
  ErrorLog /var/log/httpd/ssl_error_log
  TransferLog /var/log/httpd/ssl_access_log
  SSLEngine On
  SSLCertificateFile /etc/letsencrypt/live/<主機名稱>/cert.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/<主機名稱>/privkey.pem
  SSLCACertificateFile /etc/letsencrypt/live/<主機名稱>/fullchain.pem
  SSLProxyEngine On
  ProxyRequests Off
  ProxyPreserveHost On
  RequestHeader set X-Forwarded-Proto "https"
  ProxyPass / http://localhost:8088/
  ProxyPassReverse / http://localhost:8088/
  <Location />
    Order allow,deny
    Allow from all
  </Location>
</VirtualHost>   

 

6. 進入container設定網址(預設為 http://127.0.0.1:8080

[root@firewall ~]# docker exec -it moodle_hlmt_moodle_1 bash
root@moodle:/# vi /bitnami/moodle/config.php
//////////////////////////////////////////////////
if (empty($_SERVER['HTTP_HOST'])) {
  $_SERVER['HTTP_HOST'] = '127.0.0.1:8080';
}
改成
if (empty($_SERVER['HTTP_HOST'])) {
  $_SERVER['HTTP_HOST'] = '你的網址';
}

//////////////////////////////////////////////////

2022/02/18

安裝的時候, 一直無法啟用, 後來才發現,原來docker本身已經有container叫做mariadb , 但moodle預設也剛好是,於是就衝突, 衝突之後就算修改docker-compose.yml的資料庫名稱, 一樣沒反應, 所以解決方式應該是把這兩個container獨立出一個區域網路,

我不是很熟docker-compose如何自成一個網路, 版本太亂, 因此只好轉向改用一般方式啟用, 這也是官網建議的方式.

  • 建立自己的網路
docker network create moodle-network
  • 建立mariadb
docker volume create --name moodle_mariadb_data

docker run --restart always -d --name moodle-mariadb \
  --env ALLOW_EMPTY_PASSWORD=yes \
  --env MARIADB_USER=bn_moodle \
  --env MARIADB_PASSWORD=bitnami \
  --env MARIADB_DATABASE=bitnami_moodle \
  --network moodle-network \
  --volume moodle_mariadb_data:/bitnami/mariadb \
  bitnami/mariadb:latest
  • 建立moodle
    到目前為止, 我覺得沮喪的是以下這一段常常失敗, 原來主機效能太差, 還是會造成影響, 因為資料庫需要時間建立資料, 這時候就不能啟用moodle主系統, 因此必須等上一段資料庫跑久一點大概5分鐘, 再執行, 當然主機效能好可能就秒開.
docker volume create --name moodle_moodle_data

 docker run --restart always  -d --name moodle \
  -p 8082:8080 -p 8445:8443 \
  --env MOODLE_DATABASE_HOST=moodle-mariadb \
  --env ALLOW_EMPTY_PASSWORD=yes \
  --env MOODLE_DATABASE_USER=bn_moodle \
  --env MOODLE_DATABASE_PASSWORD=bitnami \
  --env MOODLE_DATABASE_NAME=bitnami_moodle \
  --network moodle-network \
  --volume moodle_moodle_data:/bitnami/moodle \
  bitnami/moodle:latest
  • 注意事項
    第一次啟動會很慢,至少10分鐘,大概是建立一些元件吧
1 ... 24 25 26 27 28 ... 59