- 投稿日:2020-01-25T18:47:43+09:00
iosのgoodreaderでsftpのprivate-keyが読み込めない問題
これはmacのssh-keygenで作成されるコマンドの出力が変更されているので、昔作ったキーでは読み込めますが、新しく作ったキーは読み込めません。よって、キーを作り直すか、キー自体を編集しましょう。
# 公開鍵、秘密鍵の作成 $ ssh-keygen -t rsa -b 4096 -m PEM -f ~/.ssh/goodreader # serverにpublic-keyを登録 $ ssh-copy-id -i ~/.ssh/goodreader.pub user@192.168.1.11 -p 22 # ~/.ssh/goodreader # (private-key)をiosのgoodreaderに持っていく
- 投稿日:2020-01-25T17:51:58+09:00
anyenv下のphpenvを使ってPHPをインストールしてみた
Homebrewでインストールしたanyenvに導入されたphpenvを使ってPHPをインストールしていきます。
割とすんなりと行かなかったので備忘録。
anyenvとphpenvは導入している前提となります。環境
macOS : Catalina 10.15.2 (zsh)
phpenv : v0.9.0-rc.1
入れるPHP : 7.4.1早速インストール
コンソール上でコマンドを打ちphpenvでPHPのインストールを試みました。
phpenv install 7.4.1するとエラーが。
No package 'krb5-gssapi' found No package 'krb5' found Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables KERBEROS_CFLAGS and KERBEROS_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.必要なパッケージのインストール&パスを通す
PHPのインストールにはいくつか必要なパッケージがあるようで、それが入っていない、またはパスが通っていないとこのようなエラーが出るようです。
今回は
krb5
が足りないのでHomebrewよりインストールしてパスを通します。
私はzshを使っていますので.zshrcに書き込みます。
インストールする際に他にもパッケージ不足を指摘されましたら同様の手順でインストールします。brew install krb5.zshrcvim ~/.zshrc export PATH="/usr/local/opt/krb5/bin:$PATH" export PATH="/usr/local/opt/krb5/sbin:$PATH" export PKG_CONFIG_PATH="/usr/local/opt/krb5/lib/pkgconfig:$PKG_CONFIG_PATH"phpenvのdefault_configure_options設定
設定後にPHPを再度インストールしようとするがまたエラーが出ました。
configure: WARNING: unrecognized options: --with-png-dir, --with-libxml-dir, --with-icu-dir configure: error: Please reinstall the BZip2 distributionerrorとして、BZip2の再インストールを要求されましたので従いましたが全く同じエラーが出てしまいます。
brew reinstall bzip2どうもパスが通っていなかったようなので
.zshrc
にパスを設定しましたがこれだけでは解決せず。
合わせてphpenvのdefault_configure_option
ファイルに設定を追記することで解決!
icu4cパッケージも同様のエラーを引き起こしたのでこれも合わせて記述。.zshrcvim ~/.zshrc export PATH="/usr/local/opt/bzip2/bin:$PATH" export PATH="/usr/local/opt/icu4c/bin:$PATH" export PATH="/usr/local/opt/icu4c/sbin:$PATH" export PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig:$PKG_CONFIG_PATH"/.anyenv/envs/phpenv/plugins/php-build/share/php-build/default_configure_optionsvim default_configure_options --with-bz2=/usr/local/opt/bzip2 --with-iconv=/usr/local/opt/libiconvlibxmlパッケージが見つからない
必要なパッケージをインストールできたので再度PHPのインストールをします。
でもエラー。。。warning: unsupported relocation in debug_info section. note: while processing /private/var/tmp/php-build/source/7.4.1/ext/opcache/.libs/zend_accelerator_util_funcs.o /Library/Developer/CommandLineTools/usr/bin/ranlib: file: ext/opcache/.libs/opcache.a(shared_alloc_shm.o) has no symbols /Library/Developer/CommandLineTools/usr/bin/ranlib: file: ext/opcache/.libs/opcache.a(shared_alloc_shm.o) has no symbols /Library/Developer/CommandLineTools/usr/bin/ranlib: file: /var/tmp/php-build/source/7.4.1/modules/opcache.a(shared_alloc_shm.o) has no symbols /var/tmp/php-build/source/7.4.1/ext/libxml/libxml.c:34:10: fatal error: 'libxml/parser.h' file not found #include <libxml/parser.h> ^~~~~~~~~~~~~~~~~ 1 error generated. make: *** [ext/libxml/libxml.lo] Error 1libxml/parser.h が読み込めないらしい
でもlibxmlはインストールされているはず。brew list (省略) libxml2brew listで確認すると、libxml2が入っているので問題がないはずですが。。。
MacOSがCatalinaになったことでusr/includeディレクトリが無くなったことの絡みで上手く認識がされていないようです。
(brewの理解するlibxml2のパスが間違っている?)
下記の記事を参考にenvコマンドとprefixを利用して環境変数を指定しながらインストールすることで上手くいきました!参考: macOS Catalina(10.15) の Xcode11 だと /usr/include が無い
env CFLAGS="$(xml2-config --cflags)" XML_CFLAGS="$(xml2-config --cflags)" XML_LIBS="$(xml2-config --libs)" phpenv install 7.4.1 [Success]: Built 7.4.1 successfully.なんとか成功しました!
anyenvで*env各種を一括管理できるのでphpenvを利用しましたがもしかしたらphpbrewの方が楽なのかも。。。
- 投稿日:2020-01-25T16:47:23+09:00
SwiftUIとSpeech Frameworkで動画の文字起こしアプリを作ってみる
音声認識に興味が出たので、Apple製のSpeech FrameworkとSwiftUIを使って簡易的なMacアプリ作ってみたので得られた知見をご紹介します。
完成品
ニュース動画なのでアナウンサーの声だけでノイズがないからか、かなりの精度
開発環境
- SwiftUI
- Speech Framework
- Swift5.1
- macOS 10.15.2(Catalina)
- Xcode 11.3.1
MacでSpeech FrameworkとSwiftUI使えるのはCatalina以降なので最新版にアップデートしましょう
SwiftUIベースのMacアプリ作成
create new project
からmacOSのAppを選択し、User Interface
の項目をSwiftUI
にします初期状態で作成される
ContentView.swift
にレイアウト定義と音声認識の処理をつらつら書いていきます。
SwiftUIといえど、Viewに処理を書くのはあまり良くありませんが、今回は簡易的なアプリなので、 全部Viewに処理を書いてしまいますContentView.swiftimport SwiftUI import Speech struct ContentView: View { @State var recognizedText: String? @State var message: String = "" private let speechRecognizer = SFSpeechRecognizer(locale: Locale(identifier: "ja-JP")) var body: some View { VStack(alignment: .trailing) { Text(recognizedText ?? "") .font(.body) .frame(width: 480, height: 320, alignment: .top) .border(Color.gray) .padding() HStack { Text(message) Button("Choose file") { SFSpeechRecognizer.requestAuthorization { (status) in guard status == .authorized else { print("音声入力が認可されていません") return } // NSOpenPanelはMain Threadからのみアクセス可 DispatchQueue.main.async { let panel = NSOpenPanel() let result = panel.runModal() guard result == .OK, let url = panel.url else { print("ファイル読み込みに失敗") return } let speechRequest = SFSpeechURLRecognitionRequest(url: url) self.message = "音声認識中..." self.recognizedText = "" _ = self.speechRecognizer?.recognitionTask(with: speechRequest, resultHandler: { (speechResult, error) in guard let speechResult = speechResult else { return } if speechResult.isFinal { self.message = "音声認識が完了しました" print("Speech in the file is \(speechResult.bestTranscription.formattedString)") } else { let text = speechResult.bestTranscription.formattedString self.recognizedText = text } }) } } } }.padding() } } }コード解説
@State
SwiftUIのホットリロード機能の一番簡単な
@State
を用いて、UI更新処理を書かないようにしていますNSOpenPanel
Macのファイルダイアログをプログラムから呼ぶのは
NSOpenPanel
というクラス使うらしいです。初めてしりました。Viewファイルに書いてあるから大丈夫かと思いきや明示的にMainスレッド指定しないと実行時エラーになってしまうので注意SFSpeechRecognizer
今回のアプリの肝のクラスですね
日本語の文字起こしを想定しているので ローカル情報をja-JP
にしたインスタンスを保持。
ユーザ認可をリクエストしたのち、ファイルダイアログから取得できたファイルのURLでSFSpeechURLRecognitionRequest
のインスタンスを作って、認識タスクをコールバックと同じく登録して完了です。コールバックで返却される
SFSpeechRecognitionResult
に認識結果が返ってくるので、それを画面に表示してあげるだけで完了です。
.bestTranscription.formattedString
というプロパティにいわゆる文字起こし結果が入ってきますが、他にも声の抑揚や、話す早さなどが返ってくるのが面白いところなので、興味ある方は色々デバッグして見てみると良いかもしれません。注意点
plistに音声入力の説明を定義忘れずに
NSSpeechRecognitionUsageDescription
に音声入力を許可するダイアログ時の文言をセットを忘れずに
最近めっきりプライバシーに厳しいAppleフレームワーク。他のフレームワーク同様、音声入力もユーザ認可が必要なのであしからず。音声認識できる時間の上限が1分
オンラインを介した音声認識のみ、上限が設けられています。
これはそもそもiOS等々のキーボードからの音声入力が1分という上限があるかららしい。(バッテリーや通信量に配慮する為)
1分ごとに区切ってタスクを捌いていけば、長時間動画の完全文字起こしもいけそう?iOS13から端末上のみで音声認識できるようになり、そちらなら上限はないようだが、対応言語が絞られる(日本語非対応)上に継続的に改善されるオンラインとは違い、精度が良くないとのこと。この辺はトレードオフですね。
まとめ
SwiftUIとSpeech Framework凄すぎ
音声認識の知識ほぼ皆無な私でも簡単なアプリ作れちゃうくらいシンプルなインターフェイスと使いやすいフレームワークな上に精度もかなりでビックリしました。
Macアプリは殆ど作ったことない私でもこれ、ググったりするだけで1時間くらいで作成できました(むしろこのQiita書くほうが時間かかってる。。。)参考にした記事
- 投稿日:2020-01-25T14:49:40+09:00
(コマンド化)AWS CLIにおけるMFA認証
概要
AWSマネジメントコンソールにアクセスするためのIAMユーザーにMFAを設定している場合、
同ユーザーにてAWS CLIを使う時にもMFAによる認証が必要になるけど、
すぐに忘れちゃうのでコマンド化した。ざっくりセットアップ手順
- アクセスキーの作成(まだやってない人は)
- .bashrcに以下追記
- ログインし直す or
source ~/.bashrc
.bashrcfunction AWSCLIINIT() { unset AWS_ACCESS_KEY_ID unset AWS_SECRET_ACCESS_KEY unset AWS_SESSION_TOKEN aws configure mfa_arn=`aws sts get-caller-identity --query 'Arn' --output text 2>/dev/null | sed -e "s/:user\//:mfa\//g"` if [ -n "$mfa_arn" ] then echo "YourMFA :"$mfa_arn echo -n INPUT YourMFA-Code : read mfa_code get_session_token=`aws sts get-session-token --output text --serial-number $mfa_arn --token-code $mfa_code 2>/dev/null` if [ -n "$get_session_token" ] then set -- $get_session_token export AWS_ACCESS_KEY_ID=$2 export AWS_SECRET_ACCESS_KEY=$4 export AWS_SESSION_TOKEN=$5 else echo "MFA ERROR" fi else echo "aws configure is wrong" fi }使い方
AWSCLIINIT
- 中で
aws configure
をやってるので必要に応じて入力- mfaを聞かれるので入力
$ AWSCLIINIT AWS Access Key ID [********************]: AWS Secret Access Key [********************]: Default region name [ap-northeast-1]: Default output format [json]: YourMFA :arn:aws:iam::123456789012:mfa/abcdefg INPUT YourMFA-Code :123456 $エラーがでなければ認証成功。環境変数にトークンなどがセットされます。
こんな感じ。
MFA認証前
$ aws iam get-user An error occurred (AccessDenied) when calling the GetUser operation: User: arn:aws:iam::123456789012:user/abcdefg is not authorized to perform: iam:GetUser on resource: user abcdefg with an explicit deny本コマンド利用時
$ aws iam get-user { "User": { "UserName": "abcdefg", "PasswordLastUsed": "2020-01-25T01:16:10Z", "CreateDate": "2019-12-10T02:55:57Z", "UserId": "AAAAAAAAAAAAAAAAAA", "Path": "/", "Arn": "arn:aws:iam::123456789012:user/abcdefg" } }
- 投稿日:2020-01-25T13:32:33+09:00
macOS / OSXの起動可能なインストールディスクを作る
macOS / OSXのUSB起動ディスクを作る
古いMacを購入した際にOSをインストールするときや、macのOSを再インストールしたいとき、古いmacOS / OSXのインストーラーが必要となる場合がある。ここでは、USBやSDカードにmacOSのインストーラーを書き込み、起動可能なディスクにする方法を記載していく。
起動ディスクの作成にあたって
起動ディスクを作るにあたっていくつか必要なものが存在する。
●*macOSのインストーラー
●8GB以上のUSBやSDカードなど
●もう一つのMac*macOSのインストーラーは現在、AppStoreからは最新のOSしかダウンロードすることはできない。つまり、OSXのインストーラーが必要な場合にはインターネットリカバリーを行うもしくはOSXのインストールディスクをAppleStoreから購入する必要がある。
準備
まずは、macOSのインストーラーをアプリケーションフォルダ内に入れておく。
次にインストールするメディアに「ディスクユーティリティ」を使い、*「MyVolume」という名前をつける。
フォーマットは「Mac OS拡張(ジャーナリング)」を選択し、消去する。*「MyVolume」は書込み作業を行う際の一時的な名前であるが、もし「MyVolume」という名前を使いたくなければ、下記インストールコマンドの/Volumes/MyVolumeのMyVolumeを設定したい名前へと変更すれば良い。
書き込み作業(Mavericks10.9以降)
それでは作業を始めていく。
- ターミナルを開く
- 持っているインストーラーに対応した下記のコマンドをコピーする
- ターミナルにペースト
- パスワードが要求されるのでパスワードを入力
Y
と入力- 30分ぐらいで書き込みが終わり、起動可能なインストーラーが完成する。
起動ディスク作成コマンド
OSX Mavericks(10.9)以降を使うのであれば下記の"createinstallmedia"コマンドをコピペするだけで済む。使用するインストーラーに対応したコマンドをコピーする。
Mavericks (10.9)
Maverickssudo /Applications/Install\ OS\ X\ Mavericks.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume --applicationpath /Applications/Install\ OS\ X\ Mavericks.appYosemite (10.10)
Yosemitesudo /Applications/Install\ OS\ X\ Yosemite.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume --applicationpath /Applications/Install\ OS\ X\ Yosemite.appElCapitan (10.11)
ElCapitansudo /Applications/Install\ OS\ X\ El\ Capitan.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume --applicationpath /Applications/Install\ OS\ X\ El\ Capitan.appSierra (10.12)
Sierrasudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume --applicationpath /Applications/Install\ macOS\ Sierra.appHighSierra (10.13)
HighSierrasudo /Applications/Install\ macOS\ High\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolumeMojave (10.14)
Mojavesudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume --applicationpath /Applications/Install\ macOS\ Sierra.appCatalina (10.15)
Catalinasudo /Applications/Install\ OS\ X\ El\ Capitan.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume --applicationpath /Applications/Install\ OS\ X\ El\ Capitan.app書き込み作業(Lion10.7 & Mountain Lion10.8)
もしMacOS X LionもしくはMountainLionの起動ディスクを作成する場合は、上記のコマンドを使用して作成することができない。よって以下の方法に絞られてしまう。
1) AppleStoreよりインストールディスクを¥2222で購入
2) ディスクユーティリティを使用した復元
3) 後述するDiskMakerを使用した作成もしLionもしくはMountainLionのインストーラーを持っているのであれば、ディスクユーティリティを起動し、dmgファイルをメディアへと復元すれば良い。
書き込み作業(全OS共通)
もしコマンドが使えない場合や諸事情により起動ディスクを作成できなかった場合、「DiskMaker」というアプリケーションを使用したディスクの作成方法がある。
ただし、この方法で確実にインストーラーの作成が成功するとは限らない。
- インストーラーをアプリケーションフォルダに入れておく。
- DiskMakerをダウンロード(所持しているインストーラーに対応したバージョンを選択)
- 手順に沿って作成作業を行う
Macにインストール
- インストールするMacを*Optionキーを押しながら起動。
- 起動したら、メディアをMacに差し込む
- 起動ディスクとして先程のメディアを選択
- macOSユーティリティ or OSXユーティリティが起動
- インストール作業を進める
*Windowsキーボードを使用しているのであればAltキーを押下
追記情報
2020/01/25 掲載
- 投稿日:2020-01-25T13:32:33+09:00
古いmacOS / OSXの起動ディスクを作る
macOS / OSXのUSB起動ディスクを作る
古いMacを購入した際にOSをインストールするときや、macのOSを再インストールしたいとき、古いmacOS / OSXのインストーラーが必要となる場合がある。ここでは、USBやSDカードにmacOSのインストーラーを書き込み、起動可能なディスクにする方法を記載していく。
起動ディスクの作成にあたって
起動ディスクを作るにあたっていくつか必要なものが存在する。
●*macOSのインストーラー
●8GB以上のUSBやSDカードなど
●もう一つのMac*macOSのインストーラーは現在、AppStoreからは最新のOSしかダウンロードすることはできない。つまり、OSXのインストーラーが必要な場合にはインターネットリカバリーを行うもしくはOSXのインストールディスクをAppleStoreから購入する必要がある。
準備
まずはインストールするメディアに「ディスクユーティリティ」を使い、*「MyVolume」という名前をつける。
フォーマットは「Mac OS拡張(ジャーナリング)」を選択し、消去する。*「MyVolume」は書込み作業を行う際の一時的な名前であるが、もし「MyVolume」という名前を使いたくなければ、下記インストールコマンドの/Volumes/MyVolumeのMyVolumeを設定したい名前へと変更すれば良い。
書き込み作業
それでは作業を初めていく。とは言ってもインストーラーのバージョンと対応した下記のコマンドをターミナルにコピペすればいいだけの話である。
- ターミナルを開く
- 持っているインストーラーに対応した下記のコマンドをコピーする
- ターミナルにペースト
- パスワードが要求されるのでパスワードを入力
Y
と入力- 30分ぐらいで書き込みが終わり、起動可能なインストーラーが完成する。
Mavericks (10.9)
sudo /Applications/Install\ OS\ X\ Mavericks.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume --applicationpath /Applications/Install\ OS\ X\ Mavericks.appYosemite (10.10)
sudo /Applications/Install\ OS\ X\ Yosemite.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume --applicationpath /Applications/Install\ OS\ X\ Yosemite.appElCapitan (10.11)
sudo /Applications/Install\ OS\ X\ El\ Capitan.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume --applicationpath /Applications/Install\ OS\ X\ El\ Capitan.appSierra (10.12)
sudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume --applicationpath /Applications/Install\ macOS\ Sierra.appHighSierra (10.13)
sudo /Applications/Install\ macOS\ High\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolumeMojave (10.14)
sudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume --applicationpath /Applications/Install\ macOS\ Sierra.appCatalina (10.15)
sudo /Applications/Install\ OS\ X\ El\ Capitan.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume --applicationpath /Applications/Install\ OS\ X\ El\ Capitan.appMacにインストール
- インストールするMacを*Optionキーを押しながら起動。
- 起動したら、メディアをMacに差し込む
- 起動ディスクとして先程のメディアを選択
- macOSユーティリティ or OSXユーティリティが起動
- インストール作業を進める
*Windowsキーボードを使用しているのであればAltキーを押下
- 投稿日:2020-01-25T12:36:12+09:00
【ReactNative】No bundle URL presentエラーの対処法メモ
概要
以前にReactNativeの開発環境を構築する話(Mac編)なんて記事を書いたのですが、久しぶりにそれに従って新規に開発環境を構築してみたらよくわからないエラーに遭遇した話。
※本記事に記載されているのは、あくまで推察と暫定的な対処のメモです。間違い、指摘等がございましたらコメントにていただけますと幸いです。
エラー内容
Xcode
,VSCode
Homebrew
,Nodebrew
,cocoapods
,npm
,yarn
,react-native-cli
などなど色々入れて新規にプロジェクトを作成。react-native init Puni cd Puni/ios pod install react-native run-iosすると、
Simurator
が立ち上がりbundle
も動いている様子。
しかしながら下記のようにNo bundle URL present
のエラーに遭遇。
どうやらアプリから
bundle
が見れていないようなのだが・・・
類似の事例を調べてみたらReact Native「No bundle URL present」エラー対策集のような記事を発見。
パッケージを入れ直したり、キャッシュを消してみたり、と一通り試してみたが解消されず。解決策
もうダメかと思ったが、今度は下記のような記事を発見。
main.jsbundle file showing in my iOS project but still throwing “No bundle url present”
なにやら
main.jsbundle
がうまく作成されていないっぽい?解決策にある通りにコマンドラインから
main.jsbundle
を作り直してみる。react-native bundle --entry-file='index.js' --bundle-output='./ios/main.jsbundle' --dev=false --platform='ios' --assets-dest='./ios'さらに
Xcode
からxcworkspace
を開き、main.jsbundle
のTarget Membership
を設定しなおす(下図)
ダメ元で
react-native run-ios
を実行すると・・・
直った!!考察・まとめ
何が悪さをして
main.jsbundle
が作成されていない(クラッシュしてる?)のかは今のところ分かっていないが、あるとすればreact-native-cli
とかその他諸々の特定のバージョンの組み合わせのように思える。
react-nativeのIssue
をmain.jsbundle
で調べた(リンクはこちら)ら似たような事例が出ていたので、いずれ解消・再発するかもしれません。はっきりとした原因が不明なまま記事に起こしてしまい恐縮ですが、メモ書きとして残しておきます。
- 投稿日:2020-01-25T03:40:24+09:00
検索エンジンSolr インストール〜起動まで(MAC)
全文検索エンジンApache Solrとは
Apacheが提供しているオープンソースの全文検索エンジン
クックパッドなど大規模なサービスに利用されていて、とにかく速いことが特徴
目次
1.Javaのインストール
2.Solrの起動
3.データの投入
4.検索
5.リセット
6.JavaのインストールSolrの起動にはJavaが必要。入っていない場合はHomebrewを使ってインストールしましょう。
インストールの前にHomebrewを更新
$ brew updatejavaのインストール
$ brew cask install javaバージョンを確認してインストール場所のパスを確認
$ /usr/libexec/java_home -Vインストール場所を.bash_profileにコピペして追記し、パスを通す
※パスは$ /usr/libexec/java_home -Vで確認したものに書き換えを.bash_profileexport PATH=$PATH:/Library/Java/JavaVirtualMachines/openjdk-12.0.2.jdk/Contents/Home` `export JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk-12.0.2.jdk/Contents/Home※.bash_profileがなければルートディレクトリに作成
追記した内容が反映されるようbash_profileを更新
$ source ~/.bash_profile下記コマンドで記述したパスが表示されればOK
$ echo $PATH` $ echo $JAVA_HOME`ミラーサイトからsolr-7.7.2.zip をダウンロード
http://ftp.tsukuba.wide.ad.jp/software/apache/lucene/solr/7.7.2/
解凍したsolr-7.7.2ディレクトリに$ cdで移動
場所はどこでも大丈夫Solrの起動
起動コマンドを入力
$ ./bin/solr start -e cloud起動オプションを入力
起動するノード数
This interactive session will help you launch a SolrCloud cluster on your local workstation.
To begin, how many Solr nodes would you like to run in your local cluster? (specify 1-4 nodes) [2]:
デフォルトの2つでOKなので
Enter
1つ目のノードのポート番号
Ok, let's start up 2 Solr nodes for your example SolrCloud cluster.
Please enter the port for node1 [8983]:
こちらもデフォルトでOKなので
Enter
2つ目のノードのポート番号
Please enter the port for node2 [7574]:
こちらも
Enter
コレクション名
Please provide a name for your new collection: [gettingstarted]
コレクション名は下記で
echproductsインデックスの分割数
How many shards would you like to split techproducts into? [2]
デフォルトでOKなので
Enter
レプリカの数
*
How many replicas per shard would you like to create? [2]
*こちらも
Enter
configset
Please choose a configuration for the techproducts collection, available options are:
_default or sample_techproducts_configs [_default]
促されているように下記でセット
sample_techproducts_configsすると
…
Created collection 'techproducts' with 2 shard(s), 2 replica(s) with config-set 'techproducts'
Enabling auto soft-commits with maxTime 3 secs using the Config API
POSTing request to Config API: http://localhost:8983/solr/techproducts/config
{"set-property":{"updateHandler.autoSoftCommit.maxTime":"3000"}}
Successfully set-property updateHandler.autoSoftCommit.maxTime to 3000
SolrCloud example running, please visit: http://localhost:8983/solr…
↑で言われたとおりhttp://localhost:8983/solr にアクセスします
Apache Solrの画面が表示されていれば起動できています
データの投入
解凍したsolr-7.7.2の中のexampleディレクトリの中にあらかじめsolrが用意したサンプルファイルがあるので、今回はとりあえずそれを投入
$ bin/post -c techproducts example/exampledocs/*検索
$ curl "http://localhost:8983/solr/techproducts/select?q=book&wt=xml&indent=true"↑
q=検索したいワード
wt=出力するファイル形式
indent=インデントをつけるかどうか
をそれぞれ入れると・・···
検索結果がxml形式で出力される!
···
停止
$ bin/solr stop -allリセット
ノードを削除し最初の状態に戻します
$ bin/solr stop -all ; rm -Rf example/cloud/
- 投稿日:2020-01-25T03:40:24+09:00
Apache Solr インストールから起動まで(MAC) 検索エンジンSolrを起動させるまでの手順
全文検索エンジンApache Solrとは
Apacheが提供しているオープンソースの全文検索エンジンです
クックパッドなど大規模なサービスに利用されていて、とにかく速いことが特徴
この記事ではインストール〜起動までの手順を簡単に説明します
目次
1.Javaのインストール
2.Solrの起動
3.データの投入
4.検索
5.リセット
6.JavaのインストールSolrの起動にはJavaが必要です。入っていない場合はHomebrewを使ってインストールを行います。
インストールの前にHomebrewを更新
$ brew update
javaのインストール
$ brew cask install java
バージョンを確認しインストール場所のパスを確認
$ /usr/libexec/java_home -V
下記を.bash_profileに追記し、パスを通す.bash_profileがなければルートディレクトリに作成します
※パスは$ /usr/libexec/java_home -Vで確認したものに書き換えてください
export PATH=$PATH:/Library/Java/JavaVirtualMachines/openjdk-12.0.2.jdk/Contents/Home
export JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk-12.0.2.jdk/Contents/Home
追記した内容が反映されるようbash_profileを更新
$ source ~/.bash_profile
下記コマンドで記述したパスが表示されればOKです
$ echo $PATH
$ echo $JAVA_HOME
ミラーサイトからsolr-7.7.2.zip をダウンロードhttp://ftp.tsukuba.wide.ad.jp/software/apache/lucene/solr/7.7.2/
解凍したsolr-7.7.2ディレクトリに$ cdで移動
場所はどこでも大丈夫です
Solrの起動
起動コマンドを入力
$ ./bin/solr start -e cloud
起動オプションを入力
起動するノード数
This interactive session will help you launch a SolrCloud cluster on your local workstation.
To begin, how many Solr nodes would you like to run in your local cluster? (specify 1-4 nodes) [2]:
デフォルトの2つでOKなのでEnter
1つ目のノードのポート番号
Ok, let's start up 2 Solr nodes for your example SolrCloud cluster.
Please enter the port for node1 [8983]:
こちらもデフォルトでOKなのでEnter
2つ目のノードのポート番号
Please enter the port for node2 [7574]:
こちらもEnter
コレクション名
Please provide a name for your new collection: [gettingstarted]
コレクション名は下記にします
echproducts
インデックスの分割数
How many shards would you like to split techproducts into? [2]
デフォルトでOKなのでEnter
レプリカの数
How many replicas per shard would you like to create? [2]
こちらもEnter
configset
Please choose a configuration for the techproducts collection, available options are:
_default or sample_techproducts_configs [_default]
促されているように下記でセットします
sample_techproducts_configs
…
Created collection 'techproducts' with 2 shard(s), 2 replica(s) with config-set 'techproducts'
Enabling auto soft-commits with maxTime 3 secs using the Config API
POSTing request to Config API: http://localhost:8983/solr/techproducts/config
{"set-property":{"updateHandler.autoSoftCommit.maxTime":"3000"}}
Successfully set-property updateHandler.autoSoftCommit.maxTime to 3000
SolrCloud example running, please visit: http://localhost:8983/solr…
http://localhost:8983/solr にアクセスします
Apache Solrの画面が表示されていれば起動できています
データの投入
解凍したsolr-7.7.2の中のexampleディレクトリの中にあらかじめsolrが用意したサンプルファイルがあるので、今回はそれを投入します
$ bin/post -c techproducts example/exampledocs/*
検索
$ curl "http://localhost:8983/solr/techproducts/select?q=book&wt=xml&indent=true"
q=検索したいワードwt=出力するファイル形式
indent=インデントをつけるかどうか
···
検索結果がxml形式で出力されます
···
停止
$ bin/solr stop -all
リセット
ノードを削除し最初の状態に戻します
$ bin/solr stop -all ; rm -Rf example/cloud/