To content | To menu | To search

umami.is を FreeBSD12 にセットアップ

umami.is を FreeBSD12 にセットアップした。

環境は、FreeBSD 12.1-RELEASE-p11 上の jail (qjail で構築) 、node-15.6.0、npm-6.14.8、mysql57-client-5.7.32。
jail の host 側で nginx でリバースプロキシを構成。mysql サーバーは別の jail に。

最初は pkg で環境を整えたものの、色々なエラーがあったので、ひとまず ports からインストールした。

qjail の場合、ports ファイルで色々なものが REFUSE されているので、/usr/local/etc/qjail.portsnap.conf で、ローカライズ関係以外は REFUSE から除外して qjail update -p

>pkg (pkg をセットアップ)
>pkg install ca_root_nss (ports の make がエラーになるので入れた)
>cd /usr/ports/ports-mgmt/portupgrade
>make
>make install
>rehash
>make clean

で portinstall を入れる。

  • www/node
  • www/npm
  • devel/git
  • graphics/vips
  • databases/mysql57-client
  • sysutils/direnv

このあたりを portinstall でインストール。

adduser でユーザー umami を追加。umami で作業。シェルは tcsh 。

% git clone https://github.com/mikecao/umami.git
% cd umami
% npm install

added 1894 packages from 932 contributors and audited 1900 packages in 138.58s

164 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

ここまでとりあえず通った。

DB サーバーにアクセスしてデータベースを作る。
次に DBにアクセスするためのファイル umami/.env を作る。スキーマを流し込む。

% cat .env
DATABASE_URL=mysql://DBユーザー名:パスワード@DBサーバーのIPアドレス:DBサーバーのポート/DB名
HASH_SALT=塩

% mysql -u DBユーザー名 -p DB名  -h DBサーバーのIPアドレス < sql/schema.mysql.sql

問題の、ビルド。

% npm run build
...
Warning Precompiled binaries are not available for freebsd12. Read more about building your own binaries at https://pris.ly/d/build-binaries
> Downloading Prisma engines for freebsd12 [                    ] 0%Error: Not Found https://binaries.prisma.sh/all_commits/5d491261d382a2a5ffdc71de17072b0e409f1cc1/freebsd12/migration-engine.gz
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! umami@1.11.0 build-db-client: `dotenv prisma generate`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the umami@1.11.0 build-db-client script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
...
npm ERR! A complete log of this run can be found in:
npm ERR!     /home/webmanage/.npm/_logs/2021-01-20T02_28_06_971Z-debug.log

ということで、DB にアクセスする prisma のバイナリが FreeBSD 用に提供されていないのが問題らしい。

なので、prisma をビルドしてみる。

% cd ..
% git clone https://github.com/prisma/prisma-engines
% cd prisma-engines
% cargo build
% ls target/debug/
query-engine
migration-engine
introspection-engine
prisma-fmt
等々

ビルドはできたものの、エラーにあった

npm ERR! umami@1.11.0 build-db-client: `dotenv prisma generate`

prisma という実行ファイルが無い。

Under the hood このあたりによると、環境変数で指定するらしい。

% setenv PRISMA_QUERY_ENGINE_BINARY /usr/home/umami/prisma-engines/target/debug/query-engine
% setenv PRISMA_MIGRATION_ENGINE_BINARY /usr/home/umami/prisma-engines/target/debug/migration-engine
% setenv PRISMA_INTROSPECTION_ENGINE_BINARY /usr/home/umami/prisma-engines/target/debug/introspection-engine
% setenv PRISMA_FMT_BINARY /usr/home/umami/prisma-engines/target/debug/prisma-fmt

というわけで再度ビルド

% cd ~/umami/
% npm run build
...
Warning Precompiled binaries are not available for freebsd12. Read more about building your own binaries at https://pris.ly/d/build-binaries
Prisma schema loaded from prisma/schema.prisma
Warning Precompiled binaries are not available for freebsd12. Read more about building your own binaries at https://pris.ly/d/build-binaries
Warning Precompiled binaries are not available for freebsd12. Read more about building your own binaries at https://pris.ly/d/build-binaries

? Generated Prisma Client (2.14.0) to ./node_modules/@prisma/client in 1.37s
You can now start using Prisma Client in your code. Reference: https://pris.ly/d/client
```
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
```

warn Prisma 2.12.0 has breaking changes.
You can update your code with
`npx @prisma/codemods update-2.12 ./`
Read more at https://pris.ly/2.12
...
λ  (Server)  server-side renders at runtime (uses getInitialProps or getServerSideProps)
○  (Static)  automatically rendered as static HTML (uses no initial props)
●  (SSG)     automatically generated as static HTML + JSON (uses getStaticProps)
   (ISR)     incremental static regeneration (uses revalidate in getStaticProps)

ということで、prisma のバージョン違いによる Warning はあるものの、エラー無く終わったように見える。

起動してみる。

% npm start

> umami@1.11.0 start /usr/home/umami/umami
> next start

Loaded env from /usr/home/umami/umami/.env
ready - started server on http://localhost:3000

これでひとまず起動できた。また他のサイトに Tracking code を埋め込んで、認識もしてくれた。

.env ファイルには、上の環境変数を入れてもよい。

% cat .env
DATABASE_URL=mysql://DBユーザー名:パスワード@DBサーバーのIPアドレス:DBサーバーのポート/DB名
HASH_SALT=塩
PRISMA_QUERY_ENGINE_BINARY=/usr/home/umami/prisma-engines/target/debug/query-engine
PRISMA_MIGRATION_ENGINE_BINARY=/usr/home/umami/prisma-engines/target/debug/migration-engine
PRISMA_INTROSPECTION_ENGINE_BINARY=/usr/home/umami/prisma-engines/target/debug/introspection-engine
PRISMA_FMT_BINARY=/usr/home/umami/prisma-engines/target/debug/prisma-fmt

Add a comment

HTML code is displayed as text and web addresses are automatically converted.

They posted on the same topic

Trackback URL : https://www.pseudomoon.jp/dotclear/index.php?trackback/130

This post's comments feed