2020-10-31

在 Digitalocean Spaces 使用 s3cmd

在 Digitalocean Spaces 使用 s3cmd

上一篇 基本上是廢文。 s3fs 好用,但只適合用在檔案數不多的情況下操作,而且不適合搭配 rsync 一起使用。

檔案數多時(我的狀況是有數百萬個檔案要上傳,或同步),就應該使用 s3cmd。

s3cmd 安裝方式可以參考 Digitalocean 官方的說明 Setting Up s3cmd 2.x with DigitalOcean Spaces

s3cmd 基本用法也可以參考 Examples of s3cmd 2.x Usage with DigitalOcean Spaces。當然也可以用 s3cmd --help 查詢。

以下列出自己常用的部份:

# 上傳 my_path2 整個資料夾到 s3://my_bucket/my_path2,同時設定為 public s3cmd put --acl-public --recursive /my_path1/my_path2 s3://my_bucket/
# 同步 my_path2 資料夾到 s3://my_bucket/my_path2,同時設定為 public s3cmd sync --acl-public /my_path1/my_path2 s3://my_bucket/
# 設定 s3://my_bucket/my_path2 內所有檔案為 public s3cmd setacl --acl-public --recursive s3://my_bucket/my_path2/

2020-10-25

在 Digitalocean Spaces 和 Wasabi 上使用 s3fs 和 rsync

在 Digitalocean Spaces 和 Wasabi 上使用 s3fs 和 rsync

AWS S3 是個方便的雲端工具,唯一的缺點就是價格高了一些(消費者的缺點?) 剛好有客戶是用 digitalocean 的空間,就來試試 Spaces 吧(開始踩雷之旅)。

之前試用 S3,發現 s3fs 真是個好東西,掛上去之後就像使用一般磁碟一樣方便。

在 ubuntu 20.4 上安裝好 s3fs 後,Spaces 的設定一直搞不定,參考了這篇How to mount DigitalOcean Spaces on droplets with s3fs

其中一點是 /etc/fuse.conf 裡的 user_allow_other 要開啟。 另外要開 debug mode 的設定,不然永遠都沒訊息,不管有沒有設定成功。

-o dbglevel=info -f -o curldbg

Digitalocean Spaces 以設定在 sfo2 為例子:

s3fs mySpacesName ${HOME}/s3/myMntFolder -o passwd_file=${HOME}/.passwd-do-spaces -o url=https://sfo2.digitaloceanspaces.com/ -o allow_other -o use_path_request_style -o dbglevel=info -f -o curldbg

上式中,mySpacesName 為 Spaces 名稱;${HOME}/s3/myMntFolder 為掛載的資料夾路徑;.passwd-do-spaces 為金鑰的設定檔。測試後,除錯的參數就可以拿掉了。

Wasabi Storage 的設定:

s3fs myBucketName ${HOME}/s3/myMntFolder -o passwd_file=${HOME}/.passwd-wasabi -o url=https://s3.us-west-1.wasabisys.com

Wasabi 要注意的是,url 的設定。官方說使用 https://s3.wasabisys.com 就可以了,但實際上會出錯(不知道是不是 s3fs 版本的問題)。應該直接使用 endpoint(雲端可用區域)的 url。

原以為掛上去之後就會帆風順,結果原本好用的 rsync 卻一直出狀況。同步上傳沒多少檔案就出錯罷工,之後常常看到隱藏檔的出現,但來源卻沒有這些檔案。

找了好一陣子才發現這篇 S3FS rsync recommendations,主要是針對 rsync 的特性和 S3 的特性做參數的校調。

例如:

rsync -avW --progress --inplace --size-only /mnt/volumes/my_copy_folder /target_folder

目前看來,似乎可以好好用 rsync。 還是有個問題:Digitalocean Spaces 和 Wasabi Storage 上傳的速度好慢...



備註:之後改用 s3cmd 上傳,速度快很多。

2020-10-24

在 ubuntu 20.4 安裝 php 5.6

 在 ubuntu 16.4 之後的版本已經不支援 php 5 了。

目前還是有解決的方式:

https://stackoverflow.com/questions/36788873/package-php5-have-no-installation-candidate-ubuntu-16-04


找到已安裝的 php:

dpkg -l | grep php| awk '{print $2}' |tr "\n" " "

移除已安裝的 php:

sudo aptitude purge `dpkg -l | grep php| awk '{print $2}' |tr "\n" " "`

加入 apt repo:

sudo add-apt-repository ppa:ondrej/php

安裝:

sudo apt-get update
sudo apt-get install php5.6



2020-10-12

安裝 laravel 8 和 jetstream

安裝 laravel 8 和 jetstream

安裝 laravel 8 之前先更新 laravel/installer,應該要是 4.0 版以上:

composer global require laravel/installer

接著就可以建立專案,同時使用 --jet 安裝 jetstream:

laravel new project-name --jet

安裝時要選擇使用 livewire 或 inertia,我個人選了 inertia。 另一個問題是要不要使用 teams,測試專案所以選了否。 接著做 migrate:

php artisan migrate

在這裡遇到 1071 Specified key was too long 的問題。 建議使用 MySQL 5.7 以上,我用的是 5.5。在 AppServiceProvider.php 內設定 defaultStringLength 為 191 可以修正此問題。

use Illuminate\Support\Facades\Schema; public function boot() { Schema::defaultStringLength(191); }

啟動測試 Server:

php artisan serve

使用 php artisan route:list 查看路由時,可以看到設定的內容,但在 /routes/web.php 卻看不到相關的設定,要變更路由會是一大問題。 在這篇 laravel-8-jetstream-login-route 有提到設定方式,在 /config/fortify.php 內加入 path 的設定:

'path' => 'admin',

如此可以將 /login 變更成 /admin/login。

FB 留言