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の設定
CentOSはRHELのようにセキュリティパッチのみのリポジトリが存在しない。 定期的にyum updateを実行してもカーネルが上がらないように、除外設定を追加。
vi /etc/yum.conf exclude=kernel* centos* #この行を追加 yum update
SELinux解除
必須じゃないけど、色々アプリケーションが動作しないパターンが多いため停止。
getenforce vi /etc/sysconfig/selinux SELINUX=disabled