Docker安裝LskyPro2.0升級過程

語言: CN / TW / HK

作者:IT王小二

部落格:https://itwxe.com

小二原來寫過使用 Typora+PicGo+LskyPro打造舒適寫作環境,上禮拜偶然發現LskyPro已經發布2.0版本,作為一個愛折騰的人,當然得耍耍,不過看到LskyPro官方文件寫到...

warning 升級指南 -> 遷移之前你需要知道的事

由於 2.x 版本與 1.x 存在巨大差異,且資料庫結構層面變化較大,無法從舊版本直接升級至 2.x 版本,但是作者我用了億點時間寫了遷移指令碼,儘管如此,從舊版本遷移還是一個比較繁瑣的步驟。

  1. 遷移指令碼只會將你的舊版本的資料庫資料遷移至新版本,如果你的舊版本使用的是本地儲存,你需要自己移動物理檔案。
  2. 新版本需要圖片的尺寸資料,在遷移過程中需要獲取圖片資訊,如果你的資料量較大,遷移可能需要很久,取決於你的網路以及伺服器的網路。
  3. 指令碼會遷移舊版本的角色組、策略配置、使用者、圖片資料,遷移後的角色組和儲存策略無任何關聯關係。
  4. 如果你使用的是本地儲存策略,遷移後的圖片,所有已遷移的圖片訪問 url 需要在域名後面加上 i 字母字首。
  5. 遷移成功後的使用者處於未驗證狀態,賬號的密碼為 使用者名稱+郵箱地址 的組合。
  6. 指令碼需要使用 php8 cli (命令列)模式下執行。

強烈準備升級的人檢視LskyPro官方文件:https://docs.lsky.pro,避免升級後不盡人意。

不過...深思熟慮之後,小二決定升級,為啥呢,因為有一顆折騰的心😂,同時也是覺得原來域名字首images太長了,正好升級之後連結變了統一換了,小二圖片都在Markdown檔案裡面,正則替換走一波,長痛不如短痛~嗯,短一點的字首就定位img吧

一、注意事項

首先小二說下最需要注意的點,避免有些小夥伴懶得看官方文件的,如果你是從1.x升級到2.x,那麼需要注意以下問題

  • 升級2.x過程遷移資料過程非常繁瑣,沒耐心就別折騰了,問題諸多,官方指令碼只能遷移資料庫資料,不能遷移圖片,小二也沒有選擇使用官方指令碼的方式!因為小二試過了,官方指令碼沒法獲取圖片尺寸,介面上看起來賊醜,小二選擇重新上傳一波,因為小二的圖片分日期放好了,只要重新上傳後修改Markown中的圖片連結地址就好了。
  • 升級2.x之後會加上字母i的字尾,就意味著你原來的圖片連結全變了!
  • 目前2.x可能還沒有那麼穩定,需要有承擔風險的心裡準備!
  • 升級之前一定要備份好原來的資料,不然資料丟失可別來找小二!

當然,你要是新人,沒有從1.x升級到2.x的煩惱,還是直接推薦2.0版本。

二、準備說明

還是老規矩,放上LskyPro原始碼連結,參考的Docker安裝地址。

LskyPro原始碼地址:https://github.com/lsky-org/lsky-pro

LskyPro安裝參考:https://github.com/lsky-org/lsky-pro/discussions/373

同樣,小二也借用了大佬的Dockerfile構建了映象,已經上傳到了自己的倉庫了,目前最新的為2.0.4版本。

小二構建的映象地址:https://hub.docker.com/r/itwxe/lskypro/tags

升級之前一定要備份好資料,最好伺服器和本地各一份!

準備資料庫

小二使用的MySQL5.7資料庫,小二1.x版本使用的資料庫名稱叫做lsky,所以,2.x使用的事先建立好一個名叫lskypro的資料庫,登入MySQL執行命令。

```sql

建立資料庫

create database lskypro;

個人習慣,建立供圖床使用的使用者,如果你使用root使用者登入,那麼可以不用這步操作

需要注意的是使用者和密碼中不能有特殊字元,例如#,不然LskyPro會報錯500

GRANT ALL PRIVILEGES ON lskypro.* TO '你的使用者名稱'@'%' IDENTIFIED BY '你的密碼'; FLUSH PRIVILEGES; ```

準備https

之前有小夥伴問過怎麼搭配Nginx實現https,這裡也記錄一下配置,當然首先你得在域名解析那裡配置解析,這一步不知道的小夥伴百度吧,非常簡單。小二使用的是 https://img.itwxe.com 這個域名,Nginx配置如下。

```nginx server { listen 443 ssl; server_name img.itwxe.com; ssl_certificate /usr/local/nginx/ssl/fullchain.cer; ssl_certificate_key /usr/local/nginx/ssl/itwxe.com.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 30m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5:!EXPORT56:!EXP; ssl_prefer_server_ciphers on; proxy_connect_timeout 500; proxy_send_timeout 500; proxy_read_timeout 500; client_max_body_size 10m;

    location / {
        proxy_pass http://127.0.0.1:6080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header REMOTE-HOST $remote_addr;
    }
}

```

三、部署LskyPro2.0

bash docker run -d --restart=always --name=lskypro -p 6080:80 -v /itwxe/dockerData/lskypro:/var/www/html itwxe/lskypro:2.0.4

啟動完成之後就可以訪問頁面啦,例如我的地址 https://img.itwxe.com

引導安裝介面1

保證全為勾後下一步。

引導安裝介面2

到這個介面就安裝成功啦。

引導安裝完成

對比一下舊版和新版的UI。

舊版UI

新版UI

感覺還是新版順眼點吧,哈哈哈。

四、測試新版

登入後的介面,咱上傳一個試試。

測試新版上傳1

測試新版上傳2

一切正常,接下來就是遷移舊資料了,小二並沒有使用官方指令碼,需要使用遷移指令碼的可以看官網。

主要就是將指令碼壓縮包上傳到伺服器,主要命令就三行,參考如下。

bash unzip migrate.zip docker cp /itwxe/migrate lskypro:/migrate docker exec lskypro php /migrate/start.php migrate

至此,蘭空圖床2.x搭建完成。

五、uPic使用問題

2.x改動巨大,包括上傳介面,不過PicGo外掛市場已經有大佬寫了LskyPro2.0的外掛了,下載使用就好了。

小二使用的uPic作為上傳,好處就是自定義功能比較簡單易用,適用於任何上傳介面,記錄一下LskyPro2.x獲取token和上傳圖片的辦法。

小二使用postman來請求,當然小夥伴們也可以使用其他工具。

請求介面:https://img.itwxe.com/api/v1/tokens

選擇Body -> row -> json

json { "email": "管理員賬號", "password": "管理員密碼" }

返回值中的token就是咱們要的,複製好,開啟uPic -> 偏好設定 -> 圖床 -> +自定義圖床,外面的配置。

uPic設定1

其中Header和Body分別加入以下資料。

uPic設定2

儲存後點擊驗證,正常返回圖片訪問連結即完成了。