ITよもやま日記

虚弱ITエンジニアの備忘録

GrowiのAPIを使ってファイルをアップロードしてみる

最初にファイルを添付するためのページを作成しておく。
growiのdocsを参考に、作ったページへpythonでファイル追加してみる。(getとpostを飛ばすだけなので、言語は特に関係ない)

pyファイルの作成

ファイル追加用のpyを作成する。

mkdir /opt/userbat
cd /opt/userbat
vi attachadd.py

requestsをインポート、初期値を設定する

インストールされていない場合はpip install requestsを実行してインストールする。

import requests

url = 'http://Growiサーバアドレス:3000/_api'
acstoken='アクセストークン'
uploadfilepath = '/temp/hogehoge.png'
pagepath=’/user/hogehoge’

ページのIDを取得する

pages.listでパス配下のページIDを取得する、pages.getとかでも良い。
pages.list等の値を取得するAPIは基本的にGETらしい。
ページ一覧取得参考:
https://docs.growi.org/redoc.html#operation/listPages

payload= {"access_token": acstoken}
rsult = requests.request(method='get', url=url + “/pages.list?path=” + pagepath, data=payload)

obj=rsult.json()
pid = obj["pages"][0]["id"]

ページIDを指定してファイルを追加する

ファイル追加用のAPI、attachments.addにPOSTでデータを送付する。
添付ファイル追加参考:
https://docs.growi.org/redoc.html#operation/addAttachment

payload = {"access_token": acstoken,
          "page_id":pid }

# MIMEの指定を正しくすれば、ブラウザでPDFを開いたりできる。
files = {'file': ("g.png",  open(uploadfilepath , 'rb'), "application/octet-stream")}
res = requests.post(url + "/attachments.add", data=payload,files=files)

# アップロードIDが含まれるリクエストを取得
upres = res.json()

pyファイル実行

pythonでソースを読み込む。今回の環境はCentOSにデフォルトでインストールされているpython3.6を使用。

cd /opt/userbat
python3.6 ./attachadd.py

ページを開いたとき、記事下に添付ファイルが追加されいるはず。
失敗した時は、リクエストにエラーコード等が返却される。

CentOS8にGrowiをインストールしてみる

growiをgitでクローン

Growiの最新版は4.1.2(2020/08/16時点)だが、カスタムサイドバーの機能が未実装らしい。
3系ならカスタマイズ可能。目下実装中らしいので、つなぎとして3系の最終版3.8.2をインストールさせてもらう。
https://genchan.net/it/server/28538/:カスタマイズ方法参考

mkdir -p /opt/
cd /opt/
git clone https://github.com/weseek/growi /opt/growi
cd /opt/growi
git tag -l
git checkout -b v3.8.2 refs/tags/v3.8.2

cd /opt/growi
yarn

Growiをサービス起動するためパラメータを書き出して、サービス用のファイルを作成。

vi /etc/systemd/system/growi.service
[Unit]
Description=Growi
After=network.target mongod.service

[Service]
WorkingDirectory=/opt/growi
EnvironmentFile=/etc/sysconfig/growi
ExecStart=/usr/bin/npm start

[Install]
WantedBy=multi-user.target

systemctl 起動用のconfigファイルを作成、自動起動を有効にする。

vi /etc/sysconfig/growi
NODE_ENV=production
PASSWORD_SEED="`openssl rand -base64 128 | head -1`"
MONGO_URI="mongodb://localhost/growi"
ELASTICSEARCH_URI="http://localhost/growi"
FILE_UPLOAD=local

systemctl start growi.service 
systemctl enable growi.service 

ここまで問題がなければ、http://GorwiサーバのIP:3000 にアクセスするとログイン画面が表示される。

オンプレWikiのGrowiインストール準備

オンプレでWikiを立てたかったため、色々検討した結果Growiを構築することにした。 https://growi.org/ja/

元々Crowiというメルカリ製Wikiのフォークらしいが、カスタマイズ項目が本家より多く、マークダウン入力しながらプレビューも同時で確認可能、APIがあるためWikiの更新も自動でできることが良さそう。
githubを確認して、Growi v4.1.2に必要なものをCentOS8にインストールしていく。
https://github.com/weseek/growi
・CentOS8からはdnfだけど、慣れてるyumを使用 (python2のサポートは切れてるからdnf覚えないと。。。)
・optionのRedisはインストールしていない、この場合セッション情報がMongoDBに保存されるらしい。

nodejs12インストール

yum install -y @nodejs:12/common

mongodb3.6インストール

vi /etc/yum.repos.d/mongodb-org.repo
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc

yum install mongodb-org

systemctl enable mongod --now
systemctl start mongod

OepnJDKインストール

vi /etc/yum.repos.d/adoptopenjdk.repo

[AdoptOpenJDK]
name=AdoptOpenJDK
baseurl=http://adoptopenjdk.jfrog.io/adoptopenjdk/rpm/centos/8/x86_64
enabled=1
gpgcheck=1
gpgkey=https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public

yum -y install adoptopenjdk-14-hotspot.x86_64

elasticsearch6のインストール

これが入ってないと検索が使えない。option扱いだけど、Wiki的に必須のような気がする。

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

vi /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

yum install -y elasticsearch

systemctl enable elasticsearch.service
systemctl start elasticsearch.service

elasticsearch6に追加でPluginをインストール

これをインストールしないと、日本語検索ができない。

cd /usr/share/elasticsearch/bin
./elasticsearch-plugin install analysis-kuromoji
./elasticsearch-plugin install analysis-icu

gitをインストール

yum install git

yarnをインストール

curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
sudo yum install -y yarn

growi本体のインストールは、また後日

CentOS8のインストール後の設定について

忘れないうちにCentOS8のインストール後設定メモ。 既にVMWare Workstationで仮想マシンを作成、CentOS8インストール後初回起動しているものとして。

ホスト名変更

vi /etc/hostname

shutdown -r now

ネットワーク設定

IPを固定にしたい場合に実行。 仮想だと、BridgeとNATでインターフェースが分かれている。 今回はVMWare Workstationで構築、Bridge側として設定。

su -

# ネットワークアダプタがUPじゃない場合、起動して自動起動設定を追加
nmcli d
nmcli con up ens33
nmcli con mod ens33 connection.autoconnect yes

IP設定
nmcli c modify ens33 ipv4.addresses 192.168.1.10/24

デフォルトゲートウェイを設定
nmcli c modify ens33 ipv4.gateway 192.168.1.1

DNS設定
nmcli c modify ens33 ipv4.dns 192.168.1.1

IPを固定に設定
nmcli c modify ens33 ipv4.method manual

インターフェースを再起動
nmcli c down ens33
nmcli c up ens33

ネットワーク再起動
systemctl restart network

yumの設定

CentOSRHELのようにセキュリティパッチのみのリポジトリが存在しない。 定期的にyum updateを実行してもカーネルが上がらないように、除外設定を追加。

vi /etc/yum.conf
exclude=kernel* centos* #この行を追加

yum update

SELinux解除

必須じゃないけど、色々アプリケーションが動作しないパターンが多いため停止。

getenforce
vi /etc/sysconfig/selinux
SELINUX=disabled