2020年5月24日 星期日

[Docker] docker compose nginx template


自己常使用的 nginx 建構方式的筆記



version: "3.5"
services:
  web:
    image: nginx
    volumes:
      - ./ca:/ca
      - ./default.conf:/etc/nginx/conf.d/default.conf
    ports:
      - "80:80"
      - "443:443"
    networks:
      - default
networks:
  default:
    name: custom





[VPS] Oracle Cloud 設定開放的 Port

去年的十一月底,我在 Godaddy 買了一個 Domain 一直放到至今才想起有這件事情,也剛好近期有想架設的一些服務,才產生實作的動力。


原先的打算是,使用舊電腦灌成 ubuntu (其實去年 11 月底灌了...只是後來忙別的事情就放在角落生灰塵了),再搭配中華申請的固定 IP。

但近期看到 Oracle 提供了免費的 VPS ,抱著好奇的心態申請了帳號使用,整體的設定感覺比 Amazon 簡單許多。

Oracle Cloud ( https://www.oracle.com/tw/cloud/free/ )

申請的過程就不詳述了。

架好網站後,必須要去後台調整開放的 Port,否則預設外面是連不到的。

1. 開啟容器



[SSL] ZeroSSL 申請免費 Certificate 並設置 Nginx


ZeroSSL (https://zerossl.com/) 主要也是透過 let's encrypt (https://letsencrypt.org/) 去申請,因此也僅有90天的效期,會感覺特地用這個平台有點多餘,但整體介面較美觀,並且也比官方的流程好申請。

2019年12月28日 星期六

[Nodejs] 用 PKG 將專案打包為可執行檔

PKG 可以將整個 NodeJS 專案打包為可執行檔,可以看到 PKG 的 Github 上追蹤的 star 數有 15k,但是網路上的範例少之又少。

尤其在使用 Express Generator 所建立出的專案要如何打包,在概念不清楚的情況下如同瞎子摸象般摸索了許久。

打包完成後也經過多台電腦(包含未安裝 NodeJS 環境的電腦)的測試下,終於成功執行了。在此記錄下相關筆記。

一、 安裝 PKG


npm install -g pkg

二、 實際跑跑看官方的範例


官方範例連結

將專案 clone 下後,如同官方範例下方說明所敘述,執行命令: npm install

pkg .
完成後會產生各平台的執行檔。


如果只是要產生 windows 下的執行檔,可以使用命令:
pkg . -t win


三、 Express Generator 建立出的專案如何打包?


我的專案目錄如下圖:


在 package.json 中加入資訊

{
  ....
  "bin": "bin/www",
  "pkg": {
    "scripts":[
      "models/**/*",
      "routes/**/*",
      "app.js"
    ],
    "assets": [
      "views/**/*",
      "public/**/*",
      "data.db",
      ".env"
    ]
  }
}

執行指令:

pkg . -t win

接著就等待完成產生的 exe 檔案吧!


四、 遇到的問題


由於專案使用到了 sqlite3 ,在該 module 中包含了 .node 檔案,沒辦法被包入 exe 中,目前找到的解法只有和 exe 放在同一個目錄下執行。

例如,我的專案用到了node_sqlite3.node,在包好 exe 後,要將該檔案一同複製到相同目錄中,exe 才能成功執行,如下圖:




2019年12月1日 星期日

[Ubuntu] 安裝紀錄

* 建立安裝 USB
(1). Download iso file ( https://www.ubuntu-tw.org/modules/tinyd0/ )
(2). Rufus 製作開機 USB (https://rufus.ie/)


* Install packages

(1). 取得更新
sudo apt-get update

(2). SSH
sudo apt-get install openssh-server

(3). VNC ( https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-vnc-on-ubuntu-18-04 )
sudo apt-get install xfce4 xfce4-goodies
sudo apt-get install tightvncserver

安裝完成後,輸入 vncserver 建立密碼


sudo apt install nginx

sudo systemctl status nginx
or 
sudo service nginx status

(5). 防火牆
sudo apt-get ufw

sudo ufw status

sudo ufw enable
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 5901
sudo ufw allow ssh




* To-do list

setting fixed ip for pppoe
ftp
sftp
domain
cloudflare

2019年10月11日 星期五

[Python] 編譯成exe

環境:
python 2.7

安裝軟體:
pyinstaller (https://pypi.org/project/PyInstaller/)
pywin32

流程:
使用pyinstaller進行打包

在cmd中輸入
python pyinstaller.py -F filename.py




• 參考
https://blog.csdn.net/lqzdreamer/article/details/77917493

* 其他
https://anthony-tuininga.github.io/cx_Freeze/
https://sourceforge.net/projects/pyinstaller/


====================================================
更簡單的方法:

pip install auto-py-to-exe

auto-py-to-exe filename.py

[Python] I/O

2.7

import glob,os
from os.path import isfile, join
from os import walk
import urllib

* Read

with open(filePath, 'r') as file:
            data = file.read()
            decodeData = urllib.unquote(data)
           
* Write

f1=open(newFilePath, 'w+')
f1.write(decodeData)
f1.close()