# Scribble > セルフホスティング、DevOps、Linux管理、開発ツールに関する日本語の技術ブログ。Hugo + Cloudflare Pagesで運用。 -------------------------------------------------------------------------------- title: "Hugoブログにllms.txtとllms-full.txtを導入した" date: "2026-02-07" url: https://scribble.washo3.com/hugo-llms-txt/ -------------------------------------------------------------------------------- LLMがWebサイトの情報を効率的に取得するための仕様 [llms.txt](https://llmstxt.org/) を、このHugoブログに導入した。 ## 環境 - Hugo v0.155.2 - テーマ: [Beautifulhugo](https://themes.gohugo.io/beautifulhugo/) - Cloudflare Pages ## llms.txtとは [llmstxt.org](https://llmstxt.org/) で提案されている、Webサイトのルートに配置するMarkdown形式のテキストファイル。`robots.txt` や `sitemap.xml` のように、サイトの概要と主要なリンクをLLMが読みやすい形で提供する。 主に2種類のファイルがある: - **llms.txt** — サイトの概要と記事リンクの一覧(目次的な役割) - **llms-full.txt** — 全記事の本文を含む完全版 ## 技術ブログに導入するメリット 正直なところ、個人の技術ブログにおけるメリットは限定的。APIドキュメントやライブラリのリファレンスほどの需要はない。 ただし以下の点で「やっておいて損はない」と判断した: - **LLM搭載の検索エンジン(Perplexity、ChatGPT Search等)** がサイトの文脈を掴みやすくなる可能性がある - **コストがほぼゼロ** — Hugoのテンプレートで自動生成すれば、記事が増えても手動メンテ不要 - **先行投資** — 仕様が普及すれば将来的に有利になるかもしれない ## 導入手順 Hugo の `outputFormats` を使ってビルド時に自動生成する方式を採用した。`static/` に静的ファイルを置く方式だと記事の増減が反映されないため、テンプレート方式がベスト。 ### 1. hugo.toml に outputFormats を追加 ```toml [outputs] home = ["html", "rss", "llms", "llmsfull"] [outputFormats.llms] baseName = "llms" isPlainText = true mediaType = "text/plain" rel = "alternate" root = true [outputFormats.llmsfull] baseName = "llms-full" isPlainText = true mediaType = "text/plain" rel = "alternate" root = true ``` `outputs.home` のデフォルト値は `["html", "rss"]` なので、明示的に指定しつつ `llms` と `llmsfull` を追加する。 ### 2. layouts/index.llms.txt を作成 記事リンクの一覧を日付降順で自動生成するテンプレート。 ```go-text-template {{- $baseURL := .Site.BaseURL | strings.TrimSuffix "/" -}} # {{ .Site.Title }} > セルフホスティング、DevOps、Linux管理、開発ツールに関する日本語の技術ブログ。Hugo + Cloudflare Pagesで運用。 - 記事の主な言語は日本語です - 記事はAIの支援を受けて作成されている場合があります ## Docs - [About]({{ $baseURL }}/about/): ブログの方針・サイト概要 ## Articles {{ range where (sort .Site.RegularPages "Date" "desc") "Section" "post" }} - [{{ .Title }}]({{ .Permalink }}): {{ .Date.Format "2006-01-02" }} {{- end }} ``` ### 3. layouts/index.llmsfull.txt を作成 全記事のMarkdownソースを含む完全版テンプレート。 ```go-text-template {{- $baseURL := .Site.BaseURL | strings.TrimSuffix "/" -}} # {{ .Site.Title }} > セルフホスティング、DevOps、Linux管理、開発ツールに関する日本語の技術ブログ。Hugo + Cloudflare Pagesで運用。 {{ range where (sort .Site.RegularPages "Date" "desc") "Section" "post" }} -------------------------------------------------------------------------------- title: "{{ .Title }}" date: "{{ .Date.Format "2006-01-02" }}" url: {{ .Permalink }} -------------------------------------------------------------------------------- {{ .RawContent }} {{ end -}} ``` 区切り文字に `---` ではなく長い罫線を使っているのは、記事内に `---`(YAML区切り / 水平線)が含まれるケースがあるため。 ### 4. ビルド確認 ```bash hugo --gc --minify ``` `public/` 配下に生成される: - `llms.txt` — 約61KB(記事リンク一覧) - `llms-full.txt` — 約781KB(全記事本文込み) ## Cloudflare Pagesでの配信 特別な設定は不要。Cloudflare Pagesは `.txt` ファイルに対して `text/plain; charset=utf-8` を自動で付与するため、日本語の文字化けは起きない。 nginxの場合は `charset UTF-8` の設定が別途必要になるが、Cloudflare Pagesではその心配がない。 ## 生成結果 - [llms.txt](https://scribble.washo3.com/llms.txt) - [llms-full.txt](https://scribble.washo3.com/llms-full.txt) ## セキュリティ・盗用リスクについて llms-full.txt には全記事の本文が含まれるため、コンテンツの盗用や悪用が気になるかもしれない。 結論としては、**リスクは実質的に変わらない**。 - 全記事は既にHTMLとして公開済みで、`sitemap.xml` に全URLが掲載されている - スクレイピングしたい人は llms.txt がなくてもsitemap.xml + curlで同じことができる - LLMのトレーニングデータに使われる可能性はllms.txtの有無に関係なくある(CommonCrawl等で既に収集されている) llms.txt の本来の用途は**推論時**(ユーザーがLLMにサイト情報を渡す時)であり、トレーニングデータ収集とは別の文脈。 ### 気になる場合の対策 | 対策 | 方法 | トレードオフ | |---|---|---| | llms-full.txt をやめる | llms.txt(リンク一覧のみ)だけ残す | LLMが全文を一括取得できなくなるが、個別URLは辿れる | | 記事数を制限する | テンプレートで直近N件だけ出力する | 古い記事は含まれない | | Cloudflare WAF/Rate Limit | 大量アクセスをブロック | 正当なLLMアクセスもブロックされうる | | robots.txt で制御 | `Disallow: /llms-full.txt` を追加 | 行儀の良いクローラーだけ従う | 個人技術ブログであれば実害は小さいので、そのまま公開で問題ないと判断した。気になる場合は **llms-full.txt だけ外して llms.txt(リンク一覧のみ)だけ残す** のが一番バランスが良い。 ## 参考 - [llmstxt.org — The /llms.txt file](https://llmstxt.org/) - [Hugo で作ったサイトに llms.txt と llms-full.txt を設置した | マスタカの ChangeLog メモ](https://masutaka.net/2025-05-18-1/) -------------------------------------------------------------------------------- title: "Powerlevel10kからStarshipに移行する方法とカスタマイズ設定" date: "2026-01-30" url: https://scribble.washo3.com/powerlevel2starship/ -------------------------------------------------------------------------------- # Powerlevel10k から Starship への移行ガイド(2025年版) ## はじめに 長年愛用していた Powerlevel10k から Starship への移行を実施しました。 本記事では、両者の違い、最近の動向、移行手順、そしてカスタマイズ方法についてまとめます。 ## Powerlevel10k vs Starship の違い ### Powerlevel10k **特徴:** - **Zsh専用**のプロンプトテーマ - **超高速な起動時間**(10ms未満) - **設定ウィザード**(`p10k configure`)による初心者向けセットアップ - 10以上のビルトインテーマ - 高度なカスタマイズが可能 **デメリット:** - Zsh に限定される - メモリ使用量が多い - 設定ファイルが複雑(`.p10k.zsh`) ### Starship **特徴:** - **クロスプラットフォーム対応**(Bash, Zsh, Fish, PowerShell, Cmd など) - **Rust製**で高速(約20ms、実用上問題なし) - **TOML形式**のシンプルな設定ファイル - メモリ効率が良い - モジュール式の設計で拡張性が高い **デメリット:** - 起動時間は Powerlevel10k より若干遅い(ただし実用上は無視できるレベル) ## 最近の動向(2025年) ### Powerlevel10k の現状 **重要な事実:Powerlevel10k は現在ライフサポート状態です。** 開発者が2025年にプロジェクトのメンテナンス停止を発表しました。現在も動作はしますが、今後の機能追加やバグ修正は期待できません。新規プロジェクトでの採用は推奨されません。 ### Starship の現状 - **活発に開発中**(GitHub 53.6k+ stars) - コミュニティが大きく、継続的な改善が行われている - 2025年現在、最も推奨されるプロンプトカスタマイザー - クロスプラットフォーム対応により、複数のシェル環境で統一された体験を提供 ### ベストプラクティス **2025年現在、Starship への移行が推奨されます。** 理由: 1. **継続的なメンテナンス**が保証されている 2. **クロスシェル対応**で柔軟性が高い 3. **設定がシンプル**で保守しやすい 4. **活発なコミュニティ**によるサポート Powerlevel10k の起動速度の優位性は実用上ほぼ無視できるレベルであり、Starship の利点がそれを上回ります。 ## 移行手順 ### 1. Starship のインストール ```bash # Homebrew でインストール(macOS) brew install starship # その他のインストール方法 # curl -sS https://starship.rs/install.sh | sh ``` ### 2. `.zshrc` の修正 #### 削除する設定 Powerlevel10k 関連の設定を削除します: ```zsh # 削除: Powerlevel10k instant prompt(ファイル上部付近) if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" fi # 削除: Powerlevel10k のソースと設定 source ~/powerlevel10k/powerlevel10k.zsh-theme [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh ``` #### 追加する設定 Starship の初期化コードを追加します: ```zsh ## starship prompt if _has starship; then eval "$(starship init zsh)" fi ``` `_has` 関数を使用することで、Starship がインストールされていない環境でもエラーになりません。 ### 3. 移行後の確認 新しいターミナルセッションを開いて、Starship が正しく動作しているか確認します: ```bash # Starship のバージョン確認 starship --version # プロンプトの説明(デバッグ用) starship explain ``` ### 4. 既存設定との互換性 **良いニュース:** 既存の Zsh 設定(Zinit プラグイン、補完設定、エイリアスなど)はそのまま動作します。 Starship はプロンプト表示のみを担当するため、他の設定との競合はありません。 ## カスタマイズ ### 設定ファイルの場所 Starship の設定ファイルは `~/.config/starship.toml` に配置します: ```bash mkdir -p ~/.config touch ~/.config/starship.toml ``` ### プリセットの使用 Starship には複数のプリセットが用意されています: ```bash # Nerd Font シンボルを使用するプリセット starship preset nerd-font-symbols -o ~/.config/starship.toml # その他のプリセット starship preset no-nerd-font -o ~/.config/starship.toml starship preset pastel-powerline -o ~/.config/starship.toml starship preset pure-preset -o ~/.config/starship.toml ``` ### 基本的なカスタマイズ例 ```toml # ~/.config/starship.toml # プロンプトの前に空行を追加 add_newline = true # コマンド実行タイムアウト(ミリ秒) command_timeout = 500 # プロンプトのフォーマット定義 format = """ $username\ $hostname\ $directory\ $git_branch\ $git_status\ $nodejs\ $python\ $rust\ $character """ # ディレクトリモジュールのカスタマイズ [directory] truncation_length = 3 truncate_to_repo = true format = "at [$path]($style) " # Git ブランチモジュールのカスタマイズ [git_branch] symbol = "🌱 " format = "on [$symbol$branch(:$remote_branch)]($style) " # 文字(プロンプト記号)のカスタマイズ [character] success_symbol = "[➜](bold green)" error_symbol = "[✗](bold red)" ``` ### モジュールの無効化 不要なモジュールを無効化できます: ```toml # パッケージ情報を非表示 [package] disabled = true # Docker コンテキストを非表示 [docker_context] disabled = true ``` ### 高度なカスタマイズ #### 条件付き表示 ```toml # Git リポジトリ内でのみ Git 情報を表示 [git_branch] only_attached = true ``` #### カスタムコマンドモジュール ```toml # カスタムコマンドの実行結果を表示 [custom.git_email] command = "git config user.email" when = "git rev-parse --git-dir 2> /dev/null" format = "via [$output]($style)" ``` ### デバッグ 設定に問題がある場合: ```bash # プロンプトの各要素の説明を表示 starship explain # 詳細なログを有効化 STARSHIP_LOG=trace starship explain # パフォーマンス測定 starship timings ``` ## まとめ Powerlevel10k から Starship への移行は、以下の理由から推奨されます: 1. **継続的なメンテナンス**が保証されている 2. **クロスプラットフォーム対応**で柔軟性が高い 3. **設定がシンプル**で保守しやすい 4. **活発なコミュニティ**によるサポート 移行作業は比較的簡単で、既存の設定との互換性も高いため、スムーズに移行できます。 Starship の TOML ベースの設定は、Powerlevel10k の複雑な設定ファイルよりも理解しやすく、カスタマイズも容易です。 ## 参考リンク - [Starship 公式サイト](https://starship.rs/) - [Starship 設定リファレンス](https://starship.rs/config/) - [Starship GitHub](https://github.com/starship/starship) - [Powerlevel10k GitHub](https://github.com/romkatv/powerlevel10k) -------------------------------------------------------------------------------- title: "Minifluxの便利な使い方:ブックマークレットとモバイルアプリ連携" date: "2026-01-22" url: https://scribble.washo3.com/miniflux-client/ -------------------------------------------------------------------------------- RSSリーダーを自前で運用できる「Miniflux」の構築を前記でお届けしました。 シンプルで高速なのが魅力ですが、日々の「フィード登録」や「モバイルでの閲覧」をさらに便利にする方法があります。 今回は、2026年現在も最強の組み合わせである、PCブラウザからの「爆速ブックマークレット登録」と、iPhoneの人気アプリ「NetNewsWire」での同期閲覧設定を解説します。 --- ## 1. ブラウザから1クリック!Miniflux「ブックマークレット」の登録方法 ブラウジング中に「このサイト、購読したい!」と思った時、わざわざURLをコピーしてMinifluxを開くのは面倒です。公式の「ブックマークレット」を活用しましょう。 ### 設定手順 1. **Minifluxにログイン**し、上部メニューの [Settings](https://reader.miniflux.app) をクリックします。 2. 左メニューの **Bookmarklet** を選択します。 3. 画面に表示されている **Subscribe** というリンクを、ブラウザの**ブックマークバーへ直接ドラッグ&ドロップ**します。 - *ヒント:ブックマークバーが表示されていない場合は `Ctrl+Shift+B` (Macは `Cmd+Shift+B`) で表示させましょう。* ### 使い方 登録したいウェブサイトを開いた状態で、ブックマークバーの **Subscribe** をクリックするだけ。自動的にMinifluxの登録画面が開き、フィードURLが入力された状態になります。あとは「Save」を押せば完了です。 --- ## 2. iPhoneで読むなら「NetNewsWire」が最適!Minifluxとの同期設定 iPhoneでMinifluxをチェックするなら、オープンソースで動作が非常に軽快な [NetNewsWire](https://netnewswire.com) がおすすめです。 ### 事前準備:MinifluxでAPIキーを作成 セキュリティのため、パスワードではなく「APIキー」を使用します。 1. Minifluxの **Settings** > **API Keys** へ進みます。 2. **Create a new API key** をクリックし、名前(例:iPhone)を付けて保存します。 3. 表示された文字列を必ずコピーしてください(**一度しか表示されないので注意!**)。 ### iPhoneアプリ(NetNewsWire)側の設定 1. [App Store](https://apps.apple.com) から **NetNewsWire** をインストールして開きます。 2. 設定(歯車アイコン)> **Add Account** をタップします。 3. アカウント一覧から **FreshRSS** を選択します。 (Self-hostedなので、FreshRSSを選択します) 4. 以下の情報を入力します: - **API URL**: あなたのMinifluxのURL(例: `https://reader.miniflux.app`) - **Email or Username**: ログイン用ユーザー名 - **API Token**: 先ほど作成したAPIキーを貼り付けます。 5. **Add Account** をタップして完了! --- ## まとめ:効率的なRSS購読環境の完成 今回の設定で、以下のようなスムーズな情報収集フローができあがります。 - **PCで探す**:ブラウザでサイトを見つけたら「ブックマークレット」で即登録。 - **PCで読む**:Chrome拡張機能「Tinyflux」で作業の合間にチェック。 - **iPhoneで読む**:隙間時間に「NetNewsWire」でサクサク消化。 Minifluxを単なるWebツールとしてだけでなく、アプリや拡張機能と連携させることで、情報収集の効率は劇的に向上します。ぜひ設定してみてください! コードは注意してご使用ください。 -------------------------------------------------------------------------------- title: "MinifluxをTraefik連携でDocker構築する" date: "2026-01-22" url: https://scribble.washo3.com/miniflux-docker/ -------------------------------------------------------------------------------- 今まで、RSSのセルフホストをFreshRSSで活用してきましたが、軽量やいろんな外部と連携できるとして、Minifluxへ移行しました。 今回もDockerで構築していきますが、下記の前提として記載します。 ## 環境 - 独自ドメイン(Cloudflareにて登録済み) - ネットワーク: `traefik-network` (external) - CertResolver: `cloudflare` - entryPoints: `web` (80), `websecure` (443) ## docker-compose.yml ```yaml services: miniflux: image: miniflux/miniflux:latest container_name: miniflux restart: always depends_on: db: condition: service_healthy environment: - DATABASE_URL=postgres://miniflux:${DB_PASSWORD}@db/miniflux?sslmode=disable - RUN_MIGRATIONS=1 - CREATE_ADMIN=1 - ADMIN_USERNAME=${ADMIN_USERNAME} - ADMIN_PASSWORD=${ADMIN_PASSWORD} - BASE_URL=https://${MINIFLUX_DOMAIN} labels: - "traefik.enable=true" - "traefik.docker.network=traefik-network" - "traefik.http.routers.miniflux.rule=Host(`${MINIFLUX_DOMAIN}`)" - "traefik.http.routers.miniflux.entrypoints=websecure" - "traefik.http.routers.miniflux.tls=true" - "traefik.http.routers.miniflux.tls.certresolver=cloudflare" - "traefik.http.services.miniflux.loadbalancer.server.port=8080" networks: - traefik-network - miniflux-internal healthcheck: test: ["CMD", "/usr/bin/miniflux", "-healthcheck", "auto"] interval: 10s start_period: 30s db: image: postgres:17 container_name: miniflux-db restart: always environment: - POSTGRES_USER=miniflux - POSTGRES_PASSWORD=${DB_PASSWORD} - POSTGRES_DB=miniflux volumes: - miniflux-db:/var/lib/postgresql/data healthcheck: test: ["CMD", "pg_isready", "-U", "miniflux"] interval: 10s start_period: 30s networks: - miniflux-internal networks: traefik-network: external: true miniflux-internal: driver: bridge volumes: miniflux-db: ``` ### .env ```env DB_PASSWORD=your_secure_db_password ADMIN_USERNAME=admin ADMIN_PASSWORD=your_secure_admin_password MINIFLUX_DOMAIN=rss.your-domain.com ``` ## 起動 ```bash docker compose up -d ``` ## Miniflux を Traefik + Docker Compose で安全に構築する - **PostgreSQL**: 公式ドキュメントではPostgres 18だが、まだbetaなので17を使用 - **ネットワーク分離**: DBは`miniflux-internal`のみに接続し、外部からアクセス不可 - **Traefik連携**: minifluxコンテナは`traefik-network`に接続し、labelsでルーティング設定 - **ポート**: minifluxはデフォルトで8080で起動するため、ホストへのポート公開は不要(Traefikが処理) -------------------------------------------------------------------------------- title: "Vaultwarden ADMIN_TOKEN を Argon2 ハッシュ化して Docker で安全に運用する" date: "2026-01-19" url: https://scribble.washo3.com/vaultwarden-admin/ -------------------------------------------------------------------------------- # Vaultwarden の ADMIN_TOKEN を Argon2 ハッシュ化してセキュアにする ## はじめに Vaultwarden の管理画面にアクセスすると、以下の警告が表示されることがあります。 ``` You are using a plain text `ADMIN_TOKEN` which is insecure. Please generate a secure Argon2 PHC string by using `vaultwarden hash` or `argon2`. ``` Vaultwarden 1.28.0 以降では、`ADMIN_TOKEN` を Argon2 でハッシュ化することが推奨されています。本記事では、Docker Compose 環境で `ADMIN_TOKEN` をセキュアに設定する方法を解説します。 ## 変更前の構成 私の環境ではTraefikを利用しています ### docker-compose.yml(変更前) ```yaml version: "3.6" services: bitwarden: environment: - DOMAIN=https://vault.example.com - TZ=Asia/Tokyo - SIGNUPS_ALLOWED=false - INVITATIONS_ALLOWED=false - ADMIN_TOKEN=your_plain_text_admin_token_here - WEBSOCKET_ENABLED=true image: vaultwarden/server:latest restart: always volumes: - ./bw_data:/data networks: - traefik-network networks: traefik-network: external: true ``` この構成では、`ADMIN_TOKEN` がプレーンテキストで `docker-compose.yml` に直接記述されているため、セキュリティ上の問題があります。 ## 変更後の構成 ### 1. docker-compose.yml(変更後) 環境変数を `.env` ファイルで管理するように変更します。 ```yaml version: "3.6" services: bitwarden: env_file: - .env image: vaultwarden/server:latest restart: always volumes: - ./bw_data:/data networks: - traefik-network networks: traefik-network: external: true ``` ### 2. .env ファイルの作成 ```bash # Vaultwarden環境変数 DOMAIN=https://vault.example.com TZ=Asia/Tokyo SIGNUPS_ALLOWED=false INVITATIONS_ALLOWED=false ADMIN_TOKEN=$$argon2id$$v=19$$m=65540,t=3,p=4$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX$$YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY DISABLE_ADMIN_TOKEN=false WEBSOCKET_ENABLED=true ``` **重要**: Docker Compose の `.env` ファイルでは、`$` を `$$` でエスケープする必要があります。 ### 3. .gitignore の設定 `.env` ファイルには機密情報が含まれるため、Git で追跡しないように設定します。 ```gitignore * !docker-compose.yml !.env ``` ## Argon2 ハッシュの生成方法 ### 方法1: vaultwarden hash コマンドを使用 ```bash # 実行中のコンテナで実行 docker exec -it bitwarden-bitwarden-1 /vaultwarden hash # または、一時コンテナで実行 docker run --rm -it vaultwarden/server:latest /vaultwarden hash ``` コマンドを実行すると、パスワードを2回入力するプロンプトが表示されます。 ``` Generate an Argon2id PHC string using the 'bitwarden' preset: Password: Confirm password: ADMIN_TOKEN='$argon2id$v=19$m=65540,t=3,p=4$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX$YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY' ``` ### 方法2: OWASP 推奨設定を使用 より強力なハッシュを生成する場合は、`--preset owasp` オプションを使用します。 ```bash docker exec -it bitwarden-bitwarden-1 /vaultwarden hash --preset owasp ``` ## .env ファイルへの設定 生成された PHC 文字列を `.env` ファイルに設定する際、`$` を `$$` に置き換えます。 **生成されたハッシュ(例):** ``` $argon2id$v=19$m=65540,t=3,p=4$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX$YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY ``` **.env ファイルへの設定:** ``` ADMIN_TOKEN=$$argon2id$$v=19$$m=65540,t=3,p=4$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX$$YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY ``` ## config.json の確認 Vaultwarden の管理画面で設定を保存すると、`bw_data/config.json` が生成されます。このファイルに `admin_token` が存在する場合、環境変数より優先されるため、注意が必要です。 ### config.json から admin_token を削除 ```bash # 現在の設定を確認 cat bw_data/config.json | jq '.admin_token // "not set"' # admin_token を削除 jq 'del(.admin_token)' bw_data/config.json > config.json.tmp && mv config.json.tmp bw_data/config.json ``` ## コンテナの再起動 **重要**: 環境変数を変更した場合、`docker compose restart` では反映されないことがあります。コンテナを再作成する必要があります。 ```bash # コンテナを再作成(推奨) docker compose down && docker compose up -d # 環境変数が正しく設定されているか確認 docker compose exec bitwarden env | grep ADMIN_TOKEN ``` ## パスワードを忘れた場合・再設定する方法 管理画面のパスワードを忘れた場合や、再設定したい場合は以下の手順で対応できます。 ### 手順1: .env ファイルを一時的にプレーンテキストに変更 ```bash # .env ファイルを編集 ADMIN_TOKEN=new_temporary_password_here ``` ### 手順2: config.json から admin_token を削除 `config.json` に古いハッシュが残っている場合、環境変数より優先されるため削除します。 ```bash jq 'del(.admin_token)' bw_data/config.json > config.json.tmp && mv config.json.tmp bw_data/config.json ``` ### 手順3: コンテナを再作成 ```bash docker compose down && docker compose up -d ``` ### 手順4: 新しいパスワードで管理画面にログイン ブラウザで管理画面(`https://vault.example.com/admin`)にアクセスし、手順1で設定したパスワードでログインします。 ### 手順5: 新しいハッシュを生成 ```bash docker exec -it bitwarden-bitwarden-1 /vaultwarden hash ``` 新しいパスワードを入力し、生成された PHC 文字列をコピーします。 ### 手順6: .env ファイルを更新 生成されたハッシュを `.env` ファイルに設定します(`$` を `$$` に置き換え)。 ```bash ADMIN_TOKEN=$$argon2id$$v=19$$m=65540,t=3,p=4$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX$$YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY ``` ### 手順7: コンテナを再作成 ```bash docker compose down && docker compose up -d ``` これで新しいパスワードでハッシュ化された `ADMIN_TOKEN` が設定されます。 ## トラブルシューティング ### 警告が消えない場合 1. **config.json を確認**: `admin_token` がプレーンテキストで残っていないか確認 2. **エスケープを確認**: `.env` ファイルで `$` が `$$` にエスケープされているか確認 3. **コンテナを再作成**: `docker compose down && docker compose up -d` を実行 ### ログインできない場合 1. **環境変数を確認**: ```bash docker compose exec bitwarden env | grep ADMIN_TOKEN ``` 2. **コンテナを再作成**: ```bash docker compose down && docker compose up -d ``` 3. **ログを確認**: ```bash docker compose logs bitwarden --tail 30 | grep -i "admin\|token" ``` ## まとめ | 項目 | 変更前 | 変更後 | |------|--------|--------| | 環境変数の管理 | docker-compose.yml に直接記述 | .env ファイルで管理 | | ADMIN_TOKEN | プレーンテキスト | Argon2 ハッシュ | | セキュリティ | 低 | 高 | Argon2 ハッシュ化により、万が一 `ADMIN_TOKEN` が漏洩しても、元のパスワードを復元することは困難になります。 ## 運用上のベストプラクティス:管理画面は必要なときだけ有効に 管理者画面(Admin Page)は強力な設定や運用操作が可能な反面、攻撃者に狙われるリスクも高い箇所です。**普段管理操作をしない場合は Admin ページを無効化し、本当に必要なときだけ一時的に有効化する**運用がおすすめです。 ### 一時的に管理画面を有効化する流れ 1. `.env` ファイルで `ADMIN_TOKEN` を一時的に設定 2. 管理作業が終わったら `ADMIN_TOKEN` をコメントアウトまたは空にして無効化 3. 必要に応じて `docker compose down && docker compose up -d` で反映 #### 例: 管理画面を一時有効化する `.env` ``` # 管理作業時のみ有効化 ADMIN_TOKEN=$$argon2id$$v=19$$m=65540,t=3,p=4$$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX$$YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY ``` #### 管理作業後(無効化) ``` # ADMIN_TOKEN= ← コメントアウトまたは空欄にする ``` ### ポイント - `ADMIN_TOKEN` を削除または空欄にして再起動すると、管理画面はアクセスできなくなります - 必要なときだけ有効にすることでリスクを最小限にできます - 本運用では `.env` ファイル自体の権限管理やアクセス制御も強く推奨されます このような「必要なときだけ有効化」運用は、Vaultwardenに限らず様々なサービスで有効なセキュリティ対策です。 ## 参考 - [Vaultwarden Wiki - Enabling admin page](https://github.com/dani-garcia/vaultwarden/wiki/Enabling-admin-page#secure-the-admin_token) -------------------------------------------------------------------------------- title: "netstat卒業: witrで「このポートなぜ動く?」を1コマンド解決" date: "2026-01-13" url: https://scribble.washo3.com/why-is-this-running-witr-port-investigation/ -------------------------------------------------------------------------------- ## はじめに:深夜の「このポート何だっけ?」問題 サーバー運用をしていると、深夜にアラートを見て SSH した先で「このポート何が開いてるんだっけ?」という状況に何度も遭遇します。 これまでは netstat / ss / lsof / nmap / systemctl / docker ps を組み合わせて、人力でそのプロセスの正体と起源を推理していました。 最近、**witr (Why is this running)** という CLI ツールを導入したところ、「プロセスがなぜ存在しているのか」まで 1 コマンドで説明してくれるようになり、調査フローがかなり変わりました。 [https://github.com/pranshuparmar/witr](https://github.com/pranshuparmar/witr) *** ## 従来フロー:Debian・Docker・macOS での調査 ### Debian(systemd サーバー) 例えば、本番の Debian サーバーで 8080 番ポートが開いているのを見つけたときは、だいたいこんな流れでした。 ```bash # ポートと PID の確認 ss -ltnp | grep 8080 # PID からプロセス名を確認 ps aux | grep 12345 # systemd 管理かどうかを確認 systemctl status my-app.service ``` このあと、「どのユニットから起動されているか」「実行ユーザー」「起動オプション」などを、systemctl や journalctl、サービスの設定ファイルを見ながら手で繋ぎ合わせていました。 ### Docker 多めの環境 Docker が絡むと、さらに 1 ステップ増えます。 ```bash # ホスト側のポートだけ分かっている状態 ss -ltnp | grep 5000 # プロセスが docker-proxy / containerd っぽい → コンテナを調べる docker ps docker ps --format 'table {{.Names}}\t{{.Ports}}' # コンテナ内のポート状況を見る docker exec -it my-app ss -ltnp ``` 「ホストの 0.0.0.0:5000 → docker-proxy → コンテナ my-app → コンテナ内のアプリ」といった因果関係を、自分で追いかける必要がありました。 ### macOS(開発マシン) 開発用 macOS でも、似たようなことをやっていました。 ```bash # LISTEN しているポート一覧 lsof -iTCP -sTCP:LISTEN # 気になるポートだけ掘る lsof -i:3000 ``` しばらく触っていないプロジェクトの dev サーバーが残っていると、「これどのディレクトリの Node だったっけ?」と、さらに ps / cwd / シェルの履歴まで遡ることもありました。 *** ## witr の導入とインストール [https://github.com/pranshuparmar/witr](https://github.com/pranshuparmar/witr) ### Debian(Linux) ```bash curl -fsSL https://raw.githubusercontent.com/pranshuparmar/witr/main/install.sh -o install.sh chmod +x install.sh sudo ./install.sh ``` スクリプトが OS(linux / darwin / freebsd)とアーキテクチャ(amd64 / arm64)を自動判定し、最新バイナリと man ページを `/usr/local/bin` と `/usr/local/share/man` に配置してくれます。 手動で入れたい場合は、こんな感じでも入れられます。 ```bash OS=$(uname -s | tr '[:upper:]' '[:lower:]') ARCH=$(uname -m) [ "$ARCH" = "x86_64" ] && ARCH="amd64" [ "$ARCH" = "aarch64" ] && ARCH="arm64" curl -fsSL "https://github.com/pranshuparmar/witr/releases/latest/download/witr-${OS}-${ARCH}" -o witr chmod +x witr sudo mv witr /usr/local/bin/witr ``` ### macOS(Homebrew) ```bash brew install witr ``` Homebrew 環境なら一行で導入できるので、開発用 mac とサーバーの両方に同じコマンドが入るのも便利でした。 *** ## 実例1:Debian 本番での「この 5000 番何?」事件 ある晩、ALB のヘルスチェックが一部失敗しているという通知を受けて、本番 Debian に入って確認したときの話です。 ### 1. いつものように ss から入る ```bash ss -ltnp | grep 5000 ``` 出力(イメージ)はこんな感じでした。 ```text LISTEN 0 4096 0.0.0.0:5000 0.0.0.0:* users:(("app-worker",pid=12345,fd=7)) ``` 「`app-worker` ってプロセスが 5000 番で LISTEN しているのは分かったけど、systemd のどのユニットだったっけ…?」といういつもの状態になります。 ### 2. witr を使って「なぜ動いているか」を聞いてみる ここで、最近入れた witr を試してみました。 ```bash witr --port 5000 ``` マスクしたイメージですが、出力はこんな雰囲気です。 ```text Port 5000 is bound by PID 12345 (app-worker) running as appuser └─ Started by systemd unit app-worker.service └─ WantedBy multi-user.target └─ Enabled via /etc/systemd/system/app-worker.service Summary: Port 5000 → app-worker.service (systemd) → multi-user.target This process exists because the app-worker service is enabled and started at boot. ``` この 1 回の実行で、 - どの PID / ユーザーがポートを掴んでいるか - それがどの systemd ユニットか - そのユニットがどの target からぶら下がっているか - 起動理由(ブート時に enable 済みなのか、手動 start なのか) といった「因果関係」まで、一気に読める形で返してくれました。 ### 3. 要約だけ欲しいとき 障害対応中に長い説明まではいらない場合は、ショートモードがちょうど良かったです。 ```bash witr --port 5000 --short ``` 出力イメージ: ```text Port 5000 → app-worker (PID 12345) started by systemd unit app-worker.service (enabled at boot) ``` 「これは systemd 管理の常駐ワーカーだから、ALB の設定を見直すべき」とすぐ判断できたのがかなり助かりました。 *** ## 実例2:Docker だらけの検証環境でのポート迷子 次は、Docker コンテナが大量に動いている検証サーバーの例です。 ### 1. ホストで怪しいポートを見つける あるとき、ログに「5001 番ポートに対する unknown client からのアクセス」が出ていて、サーバー側を確認しました。 ```bash ss -ltnp | grep 5001 ``` 出力イメージ: ```text LISTEN 0 4096 0.0.0.0:5001 0.0.0.0:* users:(("docker-proxy",pid=23456,fd=4)) ``` 「あ〜 docker-proxy だな…このポート、どのコンテナだっけ?」となります。 ### 2. witr で一気にコンテナの正体まで辿る ```bash witr --port 5001 ``` 出力イメージ: ```text Port 5001 is bound by PID 23456 (docker-proxy) on the host └─ This proxies to container port 8000 in container web-frontend-1 └─ Container web-frontend-1 (image registry.example.com/web-frontend:2025-12-01) └─ Started by docker-compose.service (systemd) from /srv/projects/frontend/docker-compose.yml Summary: Port 5001 → docker-proxy → container web-frontend-1 → docker-compose.service This exists because docker-compose.service is running and published port 5001:8000. ``` 普段なら、 - docker-proxy の PID から docker が怪しいと推測 - `docker ps` を眺めて、ポート欄から対応するコンテナを探す - `docker inspect` で起動コマンドや compose ファイルを確認 - 必要なら systemd の docker-compose ユニットまで辿る という 3〜4 ステップを踏んでいたところを、1 コマンドで「ポート → docker-proxy → コンテナ → compose → systemd ユニット」という因果チェーンまで説明してくれたのが印象的でした。 コンテナ内をさらに深掘りしたい場合は、コンテナの中にも witr を入れておいて、 ```bash docker exec -it web-frontend-1 bash witr --port 8000 ``` のように、コンテナ内プロセスの起源まで見に行くこともできます。 *** ## 実例3:macOS ローカルでの「3000 番誰問題」 最後に、開発用 macOS の話です。 ### 1. しばらく触っていない dev サーバーが残っていた ある日、別プロジェクトで 3000 番を使おうとしたところ、「すでに使用中」と言われました。 ```bash lsof -i:3000 ``` 出力イメージ: ```text node 98765 myuser 21u IPv4 0x1234567890abcdef 0t0 TCP *:hbci (LISTEN) ``` Node で何かが動いていることは分かりますが、「これどのプロジェクトの dev サーバーだっけ?」となります。 ### 2. witr に聞いてみる ```bash witr --port 3000 ``` 出力イメージ(macOS 対応版): ```text Port 3000 is bound by PID 98765 (node) running as myuser └─ Started from interactive shell session: └─ /bin/zsh -l └─ Working directory: /Users/myuser/dev/old-project └─ Command: node_modules/.bin/next dev Summary: Port 3000 → node (Next.js dev server) started manually in /Users/myuser/dev/old-project ``` 「昔の Next.js プロジェクトの dev サーバーが /old-project 配下で残っている」ことが一目瞭然になり、そのシェルを閉じるか ctrl+c するだけで片付きました。 `cwd` や起動コマンドまで含めて「なぜ動いているか」を説明してくれるので、macOS でもかなり便利に使えています。 *** ## まとめ:状態を見るツールから、理由を説明するツールへ - ss / netstat / lsof / nmap / systemctl / docker ps などの従来ツールは、「何がどこで動いているか」という状態を知るのに非常に優秀です。 - 一方で、「そのプロセスがなぜ存在しているのか」「どの仕組みが責任を持っているのか」は、複数ツールの出力を自分で突き合わせて推理する必要がありました。 - witr は、ポート番号・PID・プロセス名など、どこから入っても最終的に **“Why is this running?”** に答える形で因果チェーンをテキスト化してくれるので、Debian の本番サーバーでも Docker だらけの検証環境でも macOS の開発マシンでも、「とりあえず witr を 1 回叩いてから考える」というのが自分の新しい標準フローになりつつあります。 -------------------------------------------------------------------------------- title: "sudo 実行時にユーザーの PATH を引き継ぐ方法" date: "2026-01-13" url: https://scribble.washo3.com/preserve_user_path_with_sudo_on_linux/ -------------------------------------------------------------------------------- Linuxで`sudo`コマンドを使うと、通常ユーザーで設定したPATHが反映されず「command not found」になることがあります。 特に、Linuxbrew(Homebrew)内のコマンドをsudo付きで実行しようとした際に、コマンドが見つからないことがよくあります。 この記事では、sudoでユーザーのPATH環境変数を引き継ぐ方法について解説します。 ## なぜsudoでPATHが変わるのか `sudo`はセキュリティ上の理由から、デフォルトで環境変数をリセットします。 多くのディストリビューションでは、`/etc/sudoers`に`secure_path`が設定されており、sudo実行時はこの固定されたPATHが使われます。 ```bash # 通常ユーザーのPATH $ echo $PATH /home/user/.local/bin:/usr/local/bin:/usr/bin:/bin # sudo実行時のPATH(リセットされている) $ sudo sh -c 'echo $PATH' /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ``` ユーザー独自のディレクトリ(`~/.local/bin`など)がsudo時には含まれないため、そこにインストールしたコマンドが見つからなくなります。 ## 方法1: 一時的にPATHを引き継ぐ 1回だけPATHを渡したい場合は、コマンド実行時にオプションを付けます。[1] ### --preserve-env オプションを使う ```bash sudo --preserve-env=PATH your-command ``` 特定の環境変数だけを指定して引き継げます。 ### env コマンドを使う ```bash sudo env PATH="$PATH" your-command ``` 現在のPATHをそのまま渡して実行できます。 ### 使用例 ```bash # ~/.local/bin にインストールした mycli を root で実行 sudo --preserve-env=PATH mycli --config /etc/myapp/config.yaml # または sudo env PATH="$PATH" mycli --config /etc/myapp/config.yaml ``` ## 方法2: sudoersでPATHを恒久的に引き継ぐ 毎回オプションを付けるのが面倒な場合は、sudoersの設定を変更します。 ### 手順 1. visudoを起動する(直接編集は危険なので必ずvisudoを使う) ```bash sudo visudo ``` 2. `secure_path`の行をコメントアウトする ```text # 変更前 Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" # 変更後(先頭に # を付ける) #Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ``` 3. PATHを引き継ぐ設定を追加する ```text Defaults env_keep += "PATH" ``` 4. 保存して終了(viなら`:wq`) ### 設定後の確認 ```bash $ sudo sh -c 'echo $PATH' /home/user/.local/bin:/usr/local/bin:/usr/bin:/bin ``` ユーザーのPATHがそのまま引き継がれていれば成功です。 ## 方法3: secure_pathに追加する 既存のsecure_pathを活かしつつ、特定のディレクトリだけ追加する方法もあります。 ```bash sudo visudo ``` ```text # 既存のパスに追加する形で編集 Defaults secure_path="/home/linuxbrew/.linuxbrew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ``` この方法ならセキュリティ設定を維持しつつ、必要なパスだけ許可できます。 ## 方法4: フルパスで実行する PATHに頼らず、コマンドを絶対パスで指定する方法です。 ```bash # コマンドの場所を確認 $ which mycli /home/user/.local/bin/mycli # フルパスで実行 $ sudo /home/user/.local/bin/mycli --version ``` 設定変更が不要で、確実に動作します。 ## セキュリティ上の注意点 `secure_path`を無効化したり`env_keep`でPATHを許可すると、悪意のあるスクリプトがPATHに紛れ込むリスクがあります。 | 方法 | メリット | リスク | |------|---------|--------| | `--preserve-env=PATH` | 必要な時だけ使える | 毎回指定が必要 | | `env_keep += "PATH"` | 恒久的に便利 | PATH汚染のリスクあり | | `secure_path`に追加 | 許可するパスを限定できる | 追加忘れが起きやすい | | フルパス指定 | 最も安全 | 入力が長くなる | 個人の開発マシンなら`env_keep`でも問題ありませんが、共用サーバーや本番環境では`secure_path`への追加かフルパス指定が推奨されます。 ## まとめの設定例 個人開発環境向けの推奨設定をまとめます。 ```bash # /etc/sudoers(visudoで編集) #Defaults secure_path="..." # コメントアウト Defaults env_keep += "PATH" ``` これで`~/.local/bin`やHomebrewなど、ユーザー領域にインストールしたコマンドもsudoで実行できるようになります。 -------------------------------------------------------------------------------- title: "記事リストのサマリーをプレーンに変更" date: "2026-01-06" url: https://scribble.washo3.com/2026-summary-plainify/ -------------------------------------------------------------------------------- トップ記事のリストのサマリー表示が、HTML記法が残ったまま表示されて気持ち悪かったので改善 ↓ {{< imgur id="gSJgM0p" >}} SEO的にもHTML除去した方が良さそうなので、下記に修正 layouts/partials/post_preview.html ```go

{{ .Title }}

{{ if .Params.subtitle }}

{{ .Params.subtitle }}

{{ end }} {{ if .Params.image }} {{ .Title }} {{ end }} {{ if .Params.video }} {{ end }}

{{ partial "post_meta.html" . }}

{{ if or (.Truncated) (.Params.summary) }} {{ .Summary | plainify }} [{{ i18n "readMore" }}] {{ else }} {{ .Content }} {{ end }}
{{ if .Params.tags }}
{{ range .Params.tags }} {{ . }}  {{ end }}
{{ end }}
``` -------------------------------------------------------------------------------- title: "Neovim 0.11でinit.vimからinit.luaへ移行する方法と注意点" date: "2025-12-12" url: https://scribble.washo3.com/2025-neovim-lua-migrate/ -------------------------------------------------------------------------------- [ZshとNeoVimの設定見直し]({{< ref "zsh-neovim-2022.md" >}})で設定したNeoVimの設定をLuaに移行した。 ## TL;DR - Neovim 0.11.5 は **Lua前提**なので、`init.vim + vim-plug` から **`init.lua + lazy.nvim`** へ寄せるとリターンがデカい。 - 補完は **`blink.cmp`** が今どきの選択肢として強い。 - 0.11 の罠: **`init.lua` と `init.vim` の同居はNG**(`E5422: Conflicting configs`)。段階移行は工夫が要る。 - ついでに **NERDTree→oil.nvim**、手書き括弧→**nvim-autopairs**、IME→Lua autocmd、カーソル形状→`guicursor`。 ## 背景 Neovim 0.11 世代は LSP/diagnostic/周辺プラグインのエコシステムが **Lua前提**で進んでる。Vimscript中心で維持すると、 - 新しい設定APIの恩恵が薄い - プラグインのサンプル/ドキュメントとの差が開く - トラブル時の切り分けが遅くなる みたいな「ジワジワ負け」が起きる。 ## 0.11 の落とし穴: `init.lua` と `init.vim` は同居できない 0.11 では `~/.config/nvim/init.lua` と `~/.config/nvim/init.vim` が同時に存在すると、起動時に `E5422: Conflicting configs` で止まる。 つまり「`init.lua` を作って、そこから `init.vim` を source して段階移行」みたいな古典的プランは、そのままだと破綻する。 今回の着地は以下: - `init.vim` を捨てる(repo 側でも削除) - 必要な挙動は Lua に移植 - 一時退避用の `legacy.vim` も最終的に **ゼロ化して削除** ## 構成 - `nvim/init.lua`: エントリポイント(lazy bootstrap + core 読み込み) - `nvim/lua/plugins.lua`: lazy.nvim の spec 集約 - `nvim/lua/core/options.lua`: options / guicursor / IME autocmd - `nvim/lua/core/keymaps.lua`: keymaps - `nvim/lua/core/diagnostics.lua`: diagnostic 設定 + `LspAttach` ## 実装の要点 ### 1) `init.lua` で lazy.nvim bootstrap - lazy.nvim が無ければ clone - `core/*` と `plugins` を読み込む - 保存時に Lua を再読み込みする簡易ホットリロード ### 2) lazy.nvim で管理するプラグイン - `telescope.nvim` - `nvim-treesitter` - `copilot.lua` - `CopilotChat.nvim` - `blink.cmp` - `nvim-lspconfig`(blink の capabilities を LSP に渡す) さらに legacy ゼロ化のために: - `oil.nvim`(NERDTree置換) - `nvim-autopairs`(手書き括弧補完置換) ### 3) 0.11 で効く設定(diagnostic/LspAttach) - `vim.diagnostic.config` を Lua で明示 - `LspAttach` でバッファローカル keymap(hover/definition/rename/code action/diagnostic nav/format) ### 4) legacy をゼロにする(Oil/Autopairs/IME/Cursor) - **NERDTree→Oil**: `` を `:Oil` に割り当てて移行コスト0 - **括弧補完**: 手書き `inoremap` をやめて `nvim-autopairs` - **カーソル形状**: `t_SI/t_EI` ハックをやめて `guicursor` - **IME**: `im-select` を Lua autocmd で叩く(0.11 の `vim.system()` で非同期) ### 5) `` 問題(Copilot vs 補完) `` は Copilot / 補完UI / pum で衝突しがち。 今回は「**Copilot のゴースト提案が見えてる時だけ `` で accept**、それ以外は pum/通常Tabにフォールバック」という挙動に寄せた。 ## 運用の掃除(移行後に残りがちなゴミ) - 旧 `copilot.vim`(`~/.config/nvim/pack/...`)は削除して二重ロード回避 - `~/.config/nvim/plugged/`(vim-plug 残骸)も削除 - 壊れた `~/.vimrc` symlink も削除(Vim 起動時のノイズ源) -------------------------------------------------------------------------------- title: ".zshrcの設定見直しで発見した4つの問題と修正方法" date: "2025-12-12" url: https://scribble.washo3.com/2025-zshrc-fix/ -------------------------------------------------------------------------------- [ZshとNeoVimの設定見直し]({{< ref "zsh-neovim-2022.md" >}})で設定したZshrcをベースにして愛用してきましたが、生成AI(ChatGPT-5.2)の力を借りて設定を見直した。 ## 改善点 - 壊れてた判定関数を正しく(return $(...) をやめる) - localeは触らない(LC_ALL は特に事故りやすい) - 補完は初回から効くように(zinit遅延ロード×compinit順序の地雷回避) - 重い一覧は ll/la に隔離して、普段の ls を遅くしない --- ## 背景:.zshrc は「便利」と「破壊」が紙一重 zshrcの改善って、見た目やalias追加よりも「間違った書き方が静かに壊す」系の地雷が多い。今回ハマりどころだったのはこの4つ: 1. _has/_try の return $(...) 2. locale(LC_ALL の上書き) 3. zinit の遅延ロードと compinit の順序 4. ls 相当を重くしすぎる alias --- ## 1) _has/_try: return $(...) は“出力を終了ステータスにする”事故 return が返すのは 0〜255 のステータス。ここに $(...) の標準出力を食わせると、空文字/文字列になって壊れる(意図とズレる)。 修正はシンプルで、「そのコマンドを実行して終了ステータスを返す」だけ。 ```zsh _has() { whence -w -- "$1" >/dev/null 2>&1 } _try() { eval "$*" >/dev/null 2>&1 } ``` ポイント: - "$1" / "$*" は必ずクォート(空白や特殊文字で壊れるのを防ぐ) - _try は eval なので使い所は限定(今回は既存設計を崩さず安全側に寄せた) --- ## 2) locale:LC_ALL は“全部上書き”なので .zshrc で触らない 一度 LC_ALL をexportすると、LC_CTYPE や LC_MESSAGES など全カテゴリが強制される。結果として日本語が化ける・コマンドの出力が変わる・想定外の挙動になる。 今回は .zshrc 内で LC_ALL は設定しない方針にして、LANG が空なら UTF-8 を入れるだけにした。 ```zsh if [[ -z ${LANG-} ]]; then export LANG=ja_JP.UTF-8 fi # NOTE: # Avoid setting LC_ALL here. It overrides all LC_* categories and can easily # cause mojibake. If you need C locale for a single command, do: # LC_ALL=C ``` 運用tips: - 「ソートだけCでやりたい」みたいな用途は、そのコマンドだけ LC_ALL=C cmd にするのが安全。 --- ## 3) 補完:zinit遅延ロードとcompinitの順序で“初回だけ効かない”が起きる 補完ソース(例:zsh-completions)を遅延ロードしておいて、先に compinit を走らせると、初回だけ補完が微妙になることがある。 今回は補完系は遅延しないで先に読み、compinit -C(キャッシュ)で軽くした。 ```zsh zinit light zsh-users/zsh-completions zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' zstyle ':completion:*:default' menu select=1 autoload -Uz compinit && compinit -C ``` --- ## 4) alias:重い ls 互換は ll/la に隔離 eza のオプション盛り盛り(icons/git/time-style/all/long)は気持ちいいけど、ディレクトリが大きいと普通に遅い。 なので「重いのは明示コマンドへ」で、ll/la を生やした。 ```zsh which eza > /dev/null && alias ll='eza --icons --git --time-style relative -al' which eza > /dev/null && alias la='eza --icons --git --time-style relative -a' ``` --- ## ついでに潰した地雷:スマートクォートで alias が死ぬ alias dc=‘docker-compose’ みたいなスマートクォート混入は、その行だけ無効になるやつ。ASCII ' に統一した上で、docker v2優先のフォールバックにした。 ```zsh if _has docker; then if _try "docker compose version"; then alias dc='docker compose' elif _has docker-compose; then alias dc='docker-compose' fi fi ``` --- ## 検証:最低限これだけ - 文法チェック(副作用なし) ```bash zsh -n ~/.zshrc ``` - 反映(新しい環境で評価) ```zsh exec zsh -l ``` ※ 文字化けが出た時は「古いシェル/ターミナルが古い環境を保持してた」ことがあるので、必要ならターミナル再起動。 --- ## まとめ - .zshrc は “便利さ” より先に 壊れないこと を優先した方が、結局気持ちよく使える - LC_ALL は局所化、補完は順序、重い表示は ll/la に逃がす - return $(...) は論外(出力≠終了ステータス) --- ## 参考 - Zsh builtins / compinit: man zshbuiltins, man zshcompsys - Zinit: https://github.com/zdharma-continuum/zinit -------------------------------------------------------------------------------- title: "AlmaLinuxの頻繁な再起動を止める:NMI watchdog無効化の実践手順" date: "2025-12-11" url: https://scribble.washo3.com/almalinux-reboot-issue/ -------------------------------------------------------------------------------- まずは「本当に OS 側の再起動なのか、それともハードウェアの電源周りの問題なのか」を切り分けるため、前回ブート直前のログを確認することにした。 AlmaLinux(RHEL 系)では `journalctl -b -1` を叩くことで「ひとつ前の起動分」のログをまとめて確認できるため、このコマンドを起点に、カーネルメッセージや systemd のログをざっと洗った。 *** ## watchdog.service はいないのに、dmesg に NMI watchdog がいた 頻繁な再起動と聞くと、真っ先に思い浮かぶのが「watchdog」だ。 ソフトウェアの watchdog デーモンが誤検知して再起動をかけているのではないかと疑い、まずは systemd のサービス有無を確認した。 ```bash sudo systemctl status watchdog ``` しかし、返ってきたのは次のメッセージだった。 ```text Unit watchdog.service could not be found. ``` この結果から、少なくとも「watchdog.service というユーザーランドのデーモン」は存在していないことが分かった。 次に、カーネルレベルで何か watchdog 関連の機構が動いていないか確認するため、`dmesg` を検索した。 ```bash sudo dmesg | grep watchdog ``` すると、ブート初期化のログに以下のような行が見つかった。 ```text NMI watchdog: Enabled. Permanently consumes one hw-PMU counter. ``` ここで初めて、「このマシンではソフトウェア watchdog ではなく、カーネル内の NMI watchdog(ハードロックアップ検出機構)が有効化されている」ということに気付いた。 再起動の直接のトリガーが NMI watchdog かどうかはまだ分からないものの、原因候補として調査対象に含める価値は十分あると判断した。 *** ## NMI watchdog が何をしていて、なぜ切ることにしたのか Linux カーネルには、CPU やシステムが固まった(ロックアップした)状態を検出するための「lockup watchdog」が用意されている。 このうち、NMI を使って CPU のハードロックアップを検出する仕組みが、いわゆる「NMI watchdog」であり、`nmi_watchdog` カーネルパラメータや `/proc/sys/kernel/nmi_watchdog` で制御される。 NMI watchdog は、本来は「CPU が完全に応答しなくなるような異常状態」を検出し、panic やログ出力のきっかけを作ってくれる有用な機能だ。 しかし、特定のハードウェアや仮想化環境との相性、または CPU のパフォーマンスカウンタ周りの挙動によっては、誤検知や意図しない挙動を引き起こし、結果として頻繁な再起動やカーネルパニックの原因になることがある。 今回の環境では、ソフトウェア watchdog も他の明らかな再起動要因も見当たらず、「NMI watchdog を一度無効化して様子を見る」価値があると判断した。 ハング検出機構を弱めることになるため、無効化はあくまで段階的に行い、挙動を観察しながら進める方針にした。 *** ## nmi_watchdog を安全に無効化する実践手順 ### まずは一時的に無効化して挙動を確認 いきなりカーネルパラメータを書き換えて再起動してしまうと、もし副作用があった場合に切り戻しが面倒になる。 そこで、まずは `sysctl` を使って「今動いているカーネル上で一時的に NMI watchdog を無効化する」手順から試した。 ```bash # 一時的に無効化 sudo sysctl kernel.nmi_watchdog=0 # 状態確認 cat /proc/sys/kernel/nmi_watchdog # → 0 になっていれば無効化されている ``` この設定は再起動すると元に戻るため、「OS を落とさずに動作を変えて、しばらく様子を見る」用途にちょうど良い。 実際、この状態である程度の時間運用してみたところ、これまで発生していたような謎の再起動は発生しなくなり、他の機能やパフォーマンスへの悪影響も特に見られなかった。 この観察結果から、「少なくともこの環境では NMI watchdog を無効化しても実運用上問題なく、むしろ安定性が改善する」と判断し、恒久的に OFF にする方針に切り替えた。 ### GRUB のカーネルパラメータで恒久的に無効化 恒久化の方法としては、AlmaLinux(RHEL 系)らしく GRUB のカーネルパラメータに `nmi_watchdog=0` を追加するのがもっとも確実だ。 具体的には、`/etc/default/grub` を編集して `GRUB_CMDLINE_LINUX` にパラメータを追加する。 ```text GRUB_CMDLINE_LINUX="rhgb quiet nmi_watchdog=0" ``` 編集後に GRUB 設定を再生成する。BIOS/UEFI で出力先が異なるので、環境に合わせたパスを指定する必要がある。 ```bash sudo grub2-mkconfig -o /boot/grub2/grub.cfg # BIOS の例 # UEFI 環境なら /boot/efi/EFI/almalinux/grub.cfg などに合わせる ``` 再起動後、以下のコマンドで NMI watchdog が無効になっていることを確認する。 ```bash cat /proc/sys/kernel/nmi_watchdog # → 0 であればカーネルパラメータが効いている ``` 必要であれば、`/etc/sysctl.d/disable_nmi_watchdog.conf` のようなファイルを作成し、`kernel.nmi_watchdog = 0` を書いておくことで、sysctl 側でも同じ設定を維持できる。 ただし、カーネルパラメータ側で既に 0 にしている場合、sysctl は補強的な意味合いになる。 *** ## まとめ:再起動は止まったが、監視設計は別途考える NMI watchdog を無効化してからしばらく運用した結果、これまで悩まされていた原因不明の再起動は発生しなくなった。 ログにも NMI 関連のメッセージは出なくなり、アプリケーション側の挙動も安定しているため、この環境では NMI watchdog が不安定要因のひとつだったと判断している。 一方で、NMI watchdog は本来「致命的なハングを検出してくれるセーフティネット」であり、単純に切ればいい機能というわけでもない。 ベアメタルのサーバであれば、IPMI や外部監視システムによる死活監視を併用する、仮想環境であればハイパーバイザ側の監視機構に任せる、など別のレイヤでの監視設計を組み合わせるのが望ましい。 今回の例では、「謎の再起動に悩んでいる場合、`watchdog.service` だけでなく、`dmesg | grep watchdog` で NMI watchdog を含むカーネルレベルの watchdog も疑うべき」という学びがあった。 同じように AlmaLinux / RHEL 系で頻繁な再起動に直面している人の参考になれば幸いだ。 -------------------------------------------------------------------------------- title: "Nextra 2 から Nextra 4 へのマイグレーション" date: "2025-12-08" url: https://scribble.washo3.com/2025-nextra2to4migrate/ -------------------------------------------------------------------------------- ## はじめに Nextra 4がリリースされ、Nextra2で作成したサイトをNextra4に移行を試みていたのですが、改善点が多く上手くアップグレード出来なかった。 そのため、Nextra2のプロジェクトを更新するのではなく、Nextra4のプロジェクトを作成し、Nextra2のプロジェクトをNextra4のプロジェクトに移行することにしました。 この記事では、Nextra 2からNextra 4へマイグレーションする際に必要な変更点を解説します。 ## 1. ルーター変更: Pages Router → App Router 最も大きな変更点はルーターです。 | バージョン | ルーター | ディレクトリ | |-----------|---------|-------------| | Nextra 2 | Pages Router | `pages/` | | Nextra 4 | App Router | `app/` | Nextra 4はNext.js App Routerのみをサポートしています。 `pages/`配下のMDXファイルは`app/`に移動する必要があります。 ## 2. `next.config` の設定変更 ### Nextra 2 ```js const withNextra = require('nextra')({ theme: 'nextra-theme-docs', themeConfig: './theme.config.tsx', }) module.exports = withNextra({}) ``` ### Nextra 4 ```ts import nextra from "nextra"; const withNextra = nextra({}); export default withNextra({ turbopack: { resolveAlias: { "next-mdx-import-source-file": "./mdx-components.js", }, }, }); ``` **主な変更点:** - `theme`と`themeConfig`オプションは廃止 - CommonJS → ESM import形式に変更 - Turbopack使用時は`resolveAlias`設定が必須 ## 3. テーマ設定の移行: `theme.config.tsx` → `app/layout.tsx` ### Nextra 2: theme.config.tsx ```tsx export default { logo: My Docs, project: { link: 'https://github.com/...' }, footer: { text: 'MIT 2024' }, } ``` ### Nextra 4: app/layout.tsx ```tsx import { Footer, Layout, Navbar } from "nextra-theme-docs"; import { Head } from "nextra/components"; import { getPageMap } from "nextra/page-map"; import "nextra-theme-docs/style.css"; const navbar = My Documentation} />; const footer =
MIT {new Date().getFullYear()} © My Documentation.
; export default async function RootLayout({ children }) { return ( {children} ); } ``` **主な変更点:** - テーマ設定は`Layout`コンポーネントのpropsとして渡す - `pageMap`は`getPageMap()`関数で取得 - CSSは明示的にimportが必要(`nextra-theme-docs/style.css`) ## 4. `mdx-components.js` が必須に Nextra 4では、プロジェクトルートに`mdx-components.js`ファイルが必須になりました。 ```js import { useMDXComponents as getThemeComponents } from "nextra-theme-docs"; const themeComponents = getThemeComponents(); export function useMDXComponents(components) { return { ...themeComponents, ...components, }; } ``` このファイルがないと、以下のエラーが発生します: ``` Module not found: Can't resolve 'next-mdx-import-source-file' ``` ## 5. `_meta` ファイルの形式変更 ### Nextra 2: _meta.json(JSON形式) ```json { "index": "Introduction", "getting-started": "Getting Started" } ``` ### Nextra 4: _meta.js(ESM形式) ```js export default { index: "Introduction", "getting-started": "Getting Started", }; ``` ファイル名も`_meta.json`から`_meta.js`に変更されています。 ## 6. MDXファイルの配置規則 | バージョン | パス例 | |-----------|-------| | Nextra 2 | `pages/docs/index.mdx` | | Nextra 4 | `app/docs/page.mdx` または `content/docs/index.mdx` | App Routerでは`page.mdx`という命名規則に従うか、`content/`ディレクトリを使用できます。 ## 7. インポートパスの変更 | 用途 | Nextra 4 | |------|----------| | テーマコンポーネント | `nextra-theme-docs` | | Banner, Head等 | `nextra/components` | | getPageMap | `nextra/page-map` | | テーマCSS | `nextra-theme-docs/style.css` | ## 8. 静的エクスポート設定 静的サイトとしてエクスポートする場合、`next.config.ts`に以下の設定が必要です。 ```ts export default withNextra({ output: "export", // out/ ディレクトリに静的ファイルを出力 images: { unoptimized: true, // 静的エクスポート時は画像最適化を無効化 }, }); ``` `output: "export"` を設定すると、`npm run build` 実行時に `out/` ディレクトリにビルド結果が出力されます。 ## 9. 検索機能(Pagefind)の設定 Nextra 4では検索機能に[Pagefind](https://pagefind.app/)を使用します。 ビルド後に検索インデックスを生成する必要があります。 ### インストール ```bash npm install -D pagefind ``` ### package.json の設定 ```json { "scripts": { "build": "next build", "postbuild": "pagefind --site out --output-path out/_pagefind" } } ``` `postbuild` スクリプトは `npm run build` 完了後に自動実行されます。 **注意点:** - `--site out`: 静的エクスポート先のディレクトリを指定 - `--output-path out/_pagefind`: 検索インデックスの出力先 - `output: "export"` を設定していない場合は `--site .next/server/app` を使用 ### 検索が動作しない場合 1. `output: "export"` が設定されているか確認 2. `postbuild` の `--site` パスが `out` になっているか確認 3. ビルド後に `out/_pagefind/` ディレクトリが作成されているか確認 ## まとめ | 項目 | Nextra 2 | Nextra 4 | |------|----------|----------| | ルーター | Pages Router | App Router | | テーマ設定 | `theme.config.tsx` | `app/layout.tsx` | | MDXコンポーネント | 不要 | `mdx-components.js`必須 | | メタファイル | `_meta.json` | `_meta.js` | | nextra設定 | `theme`, `themeConfig` | 空オブジェクトまたはmdxOptions | | 検索エンジン | FlexSearch (組み込み) | Pagefind (要設定) | | ビルド出力 | `.next/` | `out/` (静的エクスポート時) | ## 参考リンク - [Nextra 4.0 Release Blog](https://the-guild.dev/blog/nextra-4) - [Nextra Documentation](https://nextra.site/docs) - [Migration from Nextra v3](https://the-guild.dev/blog/nextra-4#nextra-theme-docs-changes) -------------------------------------------------------------------------------- title: "HugoのLast modified日付が正しく表示されない問題と解決策" date: "2025-12-04" url: https://scribble.washo3.com/2025-12-04-hugo-lastmodify-cloudflare/ -------------------------------------------------------------------------------- Hugoで構築したブログサイトで、記事の「Last modified(最終更新日)」が正しく表示されない問題にしばらく悩んでいました。 全ての記事が同じ日付になってしまい、各記事の実際の更新日が反映されていませんでした。 この記事では、問題の原因と解決策について説明します。 私の環境では、GithubとCloudflare Pagesを利用しています。 ## 症状 記事のメタ情報に表示される「Last modified」の日付が、全ての記事で同じ日付になってしまっていました。 例えば、以下のように表示されていました: ```html ``` 実際には各記事の更新日時が異なるにも関わらず、全ての記事で同じ「Last modified」日付が表示されていました。 ## 原因 問題の原因は2つありました。 ### 1. `hugo.toml`の`lastmod`設定の優先順位 `hugo.toml`の`[frontmatter]`セクションで、`lastmod`の取得順序が以下のようになっていました: ```toml [frontmatter] lastmod = ["lastmod", ":git", "date", "publishDate"] ``` この設定では、フロントマターに`lastmod`が指定されている場合、それがgitのコミット情報(`:git`)より優先されてしまいます。 そのため、gitのコミット履歴から取得すべき最終更新日が正しく反映されませんでした。 ### 2. Cloudflare Pagesでのシャロークローン Cloudflare Pagesでビルドを行う際、デフォルトでシャロークローン(`--depth=1`)が行われます。 シャロークローンでは、最新のコミットとそれに関連するファイルの情報のみが取得され、過去のコミット履歴は取得されません。 この状態では、`git log`などのコマンドが正しく動作せず、HugoのGitInfo機能も正常に動作しません。 そのため、各ファイルのgitコミット履歴から最終更新日を取得することができませんでした。 参考: [HugoのGitInfo機能をGitHub Actionsで使う - KOTET'S PERSONAL BLOG](https://blog.kotet.jp/2023/10/gohugo-gitinfo/) ## 解決策 ### 1. `hugo.toml`の設定変更 `hugo.toml`の`lastmod`設定を変更し、`:git`を最優先にします: ```toml [frontmatter] lastmod = [":git", "lastmod", "date", "publishDate"] ``` これにより、gitのコミット履歴から取得した最終更新日が優先的に使用されるようになります。 ### 2. Cloudflare Pagesのビルドコマンド変更 Cloudflare Pagesのダッシュボードで、ビルドコマンドを以下のように変更します: **設定場所:** 1. Cloudflare Dashboard → Pages → プロジェクト選択 2. Settings → Builds & deployments 3. Build command を変更 **変更前:** ```bash hugo --gc --minify -b $CF_PAGES_URL ``` **変更後:** ```bash git fetch --unshallow && hugo --gc --minify -b $CF_PAGES_URL ``` `git fetch --unshallow`により、ビルド前にgitの完全な履歴を取得してからhugoを実行します。 これにより、HugoのGitInfo機能が正常に動作し、各ファイルのgitコミット履歴から最終更新日を取得できるようになります。 ## 確認 設定変更後、以下のように各記事の「Last modified」が正しく表示されるようになりました: - `post-a.md` → 2024年1月1日にコミット → Last modified: January 1, 2024 - `post-b.md` → 2025年3月15日にコミット → Last modified: March 15, 2025 `:git`は各ファイルごとに異なるコミット日時を取得するため、全ての記事が同じ日付になることはありません。 ## まとめ HugoのLast modified日付が正しく表示されない問題は、以下の2つの設定変更で解決しました: 1. `hugo.toml`で`:git`を最優先にする 2. Cloudflare Pagesのビルドコマンドで`git fetch --unshallow`を実行する これにより、各記事のgitコミット履歴に基づいた正確な最終更新日が表示されるようになりました。 てっきりプログラム内を修正する必要があると思っていたのですが、Cloudflare Pagesのビルドコマンドだけで解決するとは。 -------------------------------------------------------------------------------- title: "Linuxシェル設定ファイルを再読み込みする方法" date: "2025-12-03" url: https://scribble.washo3.com/2025-12-03-howto-reloading-shell/ -------------------------------------------------------------------------------- LinuxやmacOSでシェルの設定ファイル(`.bashrc`や`.zshrc`など)を編集した後、変更を反映させるにはどうすればよいでしょうか。 多くの方は一度ログアウトして再ログインする方法を思い浮かべるかもしれませんが、実はもっと効率的な方法がいくつも存在します。 この記事では、シェル設定を再読み込みするための様々なコマンドと、それぞれの特徴や使い分けについて解説します。 ## **1. sourceコマンド - 最も基本的な方法** `source`コマンドは、シェルスクリプトや設定ファイルを現在のシェル環境で実行するための最も一般的な方法です。 このコマンドを使用すると、新しいシェルを起動することなく、指定したファイルの内容を現在のシェルセッションに読み込むことができます。 ```bash source ~/.bashrc source ~/.zshrc source ~/.bash_profile ``` `source`コマンドの最大の利点は、現在の作業環境を完全に維持できる点にあります。現在のディレクトリ、設定済みの変数、実行中のジョブなど、すべてがそのまま保持されます。 設定ファイルを編集した後に素早く変更を確認したい場合に最適な方法です。 --- ## **2. ドット(.)コマンド - POSIX標準の方法** ドットコマンドは`source`コマンドと機能的に同等ですが、POSIX標準に準拠しているため、より高い移植性を持っています。 `source`はBashの組み込みコマンドであるのに対し、ドットコマンドはsh、dash、kshなど、ほぼすべてのUnix系シェルで動作します。 ```bash . ~/.bashrc . ~/.zshrc . ~/.profile ``` シェルスクリプトを書く際に移植性を重視する場合や、軽量なシェル環境で作業する場合は、`source`よりもドットコマンドを使用することをおすすめします。ドットの後にスペースを入れることを忘れないようにしましょう。 --- ## **3. execコマンド - シェルを完全に再起動** `exec`コマンドは、現在のシェルプロセスを新しいシェルで完全に置き換えます。 これにより、すべての設定ファイルが最初から読み込まれ、クリーンな状態でシェルを再起動できます。 ```bash # ログインシェルとして再起動(推奨) exec $SHELL -l exec -l $SHELL # 通常のシェルとして再起動 exec $SHELL # シェルを明示的に指定 exec bash exec zsh ``` `-l`オプションを付けると、ログインシェルとして起動するため、`.bash_profile`や`.zprofile`などのログイン時に読み込まれるファイルも処理されます。環境変数の設定を完全にリフレッシュしたい場合に特に有効な方法です。 ただし、`exec`を使用すると、現在のシェルで設定した一時的な変数やエクスポートしていない設定はすべて失われる点に注意が必要です。 --- ## **4. シェルの直接実行 - サブシェルの起動** 新しいシェルを直接起動する方法もあります。 この場合、現在のシェルは終了せず、その上に新しいシェルが起動します。 ```bash bash zsh $SHELL ``` この方法は手軽ですが、シェルがネスト(入れ子)していく点に注意が必要です。新しい設定をテストした後は`exit`コマンドで元のシェルに戻ることができますが、何度も実行するとシェルが何重にも重なってしまいます。 完全にログアウトするには、ネストした回数だけ`exit`を実行する必要があります。 --- ## **5. 特定の設定ファイルのみを再読み込み** すべての設定を再読み込みするのではなく、特定の設定ファイルだけを読み込みたい場合もあります。 これにより、必要な変更だけを効率的に反映できます。 ```bash # エイリアス設定のみ再読み込み source ~/.bash_aliases source ~/.aliases # 環境変数のみ再読み込み source ~/.bash_profile source ~/.profile # カスタム関数のみ再読み込み source ~/.bash_functions ``` 設定ファイルを機能別に分割して管理している場合、この方法は特に便利です。 大きな設定ファイルを毎回読み込むよりも、変更した部分だけを素早く反映できます。 --- ## **各方法の比較表** それぞれの方法には異なる特徴があり、状況に応じて使い分けることが重要です。 | 方法 | 現在の環境を維持 | プロセスID | シェルのネスト | 移植性 | |------|------------------|------------|----------------|--------| | `source` | ○ | 変化なし | なし | Bash/Zsh | | `.`(ドット) | ○ | 変化なし | なし | 高い(POSIX) | | `exec $SHELL` | × | 変化なし | なし | 高い | | `bash`/`zsh` | ○(親シェル) | 新規作成 | あり | 高い | --- ## **実践的なユースケースと推奨方法** 日常的な開発作業において、どの方法を選択すべきかは状況によって異なります。 設定ファイルに小さな変更を加えた場合、たとえば新しいエイリアスを追加したときなどは、`source`コマンドまたはドットコマンドが最適です 。作業を中断することなく、すぐに変更を確認できます。 一方で、環境変数を大幅に変更した場合や、PATHの設定を修正した場合は、`exec $SHELL -l`でシェルを完全に再起動することをおすすめします。 これにより、すべての設定が正しい順序で読み込まれ、クリーンな状態から開始できます。 新しい設定をテストしたいが、問題があった場合に元の状態に戻りたい場合は、サブシェルを起動する方法が安全です。`exit`するだけで元の環境に戻れるため、実験的な変更を試す際に便利です。 --- ## **まとめ** Linuxでシェル設定ファイルを再読み込みする方法は複数あり、それぞれに利点と注意点があります。 日常的には`source`コマンドを使用し、完全なリフレッシュが必要な場合は`exec $SHELL -l`を使用するという使い分けが実用的です。 シェルスクリプトの移植性を重視する場合は、`source`の代わりにドットコマンドを使用することを検討してください。 これらのコマンドを理解して適切に使い分けることで、設定変更のたびにログアウト・ログインを繰り返す必要がなくなり、作業効率が大幅に向上します。 ぜひ日々のLinux操作に取り入れてみてください -------------------------------------------------------------------------------- title: "2025年久しぶりの更新" date: "2025-12-03" url: https://scribble.washo3.com/2025-renew/ -------------------------------------------------------------------------------- 何だが久しぶりの更新で、気がつけば1年以上更新していなかった。(^_^;) 最近では、生成AIを活用してバイブコーディングを行っているので、記事を書く時間がなかった。 このブログのHugoに関しても、更新していないと機能の変更で不具合が出てきてしまうので、更新しておく。 Hugoの更新ついでに、Beautifulhugoのテーマの見栄えも変更しました。 変更に関しても、今では生成AIを活用すると楽にコーディングが進みますね。 ## 更新内容 ### テーマ更新 BeautifulhugoのテーマをHugo Moduleにて更新しました。 ### Gistショートコードの追加 Gist ショートコードはバージョン 0.143.0 で非推奨となり、今後のリリースで削除される予定なので、ショートコードを新規作成して適用した。 ### ヘッダー画像とトップページのバックグラウンド画像を変更 以前はGitlabのアイコンでしたので、デフォルトのアバター画像に戻した。 バックグランド画像はImgurの画像を使用していましたが、ローカル画像でファイルタイプをAVIFに変更した。 {{< imgur id="oYb2eBe" >}} ### タグボタンとRead moreボタンを追加 ちょっとしたCSSの修正で実現した。 {{< imgur id="jNiQgfP" >}} ### コードブロック内にクリップボードボタンを追加 以前は、ダサいコピーボタンがついていたので、クリップボードボタンを追加した。 {{< imgur id="rLHRHBC" >}} -------------------------------------------------------------------------------- title: "Hugo BeautifulhugoテーマをSubmoduleからHugo Modulesに移行した" date: "2024-08-10" url: https://scribble.washo3.com/2024-08-10-hugo-submodule-to-module/ -------------------------------------------------------------------------------- このサイトで導入しているHugoのBeautifulhugoは今までsubmoduleとして利用してきましたが、hugo modules形式へ変更しました。 ## 環境 Githubから自分のリポジトリをCloneして作業します。 まず、ローカル環境の確認です ```bash ❯ go version go version go1.22.6 darwin/arm64 ❯ hugo version hugo v0.131.0+extended darwin/arm64 BuildDate=2024-08-02T09:03:48Z VendorInfo=brew ``` themeはbeautifulhugoをsubmoduleでインストールしている ## hugo modules初期化 ```bash $ hugo mod init github.com/user/scribble go: creating new go.mod: module github.com/user/scribble go: to add module requirements and sums: ``` beautifulhugoテーマの取得 ```bash $ hugo mod get github.com/halogenica/beautifulhugo go: added github.com/halogenica/beautifulhugo v0.0.0-20240711164100-bd5ebaab69c6 ``` ### hugo.toml 下記を追記し、themeの項目をコメントアウト ```bash [[module.imports]] path = "github.com/halogenica/beautifulhugo" ``` ## git submodule関連の設定の削除 submodule関連の設定やファイルを削除します。 `.git/config` がsubmodule関連の設定を持っているので、その記述も削除します。 ```bash $ rm -rf themes $ rm .gitmodules ``` ## 起動確認 ```bash $ hugo server -D ``` 起動が確認できたら、GithubへPushし完了 ## 補足 なお、Cloudflareの環境変数で`GO_VERSION`は特に設定する必要はなさそうです。 また、今後のテーマ更新については、`hugo mod get -u` コマンドを使用してテーマを更新し、その後、`hugo mod tidy` で不要な依存関係を削除して整理する事になるかと思います。 -------------------------------------------------------------------------------- title: "HugoサイトをNetlifyからCloudflare Pagesへ移行しました" date: "2024-08-10" url: https://scribble.washo3.com/2024-08-10-netlify-to-cloudflare.md/ -------------------------------------------------------------------------------- 私の他のブログでは移行が済んでいたNetlifyからCloudflareへ移行を、夏休みに入り時間が取れたので、このサイトでも移行を行いました。 他のブログで移行した作業とほぼ同様の作業なので、割と簡単に移行することができました。 ## Github Cloudflareと連携させるため、該当のリポジトリを連携許可に設定しておく。 また、Hugoなので、リポジトリ内にPublicディレクトリを作成しておく ## Cloudflare `Workers & Pages` → `Create` → `Pagesタブ` `Connect to Git` で Githubのcf-scribbleと連携し、`Bigin setup` | Project name | scribble | | --- | --- | | deployed URL | scribble-xxx.pages.dev | | Framework | Hugo | | Build command | hugo -b $CF_PAGES_URL | | output directory | public | 後日build commandを`hugo —gc —minify -b $CF_PAGES_URL`へ変更 ### **環境変数** | HUGO_VERSION | 0.130.0 | | --- | --- | | CF_PAGES_URL | https://scribble-xxx.pages.dev | `Save & Deploy` デプロイが成功したら、`https://scribble-xxx.pages.dev`へ接続できることを確認する ## DNS このサイトのドメインは既にCloudflareの管理下にて、netlifyへCNAMEで設定していた CloudflareのCustom Domainsで`scribble.washo3.com`を設定すると、よしなにCloudflareのDNS設定を変更してくれる この後、検証が完了するとDNSの移行が完了 CF_PAGES_URLを`https://scribble.washo3.com` へ変更し、再ビルドする ## Netlifyから修正 ### security headers hugoのプロジェクト直下にあった_headersを削除し、/static/フォルダ内に_headersを作成する ```lua https://scribble-xxx.pages.dev/* X-Robots-Tag: noindex /pubic/* X-Frame-Options: DENY /* Content-Security-Policy: upgrade-insecure-requests Expect-CT: max-age=7776000, enforce Referrer-Policy: strict-origin-when-cross-origin Strict-Transport-Security: max-age=31536000 X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=block Permissions-Policy: geolocation=(); midi=();notifications=();push=();sync-xhr=();accelerometer=(); gyroscope=(); magnetometer=(); payment=(); camera=(); microphone=();usb=(); xr=();speaker=(self);vibrate=();fullscreen=(self); ``` ### robots.txt ```lua User-agent: * Disallow:/admin/ Disallow:/categories/ Disallow:/tags/ Sitemap: https://scribble.washo3.com/sitemap.xml ``` ## まとめ 今まで、GitlabのリポジトリとNetlifyの連携にて、このサイトを運用してきましたが、GitlabもNetlifyもほぼ利用する機会が減ったこと、国内からのアクセスではCloudflareの方が速度が速いとの事で移行を決断しました。 現状では、Githubのcodebaseやcopilotが便利で圧倒的にGithubの方が利用頻度が高いですね。 最後に、NetlifyとGitlabには今までお世話になりました。 -------------------------------------------------------------------------------- title: "macOSで突然の接続拒否!Sambaアクセスエラーを解決" date: "2024-05-22" url: https://scribble.washo3.com/sonoma-samba-issue/ -------------------------------------------------------------------------------- 久しぶりに、macOSからQNAPのSambaへ接続しようとしたら、なぜか正規のパスワード入れているにも関わらず、拒否されてログイン出来ない症状が発生した。 ちなみに、macOSは最新のSonomaの環境です。 ## 調査 - Windowsからだと正常にログインできる - afp接続だと正常にログインできる - 古いmacOS(High SierraやMojave)からも正常にログインできる ## 解決方法 どちらかの方法で解決できればOKです 1. DNS情報をクリアし、再起動 ```bash $ sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder $ sudo reboot ``` 2. ユーザ名に@を付加 smb接続の際に入力するログイン名に`@`を付ける 例えば、ログイン名がuserだった場合に、`user@`とする ## まとめ おそらく、キャッシュ絡んだ原因ではないかと推測しますが、ユーザー名に@を付加するとログイン出来るようになるのかは不明です。 また、ユーザー名の先頭文字を大文字にすることでもログイン出来る情報もありました。 バグだったら、早期のバグフィックスに期待したい。 -------------------------------------------------------------------------------- title: "DockerでGPUを活用する方法" date: "2024-05-14" url: https://scribble.washo3.com/docker-gpu/ -------------------------------------------------------------------------------- ## TL;DR Docker コンテナ内で GPU(nvidia) を使用したいという要望に応えるため、GPU 対応の Docker 設定を行う必要がある。 通常、Docker コンテナはホストの GPU リソースにアクセスできない。これは、Docker がホストの GPU デバイスをコンテナにパススルーしないからであり、GPU ドライバと CUDA ライブラリがホストとコンテナの間で適切に共有されていないのが原因である。 これを解消するには、`nvidia-container-toolkit` などのツールで GPU リソースをコンテナにパススルーする必要がある。 ## GPU確認 Docker を GPU 対応にする前に、PC の GPU を確認する。 ```bash $ lspci -k | grep -i nvidia 65:00.0 VGA compatible controller: NVIDIA Corporation GA104GL [RTX A4000] (rev a1) Subsystem: NVIDIA Corporation Device 14ad Kernel driver in use: nvidia Kernel modules: nouveau, nvidia_drm, nvidia 65:00.1 Audio device: NVIDIA Corporation GA104 High Definition Audio Controller (rev a1) Subsystem: NVIDIA Corporation Device 14ad ``` ## nvidia toolkitインストール ### Debian ```bash $ curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list ``` ```bash $ sudo apt update $ sudo apt-get install -y nvidia-container-toolkit ``` ```bash $ sudo nvidia-ctk runtime configure --runtime=docker $ sudo systemctl restart docker ``` ### CentOS7 ```bash $ sudo yum install -y yum-utils $ sudo yum-config-manager --add-repo https://nvidia.github.io/nvidia-docker/centos7/nvidia-docker.repo $ sudo yum install -y nvidia-container-toolkit $ sudo systemctl restart docker ``` ### AlmaLinux8 ```bash $ sudo dnf config-manager --add-repo https://nvidia.github.io/nvidia-docker/almalinux8/nvidia-docker.repo $ sudo dnf clean expire-cache $ sudo dnf install -y nvidia-container-toolkit $ sudo systemctl restart docker ``` ## DockerでのGPU利用方法 ### Dockerコマンド GPU を使用する Docker コンテナを実行するには、`--gpus` フラグを使用する。 ```bash $ docker run --gpus all <イメージ名> ``` `--gpus` フラグには以下のオプションがある。 - `all`: 使用可能なすべての GPU を割り当てる。 - `"device=<デバイス ID>"`: 特定の GPU デバイスを割り当てる(例:"device=1,2")。 - `""`: GPU の UUID に基づいて割り当てる。 ### docker-compose.yml docker-compose.yml内で利用するには、下記のようにサービス配下でデプロイを記述する。 ```yaml version: "3.8" services: your-service: image: <イメージ名> deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu] ``` サービスコンテナに 1 つの GPU デバイスが割り当てられる。 count を増やすことで、割り当てる GPU の数を変えられる。 GPU を使用するには、コンテナイメージが GPU 対応である必要があることに注意。 -------------------------------------------------------------------------------- title: "neovimのプラグインを更新するだけのコマンド" date: "2024-03-04" url: https://scribble.washo3.com/neovim-plugin-update-cli/ -------------------------------------------------------------------------------- プラグイン(vim-plug)を導入したneovim(Vim)での環境において、更新するだけのコマンドを今更知りました。 今までは、nvimでneovimを開いて、`:`のコマンドウィンドーを開いて、`:PlugUpdate`と打ち込んでいました。 一つだけの作業だと問題ないかもしれませんが、複数の端末で同じ作業を行うのは面倒です。 しかし、コマンドラインからも実行できるようです。 ```bash $ nvim +PlugUpdate +qall ``` これだと、スクリプトに組み込んだり、ansibleのplaybookに組み込んだりすることができますね。 -------------------------------------------------------------------------------- title: "Hugoのビルド時にauthorの警告が出る" date: "2024-01-29" url: https://scribble.washo3.com/hugo-author-name/ -------------------------------------------------------------------------------- hugoでビルド時に下記のエラーが出るようになった ```bash Start building sites … hugo v0.122.0-b9a03bd59d5f71a529acb3e33f995e0ef332b3aa+extended darwin/amd64 BuildDate=2024-01-26T15:54:24Z VendorInfo=brew WARN The author key in site configuration is deprecated. Use params.author.name instead. ``` どうやら、0.120のバージョンから警告が出るようになったらしい ## config.toml内を修正 - 変更前 ```bash [params] author = "Hugo" ``` - 変更後 ```bash [params] author.name = "Hugo" ``` [params]内にauthorがなければ追加する -------------------------------------------------------------------------------- title: "MacでUNIXのウィンドー自動フォーカスを可能にする" date: "2024-01-29" url: https://scribble.washo3.com/mac-autoraise/ -------------------------------------------------------------------------------- Macを使い始めてから、Unixみたいなウィンドーにマウスカーソルを持っていくだけでアクティブにしてくれる機能があれば良いのにと思い続けてました。 今更ではありますが、ようやく、Focus Follows Mouseの機能を持ったソフトウェア(AutoRaise)に出会うことが出来ました。 ## AutoRaise導入 導入手順では、ディスクイメージ、Zipファイル、手動コンパイルの方法がありますが、ディスクイメージのサポートはされていなかったので、Gitによる手動コンパイルで行います。 ### make install ```bash $ git clone https://github.com/sbmpost/AutoRaise.git $ cd AutoRaise $ make CXXFLAGS="-DOLD_ACTIVATION_METHOD -DEXPERIMENTAL_FOCUS_FIRST" && make install ``` ### プライバシーとセキュリティ システム環境設定→プライバシーとセキュリティにてAutoRaiseを有効にする ### 設定ファイル ~/.config/AutoRaise/configのファイルを作成し、下記のように記述 (ほぼ、delayとfocusDelayを調節すれば良いかと) ```bash #AutoRaise config file pollMillis=50 delay=1 focusDelay=0 warpX=0.5 warpY=0.1 scale=2.5 altTaskSwitcher=false ignoreSpaceChanged=false ignoreApps="App1,App2" stayFocusedBundleIds="Id1,Id2" disableKey="control" mouseDelta=0.1 ``` ### パラメータ 各パラメータと初期値 ``` AutoRaise -pollMillis <20, 30, 40, 50, ...> -delay <0=no-raise, 1=no-delay, 2=50ms, 3=100ms, ...> -focusDelay <0=no-focus, 1=no-delay, 2=50ms, 3=100ms, ...> -warpX <0.5> -warpY <0.5> -scale <2.0> -altTaskSwitcher -ignoreSpaceChanged -ignoreApps "" -stayFocusedBundleIds "" -disableKey -mouseDelta <0.1> -verbose Started with: * pollMillis: 50ms * delay: 0ms * focusDelay: disabled * warpX: 0.5, warpY: 0.1, scale: 2.5 * altTaskSwitcher: false * ignoreSpaceChanged: false * ignoreApp: App1 * ignoreApp: App2 * stayFocusedBundleId: Id1 * stayFocusedBundleId: Id2 * disableKey: control * mouseDelta: 2.0 * verbose: true ``` ## 起動 Applicationフォルダ内のAutoRaise.appをクリックして起動 自動起動にするには、`システム設定 → ログイン項目 → ログイン時に開く`の+をクリックして、AutoRaiseを選択 ### 補足 Better Touch Tool(BTT)でも似たような設定はありましたが、完全に自動フォーカスの機能は見つけられませんでした。 ただ、AutoRaiseとBTTのウィンドーのどこでも移動/リサイズの機能を組み合わせれば、より快適になりましたよ。 -------------------------------------------------------------------------------- title: "Resilio Syncの除外設定" date: "2024-01-26" url: https://scribble.washo3.com/resilio-sync-ignore/ -------------------------------------------------------------------------------- 数年前までは、Dropgoxで複数のPCと同期設定を行っておりましたが、Dropbox改悪でデバイス数に制限がかかったので、今ではResilio Syncを用いてPC間の同期設定を行っています。 最近になって、Reactなどのnode系やGitを頻繁に使うことが多くなり、ResilioSyncで同期フォルダ内にこれらの作業場所を置いておくと、大量のファイルが同期されます。 特に、node系でビルドの際にnode_modules内や、git管理フォルダ内は同期させたくないので、今更感はありますが、Resilio Syncに除外設定が存在するのか疑問が湧きました。 調べてみたところ、GUIでの設定画面では除外設定は出来ないようですが、CUIで可能なようでした。 [Ignoring files in Sync \(Ignore List\) – Sync](https://help.resilio.com/hc/en-us/articles/205458165-Ignoring-files-in-Sync-Ignore-List) ## Resilio Syncの除外設定方法 すでに同期設定しているフォルダのトップルツリーに.syncフォルダが作成されており、この中のIgnoreListと言うファイルを編集すれば良いようです。 ここでは、同期フォルダ名がSyncで、node_modulesと.gitフォルダを除外設定します。 (デフォルトで設定されている項目に追記します) Mac/Linuxでの記述方法となります。 ```bash $ cat << EOF >> Sync/.sync/IgnoreList node_modules .git EOF ``` 保存後は、ResilioSyncが起動していれば再起動なしに反映されるようです。 この設定では、Syncフォルダ内の全てのnode_moduleと.gitフォルダを無視する設定になります。 一文字指定の`?`とワイルドカード`*`のみ使用できるようで、正規表現は使えないようです。 これで、同期フォルダ内でnodeのビルドで生成されるnode_modulesは同期されなくなり、Gitリポジトリを置いてもワークツリーのみ同期されるようになりました。 (おそらく、自分だけのリポジトリであれば.gitフォルダを無視する必要もないような気もします…) 他にも不要な同期ファイルやフォルダがあれば追記していきたいと思います。 -------------------------------------------------------------------------------- title: "Linux(Debian)でHDDを追加しxfsでフォーマット" date: "2023-07-20" url: https://scribble.washo3.com/debian-add-hdd/ -------------------------------------------------------------------------------- Linux環境において、後からHDDを追加する機会がよくあるので、再度メモしておく。 (10年ほど前に同じような記事([コマンドラインfdiskでhdd追加]({{< ref "2012-11-28-コマンドラインfdiskでhdd追加.md" >}}))を投稿している) ## 環境 - LinuxはDebian 12を利用 - フォーマットはxfs - 追加するHDDは4TB すでにLinux(Debian)が起動し、追加するHDDが挿入されているものとする ## 準備 今回、xfsでフォーマットするので、必要なプログラムをインストールします ```bash # apt install parted xfsprogs ``` ## パーティション作成 予めパーティション・フォーマットのデバイスを確認しておく `fdisk -l` とか`dmesg|grep sd` とか `lsblk` (今回は/dev/sdb) ```bash # parted /dev/sdb GNU Parted 3.2 Using /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) p Error: /dev/sdb: unrecognised disk label Model: ATA TOSHIBA MG04ACA4 (scsi) Disk /dev/sdb: 4001GB Sector size (logical/physical): 512B/512B Partition Table: unknown Disk Flags: (parted) mkpart primary Error: /dev/sdb: unrecognised disk label (parted) mklabel gpt (parted) p Model: ATA TOSHIBA MG04ACA4 (scsi) Disk /dev/sdb: 4001GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags (parted) mkpart primary File system type? [ext2]? xfs Start? 1mb End? -1 (parted) p Model: ATA TOSHIBA MG04ACA4 (scsi) Disk /dev/sdb: 4001GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags  1 1049kB 4001GB 4001GB xfs primary (parted) quit Information: You may need to update /etc/fstab. ``` ## xfsにてフォーマット ```bash # mkfs -t xfs /dev/sdb1 meta-data=/dev/sdb1 isize=512 agcount=4, agsize=244188544 blks          = sectsz=512 attr=2, projid32bit=1          = crc=1 finobt=1, sparse=1, rmapbt=0          = reflink=0 data = bsize=4096 blocks=976754176, imaxpct=5          = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=476930, version=2          = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 ``` ## 追加したデバイスをマウント 再起動の際に、ディスク認識の順番が変わらないようにするため、fstabに記述する際にはUUIDで記述します ### UUIDの確認方法 (悪用防止のため、一部伏字になってます) ```bash $ sudo /usr/sbin/blkid /dev/sda1: UUID="7FD6-ACD4" TYPE="vfat" PARTUUID="xxxxxf04-29f1-4203-8dc4-2688e9896d3c" /dev/sda2: UUID="xxxxx06a-cc81-47df-a2a8-3a1ac70fb2a3" TYPE="xfs" PARTUUID="xxxxx9a0-3dd6-4180-b8da-2c6660f5147e" /dev/sda3: UUID="xxxxxc75-47a8-4f2c-bd73-754b2dc1fa64" TYPE="swap" PARTUUID="xxxxx685-05d9-4f8b-8bed-feb492c76358" /dev/sdb1: UUID="xxxxx285-8b1f-49aa-bdc4-ac3a636e48b3" TYPE="xfs" PARTLABEL="primary" PARTUUID="xxxxxf44-5529-45b0-ba04-3a3e5e342b03" ``` ### fstabへ記述 今回は/dev/sdb1を/mnt/testへマウントすることとします。 ```bash $ mkdir /mnt/test ``` 下記1行をfstabへ追記します。 ```bash # vim /etc/fstab UUID=xxxxx285-8b1f-49aa-bdc4-ac3a636e48b3 /mnt/test xfs defaults 0 0 ``` - 確認 ```bash # mount -a # df ... /dev/sdb1 3905108984 8231592 3896877392 1% /mnt/test ``` もし、思い通りにマウントされていなかったら、fstabの記述を見直す。 確認が出来るまで再起動はしてはいけません。 -------------------------------------------------------------------------------- title: "network.external.name is deprecated" date: "2023-07-19" url: https://scribble.washo3.com/docker-net-external-name/ -------------------------------------------------------------------------------- 異なるDocker環境のコンテナ間通信を行うために、externalを用いているコンテナを、久しぶりに再ビルドして起動した際に、下記のエラーに遭遇 ``` network default: network.external.name is deprecated. Please set network.name with external: true ``` 今までのdocker-compose.ymlでは、下記で動作していた ```yaml … networks: default: external: name: ${NETWORK} ``` composeのバージョンが上がって、表記方法が変更になっているようで、下記の書式が正しいらしい ```yaml … networks: default: name: ${NETWORK} external: true ``` もしくは ```yaml … networks: ${NETWORK} external: ture ``` -------------------------------------------------------------------------------- title: "Debian11から12へのアップグレード" date: "2023-07-18" url: https://scribble.washo3.com/debian11to12-upgrad/ -------------------------------------------------------------------------------- Debianのアップグレードは何度か記事にしているので、前回の[Debian10から11へのアップグレード]({{< ref "debian10to11-upgrade.md" >}})とほぼ同じ作業で更新出来ます。 違いは、non-freeを追加する際に、source.listに少し変更があるだけです /etc/apt/sources.listの各リポジトリ欄のmainの後に`non-free non-free-firmware`を追加するだけです。 ``` #deb cdrom:[Debian GNU/Linux 12 _Bookworm_ - Official Snapshot amd64 LIVE/INSTALL Binary 20230610-08:51]/ bookworm main non- deb http://ftp.riken.jp/Linux/debian/debian/ bookworm main non-free non-free-firmware deb-src http://ftp.riken.jp/Linux/debian/debian/ bookworm main non-free non-free-firmware deb http://security.debian.org/debian-security bookworm-security main non-free non-free-firmware deb-src http://security.debian.org/debian-security bookworm-security main non-free non-free-firmware # bookworm-updates, to get updates before a point release is made; # see https://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_updates_and_backports deb http://ftp.riken.jp/Linux/debian/debian/ bookworm-updates main non-free non-free-firmware deb-src http://ftp.riken.jp/Linux/debian/debian/ bookworm-updates main non-free non-free-firmware ``` ちなみに、10から12への直接更新は失敗した経緯がありますので、旧バージョンからアップグレードする場合は、順に(10->11->12)更新した方が無難かと思います -------------------------------------------------------------------------------- title: "Windows10/11でのSamba接続" date: "2023-06-22" url: https://scribble.washo3.com/win-samba-trouble/ -------------------------------------------------------------------------------- 職場において、Windows 10辺りから、共有フォルダ(Samba)へ接続できなくなったと相談がありましたが、最近、Windows 11へ更新した方からも相談が増えました。 下記の項目を確認してみましょう! ## SMB1.0 クライアントを有効にする Windows11では標準の設定で「SMB1.0 クライアント」が無効になってしまってます。 「SMB1.0 クライアント」の規格が古く脆弱性が報告されるためマイクロソフトがセキュリティの観点から「SMB1.0 クライアント」を無効にしているのが、接続出来ない原因の大半です SBM1.0 クライアントを有効にする {{< imgur id="ZUDTyfe" >}} ## ネットワークプロファイルをプライベートにする 設定→ネットワークとインターネット→イーサネット(もしくはWifi)にて、 ネットワークプロファイルの種類がパブリックになっていたら、プライベートにする {{< imgur id="qLNTbMX" >}} ## ゲストアクセスがロックされてる場合 接続出来ないエラー画面に、`非認証のゲストアクセスがブロックされているため…`のエラーが出る場合は、レジストリエディター(gpedit.msc)を開き、ローカル コンピュターポリシーから [コンピューターの構成]->[管理用テンプレート]->[ネットワーク]->[Lanman ワークステーション]の項目へ移動し、 右ペイン項目の`安全でないゲスト ログオンを有効にする`を開いて有効にします。 その後、再起動が必要です ### 参考記事 -------------------------------------------------------------------------------- title: "Dockerで試験用Samba構築" date: "2023-05-09" url: https://scribble.washo3.com/docker-samba/ -------------------------------------------------------------------------------- 仕事で、Linux上にて一時的なWindows共有のサーバーを構築してテストしたいと要望がありました。 一時的と言うこともあり、システムに直接インストールして汚す事を避けたかったため、Dockerにて構築してみた。 とは言っても、既にDocker イメージがあるので、利用するだけです こちらのリポジトリは、比較的、更新も新しくメンテナンスもされているようです ## git clone ```bash $ git clone https://github.com/ServerContainers/samba.git $ cd samba ``` 試験用なので、ユーザー制限など行わず、読み書き出来るだけの環境を構築 ### docker-compose.yml docker-compose.ymlの`SAMBA_VOLUME_CONFIG_public`項目を編集 ```yaml version: '3' services: samba: build: . image: ghcr.io/servercontainers/samba restart: always network_mode: host # uncomment to solve bug: https://github.com/ServerContainers/samba/issues/50 - wsdd2 only - not needed for samba cap_add: - CAP_NET_ADMIN environment: MODEL: 'TimeCapsule' AVAHI_NAME: SambaTest SAMBA_CONF_LOG_LEVEL: 3 # uncomment to disable optional services #WSDD2_DISABLE: 1 #AVAHI_DISABLE: 1 GROUP_family: 1500 SAMBA_VOLUME_CONFIG_public: "[Public]; path=/shares/public; writable =yes; guest ok = yes; guest only = yes;read only = no; browseable = yes;" - ./shares/public:/shares/public ``` ```yaml sudo docker-compose up -d ``` ## 確認 これで、WindowsネットワークやSamba接続にて、`/shares/public/`内を読み書きできることを確認 -------------------------------------------------------------------------------- title: "通常のSSHコマンドでvagrantへ接続" date: "2023-04-28" url: https://scribble.washo3.com/ssh-vagrant/ -------------------------------------------------------------------------------- 前記の[vagrantが反応しない]({{< ref "mojave-vagrant-issue" >}})で、`vagrant ssh`のコマンドが使えなくなると困るので、今更ながら、通常のSSHで接続する設定を行った。 `vagrant ssh`するよりも通常のsshで接続した方がレスポンス良く早いようです 自分のVagranfileでは、すでにブリッジ接続となっていて、デフォルトのポートが2222となってます ``` config.vm.network "public_network", ip: "192.168.1.10", bridge: "en0: Ethernet" ``` もし、network部分を設定していなければ、下記のように記述しておきましょう ``` config.vm.network "forwarded_port", guest: 22, host: 2210 ``` ### ssh-config Vagrantfileが存在するディレクトリで`vagrant ssh-config`を実行 ```bash $ vagrant ssh-config Host default HostName 127.0.0.1 User vagrant Port 2222 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile /Users/user/vagrant/.vagrant/machines/default/virtualbox/private_key IdentitiesOnly yes LogLevel FATAL ``` vagrantを実行しているホストのローカルでは、このconfigのdefault部分をホスト名に変更し~/.ssh/configに追記すれば良いです このコマンドでは一発で追記 ```bash $ vagrant ssh-config --host [myHost] >> ~/.ssh/config ``` 同じネットワーク上の他のPCからは、private_keyを転送し、IdetifyFileにprivate_keyの場所を指定し、HostNameのIPを変更してあげれば、接続可能です 今回の私の例でのconfigはこのようになります ``` Host vagrant HostName 192.168.1.10 User vagrant # Port 2222 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile /home/user/.ssh/vagrant_key ## private_keyをvagrant_keyへ変更 IdentitiesOnly yes LogLevel FATAL ``` ちなみに、`Port:2222`はホストからvagrantへのPortFowardなので、ブリッジ接続しているvagrantは直接IPを持っているので、ホスト以外から接続する場合は、Portはコメントアウトしてデフォルトの22番ポートで接続します VagrantのBoxではブリッジ接続してあるので、ホストと別IPを持っているため、configへ記入せずにダイレクトでも接続可能です ```bash $ ssh -i /Users/user/vagrant/.vagrant/machines/default/virtualbox/private_key vagrant@192.168.1.10 ``` -------------------------------------------------------------------------------- title: "macOSのMojave上のVagrantが反応しない" date: "2023-04-28" url: https://scribble.washo3.com/mojave-vagrant-issue/ -------------------------------------------------------------------------------- Mac(Mojave)上でvagrantを起動しているのですが、最近になって、vagrantが反応しない現象が起きた ```bash $ vagrant ssh $ vagrant status $ vagrant info $ ``` コマンド打っても、何の反応もない!? もしかするとvagrantが壊れたのかも?と、`brew reinstall vagrant` した その後、vagrantコマンドは復活したものの、今度は下記のエラー ```bash $ vagrant status Traceback (most recent call last): 2: from /opt/vagrant/embedded/gems/2.3.4/gems/vagrant-2.3.4/bin/vagrant:111:in `
' 1: from /opt/vagrant/embedded/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require' /opt/vagrant/embedded/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require': cannot load such file -- vagrant (LoadError) 12: from /opt/vagrant/embedded/gems/2.3.4/gems/vagrant-2.3.4/bin/vagrant:111:in `
' 11: from /opt/vagrant/embedded/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:147:in `require' 10: from /opt/vagrant/embedded/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:158:in `rescue in require' 9: from /opt/vagrant/embedded/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:158:in `require' … /opt/vagrant/embedded/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require': cannot load such file -- google/protobuf_c (LoadError) ~/vagrant ❯ w ``` `google/protobuf_c` ? ruby関連のエラーなのかな?? ### VirtualBox 7.xはMojave未対応 次に、VirtualBoxを起動し、vagrant用のBOXを停止し、VirtualBoxを最新の7.xに更新したところ、7.xはMojaveに対応していないらしく、起動すらしなかったので、再度、6.xに戻した ### ruby絡み? エラーを基に、検索してみたところ下記の記事が見つかった とりあえず、gemでインストールしてみる ```bash $ gem install google-protobuf --version=3.9.2 --platform=ruby Fetching: google-protobuf-3.9.2.gem (100%) ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory. ``` システムのrubyに手を加えるのは怖いので中断 ## Vagrant 2.3.1以上はMojave未対応 更には、vagrantのバージョンによっては、Mojaveに対応していない記事も見つかった ```bash $ vagrant --version Vagrant 2.3.4 ``` 2.3.4はMojaveでは動作しないようなので、今回はこれが原因っぽい ### vagrantのアンインストールとvagrant.rb Github Issueの記事を参考に作業 ```bash $ brew uninstall vagrant $ brew install vagrant.rb ``` /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/Casks/vagrant.rbを下記の内容に置き換え ```ruby cask "vagrant" do version "2.3.0" #sha256 "65a5fee8bcfa4bbd3be444efbcd997110a49f5ccc1fffc4457c0110ab51adecb" # new since 2023-01-23: https://status.hashicorp.com/incidents/xbbwr755y78b sha256 "dfcb08ee37a197c091d0d13f52a4cf55b98d24466063934032530959259fcd89" url "https://releases.hashicorp.com/vagrant/#{version}/vagrant_#{version}_darwin_amd64.dmg", verified: "hashicorp.com/vagrant/" name "Vagrant" desc "Development environment" homepage "https://www.vagrantup.com/" livecheck do url "https://github.com/hashicorp/vagrant" strategy :git end pkg "vagrant.pkg" uninstall script: { executable: "uninstall.tool", input: ["Yes"], sudo: true, }, pkgutil: "com.vagrant.vagrant" zap trash: "~/.vagrant.d" end ``` ### vagrantをインストール ```bash $ brew install vagrant Running `brew update --auto-update`... ==> Auto-updated Homebrew! Updated 1 tap (homebrew/core). You have 21 outdated formulae and 2 outdated casks installed. ==> Downloading https://releases.hashicorp.com/vagrant/2.3.0/vagrant_2.3.0_darwi ######################################################################### 100.0% ==> Installing Cask vagrant ==> Running installer for vagrant; your password may be necessary. Package installers may write to any location; options such as `--appdir` are ignored. Password: installer: Package name is Vagrant installer: Installing at base path / installer: The install was successful. 🍺 vagrant was successfully installed! ``` ちなみに、homebrewでなくDMGによるインストールする場合は、 ([Vagrant v2.3.0 Binaries | HashiCorp Releases](https://releases.hashicorp.com/vagrant/2.3.0/))にてダウンロードしてインストール 2.3.0がインストールされたので、vagrantを起動してみる ```bash $ vagrant info Vagrant failed to initialize at a very early stage: The plugins failed to initialize correctly. This may be due to manual modifications made within the Vagrant home directory. Vagrant can attempt to automatically correct this issue by running: vagrant plugin repair If Vagrant was recently updated, this error may be due to incompatible versions of dependencies. To fix this problem please remove and re-install all plugins. Vagrant can attempt to do this automatically by running: vagrant plugin expunge --reinstall Or you may want to try updating the installed plugins to their latest versions: vagrant plugin update Error message given during initialization: Unable to resolve dependency: user requested 'vagrant-disksize (= 0.1.3)' ``` 無事にvagrantのコマンドが復活し、`vagrant info` や `vagrant status` も使えるようになったが、依存性のエラーが出た vagrant up してみると ```ruby Error message given during initialization: Unable to resolve dependency: user requested 'vagrant-vbguest (= 0.30.0)' ``` ### vagrant-vbguestをアンインストール ```bash $ vagrant plugin uninstall vagrant-vbguest ``` ```bash $ vagrant status Current machine states: default poweroff (virtualbox) The VM is powered off. To restart the VM, simply run `vagrant up` ``` 通常に戻ったようだ ### vagrant起動 ```bash $ vagrant up Bringing machine 'default' up with 'virtualbox' provider... ==> default: Checking if box 'ubuntu/bionic64' version '20210412.0.0' is up to date... ==> default: A newer version of the box 'ubuntu/bionic64' for provider 'virtualbox' is ==> default: available! You currently have version '20210412.0.0'. The latest is version ==> default: '20230425.0.0'. Run `vagrant box update` to update. ==> default: Clearing any previously set forwarded ports... ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat default: Adapter 2: bridged ==> default: Forwarding ports... default: 22 (guest) => 2222 (host) (adapter 1) ==> default: Running 'pre-boot' VM customizations... ==> default: Disk cannot be decreased in size. 30720 MB requested but disk is already 40960 MB. … ``` 容量に関する警告みたいだが、現状問題ないようなので保留にする ### vagrant ssh ```bash $ vagrant ssh Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-209-generic x86_64) Last login: Thu Apr 27 13:39:39 2023 vagrant@server:~$ ``` ふぅ、無事に起動再開した ### Mojave上vagrantの注意事項 - VirtualBox 7.x にはアップグレードしない事 - vagrantのバージョンは2.3.0より上げない事 - brewでvagrantを更新しない事 -------------------------------------------------------------------------------- title: "Hugoテーマ Tranquilpeakでハンバーガーメニューが反応しない" date: "2023-04-21" url: https://scribble.washo3.com/tranquilpeak-hambergermenu-issue/ -------------------------------------------------------------------------------- おそらく、以前から症状が起きていたのではないかと思うが、Hugoのテーマ「Tranquilpeak」にてレスポンシブの際に表示されるハンバーメニューが動作していない事に気づき、その原因と解明に、ほぼ1日費やしてしまいました。 ## 症状 この現象に当たっては、BaseURLがトップディレクトリになっていれば問題なく、サブパス(サブディレクトリ)を設定していた場合に発生しました。 具体的には、 baseurl = "xttp://xxx.yyy.com" OK baseurl = "xttp://xxx.yyy.com/~user/" NG ## 原因究明 - セキュリティヘッダー設定を無効にしてみた - submoduleのtranquilpeakを更新してみた - カスタマイズしているlayouts/partials内のファイルを削除してみた - 記事内のMarkdownの不備を確認するため、conttent内の記事を削除してみた - ビルドの際にHTML,CSSの圧縮を、非圧縮でビルドしてみた - config.toml内でrelativeURLs, canonifyURLs, uglyURLsを調整してみた ほぼ、tranquilpeakデフォルト設定まで戻してみたが、やはりビルドしたPublic内のindex.htmlを開くと、ハンバーメニューが反応しない 実は、ハンバーメニューだけでなく、Aboutページも反応していなかった このハンバーメニューやAboutページは、どのように動作しているのか、調べてみると、jQueryで実行されているようだったので、jQuery周辺を調べてみた ### デベロッパーツール ビルドしたPublic内のindex.htmlをブラウザの解析ツールで調べてみたところ、下記の箇所が該当する事が分かった ``` + ``` absURLの動作が正常に行われてない感じでしたので、relURLへ変更したところ、無事、解決に至りました 上でも解決しない場合は、下記でも良いようです。(むしろ、こちらの方が正解なのかも?) ```diff - + ``` これでも解決しない場合は、最後の手段として、パスを直書き(`src="xttp://xxx.yyy.com/~user/js/script-…"`)しましょう。(^^;) -------------------------------------------------------------------------------- title: "HugoのGoogle AnalyticsをGA4対応" date: "2023-03-27" url: https://scribble.washo3.com/hugo-analytics-ga4/ -------------------------------------------------------------------------------- ## Hugoで構築しているサイトをGA4へ移行 私の環境では、BeautifulhugoとMainroadのテーマを利用しているので、これに限ったカスタマイズとなります また、GoogleAnalyticsのGA4のコードは取得済みを前提としているので、GoogleAnalyticsの説明は割愛します ## Beautifulhugo ### head.htmlをrootフォルダへコピーし修正する ```diff $ pwd /hugo $ cp themes/beautifulhugo/layouts/partials/head.html layouts/partials/. ``` ### head.html (変更点のみ) ```diff - {{ template "_internal/google_analytics_async.html" . }} + {{- partial "analytics" . -}} ``` ### /layouts/partials/analytics.htmlを下記の内容で作成 ```go {{ if not .Site.IsServer }} {{ with .Site.GoogleAnalytics }} {{ end }} {{ end }} ``` ### config.tomlにGA4コード記入 (変更点のみ) ```go googleAnalytics = "G-XXXXXXXXXX" ``` ## Mainroad 執筆時のmainroadのテーマでは、analyticsの読み込みは`layout/_default/baseof.html`で行われ、下記のコードを見るとGA4に対応しているように思える ```go {{- if not .Site.IsServer }} {{- if hasPrefix .Site.GoogleAnalytics "G-" }} {{ template "_internal/google_analytics.html" . }} {{- else }} {{ template "_internal/google_analytics_async.html" . }} {{- end }} {{- end }} ``` しかし、なぜかGA4の設定をしてもデータが受信できなかった 上記のbeautifulhugoとほぼ同様の作業だが、違うのはanalyticsを読み込むファイルがhead.htmlがbaseof.htmlになっているだけ ### baseof.htmlのGoogleタグ内を修正 ```diff {{- if not .Site.IsServer }} - {{- if hasPrefix .Site.GoogleAnalytics "G-" }} - {{ template "_internal/google_analytics.html" . }} - {{- else }} - {{ template "_internal/google_analytics_async.html" . }} - {{- end }} + {{- partial "analytics" . -}} {{- end }} ``` ### config.tomlにGA4コード記入 (変更点のみ) ```go googleAnalytics = "G-XXXXXXXXXX" ``` ## 参考記事 今回の移行作業に関しては、下記の記事を参考にさせていただきました -------------------------------------------------------------------------------- title: "Zabbix6をDockerで構築" date: "2022-10-17" url: https://scribble.washo3.com/docker-zabbix6/ -------------------------------------------------------------------------------- 常時稼働しているZabbixサーバーがバージョン4と古く、テンプレート関連の影響もあって、6.xへデータ移行が出来ないようなので、新規に、Zabbix6.xをDockerで構築した。 もしかすると、zabbix4 -> 5 --> 6とバージョンアップしていけばデータの引き継ぎが出来るのかもしれませんが、私の場合、それほど監視するサーバーが多くないので、一気に6.xを構築して、再度監視設定を行う方が効率良く思いました。 # Docker Zabbix ```bash $ git clone https://github.com/zabbix/zabbix-docker.git $ cd zabbix-docker $ git branch * 6.2 ``` docker-compose_v3_alpine_pgsql_latest.yamlを利用します ```bash $ cp docker-compose_v3_alpine_pgsql_latest.yaml docker-compose.yaml ``` ### PHPのタイムゾーン設定 env_vars/.env_web ``` PHP_TZ=Asia/Tokyo ``` ### docker-compose.ymlを編集 Post 80,443は別で利用しているので変更していますが、適宜変更してください。 またagentをagent2へ変更しています ```diff diff -u docker-compose_v3_alpine_pgsql_latest.yaml docker-compose.yaml --- docker-compose_v3_alpine_pgsql_latest.yaml 2022-08-26 10:16:11.522715450 +0900 +++ docker-compose.yaml 2022-08-26 10:27:01.808759547 +0900 @@ -226,8 +226,8 @@ zabbix-web-nginx-pgsql: image: zabbix/zabbix-web-nginx-pgsql:alpine-6.2-latest ports: - - "80:8080" - - "443:8443" + - "8081:8080" + - "8443:8443" volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro @@ -278,7 +278,7 @@ com.zabbix.os: "alpine" zabbix-agent: - image: zabbix/zabbix-agent:alpine-6.2-latest + image: zabbix/zabbix-agent2:alpine-6.2-latest profiles: - full - all ``` ### 起動確認 ```bash $ docker-compose up -d ``` http://IP:8081でログイン(Admin/zabbix)出来るか確認 (最初はDB作成したりするので、しばらく時間がかかります。) ## Agent起動 zabbix-agentのコンテナは自動で起動しないようなので、手動にて起動 ```bash $ docker-compose up -d zabbix-agent ``` ## Zabbix管理のホストから自ホストのインターフェースを下記に設定する 管理 -> ホスト -> インターフェースにて、下記を設定する DNS name: `zabbix-agent ` Connect to: `DNS` ## グラフが豆腐になる 言語を日本語へ設定すると、グラフ表示で文字が豆腐になりますので、下記の記事を参考に修正する -------------------------------------------------------------------------------- title: "LinuxにHomebrewを導入" date: "2022-10-17" url: https://scribble.washo3.com/linux-homebrew/ -------------------------------------------------------------------------------- macOSでは、ほぼ定番になっているHomebrewですが、最近ではLinuxにもHomebrewを導入できます。 DebianやRedHatでは、aptやdnf(yum)でパッケージ管理が出来るのですが、それらのパッケージにはなくリポジトリ化されてないプログラムの導入・更新が楽になります。 例えば、私がよく利用するHugoやDockerのdocker-compose,lazydockerなどは、更新がある度に、公式のサイトからダウンロードして入れ替えたりする必要があるのですが、これがmacOS同様に、`brew update hugo`みたいに簡素化する事が出来るようになるのです。 また、Linuxのパッケージ管理よりも、更新が早いので、新しいバージョンのプログラムを利用できる事が多いです。 (特にRedhat系のパッケージはバージョンが古いものが多いので、Homebrewを導入するメリットは大きいかと) ## Homebrew導入 導入する前に、各Linuxにて必要なプログラムを導入 ### Debian/Ubuntu ```bash $ sudo apt-get install build-essential procps curl file git ``` ### Redhat/CentOS ```bash $ sudo yum groupinstall 'Development Tools' $ sudo yum install procps-ng curl file git $ sudo yum install libxcrypt-compat ``` CentOS7では、下記記事のように、Gitとcurlのバージョンを上げる必要があります **Upgrade git & curl(CentOS7)** - gitのバージョンを上げる ```bash $ sudo yum install -y https://repo.ius.io/ius-release-el7.rpm $ sudo yum update $ sudo yum install git236 ``` - curlのバージョンを上げる ```bash $ sudo curl https://github.com/moparisthebest/static-curl/releases/download/v7.85.0/curl-amd64 -Lo /usr/local/bin/curl $ sudo chmod +x /usr/local/bin/curl $ sudo ln -s /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem /etc/ssl/certs/ca-certificates.crt ``` ### homebrewインストール ```bash $ curl -fsSL -o install.sh https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh $ bash install.sh … - Run these three commands in your terminal to add Homebrew to your PATH: echo '# Set PATH, MANPATH, etc., for Homebrew.' >> /root/.profile echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> /root/.profile eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" - Install Homebrew's dependencies if you have sudo access: sudo apt-get install build-essential For more information, see: https://docs.brew.sh/Homebrew-on-Linux - We recommend that you install GCC: brew install gcc - Run brew help to get started - Further documentation: https://docs.brew.sh ``` 公式通りにinstall.shを実行すると、/home/linuxbrew/.linuxbrew/内にライブラリや実行プログラムが入ります。 ### 環境設定 rootで作業したため、`/root/.profile`となってますが、ユーザーで利用する場合は、`~/.profile`へ変更してください。 ``` echo '# Set PATH, MANPATH, etc., for Homebrew.' >> /root/.profile echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> /root/.profile eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" ``` ## 確認 ```bash $ brew doctor Your system is ready to brew. ``` ## パッケージインストール あとは、macOSのbrew同様にインストール ```bash $ brew install hugo tree lazydocker ``` システム内のaptやyumでインストールしたパッケージよりは、brewでインストールしたパッケージが比較的新しいので、新しいバージョンのプログラムを実行したい場合は、brewの方が良さそう。 また、Linuxのシステムを汚さずに利用できるのは良いですね。 以上で導入は完了です。 下記は参考まで。 ### 個別インストール /home/linuxbrewのディレクトリではなく、自分の環境下に置きたい場合、install.shを使わず個別にインストールする方法です。 この個別インストールをしばらく使ってみたのですが、いくつかのプログラムのインストールが出来なかったので、公式インストールした方が賢明です ```bash $ git clone https://github.com/Homebrew/brew ~/.linuxbrew/Homebrew $ mkdir ~/.linuxbrew/bin $ ln -s ~/.linuxbrew/Homebrew/bin/brew ~/.linuxbrew/bin $ eval $(~/.linuxbrew/bin/brew shellenv) ``` - 環境設定 この記事ではrootで作業したので、 `/root/.profile` のファイルは自分の環境に合わせましょう ```bash $ echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> /root/.profile ## 自分のホームディレクトリ配下へインストールした場合 $ echo 'eval "$(~/.linuxbrew/bin/brew shellenv)"' >> ~/.profile $ exec $HSELL -l $ brew -v Homebrew 3.6.5 Homebrew/homebrew-core (git revision 534720b84e9; last commit 2022-10-14) ``` 実際は、自分のユーザー名で、zshrcを利用しております 自分のディレクトリ配下へインストールした場合、brew doctorでプリフェックスが違うので、いくつかのフォーミュラーでビルドが失敗する恐れがある警告が出ます ```bash Warning: Your Homebrew's prefix is not /home/linuxbrew/.linuxbrew. Some of Homebrew's bottles (binary packages) can only be used with the default prefix (/home/linuxbrew/.linuxbrew). You will encounter build failures with some formulae. ``` 警告通り、いくつかのプログラム(curlやrsyncなど)のビルド・インストールが出来ませんでした。) ## トラブル インストール・環境設定をしたものの、brew自体が利用できない場合は、パスが通っていないかパスの優先度が間違っている場合がほとんどなので、再度確認しましょう。 また、brewでインストールしたプログラムが動作しない場合は、シェルの再読み込みで、ほぼ解決出来るかと思います。 ## 小ネタ - brew自体の更新 git cloneしてるので、そのままgit pullするだけ - 削除 homebrew自体を削除したい場合は、`rm -rf`にて`/home/linuxbrew`や`$HOME/.linuxbre`をごっそり消せば、全て削除されます -------------------------------------------------------------------------------- title: "/var/lib/docker/containersのログが肥大化" date: "2022-10-17" url: https://scribble.washo3.com/docker-container-log/ -------------------------------------------------------------------------------- Dockerで稼働しているLDAPサーバーが容量100%になってたので調べてみた。 このLDAPサーバーは、読み込み専用に近いので、それほどデータは増えないはずなのに? ```bash # du -sh /var/lib/docker/* |sort -n 1.2G /var/lib/docker/overlay2 2.1M /var/lib/docker/image 4.0K /var/lib/docker/runtimes 4.0K /var/lib/docker/swarm 4.0K /var/lib/docker/tmp 4.0K /var/lib/docker/trust 4.4M /var/lib/docker/volumes 7.8G /var/lib/docker/containers 20K /var/lib/docker/builder 24K /var/lib/docker/plugins 60K /var/lib/docker/network 108K /var/lib/docker/buildkit ``` 明らかに/var/lib/docker/containersが容量大になっている ## 対応策 まんま、この記事の通りです↓ - コンテナIDを調べる ```bash $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9de577ac08a6 osixia/phpldapadmin:latest "/container/tool/run" 2 years ago Up 7 weeks 443/tcp, 0.0.0.0:6001->80/tcp, :::6001->80/tcp ldap-admin 87f44c8f00af osixia/openldap:latest "/container/tool/run" 2 years ago Up 7 weeks 0.0.0.0:389->389/tcp, :::389->389/tcp, 636/tcp ldap-host ``` IDが87fで始まるので、ログの場所を検索してみる ```bash $ docker inspect 87f |grep -i log "LogPath": "/var/lib/docker/containers/87f44c8f00af3c043762fcac9dca218c3bcf7f3111594b56210b18574c0317c0/87f44c8f00af3c043762fcac9dca218c3bcf7f3111594b56210b18574c0317c0-json.log", "LogConfig": { ``` ログの場所が分かったので、容量を調べてみる ```bash # ls -lh /var/lib/docker/containers/87f44c8f00af3c043762fcac9dca218c3bcf7f3111594b56210b18574c0317c0/87f44c8f00af3c043762fcac9dca218c3bcf7f3111594b56210b18574c0317c0-json.log -rw-r----- 1 root root 7.8G 10月 5 16:15 /var/lib/docker/containers/87f44c8f00af3c043762fcac9dca218c3bcf7f3111594b56210b18574c0317c0/87f44c8f00af3c043762fcac9dca218c3bcf7f3111594b56210b18574c0317c0-json.log ``` 7.8GBと肥大化していた ログファイルを削除する(空にする) ```bash $ sudo truncate -s 0 /var/lib/docker/containers/87f44c8f00af3c043762fcac9dca218c3bcf7f3111594b56210b18574c0317c0/87f44c8f00af3c043762fcac9dca218c3bcf7f3111594b56210b18574c0317c0-json.log # ls -lh /var/lib/docker/containers/87f44c8f00af3c043762fcac9dca218c3bcf7f3111594b56210b18574c0317c0/87f44c8f00af3c043762fcac9dca218c3bcf7f3111594b56210b18574c0317c0-json.log -rw-r----- 1 root root 0 10月 5 16:18 /var/lib/docker/containers/87f44c8f00af3c043762fcac9dca218c3bcf7f3111594b56210b18574c0317c0/87f44c8f00af3c043762fcac9dca218c3bcf7f3111594b56210b18574c0317c0-json.log ``` このままでは一時的に解決しただけで、何れ同じ症状が再発するので、ログの設定を修正 このサーバーでは、LDAPのDockerのみ稼働なので、dockerグローバル設定します /etc/docker/daemon.logを下記の内容で新規作成 ```bash $ cat /etc/docker/daemon.log { "log-driver": "json-file", "log-opts": {"max-size": "10m", "max-file": "3"} } ``` 個別のコンテナだと下記のようにdocker-compose.ymlへ記述 ```bash logging: driver: "json-file" options: max-size: "10m" max-file: "3" ``` docker再起動して完了です -------------------------------------------------------------------------------- title: "DELL PowerEdgeでUSB起動出来なくてハマった" date: "2022-07-15" url: https://scribble.washo3.com/poweredge-cannot-usb-boot/ -------------------------------------------------------------------------------- 使わなくなったPowerEdge R410にDebianインストールをしようと、起動用USBディスクを作成し、BIOSでUSBを最優先起動設定にしてもUSBから起動出来なくて数時間費やしました。 解決策をネット上で、探したところ、下記の記事がドンピシャで該当しました ## ブート解決策 1. 起動画面(Dellのロゴがでているとき)で`F2`を押し、BIOS設定画面を起動する。 2. BIOS設定にて**USB Flash Drive Emulation Type**を`AUTO`から`Hard Disk`に変更する。 3. 設定を保存してBIOS設定画面から抜ける(再起動) 4. 起動画面(Dellのロゴがでているとき)で`F11`を押し、ブートメディアの切り替え設定を起動する。 5. ブートメディアの切り替え設定において、「Hard Disk」の項にUSBフラッシュメディアがあるので、USBフラッシュメディアからの起動を選ぶ。 6. 無事にUSBからインストーラーが起動する。 ## ネットワークが使えない NICの認識はしているものの、ネットワークに接続出来ない Debianのインストール画面でパッケージのインストールが出来ないので、ディスクやパスワードの設定だけで、ほとんど素のログイン画面でインストール終了 しかし、インストールは完了しているので、ログインは可能 ### ネットワークドライバーのインストール 1. 別PCにて、[https://debian.pkgs.org/10/debian-nonfree-amd64/firmware-bnx2_20190114-2_all.deb.html](https://debian.pkgs.org/10/debian-nonfree-amd64/firmware-bnx2_20190114-2_all.deb.html)からダウンロードし、USBに保存 2. そのUSBをPowerEdgeに挿し、マウント USBのデバイス名は適宜調べてください ``` # mount /dev/sdx /mnt ``` 3. ドライバーインストール ``` # /usr/bin/dpkg -i firmware-bnx2_20190114-2_all.deb # reboot ``` 補足: ネットワークが使用できるようになったものの、/etc/apt/sources.listもなく、自分で作成する必要があるので、ネットワークドライバーと一緒にUSBへ保存しておいた方が楽かもしれません ちなみに、この時点ではsshも入ってないため、ネットワーク転送は難しいかもしれません ネットワークが有効になり、sources.listにて、`apt update`して、sshやらsudo,gitなどなど、通常通りのパッケージインストール作業が行えるようになりました ### 今回の環境 PC: Dell PowerEdge R410 OS: debian-11.3.0-amd64-netinst NIC Driver: debian-nonfree-amd64/firmware-bnx2_20190114-2_all.deb -------------------------------------------------------------------------------- title: "HTTPセキュリティヘッダー対策した" date: "2022-07-04" url: https://scribble.washo3.com/hugo-security-headers/ -------------------------------------------------------------------------------- このサイトも、Hugoへ移行してから3年が経過しようとしています。 しばらく放置気味になっていたウェブのHTTPセキュリティヘッダを設定しました。 > Webブラウザでのセキュリティ対策を設定するためにWebアプリケーションで使用されるディレクティブで、クロスサイトスクリプティングやクリックジャッキングなどの対策として利用します 今回の記事では、このサイトで利用しているHugo+Netlifyの環境での設定となります また、設定用語に関しての説明は割愛させていただきます ## 通常 .htaccessなどで設定する場合 通常、Apache環境下などで.htaccessが利用できる環境であれば、下記のような設定を追記してあげれば良いでしょう ただし、mod_headersモジュールが有効になっている事が前提となります ``` # Security Headers Header always set Content-Security-Policy "upgrade-insecure-requests" Header always set X-XSS-Protection "1; mode=block" Header always set X-Content-Type-Options "nosniff" Header always set Referrer-Policy: "no-referrer-when-downgrade" Header always set Expect-CT "max-age=7776000, enforce" Header always append X-Frame-Options "SAMEORIGIN" Header always set Permissions-Policy "geolocation=(); midi=();notifications=();push=();sync-xhr=();accelerometer=(); gyroscope=(); magnetometer=(); payment=(); camera=(); microphone=();usb=(); xr=();speaker=(self);vibrate=();fullscreen=(self);" Header always set Strict-Transport-Security: "max-age=31536000" # End Security Headers ``` 敢えて、最終行に空行を入れている事が大事! この設定は、WordPressサーバーでも、追記するだけで有効になってます なお、.htaccessは個別または継承により有効となりますので、システム全体に適用する場合は、Apacheだとhttpd.confやNginxだとdefault.confなどで設定することになります ## Hugo+Netlifyでのセキュリティヘッダー さて、このサイトでのHugoとNetlify環境下では、Netlifyが.htaccessを利用できないので、少し工夫が必要でした ### _headers /static/_headersのファイルを下記の内容で作成 設定内容は自分の環境に合わせて変更してください ```toml /** Content-Security-Policy = "upgrade-insecure-requests" Expect-CT = "max-age=7776000, enforce" Referrer-Policy = "strict-origin-when-cross-origin" Strict-Transport-Security = "max-age=31536000" X-Content-Type-Options = "nosniff" X-Frame-Options = "SAMEORIGIN" X-XSS-Protection = "1; mode=block" Permissions-Policy = "geolocation=(); midi=();notifications=();push=();sync-xhr=();accelerometer=(); gyroscope=(); magnetometer=(); payment=(); camera=(); microphone=();usb=(); xr=();speaker=(self);vibrate=();fullscreen=(self);" ``` ### netlify.toml [Netlify Playground](https://play.netlify.com/headers)にて、上記の_headersの内容を記述し、`Test rules`のボタンを押すと書式のチェックと下段にnetlify書式が表示されるので、その内容をnetlify.tomlに追記する netlify.tomlに下記を追記 ```toml [[headers]] for = "/**" [headers.values] Content-Security-Policy = "upgrade-insecure-requests" Expect-CT = "max-age=7776000, enforce" Permissions-Policy = "geolocation=(); midi=();notifications=();push=();sync-xhr=();accelerometer=(); gyroscope=(); magnetometer=(); payment=(); camera=(); microphone=();usb=(); xr=();speaker=(self);vibrate=();fullscreen=(self);" Referrer-Policy = "strict-origin-when-cross-origin" Strict-Transport-Security = "max-age=31536000" X-Content-Type-Options = "nosniff" X-Frame-Options = "SAMEORIGIN" X-XSS-Protection = "1; mode=block" ``` そして、GitlabもしくはGithubと連携している場合は、リポジトリを更新し、デプロイします ## 確認 こちらのサイトで確認すると楽です curl使いの方は、`curl --head`でも可 - セキュリティヘッダ対策前はD判定でした {{< imgur id="AJXQp44" >}} - セキュリティヘッダ対策後はA+となり、対策が確認されました {{< imgur id="haVdhqo" >}} ### 参考記事 -------------------------------------------------------------------------------- title: "/var/lib/dockerを移動" date: "2022-05-10" url: https://scribble.washo3.com/docker-dir-moved/ -------------------------------------------------------------------------------- Dockerを運用している機器のルートパーティション(/)が圧迫してきたので/var/lib/dockerを移動した 最近では、何も考えずにLinuxをインストールすると自動構成により、ルートパーティション(/)が30GBなど少なく設定される事が多いです。 Dockerを運用していると/var/lib/dockerが肥大化してくるので、/がほぼFullに近い状況になってきました。 なので、別パーティションで余裕がある/homeへ移動した なお、今回は、Debian11上にてmount bindを利用します 移動元:/var/lib/docker 移動先:/home/docker ## Docker停止 ```bash # systemctl stop docker # systemctl stop docker.socket ``` ## /var/lib/dockerの移動 /home/dockerのディレクトリを作成し、rsyncで/var/lib/docker内をコピー ```bash # mkdir /home/docker # rsync -aXS /var/lib/docker/. /home/docker/ ``` ## mount bind /var/lib/dockerを退避し、新たに空の/var/lib/dockerのディレクトリを作成 ```bash # mv /var/lib/docker /bar/lib/docker.bak # mkdir /var/lib/docker ``` /home/dockerを/var/lib/dockerとしてマウント ```bash # mount -o bind /home/docker /var/lib/docker ``` シンボリックリンクと違い、CD-ROMや外部機器のマウント同様の扱いになるので、再起動した際にマウントされません。 fstabの編集が必要となります ### fstab fstabを編集する際は、必ずバックアップを取っておきましょう 下記を追記します ```bash /home/docker /var/lib/docker none bind 0 0 ``` ### マウント確認 手動でマウントしたので、一旦マウント解除し、fstab表記でマウント出来るか確認します ```bash # umount /var/lib/docker # mount -a # df -h - /dev/sda6 396G 17G 360G 5% /home /dev/sda6 396G 17G 360G 5% /var/lib/docker ``` ### DOCKER_OPTSに追加 コンテナの保存先を変更するので明示的に指定する必要があります ```bash # pwd /etc/default # cat docker |grep DOCKER_OPTS DOCKER_OPTS="-g /home/docker" ``` ### Docker起動 ```bash # systemctl start docker ``` 無事にdockerが起動し、しばらく様子を見て問題なければ `/var/lib/docker.bak` を削除 ### 参考記事 -------------------------------------------------------------------------------- title: "Growi 4.5から5.0へアップグレード" date: "2022-05-10" url: https://scribble.washo3.com/growi4.5to5.0/ -------------------------------------------------------------------------------- 以前にも、Growiのアップグレードを記載しておりますが、今回は4.xから5.xへのメジャーアップグレードになります。 下記の構成で、dockにてGrowiが稼働しているものとする | App | Version | | ------- | ------- | | Growi | 4.5.19 | | mongodb | 4.4 | なお、初めてdockerで構築する場合は、公式のインストール通りで構築出来るので以降の作業は不要となります ## 4.xを最新にしておこう もし、dockerで稼働しているのであれば、下記公式のアップグレード情報を基になるべく4.xを最新バージョンへアップデートしておいた方が良いかと思います。 執筆現在はv4.5.19 ## アップグレード作業 アップグレード前に、必ずmongodbやアーカイブのバックアップを取っておきましょう また、重要な変更点が多いので、公式の記事を一読しておきましょう ### Growi停止 `docker-compose down`しないように注意! ```bash $ docker-compose stop ``` ### コンテナとElasticsearchボリューム削除 ```bash $ docker-compose rm app Going to remove growi-app-1 (y/N) y $ docker-compose rm elasticsearch Going to remove growi-elasticsearch-1 (y/N) y ``` Elasticsearch コンテナから 利用していた docker volume を削除 ```bash $ docker volume ls|grep es_data local growi_es_data $ docker volume rm growi_es_data ``` ### イメージ削除 イメージID(07d ded 5e3)は自分の環境に合わせて変更してください ```bash $ docker images|grep growi growi_app latest 07d9d010ddc1 25 minutes ago 781MB weseek/growi 4 dedb45121a0e 10 days ago 753MB growi_elasticsearch latest 5e32778e509f 4 months ago 981MB $ docker rmi 07d ded 5e3 ``` ### リポジトリ更新 編集したファイルがあれば、バックアップを取っておきましょう ```bash $ pwd /growi $ cp docker-compose.yml docker-compose.yml.bak $ git pull ``` 私の場合、docker-compose.ymlとelasticsearch/Dockerfileに変更があったため、下記の作業が必要でした ```bash $ git pull - Please commit your changes or stash them before you merge $ git checkout docker-compose.yml $ git checkout elasticsearch/Dockerfile $ git pull origin master ``` ### docker-compose.yml編集 `git pull` したdocker-compose.ymlは初期値に戻っているので、バックアップを取ったdocker-compose.yml.bakと比較しながら、編集します 私の場合のDiff ```diff --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,7 +6,7 @@ services: context: . dockerfile: ./Dockerfile ports: - - 127.0.0.1:3000:3000 # localhost only by default + - 3000:3000 # localhost only by default links: - mongo:mongo - elasticsearch:elasticsearch @@ -16,15 +16,20 @@ services: environment: - MONGO_URI=mongodb://mongo:27017/growi - ELASTICSEARCH_URI=http://elasticsearch:9200/growi - - PASSWORD_SEED=changeme + - PASSWORD_SEED=ae9xxxxxxxxxxxxxxxxxxxxxxx # - FILE_UPLOAD=local # activate this line if you use local storage of server rather than AWS + - FILE_UPLOAD=aws # activate this line if you use local storage of server rather than AWS ``` もし、docker-compose.yml以外にも変更しているファイルがあれば、適宜、編集しましょう ### ビルド ```bash $ docker-compose build ``` `Successfully built`が表示され成功を確認 ### 起動 ```bash $ docker-compose up -d ``` これで、今まで通り接続し、ログイン出来れば完了です ## v5互換形式へページ変換 Growiへ管理者でログインすると、下記の警告が表示されるかと思います {{< imgur id="VyrbTl2" >}} このまま、変換リンクを押したいところですが、メンテナンスモードにしないと失敗します 左項目の`アプリ設定`をクリックし、右項目の最下行のメンテナンスモードを開始します {{< imgur id="NMDb3Is" >}} その後、v5互換形式へ変換を開始します {{< imgur id="1bLS9N2" >}} {{< imgur id="nNyA4LX" >}} 変換が無事完了したら、メンテナンスモードを終了しておきましょう 今回のv5へのアップグレードでは、パーマリンクが変更になったため、戸惑いましたが、自分だけのWikiだと、それほど問題ではないので、アップグレードに踏み切ったのですが、職場や仲間・サークルで運用していた場合は、しっかりと検討する必要がありそうです アップグレードした感想としては、大半のOSSやアプリではアップグレードする度にメモリ消費が多くなったり、重くなって快適さが損なわれる場合が多いのですが、Growi v5.xでは、elasticsearchが7へ上がったこともあり、検索速度の向上や全体的な速度向上が実感でき、より快適になったのではないかと思います -------------------------------------------------------------------------------- title: "ホームディレクトリでファイル・ディレクトリが作成出来ない" date: "2022-03-30" url: https://scribble.washo3.com/myid-home-cannot-file/ -------------------------------------------------------------------------------- あるLinux(Debian)へログインした後、ファイルやディレクトリが作成出来ない症状に出くわしました。 ``` $ mkdir test mkdir: ディレクトリ `test' を作成できません: 許可がありません $ touch test touch: 'test' に touch できません: 許可がありません ``` いろいろ試してみた - ログインは普通にできる - idコマンドでUIDやGIDを確認 - ホームディレクトリ及び中身の属性を確認 - シェルを変更してみる いずれも問題なくエラーログを見てみたところ、下記のようなエラー ``` Mar 28 10:12:14 ibm tracker-miner-f[3060490]: Unable to get XDG user directory path for special directory &VIDEOS. Ignoring this location. Mar 28 10:12:14 ibm tracker-miner-f[3060490]: Couldn't create new Files miner: 'Failed to load SPARQL backend: tracker data directory does not exist and could not be created: 許可がありません' ``` tracker-minerって何? 何やらGNOMEのツールのようですが、CLIの環境なので利用していないのに?? とにかく対処法を探してみた ``` $ tracker reset --hard CAUTION: This process may irreversibly delete data. Although most content indexed by Tracker can be safely reindexed, it can’t be assured that this is the case for all data. Be aware that you may be incurring in a data loss situation, proceed at your own risk. Are you sure you want to proceed? [y|N]: y Found 0 PIDs… _g_io_module_get_default: Found default implementation dconf (DConfSettingsBackend) for ‘gsettings-backend’ Setting database locations Checking database directories exist Checking database version Checking whether database files exist Removing all database/storage files Removing database:'/home/washo/.cache/tracker/meta.db' Removing db-locale file:'/home/washo/.cache/tracker/db-locale.txt' Segmentation fault ``` これだけでは直らず、下記も試す ``` sudo apt remove --purge tracker tracker-extract tracker-miner-fs rm -r ~/.cache/tracker sudo apt install tracker tracker-extract tracker-miner-fs ``` これで再起動したら、元通り直りました。 あっ、もしかすると、対処する前に、先に再起動を試すべきだったのかもしれません :P 追記: 上記作業後でも再発しましたので、CUI環境なのでtrackerおよびGNOME関連を削除した(GNOME等のX-Windows使っている方は気をつけてください) -------------------------------------------------------------------------------- title: "SSHをバージョンアップしたら接続出来なくなった" date: "2022-03-30" url: https://scribble.washo3.com/openssh88-disable-rsa/ -------------------------------------------------------------------------------- MacのHomebrewでopensshを更新し、バージョンを上げたら、下記のエラーで接続出来なくなった。 ``` ERROR: Unable to negotiate with 192.168.1.10 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss ``` 全ての接続先でエラーが出るわけでなく、比較的古いOSを使用している接続先へ繋がらなくなっていた。 - 接続できるSSH ``` $ ssh -V OpenSSH_8.4p1 Debian-5, OpenSSL 1.1.1k 25 Mar 2021 ``` - 接続出来ないSSH ``` $ ssh -V OpenSSH_8.9p1, OpenSSL 1.1.1n 15 Mar 2022 ``` 調べてみたところ、OpenSSH8.8からSHA-1のRSA鍵は無効になっていたのが原因 ## 解決策 .ssh/configを下記の内容で新規作成もしくは`HostKeyAlgorithms`と`PubkeyAcceptedAlgorithms`を追記 ``` Host HOST-NAME(任意の名前) Hostname FQDN or IP IdentityFile ~/.ssh/id_rsa IdentitiesOnly yes HostKeyAlgorithms=+ssh-rsa PubkeyAcceptedAlgorithms=+ssh-rsa ``` ちなみに、古いSunOSだと下記の記述も追記する必要がありました。 ``` KexAlgorithms +diffie-hellman-group1-sha1 Ciphers aes128-cbc ``` ## 注意 私の環境では、MacとLinuxを使う機器が多いので、SSH鍵管理をGitで行っています。 Git管理している場合、使用PCのSSHが8.8より古いと、上記の解決策を行うと逆に接続出来なくなってしまいます。 ``` /home/user/.ssh/config: line 13: Bad configuration option: pubkeyacceptedalgorithms ``` 無効なオプションは無視して接続出来れば問題ないのですが、接続出来ない事には困った事です。 当面は、OpenSSH8.8以降のバージョンと古いバージョンでも利用できるように、Gitでブランチ作成して利用する事にしました。 Linuxでも標準でOpenSSH 8.8以降が搭載されれば、マージすれば良いですしね。 -------------------------------------------------------------------------------- title: "CentOS7がdracutの表示のまま起動出来なくなった" date: "2022-03-22" url: https://scribble.washo3.com/centos7-cannot-boot/ -------------------------------------------------------------------------------- いつの頃からか、CentOS7のカーネルを更新した辺りから、正常に起動出来なくなってしまった。 bootすると、この画面表示のまま起動出来ない ``` Wrning: /dev/centos_web/root does not exist Warning: /dev/mapper/centos_web-root does not exist Generating "/run/initramfs/sosreport.txt" Entering emergency mode. Exit the shell to continue. Type "journalctl" to view system logs. You might want to save "/run/initramfs/sosreport.txt" to a USB stick or /boot after mounting them and attach it to a bug report. dracut:/# ``` おそらく、カーネル更新した際に、grub関連が壊れたか設定が間違っているだろうと思ってググってみた 今回の症状は、こちらの記事↑が該当しました。 1. レスキューモードでBoot 2. ディスクのマウントとCHROOT 3. fstabとgrub.cfg修正 4. CD-ROMのローカルドライブで起動確認 5. HDD/SSDより起動 今回は、やはりgrub.cfgの設定が合っていなかった事が原因でした。 参考まで - 起動出来なかった時のgrub.cfg (該当部分のみ表記) ``` linux16 /vmlinuz-3.10.0-1160.59.1.el7.x86_64 root=/dev/mapper/centos-root ro rd.lvm.lv=centos/root rd.lvm.lv=centos/swap crashkernel=auto rh gb quiet systemd.log_level=debug systemd.log_target=kmsg ``` 上記のエラーば画面では `Wrning: /dev/centos_web/root does not exist`で**centos_web**なのに対し、設定が**centos**となっているのが原因 修正後のgrub.cfg ``` linux16 /vmlinuz-3.10.0-1160.59.1.el7.x86_64 root=/dev/mapper/centos_web-root ro rd.lvm.lv=centos_web/root rd.lvm.lv=centos_web/swap crashkernel=auto rhgb quiet systemd.log_level=debug systemd.log_target=kmsg ``` 今回は滅多に再起動しないので、不具合発覚が遅れてしまいましたが、起動の不具合やgrub弄ったりすると心臓に悪いので、カーネル更新が入った後は、なるべく再起動して起動確認した方が良さそうです -------------------------------------------------------------------------------- title: "VimでEscが効かなくなった" date: "2022-03-22" url: https://scribble.washo3.com/vim-esc-not-working/ -------------------------------------------------------------------------------- {{< imgur id="vGX6wEY" >}} ESXi上のゲストOSをWEBコンソールでVimにて編集していた時に、初めてESCキーが効かない現象に遭遇しました。 インサートモードのまま抜けられなくなり、当然、他のキーバインドも効きません。 同じような症状が起きている方もいるかもしれないとネット上で探してみた。 こちらの記事通り、`Shift+ESC`や`Ctrl+[`を押してもVimコマンドに戻れず、最後の手段で、`Ctrl+c`を押したところ、`Type :quit to exit Vim`の表示が現れたので、`:wq`により保存する事が出来ました。 今回のこの現象は何度行っても症状が現れました。 ESXi上の仮想マシン コンソール内にて、マウスをクリックして直ぐだとVimコマンドが効く事が判明したので、恐らく、特有の条件の下でこの現象が出ているのだと思います -------------------------------------------------------------------------------- title: "nginx-proxyのアクセス制限" date: "2022-03-15" url: https://scribble.washo3.com/nginxproxy-limit/ -------------------------------------------------------------------------------- この記事では、Dockerのjwilder/nginx-proxyを利用したアクセス制限のメモです。 ちなみに、公式にも記載されている情報です ## Basic認証 1. nginx-proxyのフォルダ内に.htpasswdのフォルダ作成 2. .htpasswdフォルダ下にhtpasswd形式のドメイン名ファイルを作成 3. docker-compose.ymlに.hpasswdをvolume設定 ### .htpasswd .htpasswdフォルダ内にBasic認証したい独自ドメイン名でhtpasswd形式のファイルを作成 `htpasswd -c パスワードファイル名 ユーザー名` ```bash $ pwd nginx-proxy $ mkdir .htpasswd; cd $_ $ htpasswd -c hoge.example.com foo ``` ### docker-compose.yml nginx-proxyのコンテナにvolumes設定 (.htpasswd) 下記は一部のみ抜粋 ```yaml version: "2" services: proxy: image: jwilder/nginx-proxy container_name: proxy volumes: - ./htpasswd:/etc/nginx/htpasswd ``` これで、hoge.example.comへ接続した際に、Basic認証となり、ユーザー名(foo)と設定したパスワードにより接続が可能となる ## IPによるアクセス制限 ### docker-compose.yml nginx-proxyのコンテナにIP制限ファイル設定 (network_internal.com) 下記は一部のみ抜粋 ```yaml version: "2" services: proxy: image: jwilder/nginx-proxy container_name: proxy volumes: - ./network_internal.conf:/etc/nginx/network_internal.conf ``` ### network_internal.conf IPを許可したいネットワークを明記し、ファイルを作成 ```conf allow 127.0.0.0/8; allow 192.168.0.0/16; allow 172.16.0.0/12; deny all; ``` ### Docker コンテナ名に適用 nginx-proxyのアクセス制限を適用するには、nginx-proxyとネットワーク共有している事が前提となります IPアクセス制限をしたいコンテナ名のenvironmentへ記述 一部のみ抜粋 ```yaml services: app: environment: - NETWORK_ACCESS=internal ``` appのコンテナへアクセスする際に、network_internal.confで設定したアクセス制限が適用となる。 自宅や職場など特定の場所からしか接続しない場合は、IP制限し、外出先など不特定の場所から接続する場合は、Basic認証で、かなり安全になるかと思いますが、両方適用すると、よりセキュリティが高まりますね。 ちなみに、前記のRSS-Bridgeなど踏み台にされそうなサーバーではIP制限を有効にしています -------------------------------------------------------------------------------- title: "RssbridgeをDockerで構築" date: "2022-03-14" url: https://scribble.washo3.com/docker-rssbridge/ -------------------------------------------------------------------------------- FacebookやInstagramなど多くのSNSを対応しており、更新情報をRRS化してくれるハブ的な取得サーバです。 もし、サーバ作成するのが面倒だったり、試してみたい方は、誰でも出来るインスタンスを利用しても良いかもしれません ## RSS-Bridge on Docker 今回も、dockerで構築します {{< gist washo b2f15f79ad032564001b6e948bafce7c >}} ## 起動 ``` $ docker-compose up -d ``` 起動後に、http://で接続 ## 使い方 数多くのサービスがあるのでFlickrの一例で、birdと言うキーワードの写真をFlickrからRSS化する場合の設定です {{< imgur id="XTpwfgp" >}} 1. Flickr Bridgeの`Show more`を開く 2. Keywordに追跡したいキーワードを入力 3. Atomボタンをクリック 4. XMLが作成された画面が表示されるので、そのURLをコピーし、RSSリーダーへ登録 ### 注意事項 これらのサービスは、ログインする事なく取得が可能なので、今後、対策される場合があるので、必ずしも使い続けられるものではないです。 また、サーバーを構築したら、踏み台にされる可能性があり危険なので、アクセス制限したりして対策をしておきましょう。 -------------------------------------------------------------------------------- title: "RSSアグリゲーターをttrssからFreshRSSへ変更した" date: "2022-03-08" url: https://scribble.washo3.com/docker-freshrss/ -------------------------------------------------------------------------------- 約3年間ほど、tinytinyRSSことttrssをDockerにて運用してきました。 今でも何ら不具合はないのですが、docker-composeで更新する際に、mercuryやopenccなどの依存関連も考慮しなくてはならないので、今現在では、FreshRSSの方がシンプル構成で、評判も良いし、MacアプリのReeder5でもFreeRSSがサポートされた事もあり、RSSアグリゲーターを変更しました。 ## FreshRSS ### 必要なファイル docker環境は構築されているものとして進めます docker-compose.ymlと.envファイルを作成します {{< gist washo 82ee09618518867e8ceebe3d6a7cae97 >}} 実運用する場合は、.env内のパスワードやポートは適宜変更の事 ### 起動から設定まで 起動は、そのまま`docker-compose up -d`で起動します。 その後、指定のポート(http://ip:8080)にてアクセス - 言語設定で日本語選択 - 環境確認 - データベース設定 - 型をPostgreSQLに設定し、ホスト名を入力 ホスト名は、docker-compose.yml内のhostname(freshrss-db)なので注意! - .envで設定したDB名、ユーザ、パスワードを入力 (Postgresqlで失敗する場合は、sqlightだとすんなりいくかと) - 一般設定でユーザ名とパスードを設定 - 完了し、ログイン出来るか確認 ### ttrssからマイグレーション ttrssでOPMLにてエクスポートしたファイルを、freshrss側でインポートしてあげれば、そのまま購読記事が反映されました 但し、未読・既読記事、お気に入りの記事は反映されなかったです ### iPhone/iPadからの接続 Reederがfreshrssに対応しましたが、結局のところ、feverAPIを利用することには変わりありません 設定に関しては、こちらの記事を参考にされた方が確かですね。 **いつもハマる点** - FeverAPIを有効にパスワード設定を行う - 接続先は、https://mydomain/api/fever.php - Feverのログイン名の箇所は、`Email`となっているが、ここはログイン名だけ ## 総評 ttrssからFreshrssへ変更した事で、若干、動機速度が早くなったような気がしますが、Reederで接続してる分には、ほぼ変わりない使用感でしたので、無理に変更する必要はなかったです。 直接、WEB上での使用は、ttrssのショートカットキーを覚えていたので使い勝手は良かったですが、ここは慣れの問題かもしれません。 ttrssは停止しているだけで、いつでも直ぐに起動させることが出来るので、しばらくFreshRSSを使ってみようと思います -------------------------------------------------------------------------------- title: "NitterをDockerで構築" date: "2022-03-04" url: https://scribble.washo3.com/docker-nitter/ -------------------------------------------------------------------------------- Nitterとは、TwitterのWebクライアントで、 - Twitterにアカウントがなくても閲覧できる - Twitterにログインする事なく閲覧できる - 広告が入らない - 目的のユーザやキーワードのタイムラインをRSS化できる 今回、Dockerにて自前で構築しますが、Nitterは公式やインスタンスがあり、そちらを利用すれば良いので、無理に構築する必要はないです ### Nitter公式 ### Nitter インスタンス ## Dockerにて構築 以前の記事で記載したリポジトリでは、nitter.confが見つからないエラーで起動しなくなったので、修正しました ### Clone the repo ```bash $ git clone --depth 1 https://github.com/zedeus/nitter.git ``` ### Configure nitter ```bash $ cp nitter.example.conf nitter.conf ``` nitter.conf内を修正 `nitter.conf` ファイル内の `redisHost` を `nitter-redis` へ変更修正 ### docker-compose setup {{< gist washo e55100ef90a10a7ad6cd1a72966878a4 >}} `docker-compose up -d` で起動します ### 接続とRSS化 起動が完了したら、`http://localhost:8082`へ接続しユーザー名を入力もしくは上部の虫眼鏡アイコンにてキーワード検索するとヒットしたツイートが表示されます。 RSS化するには、上部のRSSフィードアイコンをクリックすると、RSS用のXMLファイルが作成されるので、そのURLをRSSリーダーへ登録すると、RSS購読記事として反映されます -------------------------------------------------------------------------------- title: "DockerでpostfixにてSMTP送信テスト" date: "2022-03-04" url: https://scribble.washo3.com/docker-postfix-mailhog/ -------------------------------------------------------------------------------- Dockerコンテナ内でSMTP送信をしたい状況があったので、mailhogを利用して試した。 ほぼ、こちら↑の記事を参考にさせていただきました ## 変更した点 - Dockerfileのイメージを`almalinux`へ変更 centos8ではEOLが過ぎてパッケージ取得でエラーが出たため - docker-compose.ymlに`privileged: true`を追加 cap-addでも起動は出来たが、エラーが出てたため {{< gist washo baef44c944feaa3c8891717a9d32f98e >}} ## 送信テスト - 起動完了したら、Dockerコンテナ内にて25番ポートでpostfixで送信できるか確認。 - relayhostでmaihogの1025番が使われてるので、実際の宛先に送信されるわけではないので安心 - ホスト側だとそのまま1025番ポートで送信できる ```bash # telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 0d95f56f386c.example.com ESMTP Postfix mail from: 250 2.1.0 Ok rcpt to: 250 2.1.5 Ok data 354 End data with . subject: mail testing it is testing . 250 2.0.0 Ok: queued as 367DF26008A ``` Dockerコンテナから抜け、ホスト側のブラウザにて、`http://localhost:8025`へアクセスし、メールが届いていればOK -------------------------------------------------------------------------------- title: "MinioをDockerで試す" date: "2022-03-04" url: https://scribble.washo3.com/docker-minio/ -------------------------------------------------------------------------------- minioはAmazon S3互換のオブジェクトストレージです Mac/Windows/Linuxなどのプラットフォームでも提供されていますが、ちょっと試すにはDockerが便利なので、docker-composeで構築します {{< gist washo 9572b57208ed1240448e244c3f47b6f6 >}} `docker-compose up -d`で起動したら、 1. ブラウザで`http://localhost:9000`へ接続 2. admin/passwordでログイン 3. `Create Bucket`でバケット作成 4. ファイル・フォルダをアップロード Amazon S3と全く同じインタフェースなのでAWS-CLIも利用できますが、minioを接続するには、`--endpoint-url `を指定する必要があります。 Amazon S3は従量課金なので、minioをセルフホスティングすれば無料で利用できますね。 -------------------------------------------------------------------------------- title: "ログファイルからIPアドレスを抽出" date: "2022-02-10" url: https://scribble.washo3.com/find-ip-use-grep/ -------------------------------------------------------------------------------- ログファイルと言っても、様々な形式があるので、同様の結果が得られるとは限りませんので、あくまでも参考程度にて。 今回は、dnsmasq のログファイルから、自サブネットの IP アドレスを抽出します ## dnsmasq のログ ```bash Jan 25 05:45:04 dnsmasq[1]: query[A] firestore.googleapis.com from 192.168.1.43 Jan 25 05:45:04 dnsmasq[1]: cached firestore.googleapis.com is 142.250.196.106 Jan 25 05:45:04 dnsmasq[1]: query[AAAA] firestore.googleapis.com from 192.168.1.43 Jan 25 05:45:04 dnsmasq[1]: cached firestore.googleapis.com is 2404:6800:4004:827::200a Jan 25 05:45:04 dnsmasq[1]: reply easylist-downloads.adblockplus.org is 65.21.35.75 Jan 25 05:45:04 dnsmasq[1]: reply easylist-downloads.adblockplus.org is 136.243.9.187 Jan 25 05:45:04 dnsmasq[1]: reply easylist-downloads.adblockplus.org is 141.95.40.123 Jan 25 05:45:04 dnsmasq[1]: reply easylist-downloads.adblockplus.org is 51.255.232.90 Jan 25 05:45:04 dnsmasq[1]: reply easylist-downloads.adblockplus.org is 95.216.77.130 Jan 25 05:45:04 dnsmasq[1]: reply easylist-downloads.adblockplus.org is 95.217.32.92 Jan 25 05:45:05 dnsmasq[1]: query[A] firestore.googleapis.com from 192.168.1.43 Jan 25 05:45:05 dnsmasq[1]: cached firestore.googleapis.com is 142.250.196.106 Jan 25 05:45:05 dnsmasq[1]: query[AAAA] firestore.googleapis.com from 192.168.1.43 - ``` ## IP アドレスだけ抽出 この中から、192.168.1.\*の IP アドレスだけ抽出する ```bash $ grep -Eo '192\.168\.1\.[0-9]{1,3}' dnsmasq.log 192.168.1.5 192.168.1.5 192.168.1.60 192.168.1.60 192.168.1.60 192.168.1.60 192.168.1.60 192.168.1.63 192.168.1.63 192.168.1.63 192.168.1.63 192.168.1.63 - ``` ## 重複した IP アドレスを削除 同じアドレスが複数表示されるので、重複を削除する ```bash $ grep -Eo '192\.168\.1\.[0-9]{1,3}' dnsmasq.log | sort -u 192.168.1.153 192.168.1.18 192.168.1.19 192.168.1.233 192.168.1.30 192.168.1.40 192.168.1.43 192.168.1.44 192.168.1.47 192.168.1.49 192.168.1.5 192.168.1.50 - ``` ## 読みやすいように整形(最終形) 4 オクテット目の最初の一文字の数字だけでソートされているため、わかりやすい数字順に並び替えたい ```bash $ grep -Eo '192\.168\.1\.[0-9]{1,3}' dnsmasq.log | sort -uV 192.168.1.1 192.168.1.5 192.168.1.10 192.168.1.18 192.168.1.19 192.168.1.30 192.168.1.40 - ``` ## ファイルへ保存 ここまでは標準出力なので、必要であれば実行結果をファイルへ保存しましょう ```bash $ grep -Eo '192\.168\.1\.[0-9]{1,3}' dnsmasq.log | sort -uV -o ip.txt ``` -------------------------------------------------------------------------------- title: "Macでキーリピートが効かない" date: "2022-02-10" url: https://scribble.washo3.com/mac-keyrepeat/ -------------------------------------------------------------------------------- Mac の U.S.キーボードを利用している時に、キー長押しによるキーリピートが効かないので解決したメモです ## 環境 - MacBook Pro (M1) - macOS Monterey - KeyChron K2 ## 症状 - iTerm やターミナル上では、問題なくキーリピートが効いている - Vim 上でも hljk のキーリピートも効いている - 矢印のキーリピートは効いている Growi の Vim 編集画面や、ウェブ上のフォーム入力では、キーリピートが効かず、候補一覧が表示される ![](https://i.imgur.com/A6mHFsx.png) ちなみに、キーボード設定の`キーのリピートを一番速い`、`リピート入力認識までの時間を一番短い`に設定しています ## 解決方法 ```bash defaults write -g ApplePressAndHoldEnabled -bool true ``` ### 別の解決方法 実は、これ U.S.キーボード設定を行なった際に、入力ソースに`U.S.`を追加している影響でもあります ![](https://i.imgur.com/xHtOzKY.png) 日本語入力の入力モードで英字にチェックを入れ、U.S.を削除するだけでも同じ効果が適用されます ![](https://i.imgur.com/S5sxDfz.png) -------------------------------------------------------------------------------- title: "[2022年版]ZshとNeoVimの設定見直し" date: "2022-01-19" url: https://scribble.washo3.com/zsh-neovim-2022/ -------------------------------------------------------------------------------- 古くから、 Linux等でZshのシェルを愛用してて、最近ではfishに浮気する事もありましたが、久々に設定ファイルを見直してみた。 共通の設定ファイル(dotfile)をGitHubで管理してましたが、何と最終更新日が約10年前になってました。(@_@) 設定ファイルもかなり古く、様々な補助ツールやプラグインも変化があるので、一から見直しました。 下記の記事は、Linux(Debian11)とApple M1(Monterey)の環境で、Zsh+zinitとNeoVim+vim-plugを構築します ## 準備 Redhat系のCentOSでも利用可能ですが、zshのバージョンが古かったり、パッケージ導入がyum・dnf未対応なものが多いので、Debian11の環境で進めます ### 必要なパッケージ導入(Debian) ```bash $ sudo apt update $ sudo apt -y install curl git zsh neovim peco ripgrep bat ``` Macの場合は、Homebrewで`apt`を`brew`コマンドで同様のパッケージを導入し、coreutilsを加えておく。 また、sudoである必要はない ``` ## Homebrew for Mac $ brew install curl git zsh neovim peco ripgrep bat coreutils ``` ## Zsh zsh周りでは、zinit,peco,fzf,powerlevel10kを利用していきます ### Zinit 2022/10に[公式](https://github.com/zdharma-continuum/zinit#install)の場所が変更されたため、インストール方法を修正しました。 ```bash $ zsh $ bash -c "$(curl --fail --show-error --silent --location https://raw.githubusercontent.com/zdharma-continuum/zinit/HEAD/scripts/install.sh)" $ source ~/.zshrc $ zinit self-update ``` もし、zinitで失敗する場合は、下記の記事を参照 ### fzf Install ```bash $ git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf $ ~/.fzf/install ``` ### Powerlevel10k ```bash $ git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/powerlevel10k ``` ### .zshrc 作成済の.zshrcを下記の内容に置き換え ただし、まだ初期段階であるため、設定間違いや不足な点があるかもしれません {{< gist washo 3da9203d63caf29d5c8a3f06c1edf9e2 >}} ### zsh設定有効化 .zshrcを置き換えたら、設定を再読み込みし、有効化 ```shell $ source ~/.zshrc ``` もし、ここでエラーが出るようでしたら、.zshrcを削除してください .zshrcが存在しない場合は、`/etc/zsh/zshrc`が読み込まれますし、`/usr/share/doc/zsh-common/examples/zshrc`からコピーしても良いでしょう。 ## Neovim フォルダ作成 ```bash mkdir -p ~/.config/nvim/plugged ``` ## vim-plug ```jsx sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' ``` ### init.vim 下記のinit.vimを`~/.config/nvim/init.vim`として置く {{< gist washo ac95d6fb8fd2d5fbfece212bb92262f7>}} Neovim(nvim)を起動し、`:PlugInstall`でinit.vim内で定義したプラグインがインストールされます ## 備考 .zshrcでは、一つのファイルに全て明記したので、あまりスマートではないため、各設定を別ファイルに分けて読み込んだ方が管理しやすいと思うので、今後に検討したいと思ってます。 私の場合、Dropboxは使わないですが、ResillioSyncで同期ディレクトリを作成し、その中でGit管理し、.zshrcをシンボリックリンク張ってます。 このようにする事で、どの端末でも最新の.zshrcが読み込まれる事になるので管理が楽になります 今回は、文章が長くなったので、.zshrcで定義した使い方の記事を予定しておきます -------------------------------------------------------------------------------- title: "資産管理のOSS Snipe-ITをDockerで" date: "2022-01-18" url: https://scribble.washo3.com/snipeit-docker/ -------------------------------------------------------------------------------- ソフトウェアのライセンス管理や自宅の家電や資産を管理したい思い、何か良いオープンソースがないのか探したところ、IT資産管理システムのSnipe-ITが見つかったので、早速導入してみた。 Dockerでの導入方法となります ## インストール・設定 ```bash $ git clone https://github.com/snipe/snipe-it.git ``` - .env.dockerを修正 ```diff APP_DEBUG=false # please regenerate the APP_KEY value by calling `docker-compose run --rm snipeit bash` and then `php artisan key:generate --show` and then copy paste the value here APP_KEY=base64:3ilviXqB9u6DX1NRcyWGJ+sjySF+H18CPDGb3+IVwMQ= APP_URL=http://localhost:8000 -APP_TIMEZONE='UTC' -APP_LOCALE=en +APP_TIMEZONE='Asia/Tokyo' +APP_LOCALE=ja ``` デフォルトでは8000番ポートが使われるので、変更する場合は、docker-compose.ymlのportsを変更しましょう ## 起動・接続 ```diff $ docker-compose up -d ``` 問題なく起動できたら、`http://localhost:8000`で接続 ![Untitled](https://i.imgur.com/KHkMu4z.png) このような画面が表示される Email欄のSend Testで成功するか確認します。 (mailhogも立ち上がっているので、ほぼ成功するかと) `Next: Create Database Tables`をクリック `Next:Create User`をクリック ![Untitled](https://i.imgur.com/IiXYGdu.png) 右のオレンジバーが必須項目なので、適当に入力し、完了 あとは、新規作成しデータを入力していくだけです 設定欄を見ると、二段階認証やSlack連携、LDAP,SAML,OAuth認証もサポートしているようです ## 使用感 試したみた感想として、登録項目が多岐に渡り、職場等でも実用になるくらい高機能な感じ。 メンテナンス履歴管理機能では、HDDや家庭内のフィルター交換時期などを登録しておくと便利かもしれません。 自宅で資産管理するには、ここまで機能は必要ないので、結局は、NotionかVaultwarden(Bitwarden)で十分なような気がしてます ## その他 ### APP_KEYを再作成 外部公開にする場合等は、APP_KEYを変更しておきましょう。 - snipe-itのコンテナに入り下記コマンドを実行 ```diff $ docker exec -it snipe-it /bin/bash # php artisan key:generate --show base64:fIbC/i31OpEVWL3FhA7nr+hX1BVwzXZ0wrvzP3dj87U= # exit ``` `base64:fIbC....`欄をメモっておきます - .env.dockerを修正 APP_KEY欄の値を入れ替える ```diff APP_KEY=base64:fIbC/i31OpEVWL3FhA7nr+hX1BVwzXZ0wrvzP3dj87U= ``` ### 外部からアクセス可能にする - .env.dockerのAPP_URL欄を修正 localhostをFQDNかIPへ変更 ```diff - APP_URL=http://localhost:8000 + APP_URL=http://example.com ``` -------------------------------------------------------------------------------- title: "Debian10から11へのアップグレード" date: "2022-01-17" url: https://scribble.washo3.com/debian10to11-upgrade/ -------------------------------------------------------------------------------- Debianのアップグレードは何度か記事にしてますが、バージョンによって微妙に更新方法が違ってくるので、毎回別記事になってしまいます。 今回は、Debian10(buster)から11(bullseye)への更新方法になります。 ## 確認 ```bash $ cat /etc/debian_version 10.11 ``` ## パッケージ更新 ```bash $ sudo apt update $ sudo apt upgrade $ sudo apt dist-upgrade $ sudo apt autoremove ``` ## ソースリスト更新 (busterからbullseye) 変更点があるので、今までのようにsources.listを`buster`から`bullseye`へ変更しただけでは上手くいかないので注意してください。 non-freeを追加し、日本ミラーサイト(riken)へ変更したsources.list(/etc/apt/sources.list) ``` deb http://ftp.riken.jp/Linux/debian/debian/ bullseye main non-free deb-src http://ftp.riken.jp/Linux/debian/debian/ bullseye main non-free deb http://security.debian.org/debian-security bullseye-security main non-free deb-src http://security.debian.org/debian-security bullseye-security main non-free # buster-updates, previously known as 'volatile' deb http://ftp.riken.jp/Linux/debian/debian/ bullseye-updates main non-free deb-src http://ftp.riken.jp/Linux/debian/debian/ bullseye-updates main non-free ``` ## アップグレード ```bash $ sudo apt update $ sudo apt upgrade --without-new-pkgs $ sudo apt full-upgrade ``` 更新が無事に完了したら、再起動 ```bash $ sudo systemctl reboot ``` ## クリーンアップ ```bash $ sudo apt autoremove $ sudo apt autoclean ``` ### 余談 2023年には、Debian12(bookworm)がリリース予定ですが、現時点でsources.listを`bullseye`から`bookworm`へ変更するだけで更新可能となってます。 興味ある方は、自己責任で利用してみてはいかが。 -------------------------------------------------------------------------------- title: "Centos7/8にzsh5.9を手動インストール" date: "2022-01-17" url: https://scribble.washo3.com/centos-zsh58/ -------------------------------------------------------------------------------- CentOS7/8のzshが古いので現段階での最新版5.9を手動にてインストール ## 導入準備 wgetやmakeコマンドを使うので、開発者ツールをインストールしておく ```bash $ export LANG=C $ sudo yum groupinstall "Development Tools" $ sudo yum install ncurses-devel ``` ## ダウンロード・インストール /usr/bin/zsh,/bin/zshがすでに存在するので、/usr/localへインストールする ```bash $ wget https://jaist.dl.sourceforge.net/project/zsh/zsh/5.9/zsh-5.9.tar.xz $ tar xf zsh-5.9.tar.xz $ cd zsh-5.9 $ ./configure --prefix=/usr/local --enable-multibyte $ make $ sudo make install ``` /etc/shellsへ追記 ```bash # echo /usr/local/bin/zsh >> /etc/shells ``` あとは、`chsh`コマンドで`/usr/local/bin/zsh`へ変更 ちなみに、LDAPユーザーの場合は少し修正が必要です [LDAPシェルを別のシェルで上書き]({{< ref "ldap-override-shell.md" >}}) ### PATH システム全体で、優先的に/usr/local/bin内のプログラムを利用したい場合は、/etc/init.d/functions内のPATHを変更しましょう ```diff -PATH="/sbin:/usr/sbin:/bin:/usr/bin" +PATH="/usr/local/bin:/sbin:/usr/sbin:/bin:/usr/bin" export PATH ``` -------------------------------------------------------------------------------- title: "LDAPシェルを別のシェルで上書き" date: "2022-01-17" url: https://scribble.washo3.com/ldap-override-shell/ -------------------------------------------------------------------------------- 特定のLDAPクライアント機で、LDAPサーバーに定義されたシェル(bash)ではなく、違うシェルを使用したい場合があります Linux(Debian/CentOS)のクライアントでシェルを上書きする設定を行うことで可能となる ## Debian11(bullseye) /etc/libnss-ldap.confに下記を追記 (シェルのパスは調べておくこと) ```bash nss_override_attribute_value loginShell /usr/bin/zsh ``` nscdキャッシュをフラッシュ ```bash # nscd -i passwd nscd ``` ## CentOS8 /etc/nslcd.confに下記を追記 ```bash map passwd loginShell "/usr/bin/zsh" ``` nslcd再起動 ```bash # systemctl restart nslcd ``` ### 補足 ほとんどのLinux機にてzshを利用する事が多いのですが、未だにLinuxインストール時のデフォルトではzshはインストールされないので、LDAP認証でログインはbashにしておいた方が無難です -------------------------------------------------------------------------------- title: "Datadogを利用開始" date: "2021-12-21" url: https://scribble.washo3.com/datadog-startup/ -------------------------------------------------------------------------------- いわゆるSaaS型運用監視サービスです Datadogを利用できる環境に出来たので、Zabbixサーバーから移行しようかと思ってます。 ZabbixサーバーがDatadogのサービスで、zabbix-agentがdatadog-agentに代わるだけなので、Zabbixを利用している方であれば、仕組みが把握出来るかと思います。 Datagog側でアカウント登録して利用できるようにしておき、各プラットフォームの端末にDatadog-agentを導入し、起動させれば、あっという間に、可視化された綺麗なグラフが閲覧できるようになります。 datadog-agentのインストールに関しては、様々なプラットフォームが用意されていますが、大半は、CentOSやDebianのLinuxで稼働させる事が多いのではないでしょうか。 ほぼ、ワンライナーのコマンドでインストールも簡単に行えます 何より、日本語のドキュメントが充実してるのは利用者にとって有り難いですね。 Zabbixは所内で稼働ですが、Datadogはオンプレなので社外となるため、社内のコンプライアンスやインシデントに留意する必要があるかもしれません。(実は、ここが一番の難関かも??) とりあえず、Agentからの情報をDatadog側で閲覧出来るところまで確認できたので、今後は、アラート通知やログ監視を行ってみたいと思います。 -------------------------------------------------------------------------------- title: "Docker runコマンドをdocker-compose形式に変換" date: "2021-12-20" url: https://scribble.washo3.com/composerize/ -------------------------------------------------------------------------------- [DockerHub](https://hub.docker.com)を利用していると、`docker run …`して起動してね!みたいな書式が書いてありますよね。 それで、この`docker run …`をdocker-composeへ組み込みたい事が多々あります。 docker-compose書式のYAMLやTOMLに慣れている方は、まず、version書いてサービス名記載して、サービス内容を書いていけば良いのですが、インデント合わせたりと、やっぱり面倒なんですよね。 そんな時には、この書式に変換してくれる便利なサービスやプログラムが公開されています。 ## [composerize.com](https://www.composerize.com/) オンラインサービスなので、ブラウザさえあれば、どこでも変換できて便利なサービスです フォームにdocker runコマンドを記入するだけで、Output欄へ即座に変換されます ## Github [composerize](https://github.com/magicmark/composerize) こちらは、composerizeのプログラムがGithubで公開されてますので、自前で変換したい方は、ビルドし、実行ファイルを作成することで、オフラインでも作業できます -------------------------------------------------------------------------------- title: "さくらのVPS+Docker+Freenomでメールサーバー構築(セキュリティ編)" date: "2021-08-30" url: https://scribble.washo3.com/docker-mailserver-security/ -------------------------------------------------------------------------------- [さくらのVPS+Docker+Freenomでメールサーバー構築]( {{< ref "docker-mailserver.md" >}})の続きで、少しばかりセキュリティ強化してみます dockerで前回のサーバを起動していれば、停止しておきます ``` $ docker-compose down ``` ## imap,submissionを閉じる 前回記事にて、imaps,smtpsの通信が確認出来ているので、imapとsubmissionを閉じます docker-compose.yml (変更箇所のみ記載) ``` # - "143:143" # IMAP4 (explicit TLS => STARTTLS) # - "587:587" # ESMTP (explicit TLS => STARTTLS) ``` ## mailserver.env 今回利用している[docker-mailserver](https://github.com/docker-mailserver/docker-mailserver)では、Amabis、Spamassasin ,Postgey ,Fail2banなど、この他にも数々のセキュリティに関するパッケージが含まれており、デフォルトでは、これらが無効になっているため、有効にしてみます これらに関する環境設定は、docker-compose.yml内でmailserver.envを読みに行くようになっているので、mailserver.envを編集します ```diff 29c29 < ONE_DIR=0 --- > ONE_DIR=1 82c82 < ENABLE_CLAMAV=0 --- > ENABLE_CLAMAV=1 99c99 < ENABLE_FAIL2BAN=0 --- > ENABLE_FAIL2BAN=1 126c126 < SSL_TYPE= --- > SSL_TYPE=letsencrypt 234c234 < ENABLE_SPAMASSASSIN=0 --- > ENABLE_SPAMASSASSIN=1 338c338 < ENABLE_POSTGREY=0 --- > ENABLE_POSTGREY=1 ``` 今回は、spamassassin,clamav,fail2ban,postgrey,letsencryptを有効にします 注意事項として、fail2banを有効したら、docker-compose.ymlにcap_add項目を追記してねって記載されていますが、デフォルトのdocker-compose.ymlはすでに明記されているので、確認のみ ```diff # If you enable Fail2Ban, don't forget to add the following lines to your `docker-compose.yml`: # cap_add: # - NET_ADMIN ``` ## docker-mailserver実行 ``` $ docker-compose up -d ``` ### 送信確認 このサーバから外部へメールを送信し、外部で受信したメールの詳細を見てみます ```java Authentication-Results: mx.google.com; dkim=pass header.i=@example.com header.s=mail header.b=C63+umjQ; spf=neutral (google.com: 11.22.33.44 is neither permitted nor denied by best guess record for domain of luca@example.com) smtp.mailfrom=luca@example.com X-Virus-Scanned: Yes Message-ID: <58537768-c77f-dd1e-86e5-974bbde830bd@example.com> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=example.com; s=mail; t=1629964527; bh=pL1ua6FIYyAoJ8aaVxx8tGucm6c4TPztQ6rqOsE2j/w=; h=To:From:Subject; b=C63+umjQRGivlaHV5GV7c7HjHUmwXhgvvXS8C6GDcW487VdgX/9gpaa/Fw73dW3vu QZZJbkIG79fQZbQQjrOeOkZYOE+DEsaFWQoQeHbCVevDLlrL5NbKtEqhiU/wuE68v8 … ``` DKIMもAmavis(X-Virus-Scanned)の動作も確認出来てますね ### 受信テスト 外部から、このメールアドレス(luca@example.com)へ送信し、このサーバで受信したメールを確認 ```java X-Virus-Scanned: Yes X-Spam-Flag: NO X-Spam-Score: 2.038 X-Spam-Level: ** X-Spam-Status: No, score=2.038 tagged_above=2 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, PYZOR_CHECK=1.985, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001] autolearn=no autolearn_force=no … ``` AmavisによるウィルススキャンもSpamassasinによるスパムチェックも行われている事を確認 ## その他 含まれているサービスは下記の通りになりますが、LDAP認証も出来るようなので、かなり完成度は高いですね ``` Postfix with SMTP or LDAP auth Dovecot for SASL, IMAP (or POP3), with LDAP Auth, Sieve and quotas Amavis SpamAssassin supporting custom rules ClamAV with automatic updates OpenDKIM OpenDMARC Fail2ban Fetchmail Postscreen Postgrey LetsEncrypt and self-signed certificates Setup script to easily configure and maintain your mailserver Basic Sieve support using dovecot SASLauthd with LDAP auth Persistent data and state CI/CD Extension Delimiters (you+extension@example.com go to you@example.com) ``` ちなみに、今回試験したさくらのVPSではメモリが2GBだったので、足りるか心配でしたが、Docker内での消費メモリを調べてみたら、約1GBとなっておりました。 メール負荷がほとんどない状態でしたので、もしかすると、AmavisやSpamassasinが動き出すと、もっとメモリを消費するかもしれませんね。 -------------------------------------------------------------------------------- title: "さくらのVPS+Docker+Freenomでメールサーバー構築" date: "2021-08-30" url: https://scribble.washo3.com/docker-mailserver/ -------------------------------------------------------------------------------- ## TL;DR さくらのVPS上にてDockerでメールサーバーを構築してみた Freenomのドメイン登録やCloudflareの使い方に関しては割愛させていただきます - Linux(Debian10) - すでにDockerは導入済みとする - Freenomからドメイン名を取得し、Cloudflare等のDNSに登録済みとする Freenom : example.com (仮名) - さくらのVPS:11.22.33.44 (仮IP) 今回のサーバ構築に当たり、下記のサイトを参照させていただきました ## Cloudflare: まずは、メールで利用する独自ドメインの登録とMXの登録を行います 登録の際は、DNSオンリーにし、Cloudflareのプロキシーを通さない事 | タイプ | Name | コンテンツ | | ------ | ----------- | ------------------------------- | | A | mail | 11.22.33.44 | | A | example.com | 11.22.33.44 | | MX | example.com | mail.example.com | | TXT | mail | v=spf1 +a +mx +ip4:11.22.33.44 | ## Mailserver on Docker 必要なファイルをダウンロード ```bash $ git clone https://github.com/docker-mailserver/docker-mailserver.git $ cd docker-mailserver ``` ### docker-compose.ymlの編集 下記の箇所を自分の環境に合わせる ``` hostname: # <-- CHANGE THIS domainname: # <-- CHANGE THIS ``` ``` hostname: mail domainname: example.com ``` ### アカウント作成 一つのユーザアカウントとpostmasterを作成 ついでにdkimも作成しておいた ```bash $ ./setup.sh email add luca@example.com password $ ./setup.sh alias add postmaster@example.com luca@example.com $ ./setup.sh config dkim Creating DKIM private key /tmp/docker-mailserver/opendkim/keys/example.com/mail.private Creating DKIM KeyTable Creating DKIM SigningTable ``` ### 起動と初期設定 ```bash $ docker-compose up -d ``` ## 送受信確認 Thunderbird等のメールクライアントで接続確認 {{< imgur id="8dkcA9j.png" >}} 証明書が有効になっていないため、セキュリティの警告が出るので、`セキュリティ例外の承認`をして進める 自動検出だと、 ``` 受信が143番 STARTTLS:通常のパスワード認証 送信のSMTPが587番 STARTTLS:通常のパスワード認証 ``` Gmailへ送信、Gmailからluca@example.comへ受信を確認 (なお、送信の際には再度セキュリティ警告が出て失敗するので、`セキュリティ例外の承認`を押して再送信を試みる) ここまでで、送受信が確認出来れば最低限のメールサーバ構築の完了です ---- ### ポートを変更してみる なるべくだと、SSL関連のポートを利用したいので、ポート変更して接続確認してみる imap(143)をimaps(993) smtp(587)をsmtps(465) ともに、セキュリティ設定でSTARTTLSからSSL/TLSへ変更 これらも、証明書を有効になっていないので、セキュリティの警告が出るので、`セキュリティ例外の承認`をして、再度、送受信を行う ここまで、正常に送受信が確認できたら、ほぼ初期設定のままでセキュリティが甘いので、立ち下げる (メールの送受信データは残っているので、downでOK) ```bash $ docker-compose down ``` ### DKIM登録 config/opendkim/keys/example.com/mail.txtの内容を元にDNSのTXTレコードへ登録する mail.txtの中身 ```bash mail._domainkey IN TXT ( "v=DKIM1; h=sha256; k=rsa; " "p=MIICIjANxxxxxxx" ) ; ----- DKIM key mail for example.com ``` - CloudflareへTXT レコード追加 | タイプ | Name | コンテンツ | | ------ | --------------- | ------------------------------------------- | | TXT | mail._domainkey | v=DKIM1; h=sha256; k=rsa; p=MIICIjANxxxxxxx | コンテンツでは、`""`は全て削除し、1行で記述すること ついでに、adspとdmarcも登録する ``` TXT _dmarc v=DMARC1;p=none TXT _adsp.+domainkey dkim=unkonwn ``` DNSに反映されるまで、しばらく待ち、下記のサイトで正確にDKIM等が設定されていることを確認します 独自ドメイン取得やDNSの設定作業が意外に手間かかりますが、その準備が整えば、Dockerを使える環境で簡単にメールサーバが構築出来ることが確認できました。 家族や自分だけのメールサーバだと十分過ぎるほどの機能ですが、職場等で実用化するには細かい設定や冗長化等を考えると何となくリスクがあるような感じはします。 -------------------------------------------------------------------------------- title: "HugoのテーマTranquilpeakを0.4から0.5へ更新" date: "2021-08-17" url: https://scribble.washo3.com/tranquilpeak-05b-update/ -------------------------------------------------------------------------------- 某所にて、運用しているHugoのTranquilpeakテーマを0.4.xから0.5.xへアップデートした 0.5BETAからは、いくつかの修正箇所が必要となったので、メモ ## 現状のTranquilpeak テーマはsubmoduleで管理していて、0.4.xを利用していました ```bash $ pwd ~/hugo/tranquilpeak $ git submodule status e1d2c5d5cb1efb687ed698782f99df576e7db084 themes/tranquilpeak (0.4.8-BETA) ``` ## 0.5-BETAへ更新 ```bash $ git submodule update --remote remote: Enumerating objects: 496, done. remote: Counting objects: 100% (493/493), done. remote: Compressing objects: 100% (164/164), done. remote: Total 496 (delta 308), reused 472 (delta 296), pack-reused 3 Receiving objects: 100% (496/496), 214.68 KiB | 7.95 MiB/s, done. Resolving deltas: 100% (308/308), completed with 90 local objects. From https://github.com/kakawait/hugo-tranquilpeak-theme e1d2c5d..37550aa master -> origin/master + 4243bcf...8223447 develop -> origin/develop (forced update) * [new branch] fix-fancybox-3-data-model -> origin/fix-fancybox-3-data-model a065336..902f360 gh-pages -> origin/gh-pages * [new tag] 0.5.0-BETA -> 0.5.0-BETA Submodule path 'themes/tranquilpeak': checked out '37550aa165eec033e34f2e0f89cb0720d72a4c34' ``` ## 変更点・要点 - トップに記事を表示させるには、mainSectionを明示する必要がある (post内の一覧をトップに表示させていたので、mainSectionを記入しないと表示されなかった) - highlight,jQery,prism,font-awesomeがそれぞれバージョンアップしているので、`[[params.customJS]]`でCDNのURLを読み込む記述が必要 - font-awesomeが4から5へ上がった事により記述が変更になった (v5記述) - hugo0.87からtimezoneのパラメータが追加されたので、`timezone = "Asia/Tokyo"`を追記した (必須ではない、また、hugoを0.87以上に更新しておく必要がある) ## config.toml修正 手取り早いのは、themes/tranquilpeak/exampleSite内のconfig.tomlをコピーして、必要な箇所だけ変更すると良い ```bash $ mv config.toml config.toml.bak $ cp themes/tranquilpeak/exampleSite/config.toml . ``` 私の場合、変更点が多かったので、旧config.tomlとexampleSite内のconfig.tomlを比較しながら修正しました 変更点や修正点についての詳細はChange Logを見ることをお勧めします -------------------------------------------------------------------------------- title: "Growi 4.2以前から4.3へアップグレード" date: "2021-07-27" url: https://scribble.washo3.com/growi4.2to4.3up/ -------------------------------------------------------------------------------- ## TR;DR 下記の構成で、dockerでGrowiが稼働しているものとする | App | Version | | ------- | ------- | | Growi | 4.2.21 | | mongodb | 3.6 | Growi 4.3から、大幅な変更があるので、4.2以前から4.3へアップグレードする際は、公式の記事に目を通しておきましょう また、作業前に、必ずバックアップを取っておきましょう! ## mongodbをアップデート Growi 4.2.xまでは、mongodb 3.xでも動作可能でしたが4.3ではmongodb 4.4が要求されるので、mongodbのアップデートを行う必要があります mongodbを3.6->4.0->4.2->4.4の順でアップデートする作業を行う ```bash $ docker-compose stop ``` docker-compose.yml内の下記mongoバージョン指定を修正(3.6⇢4.0) ``` mongo: image: mongo:4.0 ``` ```bash $ docker-compose up -d $ docker exec -it growi_mongo_1 /bin/bash # mongo >db.adminCommand( { setFeatureCompatibilityVersion: "4.0" } ) #exit $ exit ``` この操作をmongoのバージョン箇所を変更して繰り返す。 (コンテナ名:growi_mongo_1は個人環境により違うので、適宜調べて変更の事) なお、バージョンアップ後、動作確認の上、不必要な旧mongodbのimageを削除しておく ## Dockerfile修正 現状のDockerfileをバックアップ取って、公式のGithubのDockerfileと入れ替える Dockerfileやdocker-compose.ymlを大幅に変更していなければ、git pullやgit cloneでも構わない ## 4.3.xへアップグレード `docker-compose stop`でGrowiを停止後、 mongodbが4.4であり、Dockerfileが最新であることを確認し、growi関連のイメージファイルを全削除(weseek/growi:4だけで良いかも) ``` $ docker rmi weseek/growi:4 ``` 再構築し、起動 ```bash $ docker-compose up -d --build ... Recreating growi_elasticsearch_1 ... error Starting growi_mariadb_1 ... done Starting growi_mongo_1 ... done 2b1e0073aa599ce405cb150a843cd26a50d7a428be4314c1 Recreating growi_hackmd_1 ... error ERROR: for growi_hackmd_1 no such image: sha256:9e2f64420f8260b1f3ebb61883e990838e95758c1e09ac0682ab0f8a4359ffe6: No such image: sha256:9e2f64420f8260b1f3ebb61883e990838e95758c1e09ac0682ab0f8a4359ffe6 ERROR: for elasticsearch no such image: sha256:e6e709e609d8bc902b1e0073aa599ce405cb150a843cd26a50d7a428be4314c1: No such image: sha256:e6e709e609d8bc902b1e0073aa599ce405cb150a843cd26a50d7a428be4314c1 ERROR: for hackmd no such image: sha256:9e2f64420f8260b1f3ebb61883e990838e95758c1e09ac0682ab0f8a4359ffe6: No such image: sha256:9e2f64420f8260b1f3ebb61883e990838e95758c1e09ac0682ab0f8a4359ffe6 ERROR: The image for the service you're trying to recreate has been removed. If you continue, volume data could be lost. Consider backing up your data before continuing. Continue with the new image? [yN]y ... Successfully tagged growi_app:latest growi_mariadb_1 is up-to-date growi_mongo_1 is up-to-date Recreating c591aa1f77f1_growi_elasticsearch_1 ... done Recreating c2df05b864c2_growi_hackmd_1 ... done Recreating growi_app_1 ... done ``` イメージを全削除した影響か、hackmdやelasticsearchが再構築されたが無事起動できた -------------------------------------------------------------------------------- title: "自宅サーバーが外部からForbiddenになる問題" date: "2021-07-16" url: https://scribble.washo3.com/nginx-proxy-forbidden/ -------------------------------------------------------------------------------- 我が家の自宅サーバー内で、nginx-proxyのDockerコンテナを複数運用していて、独自ドメインにて外部からのアクセスも可能にしています。 もちろん、WANとの光ルーターでは、80番と443番ポートを開放しており、外部からの疎通も確認できています。 このような環境で、不定期に外部からアクセスができない症状が発生しました ## 不具合症状 外部から不具合が出る場合は、下記のような`403 Fobidden`でアクセスが出来なくなります
XDA Developers forum "403 Forbidden"
自宅のローカル内では、問題なく接続が可能です ## 原因調査 自宅内のLANでは問題なく接続できて、外部から接続出来ないとなると、WANルーターを疑うのが妥当だと思います ちなみに、我が家のルーターはPR-400KIを使用しています 問題解決にあたり、ルーターを再起動してみると、外部からアクセス出来る事が確認できたため、ポート開放設定に問題があるわけではなさそうです 問題が発生した際に、毎回ルーターを再起動するのも得策ではありませんし、自宅外では作業ができません 更に、ルーター内の機能を調べていくと、ルーターの再起動を行わなくても、`UPnP NAT情報消去`の機能により改善することが判明しました ## 解決策 原因調査の結果、UPnP NAT情報が原因で接続出来ないようですので、ルーター内の設定(**詳細設定>高度な設定>UPnP設定**)で`UPnPを使用しない`へ設定したところ、これ以降、Forbiddenで外部から接続出来ない問題は発生しなくなりました。 私の環境のように自宅内にサーバーを構築して、外部とのやりとりを行うのでなければ、UPnPはゲームやAppleTV,IoTのホームデバイスで簡単に接続を利用できる機能なので、通常は使用した方が良いかと思います。 UPnPについては、下記の記事を参考にさせていただきました -------------------------------------------------------------------------------- title: "msmtpでGmailのSMTPでメール送信" date: "2021-05-13" url: https://scribble.washo3.com/msmtp-gmail/ -------------------------------------------------------------------------------- Debian10にmsmtpインストールし、GmailのSMTPサーバーでメール送信したい ## msmtp メールを送信するだけのホストではsSMTPをよく使っていましたが、Debian10ではssmtpのパッケージが存在しません。 替わりになるものがmsmtp ## msmtpのインストール ``` # apt install msmtp msmtp-mta ``` ## 設定 設定ファイルが/etcにないので、サンプルをコピー ``` # cp /usr/share/doc/msmtp/examples/msmtprc-system.example /etc/msmtprc ``` ちなみに、ユーザー単位の場合は ``` # cp /usr/share/doc/msmtp/examples/msmtprc-user.example ~/.msmtprc ``` ### 設定ファイルを編集 ```bash # Set default values for all following accounts. defaults auth on tls on tls_trust_file /etc/ssl/certs/ca-certificates.crt # gmail service account gmail host smtp.gmail.com port 587 from user@gmail.com user user@gmail.com password ****** # Set a default account account default : gmail ``` ### 送信テスト ```bash $ echo "hello world." | msmtp user@gmail.com msmtp: account default not found: no configuration file available ``` 設定ファイルに問題はないので、この場合は、パーミッションの問題 ```bash # chown root:msmtp /etc/msmtprc # chmod 640 /etc/msmtprc ``` この他に、下記のエラーが出る場合は、msmtprc内のhost欄をIPで設定 ```bash msmtp: account default from /etc/msmtprc: host not set ``` 再度、送信してみると、gmailの送信エラー ```bash $ echo "hello world." | msmtp user@gmail.com msmtp: authentication failed (method PLAIN) msmtp: server message: 534-5.7.9 Application-specific password required. Learn more at msmtp: server message: 534 5.7.9 https://support.google.com/mail/?p=InvalidSecondFactor c130sm1091555pfc.51 - gsmtp msmtp: could not send mail (account default from /etc/msmtprc) ``` 2段階認証を設定している場合、Googleアカウントへのアクセスにはアプリ専用のパスワードを設定する必要があるとの事(Application-specific password required) 2段階認証に設定していなければ、ここで送信が成功しているはずです。(この場合、下記は不要です) ## アプリパスワード生成 > アプリ パスワードを使用すると、2 段階認証プロセスに対応していないデバイス上のアプリから Google アカウントにログインできるようになります。このパスワードは一度入力すれば、以降は覚えておく必要はありません。 {{< imgur id="5l6udvA" >}} アプリパスワード欄をクリックし、`デバイス選択`の`その他`で任意の名前を入力 {{< imgur id="No16qB5" >}} 最後に生成を押すと、コードが発行されるので保存(**生成コードはそれぞれ違います**) ```bash rxgvdegplcmoxxxx ``` このコードをmsmtprcのpasswordに置き換えます (ユーザーのログインパスワードでなく、このコードがパスワードになる) これで、送信の際にエラーが出なくて、メールが届けば成功です -------------------------------------------------------------------------------- title: "Virtualboxが消えた??" date: "2021-05-12" url: https://scribble.washo3.com/virtualbox-disapeared/ -------------------------------------------------------------------------------- ## 不具合症状 Mac上のvagrantで、dockerコンテナでいくつかのサーバを稼働させているのですが、vagrantで起動したゲストOSが起動しなくなり、`vagrant ssh`でも`vagrant halt`も出来なくなった。 ```bash $ vagrant halt The provider 'virtualbox' that was requested to back the machine 'default' is reporting that it isn't usable on this system. The reason is shown below: Vagrant could not detect VirtualBox! Make sure VirtualBox is properly installed. Vagrant uses the `VBoxManage` binary that ships with VirtualBox, and requires this to be available on the PATH. If VirtualBox is installed, please find the `VBoxManage` binary and add it to the PATH environmental variable. ``` virtualboxが見つからない? 消えた? ## Virtualboxが消えた原因 おそらく、定期的にHomebrewで更新をかけたのが原因ではないかと推測。 `brew update;brew upgrade`でVirtualboxに更新があった場合に、アンインストールのスクリプトが実行され、インストールが正常にできなかったので、消失したままなのではないかと。 ### virtualboxを再インストールしてみる ```bash $ brew reinstall virtualbox ... (kernel) Kext org.virtualbox.kext.VBoxNetFlt did not stop (return code 0x5). (kernel) Kext org.virtualbox.kext.VBoxNetFlt can't unload - module stop returned 0xdc008017. Failed to unload org.virtualbox.kext.VBoxNetFlt - (libkern/kext) kext (kmod) start/stop routine failed. An error occurred durning 'sudo /sbin/kextunload -m org.virtualbox.kext.VBoxNetFlt', there should be a message above. (rc=3) unloading org.virtualbox.kext.VBoxDrv (kernel) Can't remove kext org.virtualbox.kext.VBoxDrv; services failed to terminate - 0xdc008018. Failed to unload org.virtualbox.kext.VBoxDrv - (libkern/kext) kext is in use or retained (cannot unload). ``` 再インストールも失敗してますね。 どうやら、VBox関連のプロセスが起動したままなのでインストール出来ないようです。 ### VBox関連のプロセスを停止 ```bash $ ps aux|grep VBox user 1053 4.9 16.9 10433224 5664640 ?? S 27 421 1198:10.06 /Applications/VirtualBox.app/Contents/MacOS/VBoxHeadless --comment vagrant_default_1617775585834_25189 --startvm 92f812c7-e002-4915-a44e-37f956c82adc --vrde config user 86410 0.2 0.0 4399028 792 s000 R+ 10:36AM 0:00.00 grep VBox user 925 0.0 0.1 4876816 18988 ?? S 27 421 15:23.36 /Applications/VirtualBox.app/Contents/MacOS/VBoxSVC --auto-shutdown user 923 0.0 0.0 4427532 11152 ?? S 27 421 2:34.08 /Applications/VirtualBox.app/Contents/MacOS/VBoxXPCOMIPCD ``` VBOX関連のプロセスが起動していたため、再インストールに失敗しているので、VBOX関連のプロセスをkill 上記の場合だと`kill 923 925 1053` この後、再度、Virtualboxをインストールしたところ、無事インストールが完了し、`vagrant up`で正常に起動した ## 補足 なんだかんだ、Virtualbox+vagrantは不具合に遭う機会が多いように感じます 今後もVirtualboxの更新が入ると、同症状の問題が起きる可能性が高いので、homebrewでvirtualboxを除外しておいた方が無難かもしれませんね。 ### 指定したフォーミュラを除外 ``` brew pin フォーミュラ名 ``` ### 除外を解除(元に戻す) ``` brew unpin フォーミュラ名 ``` ### 除外設定したフォーミュラの一覧表示 ``` brew list --pinned ``` -------------------------------------------------------------------------------- title: "HugoでSubmoduleのテーマ更新メモ" date: "2021-05-11" url: https://scribble.washo3.com/hugo-submodule-update/ -------------------------------------------------------------------------------- このサイトでは、Gitlab上にてHugoのBeautifulhuigoのテーマをsubmoduleで管理しています。 時々、本家submodueのテーマが更新されますが、gitのcloneやpushでは、submoduleは自動で更新されません なので、手動で更新してあげる必要があり、よく作業するので、メモっておきます ## 自分のリポジトリをクローン ```bash $ git clone --recurse-submodules --depth 1 https://gitlab.com/user/repo.git $ cd repo ``` ## submodule更新 実際作業するのは、`git submodule update --remote`だけで良いです ```bash $ git submodule status 91a30c4f752864aaafa2ae2b633d022c8810a5e8 themes/mainroad (91a30c4) $ git submodule update --remote Submodule path 'themes/mainroad': checked out '10d59da42f7bca5e7bd9e0409509a608fdd84080' $ git diff diff --git a/themes/mainroad b/themes/mainroad index 91a30c4..10d59da 160000 --- a/themes/mainroad +++ b/themes/mainroad @@ -1 +1 @@ -Subproject commit 91a30c4f752864aaafa2ae2b633d022c8810a5e8 +Subproject commit 10d59da42f7bca5e7bd9e0409509a608fdd84080 ``` ## 更新したsubmoduleを適用 ```bash $ git status On branch master Your branch is up to date with 'origin/master'. Changes not staged for commit: (use "git add ..." to update what will be committed) (use "git restore ..." to discard changes in working directory) modified: themes/mainroad (new commits) no changes added to commit (use "git add" and/or "git commit -a") $ git add . $ git commit -m "Update submodule" $ git push ``` -------------------------------------------------------------------------------- title: "Beautifulhugoで著者を消す方法" date: "2021-03-24" url: https://scribble.washo3.com/beautifulhugo-hideauthor/ -------------------------------------------------------------------------------- このサイトでは、管理者一人なので、わざわざ著者(Author name)を表示させるのは意味を持ちません。 CSSでAuthor欄をdisplay:none;にすれば表示だけ消えるかもしれませんが、不要なので、いっそのこと削除しようかと思いました。 早速、ファイルを調べてみると、theme/beautifulhugo/layouts/partials/post_meta.htmlに記述されていました。 ```go {{ if not .Site.Params.hideAuthor }} {{ if .Params.author }}  |  {{ .Params.author | safeHTML }} {{ else }}  |  {{ .Site.Author.name | safeHTML }} {{ end }} {{ end }} ``` いつもなら、該当する部分を削除して、root/layouts/partials/post_meta.htmlに持って来れば良いのですが、よく見ると、条件で`hideAuthor`の真偽となっています。 なので、config.tomlに下記を記述するだけで、消すことが可能です ```toml [Params] hideAuthor = true .... ``` 設定した後に気づきましたが、theme/beautifulhugo/exampleSite/config.tomlに記述されてましたね。 なぜか私のconfig.tomlには記述なかった?? (謎 参考までに、同じような記事も見つかりました -------------------------------------------------------------------------------- title: "パスワード付きzipの作成" date: "2021-03-19" url: https://scribble.washo3.com/zip-password/ -------------------------------------------------------------------------------- 先日、[BitwardenをDockerでセルフホスティング]({{< ref "bitwarden-docker.md" >}})の際にLastPassや1Passwordのエクスポートデータをそのまま残しておくのは危険なので、不必要になったら削除が一番なのでしょうが、バックアップとして残しておきたいので、パスワード付きzipとして保存することにした。 ## パスワード付きzipの作成 ### ファイルをパスワード付きzipで作成したい場合 ```bash $ zip -e sample.zip sample.txt Enter password:<パスワード入力> Verify password:<パスワード入力> adding: test (stored 0%) ``` ### ディレクトリをパスワード付きzipで作成したい場合 ディレクトリがある場合は、`-r`のオプションを忘れると空のzipファイルが出来てしまうので注意が必要です ```bash $ zip -e -r test.zip test Enter password: Verify password: adding: test/ (stored 0%) adding: test/test1.txt (stored 0%) adding: test/test2.txt (stored 0%) ``` ## パスワードがかかっていないzipファイルをパスワード付きに変更 ```bash $ zipcloak sample.zip Enter password: Verify password: encrypting: sample ``` 逆に、パスワード付きファイルからパスワード解除も可能です ```bash $ zipcloak -d <パスワード付きzipファイル> ``` zipcloakがないよ!って方は、zipのパッケージをインストールしましょう ```bash ## Debian/Ubuntu $ sudo apt install zip ## Redhat/CentOS $ sudo yum install zip ## MacOS $ brew install zip ``` ## 互換性用zipファイル作成 WindowsやLinuxと互換性を取りたい場合は、GUIのkekaなどのアプリを使うと、「.DS_Store」リソースフォークを削除してzip圧縮する機能があるので、併用して使うと良いかもしれません。 ## 最後 zipパスワードは必ずしも安全ではなく、パスワードクラッキングツールが存在し、簡単に解析されてしまいますので、極力、ランダムな英数字+記号の強固なパスワードを設定しておきましょう! -------------------------------------------------------------------------------- title: "DnsmasqをDockerで起動する" date: "2021-03-15" url: https://scribble.washo3.com/dnsmasq_on_docker/ -------------------------------------------------------------------------------- 自宅のサーバーでは、独自ドメインを利用していくつかのサーバーを起動しているが、自宅内のLANからだと、ルータを通るため、独自ドメインでのアクセスでは自宅内のサーバーへ到達出来ない この記事を参考にした方がわかりやすいです PCや端末が少ない場合は、dnsmasqを導入しなくても、それぞれhostsファイルに記述しても良いが、hostsファイルを一箇所で管理したい目的もあり、LAN内にDNSサーバーのdnsmasqをDockerで構築した ## 構成 ```docker $ tree . ├── dnsmasq.conf ├── docker-compose.yml └── hosts-dnsmasq ``` ## hostsファイルを別ファイルにする hosts-dnsmasqを作成し、記述していく ```docker 192.168.1.1 test1.example.com 192.168.1.1 test2.example.com 192.168.1.1 test3.example.com 192.168.1.1 test4 foo bar ``` ## docker-compose {{< gist washo 739777e0a2b02d57a58751fe871a67cd>}} ## 起動と確認 ```bash $ docker-compose up -d $ dig @127.0.0.1 test1.example.com ... ;; ANSWER SECTION: test1.example.com. 0 IN A 192.168.1.1 ``` ANSWER SECTIONで、hosts-dnsmasqで作成した内容が表示されるか確認しましょう - hosts-dnsmasqを変更したら`docker-compose restart`しないと反映しない - dnsmasq.confを変更したら`docker-compose restart`で再起動 もし、反映されない場合は`docker-compose down;docker-compose up -d`で起動 ## dnsmasqの内容 ``` # デフォルトの/etc/hostsをDNSのレコードとして使用しない no-hosts # /etc/resolv.confを無視 no-resolv # ドメインの無いホストで問い合わせがあった際に上位 DNSにフォワード(転送) しない domain-needed # プライベート IP は上位DNSにフォワード(転送) しない bogus-priv # ローカルドメイン設定 local=/local.net/ # ドメイン自動補完 :「domain=」にドメインが設定された場合に有効 expand-hosts domain=local.net # ログ出力と保存先 log-querie log-facility=/var/log/dnsmasq/dnsmasq.log # dnsmasqでキャッシュするレコード数。0にするとキャッシュしない cache-size=0 # 172.17.0.0/24の逆引きは127.0.0.1に問い合わせる server=/0.168.192.in-addr.arpa/127.0.0.1 server=/google.com/8.8.8.8 # ↑以外は上位のDNSサーバに問い合わせ strict-order # 上位のDNSサーバを書いておく。書式はresolv.confと同じ resolv-file=/etc/dnsmasq.resolv.conf ``` ## 注意点 上位DNSを設定する場合は、必ずDNS over HTTPS(DoH)対応のPublicDNSを利用しましょう! ## 参考(DNS over TLS、PublicDNS) - [最速のDNSリゾルバーを見つけるためのパフォーマンス測定方法と「DNS Performance test」](https://ottan.xyz/posts/2018/04/dns-performance-test-github-6689/) - [DNS over TLS/HTTPSについて考える | IIJ Engineers Blog](https://eng-blog.iij.ad.jp/archives/2954#isp_%e3%81%ae%e3%82%ad%e3%83%a3%e3%83%83%e3%82%b7%e3%83%a5%e3%82%b5%e3%83%bc%e3%83%90%e3%81%af_dot/doh_%e3%81%ab%e5%af%be%e5%bf%9c%e3%81%99%e3%81%b9%e3%81%8d%e3%81%aa%e3%81%ae%e3%81%8b) - [DNS over HTTPS(DoH)対応のDNSサービスの一覧 | ハルパス](https://blog.halpas.com/archives/13503) -------------------------------------------------------------------------------- title: "BitwardenをDockerでセルフホスティング" date: "2021-03-10" url: https://scribble.washo3.com/bitwarden-docker/ -------------------------------------------------------------------------------- LastPass無料版が3月中旬よりデバイス制限がかかるので、そろそろLastPassから離れたいため、何かパスワード管理のオープンソースがないのか調べてみたら、Bitwardenが良さそうなので、いつもながら、Dockerでセルフホスティングしてみた。 作業でやることは、ほぼ、こちら↓の記事と似たような感じです # Bitwarden 公式はこちらです。 セルフホスティングしないのであれば、アカウント作成して利用したほうが楽です ## 導入準備 - Docker環境が整備されているサーバーがあること(docker-compose) - 独自ドメインのDNS設定が出来ること - メール送信用SMTPがあること (Gmail利用可) ## docker-compose 私の環境では、すでにnginx-proxyとLetsEncrypt用のコンテナが常時起動しているので、bitwardenのdocker-compose.ymlは下記のような記述となってます。 **2021年5月現在、bitwardenrsが非推奨となり、vaultwardenへ変更となってます** {{< gist washo 06dd2b1bc3fb6ad990950213351f4004 >}} ほぼ、下記のGitHubを参考にさせていただきましたが、なぜか、.envファイルが読み込めなかったので、そのままdocker-compose.yml内へ記述しました ## 起動 無事にdocker-composeのビルドに成功し、LetsEncryptの証明書も取得出来たら、独自ドメインで設定したサイトへアクセスします 下図のような画面が現れたら成功です。おめでとうございます! `copy as markdownの表記はスクリーンショット時に不意に入ってしまったので気にしないで` {{< imgur id="YLGVdaD">}} このまま、メールアドレスと、マスターパスワードを入力し、アカウント作成することで直ぐに利用が出来るようになります。 ## LastPassからの移行 予め、LastPassにログインし、データをエクスポートしておきます そして、Bitwardenへログイン後、ツールから、LastPass(csv)形式でインポートするだけです {{< imgur id="05VYXxV">}} ## セキュリティ 環境変数は下記を参考にすると良い - アカウント作成後、以降アカウント作成する必要がなければ、下記をfalseにする `SIGNUPS_ALLOWED=false` `INVITATIONS_ALLOWED=false` - Admin Tokenを記述するとhttps://yourhost/adminにてadmin管理モードが使用になり、細かい設定が可能となる - nginx-proxyでhtpasswdで認証をかける - 必要以外はサービスを止める ## LDAP化 職場等で大人数で利用する場合は、アカウントをLDAP認証出来るようですが、今回は自分及び家族くらいの利用なので、導入はしておりませんので参考まで。 オンラインサービスを利用すると、改悪されたりサービス終了、データ流出の心配がある一方、セルフホスティングでは、完全に自分の管理次第でパスワード管理がおそろかになってしまうので、一長一短ではありますね。 -------------------------------------------------------------------------------- title: "各プロバイダー等のサブネット範囲を知る方法" date: "2021-03-09" url: https://scribble.washo3.com/subnet-whois/ -------------------------------------------------------------------------------- プロバイダー等のサブネット範囲を知りたいことがある。 例えば、AWSやVPS等の外部サーバーで、SSHで自宅からのサブネットだけ許可したい場合などで、自宅環境の動的IPの範囲を知りたい時です。 意外と簡単な方法のwhoisで調べる事が出来ます (まぁ、WEBの[JPNIC WHOIS Gateway](https://www.nic.ad.jp/ja/whois/ja-gateway.html)でも簡単ですが・・) ```bash $ whois 211.127.83.xx Network Information: [ネットワーク情報] a. [IPネットワークアドレス] 211.127.0.0/17 b. [ネットワーク名] ODN f. [組織名] オープンデータネットワーク(日本テレコム株式会社) g. [Organization] Open Data Network(JAPAN TELECOM CO.,LTD.) .... ``` 私の自宅環境では、ODNを利用していて、IPネットワークアドレスにサブネットの範囲(`211.127.0.0/17`)が表示されてます 外部のサーバーで自宅からアクセスさせたい場合などは、この範囲を許可してあげれば良い。 sshに限定せず制限したい場合は、iptables,tcp-wrapper,hosts.allow,fail2ban,sshd_config,PAMなどに記述することで、制限可能となりますね。 ただし、自分以外の同サブネットからも許可されると言うことなので注意は必要。 特に、大手プロバイダではサブネット範囲が広いので、極力狭くしておくことが望ましい。 なお、大手プロバイダでは、サブネットが多数存在する場合があるので、詳しく知りたい方は、[JPNIC WHOIS Gateway](https://www.nic.ad.jp/ja/whois/ja-gateway.html)を利用してみてください (ちなみに、今回のODNでは上位がソフトバンクで、割り当てサブネットが70近く存在しました) -------------------------------------------------------------------------------- title: "CentOS7上でhugoのソースビルドエラー" date: "2021-03-04" url: https://scribble.washo3.com/hugo-on-centos7-builderr/ -------------------------------------------------------------------------------- 以前、[CentOS7上のhugoでGCCエラー]({{< ref "hugo-on-centos7-gcc.md" >}})にて、似たような記事を投稿しましたが、最近になって、ソールからのビルドに失敗したので、対処してみました。 ちなみに、ビルドしようとしているhugoのバージョンは0.82です ## 環境 ```bash # cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) # git version git version 1.8.3.1 # go version go version go1.15.5 linux/amd64 ``` ## hugo ソースビルド ```bash $ vim from-gh.sh mkdir $HOME/src cd $HOME/src git clone https://github.com/gohugoio/hugo.git cd hugo go install --tags extended $ sh from-gh.sh ``` ### エラー ``` Cloning into 'hugo'... remote: Enumerating objects: 50309, done. remote: Total 50309 (delta 0), reused 0 (delta 0), pack-reused 50309 Receiving objects: 100% (50309/50309), 93.65 MiB | 9.80 MiB/s, done. Resolving deltas: 100% (34542/34542), done. go: github.com/sanity-io/litter@v1.5.0 requires github.com/pmezard/go-difflib@v0.0.0-20151028094244-d8ed2627bdf0: invalid version: git fetch --unshallow -f origin in /root/go/pkg/mod/cache/vcs/b66720d7c9f6776b1690ab6c7de6bd08fe64d74a3eaff8dbdef6603dac225370: exit status 128: fatal: git fetch-pack: expected shallow list ``` gitのバージョンを最新にしてみたら、今度は下記のエラー ```bash $ git version git version 2.30.1 $ go install --tags extended tpl/internal/go_templates/texttemplate/helper.go:11:2: package io/fs is not in GOROOT (/usr/lib/golang/src/io/fs) ``` g++のエラーも出た ``` go build github.com/bep/golibsass/internal/libsass: g++: exec: "g++": executable file not found in $PATH ``` g++は、`yum install -y gcc-c++`で解決 ## 解決方法 (fix) goのバージョンを最新にすることで、ビルドする事が確認できました >ちなみに、go 1.15までは、コマンドを実行するたびに、必要に応じて、go.modが自動的に更新されていたのが、1.16からは自動更新が行われなくなり、ユーザーが明示的に指定しなければならなくなった。 なので、goコマンドを実行した際にエラーが出る場合があるが、go mod tidyを実行することで、解決及び解決の糸口が見つかる ### go manual install goの最新版をインストールする前にyumでインストールしたgolangを削除 (インストール先や環境変数を自分で変えられる方は、削除しなくてもパスを通せば併用して使えるかもしれません) ```bash $ sudo yum -y remove golang $ wget https://golang.org/dl/go1.16.linux-amd64.tar.gz $ sudo tar zxf go1.16.linux-amd64.tar.gz -C /usr/local/ $ export PATH=$PATH:/usr/local/go/bin $ go version go version go1.16 linux/amd64 $ go env|grep GOROOT GOROOT="/usr/local/go" ``` ## 再度hugo ビルド 再び、[hugo ソースビルド](#hugo-ソースビルド)を行います。 ただし、一度、失敗しているので、$HOME/srcが作成されているかと思いますので、 下記の操作で続行 ```bash $ cd $HOME/src/hugo $ go install --tags extended ``` これで、エラーが出なければ、$HOME/go/bin/内にhugoが作成されているはずです。 無ければ、ビルドに失敗しているか、GOPATHが違う場所に設定されている可能性があります。 ```bash $ cd $HOME/go/bin $ ./hugo version hugo v0.82.0-DEV+extended linux/amd64 BuildDate=unknown ``` 私の環境では、このようにhugo最新版のビルドでは、goも最新版に上げる必要がありましたが、これでもエラーが出る場合は、hugoのバージョンを下げてビルドすると成功するかもしれません。 ちなみに、今回はCentOS7上でのhugo extended版を必要としましたが、extended版が必要なければ、公式サイトからバイナリを持ってきた方が楽です -------------------------------------------------------------------------------- title: "Hugo Render hooksでimageとlinkをカスタマイズ" date: "2021-02-13" url: https://scribble.washo3.com/hugo-render-hooks%E3%81%A7image%E3%81%A8link%E3%82%92%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA/ -------------------------------------------------------------------------------- Hugoで画像を挿入するには、標準のMarkdownで`![Text](Link-URL)`を書くと、``にレンダリングされますが、ネイティブ Lazy-loadをimgタグに組み込みたいと思ってました。 ちなみに、ネイティブLazy-loadは、 >Javascriptを必要とせず、HTMLのloading属性を追加するだけで画像の遅延読み込みを簡単に構成できます 最初は、figureタグやショートカットを利用しないと挿入出来ないと思い、試行錯誤していましたが、調べてみると、HugoのRender hooksを利用すると可能になることを知りました。 Render hooksを詳しく知りたい方は、公式を参照してください。 ## ネイティブLazy load組込 - ~~loading="lazy'属性を追加~~ - decoding="async"属性を追加 当初、lazyを組み込んだのですが、 `decoding="async"`と`loading="lazy"`は、併記しても両立しないため、`decoding="async"`を採用しました。 併記した場合は、lazyが優先されます Hugo/layouts/_defaults/_markup/render-image.html ```go {{ $link := string .Destination }} {{ if hasPrefix $link "http" }} {{ .Text }} {{ else }} {{ .Text }} {{ end }} ``` ## aリンクカスタマイズ - 外部URLのリンクはtarget="_blank"で別タブで開く セキュリティ的に、noreferrer noopener も追加 - 内部リンクでは別タブを開かない Hugo/layouts/_defaults/_markup/render-link.html ```go:render-link.html {{ .Text | safeHTML }} ``` ### Gist これらカスタマイズしたものをGistにも明記しておきました {{< gist washo b4ccc4162bb917a9fde7efa284820734 >}} -------------------------------------------------------------------------------- title: "beautifulhugoで更新日時が表示されない症状" date: "2021-02-10" url: https://scribble.washo3.com/beautifulhugo-failed-to-get-translated/ -------------------------------------------------------------------------------- 現在も使用しているHugoのテーマであるBeautifulhugoですが、更新日時が表示されない症状が出たので対処 ちなみに、hugoのバージョンは0.80.0です ## 症状 - ローカルでサーバ起動すると、下記のエラーで更新日時が表示されない ```bash $ hugo server -D .... Failed to get translated string for language "ja" and ID "lastModified": template: :1:22: executing "" at <.Count>: can't evaluate field Count in type string ``` - Netlifyでデプロイしているので、netlify.toml内でhugoのバージョンを上げると同症状 ```toml ... [context.production.environment] HUGO_VERSION = "0.80.0" HUGO_ENV = "production" HUGO_ENABLEGITINFO = "true" ``` ## 原因 エラー表記を見ると、<.Count>表記が問題になっているようで、beautifulhugo/i18n/内のen.yamlやja.yamlなどに使われています。 Hugo 0.76のバージョン以降で症状が出るようです ## 解決方法 beautifulhugoテーマをダウンロードしたりForkしたりしていると、そのままen.yamlなどに使われている<.Count>をCount文字を取り除く事で対処出来ます。 ```diff - translation: "Posted on {{ .Count }}" + translation: "Posted on {{ . }}" - id: lastModified - translation: "(Last modified on {{ .Count }})" + translation: "(Last modified on {{ . }})" ``` ### submodule化 submoduleで管理している場合は、i18nをルートディレクトリに配置しても読み込んでくれないので、submoduleをアップデートすることで対処します ```bash $ git submodule status 1ff3894b84b1802433b58e22dd22f4eb46a49fa9 themes/beautifulhugo (1ff3894) $ git submodule update --remote Submodule path 'themes/beautifulhugo': checked out '99ca240e9977196207da2e09c3804d3e98c14e57' ``` 後は、git add;git commit -aでpushしてやれば良いです これで、netlify.toml内のhugoのバージョンを上げても大丈夫ですね。 もちろん、netlify.tomlもgit pushする必要がありますので忘れずに! -------------------------------------------------------------------------------- title: "Instagramの埋め込みが出来なくなった" date: "2020-12-23" url: https://scribble.washo3.com/instagram-endpoint-ended.html -------------------------------------------------------------------------------- 最近になって、Hugoの設定修正や記事の作成・編集後に、ビルドが失敗し、更新ができなくなりました。 ## 症状 > Failed to get JSON resource "https://api.instagram.com/oembed/?url=https://www.instagram.com/p/BGvuInxxxx/&maxwidth=640&omitscript=true": Failed to retrieve remote file: Bad Request デプロイのログを見てみると、InstagramのAPI箇所でFailedが表示され、ビルドが中断していました。 Hugoでinstagramのshortcodeが挿入されていると、ビルドに失敗するようになったようです。 ## 原因 Instagram APIがそのままでは使えなくなり、Facebookのデベロッパーアカウントで設定しなければ、利用できなくなった。 > Note: Facebook and Instagram support is out of scope in this proposal since they require a Facebook Developer Account.\ > Basically Facebook has ended free access to the Instagram API. This affects both the regular and simple Instagram shortcodes. ![](https://i.imgur.com/yhhkvrj.png) ## 解決方法 Instagramの埋め込み利用を続けるなら、Facebookデベロッパーアカウントより設定するほかないようです。(shortcodeや記事内の埋め込みコードの必要があるかも?) 因みに、私の環境では、Instagramの埋め込みは、ほとんど無いに等しかったので、利用している記事内から削除しました。 Instagramのshortcode欄をコメントアウトしても良いようですが、削除したほうがトラブルも少ないし、スッキリしますね。 -------------------------------------------------------------------------------- title: "DebianのCron関連メモ" date: "2020-09-30" url: https://scribble.washo3.com/debian-cron/ -------------------------------------------------------------------------------- debian10(Buster)で動作させている状況で、バックアップスクリプト(backup.sh)を/etc/cron.weekly/下に配置していたが、どうやら動作していない。 もちろん、実行権限を与えているし、手動での動作も確認している。 他の機種を調べてみたところ、CentOSでは問題なく動作しているのにDebianは全て動作していないことが判明。 調べてみたところ、 run-parts(8) を参照すると、どうやら、.shや.plなどドットを含む拡張子は動作しないらしい ``` $ man 8 run-parts .... If the --lsbsysinit option is given, then the names must not end in .dpkg-old or .dpkg-dist or .dpkg-new or .dpkg-tmp, and must belong to one or more of the following namespaces: the LANANA-assigned namespace (^[a-z0-9]+$); the LSB hierarchical and reserved namespaces (^_?([a-z0-9_.]+-)+[a-z0-9]+$); and the Debian cron script namespace (^[a-zA-Z0-9_-]+$). ``` ## Cronの実行日時 ちなみに、cron.daily,weekly,monthlyの起動時刻は、/etc/crontabに記載されている ```shell # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,f ri,sat # | | | | | # * * * * * user-name command to be executed 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --repor t /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --repor t /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --repor t /etc/cron.monthly ) # ``` ## Cronログ デフォルトではcronログは切り分け設定になっていないので、syslogに記録されている ```bash # cat /var/log/syslog | grep cron -i ``` なので、/var/log/cron.logも生成されていない。 もし、cron.logとして、切り分ける場合は、rsyslog.conf内のcron欄のコメントを外す ```bash # vim /etc/rsyslog.conf cron.* /var/log/cron.log # systemctl restart rsyslog ``` 今回のメモはDebian10での状況であったが、同系のUbuntuでも該当するかもしれません -------------------------------------------------------------------------------- title: "Hugoにnetlify.toml追加" date: "2020-08-07" url: https://scribble.washo3.com/hugo-netlifytoml/ -------------------------------------------------------------------------------- Hugo+Netlifyの環境にして1年ほど経過しますが、特に問題もなかったので放置してたnetlify.toml設置をようやく行いました。 このサイトで使用しているテーマ: Beautifulhugo(submodule) ## netlify.toml 公式ページにnetlify.tomlの書式があるので、hugo配下に下記の内容で作成する ```toml:netlify.toml [build] publish = "public" command = "hugo --gc --minify" [context.production.environment] HUGO_VERSION = "0.74.3" HUGO_ENV = "production" HUGO_ENABLEGITINFO = "true" [context.split1] command = "hugo --gc --minify --enableGitInfo" [context.split1.environment] HUGO_VERSION = "0.74.3" HUGO_ENV = "production" [context.deploy-preview] command = "hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL" [context.deploy-preview.environment] HUGO_VERSION = "0.74.3" [context.branch-deploy] command = "hugo --gc --minify -b $DEPLOY_PRIME_URL" [context.branch-deploy.environment] HUGO_VERSION = "0.74.3" [context.next.environment] HUGO_ENABLEGITINFO = "true" ``` - テーマをsubmodule化している場合 `build`のコマンドにテーマを指定する必要があるので、`--theme=beautifulhugo`を追加 ```toml [build] publish = "public" command = "hugo --theme=beautifulhugo --gc --minify" .... ``` - Hugoバージョンの確認 また、ローカルで使っているバージョンとnetlify.toml内の`HUGO_VERSION`を合わせておきましょう ```bash $ hugo version Hugo Static Site Generator v0.74.3/extended darwin/amd64 BuildDate: unknown ``` - git push netlify.tomlを作成・編集を終えたら、git pushしましょう ```bash $ git add . $ git commit -m "add netlify.toml" $ git push ``` なお、Netlify管理画面のビルド時のコマンドを指定しても、netlify.tomlが優先されるので注意です。 無事にgit pushが終わり、Netlifyで自動デプロイが完了すると、下記のようなログで確認できます。 netlify.tomlを作成した後のログ ``` .... 10:23:37 AM: Installing Hugo 0.74.3 .... 10:23:41 AM: ┌────────────────────────────────────┐ 10:23:41 AM: │ 1. build.command from netlify.toml │ 10:23:41 AM: └────────────────────────────────────┘ 10:23:41 AM: ​ 10:23:41 AM: $ hugo --theme=beautifulhugo --gc --minify .... ``` netlify.tomlで指定したHugoのバージョン(0.74.3)とテーマオプション(--theme=beautifulhugo)の環境でbuildされている事が確認できました。 netlify.tomlを作成しなかった場合、Netlifyのデフォルト値でbuildされますので、Hugoのバージョンが、ずっと、0.54のままです。 なお、netlify.toml内でHugoのバージョンを最新にしても、テーマが対応していない場合もあるので、必ずしも最新に設定するとは限りませんので注意です。 buildに失敗したら、バージョンダウンしていくと良いかもしれません。 -------------------------------------------------------------------------------- title: "PHP7.3以降でJpgraphのグラフが出ない" date: "2020-06-18" url: https://scribble.washo3.com/jpgraph-gd-error/ -------------------------------------------------------------------------------- 執筆時(2021.10)において、最新版の4.3.5では下記の不具合が解消されているようです。 PHP7.2に対応となってますが、製品情報では7.4まで対応と書かれてて、どちらが正しいのか?? 正常に動作するのなら構わないけど。 下記、旧記事は参考のため残しておきます ----- ## 不具合症状 Apache2.4+PHP7.3+Jpgraph4.3.1の環境下において、`JpGraph Error: 25092`のエラーにより、グラフが出力されなくなった ![](https://i.imgur.com/SKFxzfm.png) エラーの内容を見ると、フォントや設定を見直せみたいな事が書かれてる ## 確認 - php.ini ```bash # vi /etc/php.ini include_path = ".:/var/www/jpgraph" ``` - jpg-config.inc.php ```bash define('USE_CACHE',true); define('CACHE_DIR','/var/cache/jpgraph/‘); define('READ_CACHE',true); ``` - 属性確認 ```bash # chown apache:apache -R /var/cache/jpgraph/ ``` 確認しても、症状変わらず ## PHP7.3は未対応? Jpgraphをダウンロードした際に、Examples内にサンプルがあるので、確認したところ、やはりサンプルファイルでもグラフ出力が出来ない Jpgraphの公式サイトを見ると、Jpgraph 4.3.x以降でPHP7.4をサポートしているが、NoteにはPHP7.2までしか明記されてないので、PHP7.3は未対応なの? ![](https://i.imgur.com/63D6kEA.jpg) テスト環境で、PHP7.4を試してみたところ、やはりグラフ出力が出来ないので、今現在PHP7.3以降は未対応なのではないだろうか? ## 解決方法 下記に解決の糸口を見つける有益な情報がありました jpgraphのgd_image.inc.phpにパッチを当てることで、PHP7.3,7.4でとりあえず正常に動作するようになった。 (パッチ当てるのが分からなかったり、面倒くさい方は、gd-Image.inc.phpを入れ替えるだけでも良い) 要するにGD関連のエラーのようですね -------------------------------------------------------------------------------- title: "CentOS7のremi-php更新に失敗する" date: "2020-06-08" url: https://scribble.washo3.com/yum-update-remiphp7/ -------------------------------------------------------------------------------- またまた、CentOSのyum更新で依存関係によるエラーです ## 状況 CentOS7上で、すでにremiリポジトリによりphp7.xを導入済み ## 不具合症状 yumのupdateでエラー ```bash # sudo yum update —enablerepo=remi-php73 エラー: パッケージ: php-pecl-zip-1.18.2-1.el7.remi.5.4.x86_64 (remi) 要求: php(zend-abi) = 20100525-64 インストール: php-common-7.3.0-1.el7.remi.x86_64 (@remi-php73) php(zend-abi) = 20180731-64 利用可能: php-common-5.4.16-48.el7.x86_64 (base) php(zend-abi) = 20100525-64 利用可能: php-common-5.4.45-18.el7.remi.x86_64 (remi) php(zend-abi) = 20100525-64 エラー: パッケージ: php-pecl-zip-1.18.2-1.el7.remi.5.4.x86_64 (remi) 要求: php(api) = 20100412-64 インストール: php-common-7.3.0-1.el7.remi.x86_64 (@remi-php73) php(api) = 20180731-64 利用可能: php-common-5.4.16-48.el7.x86_64 (base) php(api) = 20100412-64 利用可能: php-common-5.4.45-18.el7.remi.x86_64 (remi) php(api) = 20100412-64 問題を回避するために --skip-broken を用いることができます。 ``` `--skip-broken`を用いても上手くいきません ## 解決方法 ```bash sudo yum update --enablerepo=remi,remi-php73,epel ``` 肝心なのは、その他のモジュールなどで必要なリポジトリがある場合は`--enablerepo`の後に追記する(今回はepel)事のようです ## 参考記事 -------------------------------------------------------------------------------- title: "Hugo serverでショートコードエラー" date: "2020-06-08" url: https://scribble.washo3.com/hugo-server-git/ -------------------------------------------------------------------------------- ## 状況 現在、ここのブログでは、GitllabでMarkdownを管理し、Gitでローカルマシンで記事を書いています。 流れは、GitlabからローカルのMacやLinuxへGitでcloneし、記事を書いて、コンパイル後pushしています。 hugoでは、serverモードがあり、`hugo server -w`として起動すると、localhost:1313で書いた記事のプレビューモードで確認できたりします。 ## 不具合症状 ところが、`hugo server -w`した際に、下記のエラーが出ることがあります。 (現在のHugoテーマはBeautifulhugoを使用しています) > Error: Error building site: "/tmp/test/content/post/mermaid-sample.md:18:1": failed to extract shortcode: template for shortcode "mermaid" not found 上記エラーは、mermaidですが、galleryであったり、要はshortcode書いてるけど、そんなshortcodeは無いよ!と言うエラーのようです。 ## 原因 Hugoの中のテーマをGitのサブモジュールと言う仕組みで構成している場合、`git clone`する際にサブモジュールの取得が出来ていないのが原因です。 つまり、hugoでの構成が下記のようになっていますが、そのまま `git clone`した場合、themes内のサブモジュールテーマが空なのです。 記事内に記述されたshortcodeがthemes/テーマ内のテンプレートファイルを探しに行くのでエラーとなるのです ```bash ├── archetypes ├── content ├── layouts ├── resources ├── static └── themes ``` ## 解決 `git clone`した際に、thmes内のテーマも取得してあげれば解決します。 サブモジュールで管理していない場合は、通常のgit cloneで問題ありません ```bash $ git clone https://gitlab.com/user/test.git ``` 今回はのようにサブモジュール構成にしてある場合は、`git clone`する際、下記のようにサブモジュールも取得してあげればOKです ```bash $ git clone --recurse-submodules --depth 1 https://gitlab.com/user/test.git ``` このようにする事で、theme内のサブモジュールも取得されるようになります ## 解決2 ついつい、recurse-submodulesを忘れて、普通に `git clone`してしまい、今回のようなエラーに見舞われるのですが、実は、`git clone`した後で、submoduleで管理しているリポジトリを取得することが出来ます。 `git clone`後にsubmoduleを更新する方法 ```bash $ git submodule update --init --recursive ``` 今回のBeautifulhugoテーマをサブモジュールしたHugoではこんな感じです ```bash $ git submodule status -1ff3894b84b1802433b58e22dd22f4eb46a49fa9 themes/beautifulhugo $ git submodule update --init --recursive Submodule 'themes/beautifulhugo' (https://github.com/halogenica/beautifulhugo.git) registered for path 'themes/beautifulhugo' Cloning into '/private/tmp/test/themes/beautifulhugo'... Submodule path 'themes/beautifulhugo': checked out '1ff3894b84b1802433b58e22dd22f4eb46a49fa9' ``` 度々、今回の症状に出くわすので、自分用のメモとして残しておきました -------------------------------------------------------------------------------- title: "Docker imageが削除できない" date: "2020-06-08" url: https://scribble.washo3.com/docker-cannot-image/ -------------------------------------------------------------------------------- ## 不具合症状 Dockerでイメージファイルを削除しようとしたらエラーが出た ```bash $ docker rmi d56 Error response from daemon: conflict: unable to delete d562087633bf (cannot be forced) - image has dependent child images ``` 強制削除 ```bash $ docker rmi d56 -f Error response from daemon: conflict: unable to delete d562087633bf (cannot be forced) - image has dependent child images ``` ## 原因 子のイメージファイルに依存してるとのエラーのようです。 IDではなく、リポジトリ名:タグ名を指定すると削除出来る場合があります ```bash $ docker rmi REPOSITORY名:TAG名 もしくは $ docker rmi -f REPOSITORY名:TAG名 ``` ここで削除出来た方は、下記は不要です これでも削除できない場合は、依存ファイルを調べてみる (今回消去したいイメージははd56となっているので、適宜変更してください) ```bash $ for i in $(docker images -q) do docker history $i | grep -q d56 && echo $i done | sort -u ``` 実行結果 ```bash ab51490dbf8a d562087633bf ``` d562087633bfの他に `ab51490dbf8a` が表示されました ## 削除 ```bash $ docker rmi ab5 d56 ``` ## 参考記事 -------------------------------------------------------------------------------- title: "MacのVMwareFusionでネットワークが切れる問題" date: "2020-06-05" url: https://scribble.washo3.com/vmwarefusion-net-issue/ -------------------------------------------------------------------------------- ## 症状 macOS High Sierra(10.13.6)のVMware Fusion 8.5.4において、 VMware FusionのゲストOSのネットワークが偶に切断される ゲストOSは、Windows10で、一度ネットワークが切れると、 - NAT,ブリッジに変更してもダメ - Windowsのネットワークを再起動してもダメ - VMware側のネットワークアダプタを切断してもダメ ## 解決策 一番簡単なのは、Macを再起動ですが、起動中に何度も同じ不具合症状が起きるとその都度再起動は面倒です なので、コマンドラインでの解決法です MacのVMwareホスト側で、 ```bash sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli --stop sudo /Applications/VMware\ Fusion.app/Contents/Library/vmnet-cli --start ``` この後、ゲストOS(Windows)側で、ネットワーク再起動(ネットワークアダプタの無効->有効) ### 注意点 私の環境(macOS High Sierra - Vmware Fusion 8.5.4)では、これ以上VMwareのアップデートが出来ず、今回の症状が起きたわけですが、現時点でVMware Fusionの最新バージョンは11.5.xで、不具合が解消されている可能性があります。 追記: macOS(11.6) Big Surと VmwareFusion 12.2.0の環境でも症状が発生しました ### 参考記事 -------------------------------------------------------------------------------- title: "HugoでMarkdown内に記述したHTMLが表示されない" date: "2020-06-04" url: https://scribble.washo3.com/hugo0.6-goldmark/ -------------------------------------------------------------------------------- ## 不具合症状 しばらくHugoで記事を書いてなくて、久しぶりに記事を投稿したところ、Markdown内のiframeやHTMLが表示されてない事に気づきました。 ## 原因 調べてみたら、どうやらHugo v0.60から新しく採用されたGoldmarkというMarkdownパーサーにより、デフォルト設定でMarkdonw内のHTMLタグを無視されるようになったようです ## 解決法 Markdonw内のHTMLタグが無視(除去)がデフォルトになっているので、明示的に無視しない設定にするだけで良いようです Hugoルートディレクトリ下のconfig.tomlに下記を追記します。 ```yaml [markup.goldmark.renderer] unsafe = true ``` テーマによっては、上記コードが含まれている可能性もあるので、あれば追記する必要はありません。 ちなみに、YAML(confit.yml)形式の場合は、下記 ```yaml markup: goldmark: renderer: unsafe: true ``` ### 参考記事 解決に当たり、下記の記事を参考にさせていただきました - - -------------------------------------------------------------------------------- title: "Macの入力切替の改善" date: "2020-06-01" url: https://scribble.washo3.com/mac-input-switch/ -------------------------------------------------------------------------------- Mac上で、「Command+スペース」による日英などの入力切替で、遅延で切り替えがスムーズにいかなくて悶々したことありませんか? 最新のMacを使われている方は、あまり気にすることの事ではないかもしれませんが、私は未だにiMac 2009を利用しているため、画面中央に表示されるダイアログに制御が取られやすくなり、特に端末操作や記事書いて頻繁に切り替える時に、思うように切り替わらないことがあります。 下図のように、切替時に画面中央に表示されるのが遅さの原因のようです。 結果として入力モード変更が不発に終わることが増え、非常にストレスが溜まるようになりました。 ![](https://i.imgur.com/r1hnVrw.png) ## **「Command+スペース」の設定を変更** 「システム環境設定>キーボード>ショートカット>入力ソース」の割り当てを上下逆に。 ![](https://i.imgur.com/tax4Pgd.jpg) 具体的には、設定項目を選択して青く反転させた後で、キーボードショートカットの部分をクリック。 - 「⌘スペース」の箇所をクリックし、`Command+Option+スペース`を押す。 - 「⌘⌥スペース」の箇所をクリックし、`Command+スペース`を押す。 これで割り当てを逆になりました。 ![](https://i.imgur.com/a89LUmC.png) 以降、`Command+スペース`を押すと画面中央の表示がなくなり、瞬時に入力モードが切り替わります。 気づきにくい方は、右上の入力切り替えアイコンを見ると、切り替えが確認できます。 これにより、私の遅いiMacでも高速・快適に入力切り替えが可能となりました。 もっと早くから、やっておくべきでしたね。 Macを購入したらまずやるべき事に加えておきましょう! -------------------------------------------------------------------------------- title: "Growiを使った感想" date: "2020-06-01" url: https://scribble.washo3.com/growi-advantages/ -------------------------------------------------------------------------------- GrowiをDockerで起動し、約1ヶ月利用してみて、私個人的な利点・欠点を挙げておきます 現時点(v3.7.7)での事項なので、今後のバージョンアップでは対策される可能性があります。 ## 利点 - リアルタイムプレビューでMarkdown編集 - 複数人で編集可能 - 変更履歴管理 - draw.ioによる図形編集 - dockerで簡単設置 - オープンソース - hackmd連携 - elasticsearch高速検索 - LDAPやGoogle,Githubなど認証機能 - reveal.js搭載の簡易プレゼンテーション ## 欠点 - ひとつの記事内に画像やdraw.ioの図形が多い場合、いちいちプレビューするため反応が遅くなる - バージョンによってはhackmdとの連携が不安定 - 変更履歴で過去に戻る復元ボタンがない - データのエクスポート・インポートではバージョンを合わせる必要がある - データをインポートすると、elasticsearchのリビルドに失敗する - 記事をMardownやPDFでエクスポート出来ない ## 社内で運用は?? draw.io搭載により、フローチャートやUMLなど組み込めるので、技術的な記事を書く上では結構使い勝手が良いと感じました。 しかし、バージョンによって互換性がない事、インポートで検索が出来なくなる事など、複数人で運用するとなると、安心して使い続けるには不安が残ります。 現に、v3.7.5にアップした際に、自分だけの記事がForbiddenで閲覧・編集出来なくなり、一度インポートした後は、いくらバージョンアップしても、elasticsearchに失敗し、検索が一切出来なくなるのは致命的です。 この不具合が起きている状況で、v3.7.5→3.7.7→4.0へ上げても改善されませんでした。 このような事から、社内で運用するには、まだ不安定で使えないかなぁ。 これに比べ、HugoやGithub Pagesだと、GitHub,GitLab管理で記事ごと常にバージョン履歴を残しつつ、保存されているので、安心感はありますが、hugoでfrontmatter書いて記事作成してコンパイルし、git pushしたりと、手間かかる欠点は拭えないですが。 なので、データの互換性(せめて下位互換)とElasticsearchが安定したら、Growiは使いやすいWikiであることは間違いないと思いますので、今後に期待!! ## やはりNotionか 上記の欠点を補え、高機能・多機能なNotionに軍配が上がる気がしますね。 何より、Markdown初心者でも簡単に綺麗に記事が書けるし、バージョン履歴、タスク、カレンダーなど何でもありなオールインワン情報共有ツールとしては完成度高いですね。 性能が良い分、使いこなすには有料プランが必須になってくる事、、今後、ユーザーが増えてくるとEvernoteのように制限がかかるかもしれない事ですかね。 -------------------------------------------------------------------------------- title: "VMwareESXi 6.x シスログ転送設定" date: "2020-03-13" url: https://scribble.washo3.com/vmware-esxi6-syslog/ -------------------------------------------------------------------------------- VMwareESXiホストに関するログは、それほど重要ではありませんが、興味本位でシスログサーバーへ転送設定したメモです ## 設定手順 転送設定では、既にシスログサーバーが用意されてて、VMwareESXiへrootでログイン出来る方が対象となります ### シスログホストの設定 1. VMware Webインターフェースで管理者ログイン 2. ダッシュボードの左項目の管理をクリック 3. 右項目欄のシステムタブで詳細設定をクリック 4. 検索窓にsyslogを入力しフィルターを適用 5. "Syslog.global.logHost"を選択し、「オプションの編集」をクリック 6. 新しい値に転送方式と転送するシスログサーバーを指定し、保存する ``` "udp://192.168.1.1:514" 複数指定の場合は、 "udp://192.168.1.1:514,tcp://192.168.1.2:1514" ``` ![](https://i.imgur.com/qP6ro9C.jpg) 7. 更新をクリック ここまでは、設定を保存するだけで、まだ転送は無効になってます ### ログ転送を有効化 Syslog転送を許可するには、Vmwareファイアウォールを設定する必要があるので有効化します 1. VMware Webインターフェースで管理者ログイン 2. 左項目の下部にネットワークをクリック 3. 右項目のファイアウォールルールのタブを選択 4. 名前がSyslogをクリック(検索窓にsyslogを入れると楽) 5. アクションをクリックし、有効を選択 ![](https://i.imgur.com/oYho6Cj.jpg) 以上で、最低限のログ転送設定は完了です。 下記は、興味ある方だけで結構です。 --- ### ログ詳細確認 VMware ESXiホストへSSHでログインし、ログ関連の設定を確認してみました ``` # esxcli system syslog config get Default Network Retry Timeout: 180 Dropped Log File Rotation Size: 100 Dropped Log File Rotations: 10 Enforce SSLCertificates: true Local Log Output: /scratch/log Local Log Output Is Configured: false Local Log Output Is Persistent: true Local Logging Default Rotation Size: 1024 Local Logging Default Rotations: 8 Log To Unique Subdirectory: false Message Queue Drop Mark: 90 Remote Host: udp://192.168.1.1:514 ``` ## syslog levelを修正 ログを取り始めると、verboseのログが大量に記録されるので、気になる方は変更しましょう >Rhttpproxy: verbose rhttpproxy ..... 1. VMware ESXiホストへSSHでログイン 2. /etc/vmware/rhttpproxy/config.xmlを修正(32行目付近) ```diff ... @@ -30,7 +30,7 @@ 8 - verbose + warning ``` 3. 保存すると、シスログを再起動することなく反映されます(多分?) Rhttpproxyの他にもvpxaやhostdもverbose出力されるので、同様に編集しておくと良いでしょう | |設定ファイル| | -------- | -------- | | rhttpproxy |/etc/vmware/rhttpproxy/config.xml| | hostd |/etc/vmware/hostd/config.xml| | vpxa |/etc/vmware/vpxa/vpxa.cfg| ちなみに、hostdのconfig.xml内の定義だと、facilityはlocal4のようです。 もし、facilityを変更したい場合、local4を書き換えるだけではダメなようですので、[Configuring syslog logging for hostd and vpxa management agents on ESXi/ESX (1017658)](https://kb.vmware.com/s/article/1017658)参照 ### 参考記事 - [チュートリアル - VMware ESXi Syslogの設定| ステップバイステップ](https://techexpert.tips/ja/vmware-ja/vmware-esxi-syslog%E3%81%AE%E8%A8%AD%E5%AE%9A/) - [VMware ESXi 6.5U1のsyslogで記録するlevelを修正する | Highspec Diary](http://yamatomura.blogspot.com/2018/05/vmware-esxi-65u1sysloglevel.html) - [VMware vCenter Server と VMware ESX/ESXi のログ レベルを上げる方法 (1004795)](https://kb.vmware.com/s/article/1004795?lang=ja) -------------------------------------------------------------------------------- title: "Mac OS XにZabbix _Agentをインストール" date: "2020-03-05" url: https://scribble.washo3.com/mac-zabbix-agent/ -------------------------------------------------------------------------------- ## Zabbix Agent ダウンロード・インストール 1. Zabbix公式より「[Download Zabbix agents](https://www.zabbix.com/jp/download_agents)」にて、macOSとzabbixのバージョンを指定してダウンロード 2. ダウンロードしたpkgファイルを開いて、インストール ちなみに、MacOS起動時、自動実行するような設定になっています ``` # ファイル場所 /Library/LaunchDaemons/com.zabbix.zabbix_agentd.plist # 起動スクリプト /usr/local/sbin/zabbix_agentd -c /usr/local/etc/zabbix/zabbix_agentd.conf -f # log /var/log/zabbix/zabbix_agentd-out.log /var/log/zabbix/zabbix_agentd-err.log ``` ## 設定 Hostnameを適宜変更し、 Serverの欄をZabbix ServerのIPへ変更 ``` # vim /usr/local/etc/zabbix/zabbix_agentd.conf ... # Server 127.0.0.1 Server 111.222.33.4 # Hostname Zabbix Server Hostname MyMac ``` ## Zabbix Agent 再起動 ``` $ sudo launchctl unload /Library/LaunchDaemons/com.zabbix.zabbix_agentd.plist $ sudo launchctl load /Library/LaunchDaemons/com.zabbix.zabbix_agentd.plist $ sudo launchctl start /Library/LaunchDaemons/com.zabbix.zabbix_agentd.plist ``` ## 起動しない? 起動しないのでシスログをみたところ > zabbix_agentd[76466]: dyld: Symbol not found: ____chkstk_darwin Referenced from: /usr/local/sbin/zabbix_agentd Expected in: /usr/lib/libSystem.B.dylib 原因は、ダウンロード・インストールの際に、暗号化版を利用したのが原因のようで、再度、[暗号化なし4.4.0](https://www.zabbix.com/downloads/4.4.0/zabbix_agent-4.4.0-macos-amd64.pkg)を利用したところ、無事起動しました。 ## Zabbix Server側でホスト追加 Zabbix Agent起動確認後、Zabbix Server側で、ホスト作成し、「Template OS Mac OS X」のテンプレートとリンクを張ればOKです --- ## 参照 - TLSで通信したい場合 「[Installation of Zabbix Agent on Mac OSX – James Mutch Tech Support](https://www.jamesmutch.tech/2019/08/27/installation-of-zabbix-agent-on-mac-osx-host/)」 - 起動・再起動・削除 [5 Mac OS agent installation from PKG [Zabbix Documentation 4.4]](https://www.zabbix.com/documentation/current/manual/installation/install_from_packages/mac_pkg) -------------------------------------------------------------------------------- title: "PowerEdge+S140環境でLinuxは注意" date: "2020-03-03" url: https://scribble.washo3.com/poweredge-s140-linux-raid/ -------------------------------------------------------------------------------- PowerEdge R630を購入した際に、RAIDの必要がなかったものの、デフォルトでS140が付属していたので、せっかくなので、RAID環境でサーバーを構築しようとしたところ、ハマってしまいました。 ## サーバー構築案 HDD4台あるので、RAID5でLinuxのDebianもしくはVMware ESXi導入を検討 ## 背面USBで起動失敗 CD/DVDが付属していない又PXEブート環境がないので、USBで起動ディスクを作成し、背面USBポートにさし、電源を入れたところ、"**Initilize Firmware Interfaces**"で固まったまま、進行しない。 一旦、USB起動ディスクを抜いて、BIOSをイジったりしたが解決せず、結局、フロントのUSBポートにさしたところ、難なく起動 ## LinuxインストールでRAID検出出来ず USBから立ち上げたLinuxのDebianをインストールを進めたところ、パーティショニングの項目で、RAIDが認識しておらず、4台個々のHDDとして認識されている(RAIDが検出できない) ## RAID設定変更 Linuxインストールを一旦中止し、PERC S140設定を変更してみる。 ![](https://i.imgur.com/Eao9M0C.jpg) 導入時には、HDD4台がRAID構築されており、図のようにRAID TypeがWindows RAIDになっていた。 Linuxを利用する場合には、このRAID Typeを"**Linux RAID**"に変更すると良いとの情報もあったので、変更してみた。 ただし、**Linux RAIDだとRAID1しか利用できない**ようだ。 しかしながら、結果、Linuxインストールのパーティショニング項目では認識されなかった。 ちなみにCentOS8でも認識せず ## ソフトRAID未対応? RAIDが認識しなく、単体のHDDとして、Linuxのインストールを進めていったところ、今度はgrubがインストール出来ない不具合に遭遇 ![](https://i.imgur.com/3C0ibnu.jpg) いろいろ調べてみたところ、S140のソフトRAIDは、パフォーマンスに影響が出たり、**VMware ESXiは非対応**らしい [PowerPoint プレゼンテーション](https://japancatalog.dell.com/c/wp-content/uploads/SharedPremier_OrderGuide_20190927.pdf) 私だけの環境かもしれませんが、どうやらS140のソフトRAID(VirtualDisk)とLinuxとの相性は良くないようでした。 ## 最終的なLinux構築 結局のところ、Linux RAIDでもRAID1でもLinuxが導入できないので、S140のRAID設定を外し(Non RAID)、4台単体のHDDとして利用する事で、grubのインストールも無事に出来、サーバー構築が完了した。 どうしても、RAID組みたかったら、Linux(Debian,CentOD)上で、mdadm使って構築した方が良いかもしれません PowerEdge購入の際には、ハードウェアRAIDのH730Pを選んておいた方が無難かもしれませんね -------------------------------------------------------------------------------- title: "WordPressで画像がアップロード出来ない" date: "2020-02-12" url: https://scribble.washo3.com/wp-php-imageupload-error/ -------------------------------------------------------------------------------- WordPressで画像がアップロード出来ない症状では、よく下記の点が挙げられます - 画像の保存先が書き込み可になっていない - php.iniで設定している画像サイズの上限以上で行っている - 画像圧縮プラグインが関与している - そもそもHDD領域が足りない - CPU負荷が100%になっている ## 2019年からアップロード出来なくなった? とくに、php.iniやプラグインを変更していないのに、エラーが発生する症状が続いた。 「**画像の後処理に失敗しました。このファイルが写真もしくは大きい画像であれば、2500ピクセルに縮小してから再度アップロードしてください**。」 なんでも、下記で直る方もいる模様 - ブラウザーを一度起動し直す - 管理画面からログアウトする - 一度、下書き保存する しかし、私の環境では解決しませんでした ## 原因 - WordPressとPHPのバージョンによる問題 - WordPressプラグインの不具合 ## 対処法 もし、PHPとのバージョンによる問題だとしたら、現時点ではWordPressのバグフィックスを待つしかないので、急ぐ方は下記を行うしかないようです - WordPressをバージョンダウンする - PHPのバージョンを変更する(バージョンダウンもしくはバージョンアップ) - 7.4にバージョンアップしてみる([WordPress5.3 PHP7.4と他のPHPバージョンで気をつけること](https://tadtadya.com/wordpress5-3-about-php7-4-and-other-php-versions/)) - FTPで画像フォルダに手動でアップロードする - 外部画像URLを利用する ## その後の調査 DockerでWordPress 5.3とPHPのバージョンを変えて、環境を試してみたところ、何れもアップロードの不具合は起きなかった |WordPress|PHP|合否| |----|----|----| |5.3.2|7.0|○| |5.3.2|7.3|○| |5.3.2|7.4|○| ## 解決 Docker検証の結果、WordPressとPHPの相性ではなく、その他の環境が影響しているものと断定 私の環境では、Docker-composeにてkusanagi-nginxとkusanagi-phpで運用しており、PHP環境が7.0であったため、7.3へアップデートしてみたが、そもそもPHPがエラーを吐いて起動しなかった。 WordPressのプラグインは、かなり少なめであったが、無効にしても不具合は解消されず、今回の原因は、KUSANAGI設定の画像最適化が悪さをしていたようであった。 これを無効にしたところ、あっさり画像がアップロード可能になった。 しかも、再度、有効に戻しても不具合が起きないのはキャッシュ??(謎 WordPressではキャシュ系や圧縮系の機能は鬼門です! -------------------------------------------------------------------------------- title: "CentOS7上のhugoでGCCエラー" date: "2020-01-28" url: https://scribble.washo3.com/hugo-on-centos7-gcc/ -------------------------------------------------------------------------------- 最新版のHugoをCentOS7へインストールしたところ、下記のエラーで起動不可になった > ./hugo version ./hugo: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./hugo) ./hugo: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./hugo) ## GCCのバージョン確認 ``` # strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLIBCXX_3.4.6 GLIBCXX_3.4.7 GLIBCXX_3.4.8 GLIBCXX_3.4.9 GLIBCXX_3.4.10 GLIBCXX_3.4.11 GLIBCXX_3.4.12 GLIBCXX_3.4.13 GLIBCXX_3.4.14 GLIBCXX_3.4.15 GLIBCXX_3.4.16 GLIBCXX_3.4.17 GLIBCXX_3.4.18 GLIBCXX_3.4.19 ``` CentOSのGCCバージョンは古いままのようです ## 解決方法 - 新しいGCCをソースからインストールすれば動作するかと思いますが、CentOS上のgcc依存関係が壊れる可能性もあるので、よほど詳しい方でない限りお勧めしません。 - Hugoをソースからコンパイルビルド(こちらが安全) 予め、CentOS7上に、golang+ gcc-c++ をインストールしておきます 以前は、ソースからダウンロードする方式を明記してましたが、gitからそのまま持ってきたほうが楽そうです ```bash $ vim from-gh.sh mkdir $HOME/src cd $HOME/src git clone https://github.com/gohugoio/hugo.git cd hugo go install --tags extended $ sh from-gh.sh ``` ビルドが無事終了したら、GOPATHで指定したフォルダ(指定しなければ、~/go/)内にhugoが生成されるので、 ```bash $ ~/go/bin/hugo version hugo v0.82.0-DEV+extended linux/amd64 BuildDate=unknown ``` extendedの表記がある事が確認できればOKです。 ビルドに失敗するようであれば、[CentOS7上でhugoのソースビルドエラー](hugo-on-centos7-builderr.md)も参考にしてみてください。 - 上記2項目でも不可の場合 素直に、extendedが付いてないHugoをインストールしましょう。 ただし、SASS/SCSS対応のテーマだと動作はしません。 ちなみに、最新版のubuntuやdebianでは何の手を入れることなくextended版で動作確認しました。 参考までに、Extended版の違いは、SASS/SCSSがサポートされているかの違いだけです。 -------------------------------------------------------------------------------- title: "BeautifulhugoのSubmoduleブランチを変更" date: "2020-01-28" url: https://scribble.washo3.com/submodule-switch/ -------------------------------------------------------------------------------- このサイトで使用しているbeautifulhugoテーマが特定のブランチになっており、最新版へ更新されないので、masterへ変更したメモ書き 公式サイトで更新があったにも関わらず、submodule内のテーマが更新されなくて何故だろうと思っていたら、特定のブランチになっていたためでした。(導入当時はmasterにしたつもりだったのに・・・?) ## submoduleのブランチ確認 ここでは、/scribbleがhugoの親サイトとします ```bash $ pwd /scribble $ git submodule status 07f765675dab2b00ad39aa460118edff2f2d3fcd themes/beautifulhugo (07f7656) ``` ## ブランチをmasterへ変更 ```bash $ cd themes/beautifulhugo $ git checkout master Previous HEAD position was 07f7656 Merge pull request #269 from VincentTam/fix-dotHugo-deprecated Switched to branch 'master' Your branch is up to date with 'origin/master'. $ cd ../../ $ git submodule status +1ff3894b84b1802433b58e22dd22f4eb46a49fa9 themes/beautifulhugo (heads/master) ``` ## メインリポジトリの変更 ```git $ cd /scribble $ git diff diff --git a/themes/beautifulhugo b/themes/beautifulhugo index 07f7656..1ff3894 160000 --- a/themes/beautifulhugo +++ b/themes/beautifulhugo @@ -1 +1 @@ -Subproject commit 07f765675dab2b00ad39aa460118edff2f2d3fcd +Subproject commit 1ff3894b84b1802433b58e22dd22f4eb46a49fa9 $ git add themes/beautifulhugo $ git commit -m "update submodule" [master 190d53b] update submodule 1 file changed, 1 insertion(+), 1 deletion(-) $ git push Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 8 threads Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 291 bytes | 291.00 KiB/s, done. Total 3 (delta 1), reused 0 (delta 0) To https://gitlab.com/xxxxx/scribble.git 7705617..190d53b master -> master ``` 今回は、Beautifulテーマでのgitブランチ変更でしたが、他のテーマでも同様の作業で更新できます ## 参考記事 - [gitのサブモジュールにて特定のブランチやコミットを使用する | ハックノート](https://hacknote.jp/archives/23006/) -------------------------------------------------------------------------------- title: "QNAPのファーム更新後、ゲストログインが出来なくなった" date: "2020-01-24" url: https://scribble.washo3.com/qnap-smbbug/ -------------------------------------------------------------------------------- ## 不具合が起きている環境 機種:TS-269 Pro 旧ファームウェア:4.3.4.1029 新ファームウェア:4.3.4.2351 Windows10によるファイル共有およびMacSMBによる共有がゲストで接続出来なくなった。 旧ファームウェア時はゲストログイン出来ていたが、新ファームウェア後はゲストログインが出来なくなった ## 設定確認 - コントロールパネル→権限設定の「共有フォルダー権限の編集」にてゲストログイン可能ファイル(フォルダ)がeveryoneで読み取り/書き込みにチェックが入っている事を確認 - コントロールパネル→ネットワークサービスとファイルサービスの「Microsoftネットワーク」にて「Microsoftネットワーク向けのファイルサービスを有効にする」にチェックが入っていることを確認 - 「Microsoftネットワーク向けのファイルサービスを有効にする」を外して適用ボタンを押し、再度、チェックを入れて適用ボタンを押して見る(ファイル共有サービス再起動) これらの確認をしても、ゲストログインが出来ない ## 調査 Appleネットワーク(AFP)ではゲストログイン出来る事から、Windows共有のサービス(Samba)の設定が悪いのだろうと推測 - SSHでQNAPにログイン(接続方法は割愛) - Sambaの設定ファイルは/etc/smb.confだがシムリンクにより/etc/config/smb.confが設定ファイル - /etc/config/smb.conf内を確認 globalセクションやゲストログインフォルダセクションに"guest ok = yes"を確認 ## 不具合箇所 smb.conf内のglobalセクションに"invalid users = guest"が入っているのが原因 - smb.conf内の"invalid users = guest"の行を削除し、Sambaを再起動してみる - Sambaの起動/再起動スクリプトは/etc/init.d/smb.sh ``` # /etc/init.d/smb.sh restart ``` - 本来ならば、この設定でゲストログインが可能になるはずだが、Samba再起動後に/etc/config/smb.confを確認してみると消したはずの"invalid users = guest"が再度、挿入されていた。 (ちなみに、設定ファイルの確認はtestparmのコマンドでも可) ## 対処・解決方法 1. ファームウェアを古いバージョンにロールバック(ダウングレード)してみる  ただし、修復されない場合もあり、他の機能にも弊害が出る可能性があるので非推薦 1. QNAP管理画面より - 「コントロールパネル」 - 「ネットワークサービスとファイルサービス」 - 「Win/Mac/NFS」の「詳細オプション」を押し、「匿名ユーザーをSMB共有フォルダにアクセスすることを制限する」を無効に設定 - この設定でほぼ解決されると思われる 2. 「匿名ユーザーをSMB共有フォルダにアクセスすることを制限する」の項目が表示されない場合(私はこれに該当) 1. QNAPへSSHログイン 2. /etc/init.d/smb.shのバックアップを取り、773行目辺りの下記一行を編集する ``` /sbin/setcfg global "invalid users" "guest" -f ${CONFIG} ↓ /sbin/setcfg global "invalid users" "" -f ${CONFIG} ``` 最後にsmb.sh restartで再起動し、testparmでglobalセクションに、"invalid users = guest"がない事を確認し、Sambaで接続してみる ## 注意点 上の対象3.では、今後ファームウェア更新されると、修正したsmb.shが元に戻されると思うので、同不具合が起きる場合には再度修正が必要となる 今後のファームウェア更新でバグがフィックスされることを期待 ## 参考 今回の不具合に関して、参考になった記事 - [価格.com - 『ファームを上げると、ゲストユーザーが無効に』 QNAP TS-231P のクチコミ掲示板](https://bbs.kakaku.com/bbs/K0000925628/SortID=22773576/) - [QNAP NASでGuestアクセスができなくなる :: 大正区の街の電気屋さん「おかもとでんか」](https://www.okamoto-net.com/c1097/) - [Unable to access NAS as guest following firmware update to v4.3.6.0979 - Page 3 - QNAP NAS Community Forum](https://211-21-125-36.hinet-ip.hinet.net/viewtopic.php?f=185&t=149124&sid=deb65a8ff65188b015dd0b29d700d1ae&start=30) -------------------------------------------------------------------------------- title: "Hugo起動時にsocket: too many open files" date: "2019-11-21" url: https://scribble.washo3.com/hugo-socket-error/ -------------------------------------------------------------------------------- MacOS Sierra上で、とあるテーマをHugoで動作させようとしたら、下記のエラーが出て起動しなかった > Error: listen tcp 127.0.0.1:1313: socket: too many open files 調べてみると、Macのulimitを変更する必要があるとの事で、「[macOS Sierraでulimitを変更する方法 - Carpe Diem](https://christina04.hatenablog.com/entry/2017/05/28/105601)」を参考にさせていただき、解決いたしました。 ## ulimit変更 ```plist # cat /Library/LaunchDaemons/limit.maxfiles.plist Label limit.maxfiles ProgramArguments launchctl limit maxfiles 524288 524288 RunAtLoad ServiceIPC # cat /Library/LaunchDaemons/limit.maxproc.plist Label limit.maxproc ProgramArguments launchctl limit maxproc 2048 2048 RunAtLoad ServiceIPC ``` ```bash # chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist # chown root:wheel /Library/LaunchDaemons/limit.maxproc.plist # chmod 644 /Library/LaunchDaemons/limit.maxfiles.plist # chmod 644 /Library/LaunchDaemons/limit.maxproc.plist ``` ## Mac再起動 ## 変更確認 ```bash $ ulimit -a Maximum size of core files created (kB, -c) 0 Maximum size of a process’s data segment (kB, -d) unlimited Maximum size of files created by the shell (kB, -f) unlimited Maximum size that may be locked into memory (kB, -l) unlimited Maximum resident set size (kB, -m) unlimited Maximum number of open file descriptors (-n) 524288 Maximum stack size (kB, -s) 8192 Maximum amount of cpu time in seconds (seconds, -t) unlimited Maximum number of processes available to a single user (-u) 2048 Maximum amount of virtual memory available to the shell (kB, -v) unlimited ``` -------------------------------------------------------------------------------- title: "MWEBバージョンアップの注意点" date: "2019-10-24" url: https://scribble.washo3.com/mweb3.3update-notice/ -------------------------------------------------------------------------------- # MWEB3.2.8以前から3.3.xへアップデートする場合の注意点 MacでMarkDownエディターとして使いやすいMWEBですが、3.2.8より古いバージョンから、3.3以降へバージョンアップする際に、少し作業が必要となります。 3.2.8より古いバージョンから、アプリをそのまま最新にしても動作しません 公式のMWEBにて、「[MWeb version 3.2.8 and bellow update to version 3.3.1 notice - MWeb](https://www.mweb.im/version-3.2.8-to-3.3.1-release-note.html)」の注意点がかかれております ## アップデート作業手順 1. 3.2.8より古いバージョンの場合、[3.2.8をダウンロード](https://dl.devmate.com/com.coderforart.MWeb3/3.2.8/1568938643/MWeb3-ProMarkdownwriting%2CnotetakingandstaticbloggeneratorApp-3.2.8.dmg)する必要があります 2. ダウンロードした3.2.8を起動 3. MWEB上部項目のMWeb - Export Preferences Data...を選び、Preferences Dataを書き出しで保存 4. 3.2.8を終了し、3.xの最新版を起動 5. MWEB上部項目のMWeb - Import Preferences Data...を選び、3.で保存したPreferences Dataを読み込む 6. MWEBを再起動(終了して、起動しなおす) これで、完了ですが、もし、Preferences Dataを書き出しせずに最新版を起動した場合は、一旦3.2.8のバージョンでやり直す -------------------------------------------------------------------------------- title: "MacのKitematicが正常に動作しない" date: "2019-10-24" url: https://scribble.washo3.com/kitematic177/ -------------------------------------------------------------------------------- # Macで使用していたKitematicがDockerイメージを取得する際にエラーとなり、正常に動作しなくなった 以前に、Dockerをバージョンアップした際に、Kitematicもバージョン上げてから症状が起きていると推測されます。 ## 環境と症状 現在の動作環境と不具合情報を明記します ### 動作環境 ![](https://i.imgur.com/oQIzD51.jpg) ### 症状 Docker Hubからイメージをダウンロード完了間際にこのエラーが表示されます。 ![](https://i.imgur.com/62gGkf0.jpg) このエラーが出たら、GithubでFile Ticketしろと表示されますが、Githubへ飛んでもよくわかりません ## 解決策 [Kitematic says "context canceled" · Issue #4214 · docker/kitematic](https://github.com/docker/kitematic/issues/4214)の情報によると、最新バージョンのKitematicだと、この症状が出るようなので、バージョンを下げると良いようです。 当方、バージョンを最新の0.17.9から0.17.3へバージョンダウンしたところ、正常に起動するようになりました。 (もしかすると0.17.3まで下げなくても動作するかもしれません) しかし、0.17.9でpullしたイメージ、コンテナが表示されなくなったので、ご注意を! パスが変更になっているのかもしれません。 -------------------------------------------------------------------------------- title: "Ovftoolsバックアップ時の注意" date: "2019-09-03" url: https://scribble.washo3.com/ovftools-backup/ -------------------------------------------------------------------------------- VMware ESXiにおいて、 クライアントからESXiサーバー内のゲストOSをOVFにてバックアップを行おうとしました。 [VMware OVF Toolを利用してESXi 6.7からVMをエクスポート - redj’s blog](http://redj.hatenablog.com/entry/2019/01/31/011102) の詳しい記事を参考に、させていただきました。(感謝) ゲストOSを停止して、バックアップを試みてみたところ、エラー発生 ```csh # ofvtool vi://[ユーザー名]:[パスワード]@[ESXiのIPまたはFQDN]/[インベントリ登録名] [出力OVF名].ovf ``` > Error: Fault cause: vim.fault.InvalidState 以前のVsphereでのバックアップの際にはメンテナンスモードにしなければならなかったので、メンテナンスモードにしていたのが原因。 どうやらメンテナンスモードの状態だと出来ないらしい。 -------------------------------------------------------------------------------- title: "tt-rssアップデート後、起動せず(解決)" date: "2019-09-03" url: https://scribble.washo3.com/ttrss-upgdate-issue/ -------------------------------------------------------------------------------- TinyTinyRSSことtt-rssをgit pullにて最新版へ更新したところ、下記のエラーで起動しなくなってしまいました > PHP UConverter class is missing, it's provided by the Internationalization (intl) module. 現時点での動作環境は - nginx : 1.16.1 - PHP(php-fpm) : 7.3 - mysql : 5.5.62 Internationalization (intl)関連のエラーなので、関係するパッケージを確認してみたが、既に導入済み(php73-php-intl) ~~色々と情報を探ってみたが、解決策が見つからず、 結局、更新前のバージョンに戻すことにした~~ どうやら、**php.iniでintlモジュールを有効化**する必要があったようです。 - 既に、php-intlが導入済みなので、intlモジュールがどこにあるか確認 ```bash $ locate intl.so /opt/remi/php73/root/usr/lib64/php/modules/intl.so /usr/lib64/preloadable_libintl.so ``` - php.iniで下記を追加 ```php extension=/opt/remi/php73/root/usr/lib64/php/modules/intl.so ``` - phpプログラム再起動 (私の場合はphp-fpmですが、Apacheとかnginxとか適宜) - intlモジュールの確認 ```bash php -m | grep -e intl intl ``` intlの表示があればOK この作業後、再度、tt-rssへアクセスしてみたところ、 正常に動作し、 管理者でログインするとDB更新の警告画面に進み、 ![](https://i.imgur.com/ord1MBY.jpg) DB更新すると、正式にアップデート完了となります ![](https://i.imgur.com/pY6dIs1.jpg) ## アップデートの要点 最終的に判明した要点は下記です - php-intlのパッケージがインストールされているか? - php.iniでphp-intlモジュールが有効になっているか? 解決に至るまでに、いろいろ調べてみたら、OwnCloudやCakePHPなどintl関連を必要とするものが今後増えてきそうです。 また、Docker上のtt-rssを更新させようとすると、今回の件でハマるかもしれませんね ### 補足 もし、git更新してしまい、どうしても解決しない場合は、元のバージョンに戻してみましょう git reflogで履歴を見てみると、 ```git $ git reflog 12a5429 HEAD@{0}: pull : Fast-forward 656475e HEAD@{1}: clone: from https://tt-rss.org/git/tt-rss.git ``` git pullで動作しなくなる以前のリポジトリは、HEAD@{1}なので、下記のコマンドで元に戻す ```git $ git reset --hard HEAD@{1} ``` -------------------------------------------------------------------------------- title: "WordPressからHugoに変更した理由と利点" date: "2019-09-02" url: https://scribble.washo3.com/wp-to-hugo/ -------------------------------------------------------------------------------- ## WordPressからHugoへ変更した理由 10年以上もWordPressを利用して、記事を書いてきましたが、最近では更新も少なくなり、その割にはWordPressの更新やプラグインの更新は頻繁に行わなくてはならず、セキュリティ的にも面倒である事、そして、このサイトの記事自体はブログである必要はなく、どちらかと言うと静的ページに近いものでした。 それならば、いっその事、静的ジェネレーターを利用したサイトにした方が、サイト自体も高速になるようなので、思い切って、静的サイトに踏み切ったわけです。 さて、静的ジェネレーターにも様々なプログラムがあるようですが、Hugoと言うGo言語で書かれたツールを利用しました。 ## WordPressからHugoに変更したメリット・デメリット ### メリット - MySQLやPostgreSQLのDBやPHPも必要ない - 構築されたサイトはHTML形式のままなので、高速である - ほぼセキュリティ面で心配しなくてよい - Gitlab,Githubで管理するので、常にバックアップされた状態にあるので、バックアップを取る必要がない - Netlifyを利用することで、自分でサーバーを立ち上げる必要がなく、Gitで更新することにより、自動でサイトを構築してくれる - さらにはNetlifyだと、letsencryptを無料で利用でき、自動で更新してくれるので、自分で証明書を作成することもなく、更新切れを心配することもない - Markdown形式になれていれば、記事作成が楽 ### デメリット - 記事作成がWEB上やスマホ上では実質できない - WordPressプラグイン等で簡単にカスタマイズ出来る機能はない - WordPressの圧倒的に多いテーマに対し、Hugoのテーマはまだ少なめ - Markdownを覚えなければならない - Hugoの構造やGo言語の知識も必要 - SEOや広告等のタグも自力でカスタマイズする必要がある - Netlifyでサイト構築した場合、無料枠だとアクセス制限等が出来ない - Hugoのバージョンアップで変更箇所を自力で修正しなければならない ## Hugoに変更後 上記でメリット・デメリットを記載しましたが、何も考えずお任せで、機能やテーマを利用したい方はWordPressを利用した方が良いでしょう。 出来るだけサイト高速に拘る方や、自分でいろいろイジってみたい方がHugo等の静的ジェネレーター等を選ぶ理由だと思います。 Netlify、Gitlab(Github)に既にアカウントがあり、Hugoがインストールされた状態だと、ものの10分程度でサイトが構築できるのは、すごく楽ですよ。 ちなみに、このサイトは、MacやLinuxで記事作成し、GitlabへPushし、Netlifyが自動でビルド構築してくれてます。 独自ドメインでは、管理しているDNSサーバーでNetlifyへ向けて、自ドメインをNetlifyで運用している状況です 後ほど、WordPressからHugoへの記事移行を掲載したいと思います -------------------------------------------------------------------------------- title: "Hugo 0.57対応版Beautifulhugo" date: "2019-08-28" url: https://scribble.washo3.com/hugo075-beautifulhugo/ -------------------------------------------------------------------------------- Hugoのバージョンアップにより、変数書式が今後無効になるものがあるようなので、テーマを対応させました。 Beautifulhugoでは、5月以前のバージョンでは対応されてないので、一時的な修正になるかもしれません。 ## 環境 Hugo 0.57 Beautifulhugo :2019-05-08以降で対応されました (下記情報は2019−05-08以前のもの) ## 編集ファイル layouts/_default/list.html layouts/index.html layouts/partials/footer.html layouts/partials/head.html ## 変更箇所 |変更前|変更後| |----|----| |{{ .Hugo.Generator }}|{{ hugo.Generator }}| |{{ .RSSLink }}|{{ with .OutputFormats.Get "RSS" }}{{ . RelPermalink }}{{ end }}| |{{ .Hugo.Version }}|{{ .Site.Hugo.Version }}| |{{ .URL }}|{{ .Permalink }}、{{ .RelPermalink }}| |.Data.Pages|.Site.RegularPages| ## 編集箇所 ### layouts/_default/list.html ```diff @@ -47,12 +47,12 @@ ``` ## layouts/index.html ```diff @@ -9,7 +9,7 @@ {{ end }}
- {{ $pag := .Paginate (where .Data.Pages "Type" "post") }} + {{ $pag := .Paginate (where .Site.RegularPages "Type" "post") }} {{ range $pag.Pages }}
@@ -49,12 +49,12 @@ ``` ## layouts/partials/footer.html ```diff @@ -17,10 +17,8 @@ {{ end }} {{ if .Site.Params.rss }}
  • - {{ if .RSSLink }} - - {{ else }} - + {{ with .OutputFormats.Get "RSS" }} + {{ end }} ``` ## layouts/partials/head.html ```diff @@ -61,7 +61,7 @@ - {{ .Hugo.Generator -}} + {{ hugo.Generator -}} ``` 参考: - [Hugo 0.55 リリースでまた後方互換性が壊れた](https://text.baldanders.info/release/2019/04/broken-backward-compatibility-by-hugo-0_55/) - [Fix #261 #269](https://github.com/halogenica/beautifulhugo/pull/269) - [Hugo 0.57.0 更新後、Posts のみが表示されるようになった場合](https://balloon.gq/2019/08/hugo-0.57.0-%E6%9B%B4%E6%96%B0%E5%BE%8Cposts-%E3%81%AE%E3%81%BF%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%9F%E5%A0%B4%E5%90%88/) -------------------------------------------------------------------------------- title: "先頭に--(ハイフン)が付いたファイルの消し方" date: "2019-08-23" url: https://scribble.washo3.com/dashfile/ -------------------------------------------------------------------------------- Hugoで作業していたところ、引数を間違ったのか、Viewモードでビルドしてしまったかで、 "--bind=192.168.1.1"のディレクトリが作成されてしまいました ## 失敗例 このような先頭に--(ハイフン)が付いたファイルやディレクトリを削除しようと、下記のようなコマンドでは消すことが出来ません ``` $ rm --bind=192.168.1.1 # 当然、引数と間違われるので☓ $ rm ”--bind=192.168.1.1” ☓ $ rm '--bind=192.168.1.1' ☓ ``` ## 正しい消し方 コマンドの引数に"--"(ハイフン2つ)を挿入してファイル・ディレクトリを指定です ``` $ rm -rf -- --bind=192.168.1.1 $ rm -- $ rm -r -- リネームのmvでも同様 $ mv -- ``` コマンド引数"--"(ハイフン2つ)を挿入することにより、それ以降は全て文字として認識されるようです。 なので、rm -rf -- --bindは、下記のような解釈となります ``` コマンド:rm 引数:-rf (強制ディレクトリ) 引数:-- (これ以降は引数が無効) ディレクトリ名:--bind (全て文字として扱われる) ``` 滅多に使わないコマンドの引数なので、結構忘れがち -------------------------------------------------------------------------------- title: "Ripgrep" date: "2019-08-21" url: https://scribble.washo3.com/ripgrep/ -------------------------------------------------------------------------------- grepやack,silver_searcherよりも高速検索ができるRipgrep(rg)を、いくつかのプラットフォームにインストールしたのでメモ ## Mac homebrewからそのままインストール(homebrewが既にインストールの場合) ```bash $ brew install ripgrep ``` ## CentOS 7 CentOSでは、標準のリポジトリやepelでもripgrepがありませんので、下記でインストール ```bash $ sudo yum-config-manager --add-repo=https://copr.fedorainfracloud.org/coprs/carlwgeorge/ripgrep/repo/epel-7/carlwgeorge-ripgrep-epel-7.repo $ sudo yum install ripgrep ``` ## Debian 10 ``` # apt install ripgrep ``` Debian9やUbuntuのバージョンが古くて、aptにパッケージがない場合は、下記 ```bash $ curl -LO https://github.com/BurntSushi/ripgrep/releases/download/0.8.1/ripgrep_0.8.1_amd64.deb $ sudo dpkg -i ripgrep_0.8.1_amd64.deb ``` ## 手動インストール 各OSにてパッケージが見つからない場合やパッケージをあえて利用しないで、ソースからビルドする場合は、下記の方法で、ほとんどのプラットフォームで利用できます ```bash $ git clone https://github.com/BurntSushi/ripgrep $ cd ripgrep $ cargo build --release $ ./target/release/rg --version 0.1.3 ``` ## その他のプラットフォーム 私の環境ではFreeBSD、OpenSUSE、Windows、Gentooなど試せないので、下記の記事を参考にしていただければと思います [Docs.rs](https://docs.rs/crate/ripgrep/) -------------------------------------------------------------------------------- title: "Debian9から10へのアップグレード" date: "2019-07-08" url: https://scribble.washo3.com/debian-9to10-upgrade/ -------------------------------------------------------------------------------- # Debian Upgrade Debian 9.xから10.xへメジャーアップグレード ## アップグレード手順 ### バージョン確認 ```bash $ cat /etc/debian_version 9.1 ``` ### アップデート ```bash # apt-get update # apt-get upgrade # apt-get dist-upgrade ``` ### sources.listの書き換え ```bash # sed -i 's/stretch/buster/g' /etc/apt/sources.list ``` ### アップグレード実行 ```bash # apt-get update # apt-get upgrade ``` もし、NFS関連のデーモンが起動していたら停止しておく ```bash # systemctl stop rpcbind ``` 最終のアップグレード ```bash # apt-get dist-upgrade ``` ### 再起動 ```bash # /sbin/shutdown -r now ``` ### バージョン確認 ```bash $ cat /etc/debian_version 10.0 ``` ### 参考記事 - [Debianのバージョンを6から9にあげてみた](https://www.komee.org/entry/2018/03/10/183000) - [How to upgrade Debian 9 Stretch to Debian 10 Buster](https://linuxconfig.org/how-to-upgrade-debian-9-stretch-to-debian-10-buster) ### 注意事項 今回は、ほぼ素のDebian9から10へのアップグレードをテストしてみましたが、運用中のDebian9.x上にいろんなアプリやカスタマイズを施している場合は、必ずしも上手くいくとは限りません 更新作業をする際は、必ずバックアップを取って自己責任でお願いします ## マイナーバージョンアップ ここでは10.2から10.3へのマイナーバージョンアップ方法を記します 現在のバージョン確認 ```csh $ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 10 (buster) Release: 10 Codename: buster $ cat /etc/debian_version 10.2 $ uname -mrs Linux 4.19.0-6-amd64 x86_64 ``` ### バージョンアップ ```csh # apt update # apt dist-upgrade # shutdown -r now ``` 10.8から10.9へのマイナーバージョンアップを追記 -------------------------------------------------------------------------------- title: "Vimで不可視文字を表示" date: "2019-05-10" url: https://scribble.washo3.com/vim-listchar/ -------------------------------------------------------------------------------- Python書式やMarkDown記述に慣れてくると、特に空白行やタブをVimで可視化したくなるときがあります ## 一時的にVimで可視化 ```vim : set list : set listchars=tab:»-,trail:-,eol:↲,extends:»,precedes:«,nbsp:%,space:_ ``` ## 恒久的に可視化 ~/.vimrcに下記を追加 ```vim set list set listchars=tab:»-,trail:-,eol:↲,extends:»,precedes:«,nbsp:%,space:_ ``` ## 非表示に戻したい vim内で、 ``` :set nolist ``` ## 参考 [Vimのタブ・空白・改行文字等のlistcharsの色変更] (https://qiita.com/pollenjp/items/459a08a2cc59485fa08b) |項目|説明| |----|----| |set list|不可視文字を表示| |set listchars|表示させる文字を設定| |tab|タブ文字を表示| |trail|行末の空白を表示| |eol|改行の表示| |space|空白の表示| -------------------------------------------------------------------------------- title: "Hugoで最初に決めておきたい事" date: "2019-05-10" url: https://scribble.washo3.com/hugo-first-decision/ -------------------------------------------------------------------------------- # Hugoで最初に決めておきたい項目を自分用にメモ ## テーマ選択 テーマによって、front matterやshortcodeの記述が違ってくるし、レイアウトやCSS等、カスタマイズしやすいテーマを最初にじっくり決めておきたい [Hugo Themes: Complete List](https://themes.gohugo.io/) Hugoのバージョンアップにより、無効となる書式等が生じる場合があるので、頻繁にアップデートされているテーマを選んだほうが良いかもしれません 個人的におすすめは、Academic,Tranquilpeak,Learn,Beautifulhugoかな ## パーマリンク サイトの出力URLがyour-site/post/content/などをカテゴリー別表記や日付表示にしたい場合、後々、記事が多くなってから変更すると大変なので、出力URL形式を決めておいたほうが良いですね。 このサイトでは、your-site/content.html形式にしています。 参考:[Hugoのパーマリンク設定メモ](https://sizucca.com/daily/20180528/)、[URL Management](https://gohugo.io/content-management/urls/) ## 画像の管理 画像の置き場は、外部サイトから関連URLで表示する方が楽ではあります。  しかし、外部サイトから読み込む分、表示速度が遅くなりますし、外部サイトが閉鎖されたらアウトです。 なので、安全なのはローカル側に置くことですが、通常はstaticフォルダ内のimgフォルダに置くのが一般的です SEO的に、定期的に画像を圧縮したほうが良いでしょう ## カテゴリー、タグ WordPressみたいに、後から、カテゴリー、タグを一度に編集出来ないですから、記事を書く際に、カテゴリーやタグを予め決めておいたほうが良いでしょう。 全てタグにする方が楽かもしれません -------------------------------------------------------------------------------- title: "サイト出力形式を.htmlにしたい" date: "2019-05-10" url: https://scribble.washo3.com/uglyurls/ -------------------------------------------------------------------------------- サイトの出力形式もテーマによって違うと思いますが、contentと言う記事を書いた場合、通常だと下記のような出力形式になるかと思います。 ``` https://your-site/post/content/ https://your-site/content/ ``` これをyour-site/content.htmlと語尾を.html形式にしたい場合 config.toml内に下記を追記 ```toml:config.toml uglyURLs = true ``` - 注意点: 記事内のfront matterに"url:xxxx"の記述が書かれていると、優先されるため、uglyURLSが無効となり、html形式にはなりません。 もし、書かれていた場合は、この記事だけ、your-site/xxxx/のような出力となる ### 参考 [URL Management](https://gohugo.io/content-management/urls/) -------------------------------------------------------------------------------- title: "Markdownテーブル表記" date: "2019-05-10" url: https://scribble.washo3.com/markdown-table/ -------------------------------------------------------------------------------- # Markdownでのテーブル表記 基本的に|で区切っていくだけ ## 基本形 ``` |見出し1|見出し2|見出し3| |-------|-------|-------| |項目1|項目2|項目3| ``` |見出し1|見出し2|見出し3| |-------|-------|-------| |項目1|項目2|項目3| - 1行目は見出し 見出しは必ずボールドになるようです - 2行目は属性による区切り -のいくつでも良いようですが、4つ以上の方が良いかと - 3行目以降は、項目・内容をどんどん増やしていけば良いだけ ## 書式配置 見出しや項目を左寄せ・右寄せ・センタリングしたい場合 ``` |見出し1|見出し2|見出し3| |:------|:-----:|------:| |左寄せ|センタリング|右寄せ| ``` |見出し1|見出し2|見出し3| |:------|:-----:|------:| |左寄せ|センタリング|右寄せ| - 注意点としては、縦列全てが適用されてしまうので個別に適用したい場合はHTMLタグを挿入する ## 結合や分割 Markdownでは残念ながら、テーブルの結合や分割等の複雑なテーブル作成は出来ないようですので、HTML表記しましょう 下表は、tableタグをそのまま記述してます
    項目
    内容 内容 内容 内容
    内容 内容
    内容 内容 内容
    内容
    -------------------------------------------------------------------------------- title: "WordPressプラグインのwp-tegakiエラー" date: "2019-05-10" url: https://scribble.washo3.com/wp-tegaki-error/ -------------------------------------------------------------------------------- # wp-tegkiプラグインは無効でもエラー? WordPressブログにて、以前利用していたwp-tegakiと言うプラグインを無効にしているにも関わらず、下記のエラーが出る。 (wp-tegakiは、開発も止まっているし、PHP7.xにも対応していないから) ```php PHP Parse error: syntax error, unexpected 'new' (T_NEW) in /var/www/html//wp-content/plugins/wp-tegaki/wp-tegaki-img.php on line 24 ``` 既に利用していないし、気持ち悪いので、削除! 今ではWebフォント使ったほうが良いね -------------------------------------------------------------------------------- title: "Beautifulhugoでの記事コピペ防止" date: "2019-05-08" url: https://scribble.washo3.com/oncopy/ -------------------------------------------------------------------------------- # 記事のコピペ防止 「[テキストのドラッグ、画像のコピーを禁止して、記事をコピーさせない方法]( https://www.itti.jp/web-design/not-drag/)」を参考に、 テキストの選択(ドラッグ)を禁止させる なお、Beautifulhugoテーマで適用なので、他テーマはよしなに。 ## スクリプト追記 bodyタグ内に追記 * beautifulhugo/layouts/_default/baseof.html ```html ``` ## CSS修正 bodyのcssに追記 * beautifulhugo/static/css/main.css ```css user-select:none; -webkit-user-select:none; -ms-user-select: none; -moz-user-select:none; -khtml-user-select:none; -webkit-user-drag:none; -khtml-user-drag:none; ``` ### ポイント 要は、bodyタグ内にJavascriptを記述し、CSSのbodyにCSSを適用すれば良いだけ -------------------------------------------------------------------------------- title: "HugoにSNSの埋め込みコードで表示させるには?" date: "2019-05-07" url: https://scribble.washo3.com/sns-embed/ -------------------------------------------------------------------------------- テーマによって、ショートタグが用意されている場合があるが、基本的に、HTMLやiframeのタグをそのまま貼り付けるだけで、ほとんどが表示されるようです。 - Youtube 動画を記事内に埋め込む {{< youtube w7Ft2ymGmfc >}} - Instagram の投稿を記事内に埋め込む Instagram APIが変更され、Facebookのアカウント設定が必要になってしまった。 - ツイートを記事内に埋め込む {{< x user="scott_lowe" id="898398437527363585" >}} - ブログカード - Google Maps - asciinema [![asciicast](https://asciinema.org/a/14.png)](https://asciinema.org/a/14) - Flickr [![Flickr](https://live.staticflickr.com/8146/7477123936_d9386310be.jpg)](https://flic.kr/p/coJdrW) - CodePen - Gist↲ {{}}↲ -------------------------------------------------------------------------------- title: "Hackmd" date: "2019-05-07" url: https://scribble.washo3.com/hackmd/ -------------------------------------------------------------------------------- オンラインでMarkdownがプレビュー付きで記述出来て便利なサービス [https://hackmd.io/](https://hackmd.io) ## 良い点 * リアルタイムプレビュー * Dropbox, Google のアカウントを利用できる * imgur と連動している。アップロードした画像は自動的に imgur に格納される2 * Dropbox, Google Drive, Gist へエクスポート可能 * Dropbox, Google Drive, Gist およびクリップボードからインポート可能 * markdown または HTML 形式でローカルにダウンロード可能 * 簡単な記述により YouTube, Vimeo, Gist, SlideShare, Speakerdeck のコンテンツを埋め込める * シーケンスやフローチャートも描ける このオンラインサービスでMarkDownを作成し、Hugoの記事に貼り付けると楽だね -------------------------------------------------------------------------------- title: "数式" date: "2019-05-07" url: https://scribble.washo3.com/hugo-math/ -------------------------------------------------------------------------------- テーマによって、そのまま数式表示対応になっている場合があるが、もし、表示されない場合は、テーマ内のlayout/partial/footer.htmlに下記を追加 ```javascript ``` KaTeX can be used to generate complex math formulas server-side. $$ \phi = \frac{(1+\sqrt{5})}{2} = 1.6180339887\cdots $$ Additional details can be found on [GitHub](https://github.com/Khan/KaTeX) or on the [Wiki](http://tiddlywiki.com/plugins/tiddlywiki/katex/). ### Example 1 If the text between $$ contains newlines it will rendered in display mode: ``` $$ f(x) = \int_{-\infty}^\infty\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi $$ ``` $$ f(x) = \int_{-\infty}^\infty\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi $$ ### Example 2 ``` $$ \frac{1}{\Bigl(\sqrt{\phi \sqrt{5}}-\phi\Bigr) e^{\frac25 \pi}} = 1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {1+\frac{e^{-6\pi}} {1+\frac{e^{-8\pi}} {1+\cdots} } } } $$ ``` ​​$$ \frac{1}{\Bigl(\sqrt{\phi \sqrt{5}}-\phi\Bigr) e^{\frac25 \pi}} = 1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {1+\frac{e^{-6\pi}} {1+\frac{e^{-8\pi}} {1+\cdots} } } } $$ ​​ ### Example 3 ``` $$ 1 + \frac{q^2}{(1-q)}+\frac{q^6}{(1-q)(1-q^2)}+\cdots = \prod_{j=0}^{\infty}\frac{1}{(1-q^{5j+2})(1-q^{5j+3})}, \quad\quad \text{for }\lvert q\rvert<1. $$ ``` $$ 1 + \frac{q^2}{(1-q)}+\frac{q^6}{(1-q)(1-q^2)}+\cdots = \prod_{j=0}^{\infty}\frac{1}{(1-q^{5j+2})(1-q^{5j+3})}, \quad\quad \text{for }\lvert q\rvert<1. $$ -------------------------------------------------------------------------------- title: "Markdown Sample" date: "2019-05-07" url: https://scribble.washo3.com/markdown-sample/ -------------------------------------------------------------------------------- __Advertisement :)__ - __[pica](https://nodeca.github.io/pica/demo/)__ - high quality and fast image resize in browser. - __[babelfish](https://github.com/nodeca/babelfish/)__ - developer friendly i18n with plurals support and easy syntax. You will like those projects! --- # h1 Heading 8-) ## h2 Heading ### h3 Heading #### h4 Heading ##### h5 Heading ###### h6 Heading ## Horizontal Rules ___ --- *** ## Typographic replacements Enable typographer option to see result. (c) (C) (r) (R) (tm) (TM) (p) (P) +- test.. test... test..... test?..... test!.... !!!!!! ???? ,, -- --- "Smartypants, double quotes" and 'single quotes' ## Emphasis **This is bold text** __This is bold text__ *This is italic text* _This is italic text_ ~~Strikethrough~~ ## Blockquotes > Blockquotes can also be nested... >> ...by using additional greater-than signs right next to each other... > > > ...or with spaces between arrows. ## Lists Unordered + Create a list by starting a line with `+`, `-`, or `*` + Sub-lists are made by indenting 2 spaces: - Marker character change forces new list start: * Ac tristique libero volutpat at + Facilisis in pretium nisl aliquet - Nulla volutpat aliquam velit + Very easy! Ordered 1. Lorem ipsum dolor sit amet 2. Consectetur adipiscing elit 3. Integer molestie lorem at massa 1. You can use sequential numbers... 1. ...or keep all the numbers as `1.` Start numbering with offset: 57. foo 1. bar ## Code Inline `code` Indented code // Some comments line 1 of code line 2 of code line 3 of code Block code "fences" ``` Sample text here... ``` Syntax highlighting ``` js var foo = function (bar) { return bar++; }; console.log(foo(5)); ``` ## Tables | Option | Description | | ------ | ----------- | | data | path to data files to supply the data that will be passed into templates. | | engine | engine to be used for processing templates. Handlebars is the default. | | ext | extension to be used for dest files. | Right aligned columns | Option | Description | | ------:| -----------:| | data | path to data files to supply the data that will be passed into templates. | | engine | engine to be used for processing templates. Handlebars is the default. | | ext | extension to be used for dest files. | ## Links [link text](http://dev.nodeca.com) [link with title](http://nodeca.github.io/pica/demo/ "title text!") Autoconverted link https://github.com/nodeca/pica (enable linkify to see) ## Images ![Minion](https://octodex.github.com/images/minion.png) ![Stormtroopocat](https://octodex.github.com/images/stormtroopocat.jpg "The Stormtroopocat") Like links, Images also have a footnote style syntax ![Alt text][id] With a reference later in the document defining the URL location: [id]: https://octodex.github.com/images/dojocat.jpg "The Dojocat" ## Plugins The killer feature of `markdown-it` is very effective support of [syntax plugins](https://www.npmjs.org/browse/keyword/markdown-it-plugin). ### [Emojies](https://github.com/markdown-it/markdown-it-emoji) > Classic markup: :wink: :crush: :cry: :tear: :laughing: :yum: > > Shortcuts (emoticons): :-) :-( 8-) ;) see [how to change output](https://github.com/markdown-it/markdown-it-emoji#change-output) with twemoji. ### [Subscript](https://github.com/markdown-it/markdown-it-sub) / [Superscript](https://github.com/markdown-it/markdown-it-sup) - 19^th^ - H~2~O ### [\](https://github.com/markdown-it/markdown-it-ins) ++Inserted text++ ### [\](https://github.com/markdown-it/markdown-it-mark) ==Marked text== ### [Footnotes](https://github.com/markdown-it/markdown-it-footnote) Footnote 1 link[^first]. Footnote 2 link[^second]. Inline footnote^[Text of inline footnote] definition. Duplicated footnote reference[^second]. [^first]: Footnote **can have markup** and multiple paragraphs. [^second]: Footnote text. ### [Definition lists](https://github.com/markdown-it/markdown-it-deflist) Term 1 : Definition 1 with lazy continuation. Term 2 with *inline markup* : Definition 2 { some code, part of Definition 2 } Third paragraph of definition 2. _Compact style:_ Term 1 ~ Definition 1 Term 2 ~ Definition 2a ~ Definition 2b ### [Abbreviations](https://github.com/markdown-it/markdown-it-abbr) This is HTML abbreviation example. It converts "HTML", but keep intact partial entries like "xxxHTMLyyy" and so on. *[HTML]: Hyper Text Markup Language ### [Custom containers](https://github.com/markdown-it/markdown-it-container) ::: warning *here be dragons* ::: -------------------------------------------------------------------------------- title: "Mermaid Sample" date: "2019-05-07" url: https://scribble.washo3.com/mermaid-sample/ -------------------------------------------------------------------------------- HugoテーマのBeautifulhugoでは、シーケンス図作成ライブラリのmermaid.jsが既に組み込まれてますので、ショートタグを指定して、mermaidの書式で記述するだけで、シーケンス図が表示されますね。 もし、テーマに組み込まれていない場合には、 「[Hugoにmermaidを組み込んでみた](https://qiita.com/_takeuchi_/items/35c52fd85884a83c154d)」の記事を参考にしてみると良いでしょう。 ## 簡単なサンプル {{}} graph LR A[ローカル] -->|git push| B(GitLab.com) B --> C{Netlify} {{< /mermaid >}} ## ガントチャート 公式から引用 {{}} gantt dateFormat YYYY-MM-DD title Adding GANTT diagram functionality to mermaid section A section Completed task :done, des1, 2014-01-06,2014-01-08 Active task :active, des2, 2014-01-09, 3d Future task : des3, after des2, 5d Future task2 : des4, after des3, 5d section Critical tasks Completed task in the critical line :crit, done, 2014-01-06,24h Implement parser and jison :crit, done, after des1, 2d Create tests for parser :crit, active, 3d Future task in critical line :crit, 5d Create tests for renderer :2d Add to mermaid :1d {{< /mermaid >}} ## Basic sequence diagram {{}} sequenceDiagram Alice ->> Bob: Hello Bob, how are you? Bob-->>John: How about you John? Bob--x Alice: I am good thanks! Bob-x John: I am good thanks! Note right of John: Bob thinks a long
    long time, so long
    that the text does
    not fit on a row. Bob-->Alice: Checking with John... Alice->John: Yes... John, how are you? {{< /mermaid >}} ------- * https://mermaidjs.github.io/demos.html * https://mermaidjs.github.io/mermaid-live-editor/ -------------------------------------------------------------------------------- title: "Hugoでの初投稿" date: "2019-05-04" url: https://scribble.washo3.com/fist-commit/ -------------------------------------------------------------------------------- HugoとGitLab、Netlifyを利用し、サイトを構築してみた # サイト構築 ## 前提条件 - GitLabアカウント登録済み - Netlifyアカウント登録済み - ローカルにhugoをインストール済み ### 作業手順 1. GitLabにてリポジトリ作成 2. ローカルにgit clone 3. hugoで新規サイト作成 4. 3.で作成したディレクトリ・ファイルを2.のディレクトリへコピー 5. .gitignore作成 ``` .DS_Store public ``` 6. テーマをインストール ``` $ git submodule add https://github.com/halogenica/beautifulhugo.git beautifulhugo ``` あらかじめテーマが決まっているので、ルート配下へコピーします ``` $ cp -r themes/beautifulhugo/exampleSite/* ./ $ cp -r themes/beautifulhugo/layouts ./ $ cp -r themes/beautifulhugo/static ./ ``` 1. ローカルでサイト構築確認 ``` $ hugo server .... Web Server is available at http://localhost:1313/ (bind address 127.0.0.1) ``` これだけでサイト構築が出来るので、ブラウザでhttp://localhost:1313へアクセスし、表示されていることを確認 確認出来たら、hugo server をctrl+cで止める 2. リポジトリ更新 ``` $ git add . $ git commit . $ git push -u origin master ``` 後は、記事を書いたり、環境設定やレイアウトを編集したりして、リポジトリを更新していく -------------------------------------------------------------------------------- title: "yum updateで重複するパッケージのエラーで更新できない" date: "2019-04-26" url: https://scribble.washo3.com/linux/yum-updatede-dupes-error.html -------------------------------------------------------------------------------- CentOS7上にて、yum updateを行った際に、「〜の複製です」とduplicateエラーにて更新出来ない状況に陥ったので、いろんな解決方法を試してみた。 # yum update .... yum-utils-1.1.31-42.el7.noarch は yum-utils-1.1.31-40.el7.noarch の複製です zsh-5.0.2-28.el7.x86_64 は zsh-5.0.2-25.el7_3.1.x86_64 の複製です
    ## package-clenupで直す * package-clenupがない場合は、yum-utilsをインストール # yum install yum-utils * 重複するパッケージを削除 # package-cleanup --dupes ## package-cleanupで直らない場合 # LANG=C # yum check duplicates | awk '/is a duplicate/ {print $6}' > /tmp/yum.dupes # cat /tmp/yum.dupes .... 1:yelp-3.14.2-1.el7.x86_64 1:yelp-libs-3.14.2-1.el7.x86_64 yelp-xsl-3.14.0-1.el7.noarch yum-plugin-fastestmirror-1.1.31-40.el7.noarch yum-utils-1.1.31-40.el7.noarch zsh-5.0.2-25.el7_3.1.x86_64 # yum remove `cat /tmp/DUPES` ## 別な方法

    How to remove duplicate packages from a failed yum transaction (when yum-complete-transaction fails to complete)

    # yum-complete-transaction # tar cjf /tmp/rpm_db.tar.bz2 /var/lib/{rpm,yum} # yum check &> /tmp/yumcheck # grep "duplicate" /tmp/yumcheck | awk '{ print $NF }' | egrep -v "\:" > /tmp/duplicaterpms # grep "duplicate" /tmp/yumcheck | awk '{ print $NF }' | egrep ":" | awk -F':' '{ print $NF }' >> /tmp/duplicaterpms # for i in $(cat /tmp/duplicaterpms) do rpm -e --justdb --nodeps $i done これで直った! -------------------------------------------------------------------------------- title: "CentOS6上にRSSリーダーのTinyTinyRSSを導入" date: "2019-04-19" url: https://scribble.washo3.com/linux/tinytinyrss-install-on-centos.html -------------------------------------------------------------------------------- # CentOS6上にtiny tiny rssを導入 ## 必要条件 * PHP 5.6以上 * Postgresql9.1以上 or MySQL InnoDB * SSL証明書(letsencrypt) * Git * https環境(Apache,nginx) * DNS ## はじめに ## Tiny Tiny RSS のダウンロード 導入するディレクトリ及びオーナー・グループ(nginx)は適宜変更
    # cd /var/www/html
    # git clone https://tt-rss.org/git/tt-rss.git tt-rss
    # chown -R nginx:nginx tt-rss
    
    ## DB の作成 (admin/password) ※DB名:tt-rss、DBユーザ名:admin、DBユーザパスワード:password とする場合
    # mysql -u root -p
    mysql> CREATE USER ‘admin'@'localhost' IDENTIFIED BY 'password';
    mysql> CREATE DATABASE tt-rss CHARACTER SET utf8;
    mysql> GRANT ALL ON DB_NAME.* TO ‘admin'@'localhost’;
    
    または、下記 ## DNS (自分のサイトURL配下に設置する場合は、DNSの設定は必ずしも必要ではありません。) 私の場合、CloudFlareにてreader.yoursite.comの名前でDNS作成 (サイト名は自分用に設定してください) ## letsencryptで証明書作成
    $ certbot certonly --standalone -d reader.yoursite.com
    
    ## nginxのconf作成(SSL対応) tt-rss/utils/gitlab-ci/nginx-defaultが雛形 https://gist.github.com/bjoerns1983/30dff232c8ccede12f6caec7c609b0b6
    server_name reader.yoursite.com;
    
    location / {
    root /var/www/html/tt-rss;
    charset utf-8;
    index index.php;
    
    try_files $uri $uri/ /index.php?q=$uri&$args;
    
    include php_exec;
    }
    
    # すべての不可視ファイルをアクセス不可にします。
    location ~ /\. {
    access_log off;
    log_not_found off;
    deny all;
    }
    listen 443 ssl https2; # managed by Certbot
    by Certbot
    ssl_session_timeout 1440m; # managed by Certbot
    
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # managed by Certbot
    ssl_prefer_server_ciphers on; # managed by Certbot
    
    128-SHA ECDHE-RSA-AES128-SHA256 ECDHE-RSA-AES256-SHA384 DHE-RSA-AES128-GCM-SHA25
    6 DHE-RSA-AES256-GCM-SHA384 DHE-RSA-AES128-SHA DHE-RSA-AES256-SHA DHE-RSA-AES128
    -SHA256 DHE-RSA-AES256-SHA256 EDH-RSA-DES-CBC3-SHA"; # managed by Certbot
    
    if ($scheme != "https") {
    }
    
    ## tt-rss設定 https://reader.yoursite.com/install/へアクセスし、各項目を設定 * MySQLの設定など * DBホスト名やPortも記述したほうが良い * 確認のため、config.phpを見ておく * 初期化 ### パスワード変更 admin/passwordでログインし、パスワードを変更しておく ### ユーザー作成 * 言語を日本語 * タイムゾーンをAsia/Tokyo * APIにチェックマーク ### 外部サービスからインポート inoreaderの場合 inoreaderからエクスポートし、subscription.xmlをインポートする。 この辺は、GoogleやFeedlyでも同様 ### ちょっとしたエラー * インポートで500 Internal Sever Errorが出る場合 (config.php内にホスト名・ポート番号が未記入もしくはmysqlでflush privilegesが必要だった?) * 記事の更新が出来ていない・出来ない 下記のディレクトリーを書き込み可にする必要があるようだ。
    # chmod -R 777 lock feed-icons cache/export cache/images cache/upload
    
    ### 定期的に更新 rootだと動作しないのでnginxで動作させる
    # sudo -u nginx crontab -e
    */15 * * * * /usr/bin/php /var/www/html/tt-rss/update.php --feeds --quiet
    
    ### Tiny RSSの更新(アップデート)
    # cd /var/www/html/tt-rss && git pull
    
    -------------------------------------------------------------------------------- title: "ブログをSSL(HTTPS)対応後に、はてなのブログカードが表示されなくなった" date: "2019-04-17" url: https://scribble.washo3.com/wordpress/hatenablogcard-ssl.html -------------------------------------------------------------------------------- このサイトをSSL(HTTPS)化して、しばらく経つのですが、今更ながら、はてなのブログカードが表示されていない事に気づきましたので対処しました。 最近のテーマでは、はてなブログカード対応になっているテーマが多くなってきましたが、ここのサイトのテーマは古いので、独自に対応させております。 こちらのコードを流用させていただいておりましたが、SSL(HTTPS)対応版に修正されておりましたので、対応させていただきました。

    WordPressエディターに外部URLをコピペするだけで、どんなサイトでも「はてなブログカード」を表示させるカスタマイズ方法

    はてなブログカード非対応のサイトでも、functions.phpにコードを貼り付けるだけですので簡単ですね -------------------------------------------------------------------------------- title: "muninでエラーメールが頻繁に届くので対処" date: "2019-04-17" url: https://scribble.washo3.com/linux/munin-error-mail.html -------------------------------------------------------------------------------- 以前から、muninで監視されているサーバーから、下記のエラーメールが届いてて、放置状態だったので、対処した。 エラー内容 > [FATAL] There is nothing to do here, since there are no nodes with any plugins. Please refer to https://munin-monitoring.org/wiki/FAQ\_no\_graphs at /usr/share/munin/munin-html line 40 このエラーは、muninサーバーではなく、監視されているmunin-nodeを動作しているサーバーで起きている プラグインによるエラーだと、ほぼ、このコマンドで解消される
    munin-node-configure --shell | sh -x
    しかし、これでも解消されず、エラーを吐いているmunin-nodeのサーバー設定を見てみると、なぜかmunin.confが存在している。 通常、監視されているサーバーでは、munin-nodeだけインストールすれば良いのだが、どうやらmuninもインストールされていたようだ。 したがって、muninを削除し、解消された。 もし、削除しなければ、munin.confを下記の設定にて解消されるはず。 /etc/munin/munin.conf
    [localhost] 
    
    address 127.0.0.1 
    
    use_node_name yes
    今回の対処では、こちらの記事を参考にさせていただきました https://mgng.mugbum.info/1454 -------------------------------------------------------------------------------- title: "etckeeperで肥大した/etcをクリーンアップ" date: "2018-12-12" url: https://scribble.washo3.com/linux/etckeeper-git-cleanup.html -------------------------------------------------------------------------------- Linuxで/etcに変更があった場合に、自動的に保存してくれるetckeeperがありますが、使っていくうちに/etc/.git内にファイルが溜まっていく為、/etcが肥大化していきます。 私の環境でも、 ``` # du -hsc /etc/.git
    16G /etc/.git
    16G 合計 ``` なんと、16GBも容量が肥大しておりました なので、gitのクリーンアップオプションで整理(クリーンアップは自己責任で行ってください) ``` # cd /etc/ # git gc # du -hsc /etc/.git 56M /etc/.git 56M 合計 ``` かなりスッキリしました。 Etckeeperは便利ですが、yumで更新が大量に入ると、圧縮に時間がかかってしまうので、総じて作業時間がかかってしまうのが難点ですね -------------------------------------------------------------------------------- title: "PHPのUse of undefined constant警告の対処" date: "2018-12-12" url: https://scribble.washo3.com/linux/php-use-of-undefined-constant.html -------------------------------------------------------------------------------- php-fpmのログに下記の警告が出てた `PHP Warning:  Use of undefined constant ’128M’ - assumed '’128M’' (this will throw an Error in a future version of PHP)` WordPressのwp-config.phpにmemory limit設定に128Mを指定した欄が該当していたらしく、この欄だけアポストロフィー表記になっていました。 対策は、「‘」「’」を半角のシングルクォーテーション「’」へ変更する事で解決です。 phpコーディングでは、シングルクォーテーションにしておいた方が無難です。 また、ネット上からコピペする際は、アポストロフィーになっている事が多いので注意が必要ですね。 -------------------------------------------------------------------------------- title: "CentOS6系のPHP5.xを7.xへアップデート" date: "2018-12-11" url: https://scribble.washo3.com/linux/centos6-php5_to_php7.html -------------------------------------------------------------------------------- ## CentOS6系のPHP5.xをPHP7.xに更新したメモ ### 環境 ここのサーバーでは、下記の環境でphp7.3更新作業を行いました Scientific Linux 6.9 nginx php-fpm php5.6 ### 更新前に作業 php5.xを削除するので、/etc/php.iniのバックアップ php-fpmも再設定が必要なので、/etc/php-fpm.d/www.confをバックアップ ### 現在のPHP確認 `$ php -v
    PHP 5.6.35 (cli) (built: Mar 29 2018 07:37:47)
    Copyright (c) 1997-2016 The PHP Group
    Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies` ### 旧バージョンの削除 `# yum remove php-*` (zshだと php-¥*) ### epelとremiのインストール確認 remiは6系のものでOK (remiは最新のもので、priority=1)推薦 `# vi /etc/yum.repos.d/remi-php73.repo
    [remi-php73]
    priority=1
    ....` /etc/yum.repo.d/内にremi-php7*.repoがあることを確認 ### 念の為、yumのキャッシュを削除 `# yum clean all` ### 7.xをインストール nginx版 `# yum install --enablerepo=remi-php73 php php-fpm php-mcrypt php-cli php-common php-devel php-gd php-mbstring php-mysqlnd php-opcache php-pdo php-pear php-pecl-apcu php-pecl-zip php-process php-xml` Apache版 `# yum -y install --enablerepo=remi,remi-php73 php php-devel php-mbstring php-mysql php-pdo php-gd` 補足:—————————————————————— libargon2の依存関係でアップデート処理が止まる場合は、remiのリポジトリを最新にするか再インストール https://www.riscascape.net/archives/16990 ### php7.3の確認 `$ php -v
    PHP 7.3.0 (cli) (built: Dec 4 2018 20:10:48) ( NTS )
    Copyright (c) 1997-2018 The PHP Group
    Zend Engine v3.3.0-dev, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.0, Copyright (c) 1999-2018, by Zend Technologies` ZendEngineもZendOPcacheに変更され、APCuも導入済みとなっております OPcache、APCuの設定については、初期設定のまま使用します ### php-fpmの設定 下記環境は、個々に違いがあるので自分の環境に合わせてくださいね `# vi /etc/php-fpm.d/www.conf
    listen = 127.0.0.1:9000
    listen.owner = nobody
    listen.group = nobody
    listen.mode = 0660
    user = apache
    group = apache
    pm = static
    ` 保存後、php-fpmを再起動します。 `# /etc/init.d/php-fpm restart` ### php.iniの再設定 `default_charset = UTF-8
    mbstring.language = Japanese
    mbstring.encoding_translation = Off
    mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
    date.timezone = Asia/Tokyo
    expose_php = Offmemory_limit = 128M
    post_max_size = 128M
    upload_max_filesize = 128M
    memory_limit = 128M
    date.timezone = "Asia/Tokyo"
    ` 保存後、nginx再起動 `# /etc/init.d/nginx restart` -------------------------------------------------------------------------------- title: "CentOSのyum更新で衝突しまくり" date: "2018-05-16" url: https://scribble.washo3.com/linux/centos7-5-yum-conflict.html -------------------------------------------------------------------------------- CentOS 7.4で、久しぶりにyum更新したら、下記のように衝突が発生 > …. > —> パッケージ rdma-core.x86_64 0:15-6.el7 を アップデート > —> パッケージ tar.x86_64 2:1.26-32.el7 を 更新 > —> パッケージ tar.x86_64 2:1.26-34.el7 を アップデート > –> 衝突を処理しています: initscripts-9.49.41-1.el7.x86_64 は redhat-release < 7.5-0.11 と衝突しています > –> 依存性解決を終了しました。 > 問題を回避するために –skip-broken を用いることができます。 –skip-brokenにすれば、衝突していないパッケージは更新され、衝突パッケージではexcludeを設定することで回避できるのですが、今回のは衝突が多すぎました。 ん? よく見ると、”7.5-0.11 と衝突しています” 7.5がリリースされ、更新が多いのかと思い、頭をよぎったのが・・・ yum.confの除外設定で、kernelを除外設定にしていた影響です。 exclude=kernel* この除外設定を無効にしたのち、yum更新したところ、はい、無事に衝突が起こらずに、7.5へアップデートされたとさ。 自業自得でした。m(_ _)m 参考までにCentOS 7.4から7.5へのアップデート https://www.cyberciti.biz/linux-news/rhel-7-5-released-how-to-upgrade-7-4-to-7-5/ -------------------------------------------------------------------------------- title: "ChromeのHSTS解消メモ" date: "2018-04-24" url: https://scribble.washo3.com/network/chrome-hsts-howto.html -------------------------------------------------------------------------------- Google Chromeにて、httpsを指定しているにも関わらず、httpsへ勝手にリダイレクトし、httpsではアクセス出来ない事が多いので、メモです。 HSTSは、HTTP Strict Transport Securityの略で、httpsの代わりにhttpsを用いて通信を行うセキュリティ機能です。 詳しくは、下記のブログをご覧いただければと思います。   ### 解決方法 Google ChromeのURLアクセスバーに、
    chrome://net-internals/#hsts
    と入力し、下部にある「Delete domain security policies」で該当するドメイン名を入力し、deleteを押すだけです。 これでも、変化がないようであれば、Google Chromeを再起動、キャッシュの削除、クッキーの削除を行ってみましょう。 -------------------------------------------------------------------------------- title: "letsencrypt更新でEPELを要求" date: "2018-03-30" url: https://scribble.washo3.com/security/letsencrypt-epel-enabled.html -------------------------------------------------------------------------------- letsencryptの証明書が切れたので、再発行によるコマンドを叩いたら、下記のエラーで更新できず。
    # ./letsencrypt-auto certonly --standalone -d <domain> --renew-by-default
    > To use Certbot, packages from the EPEL repository need to be installed epelのパッケージは導入済みで、最新のパッケージがインストールされてますよ〜って止まる これ、インストールの他に有効にしなさいと言うメッセージが抜けてるね `/etc/yum.repo.d/epel.repo
    enable = 1   # 0から1へ変更` 再度、再発行コマンドで無事通りました -------------------------------------------------------------------------------- title: "etckeeperで/etcをgit管理" date: "2018-02-06" url: https://scribble.washo3.com/linux/etckeeper-git.html -------------------------------------------------------------------------------- /etcをGit管理出来るetckeeperは以前か知っていたのだが、放置したままだったので、今更導入してみた。 ### インストール #### Redhat系
    # yum -y install etckeeper --enablerepo=epel
    #### Debian系
    # ap-get -y install etckeeper
    ### 設定 /etc/etckeeper/etckeeper.confの下記箇所を確認及び追記
    VCS="git"
     PUSH_REMOTE="origin"
    ### 初期化
    # cd /etc/
    # etckeeper init
    #### origin追加
    # git remote add origin git_url
    #### コミット
    # etckeeper commit -m 'first commit'
    ### bitbucketの利用 githubでもやることは同じ * bitbucketにログインし、リポジトリを作成 * etckeeper側ホストでoriginの登録
    # git remote add origin git@bitbucket.org:user/repo
    * ssh鍵の登録 etckeeper側ホストでrootにて、鍵がなければを作成する(パスは空で)

    # sh -c 'ssh-keygen ; less /root/.ssh/id_rsa.pub’
    表示されたssh鍵をbitbucket側に登録する
  • 注意することは、作成したリポジトリの設定でSSH鍵を登録するのでなく、アカウント設定欄からSSH鍵を登録すること。 各リポジトリ設定でssh鍵を登録するとリードオンリーとなりアクセス拒否されてしまいます。 Source Bitbucket 2018 02 06 12 44 43   Account settings Bitbucket 2018 02 06 12 45 38 Ssh keys Bitbucket 2018 02 06 12 46 30 ### 自動実行 etckeeperをインストールした時点で、/etc/cron.dailyにスクリプトが作成されるので、毎日自動で/etc内を更新してくれるようになっています。 一度、手動実行して、無事に登録出来るのか確認してみると良いでしょう。 ``` # /etc/cron.daily/etckeeper ``` -------------------------------------------------------------------------------- title: "古いCentOSのリポジトリを復活させる" date: "2018-01-09" url: https://scribble.washo3.com/linux/centos5-x-yum-vault.html -------------------------------------------------------------------------------- 職場のサーバーで、未だにCentOS 5.11を使い続きているサーバーがあるのですが、CentOS 5系は昨年の3月でサポート終了となり、アップデートも行われません。 それは、承知なのですが、時に、足りなかったプログラム等をインストールしたい時が生じます。 しかし、yum更新はおろか、yumによるプログラムのインストールさえ行えません。 \# yum install xxxxx > YumRepo Error: All mirror URLs are not using ftp, https[s] or file. > Eg. Invalid release/ > removing mirrorlist with no valid mirrors: /var/cache/yum/base/mirrorlist.txt > Error: Cannot find a valid baseurl for repo: base 既にサポートが終了しており、ミラーリストにも存在していないようですが、幸いにもvault.centos.orgが引き継いでくれているようで、baseurlをここへ向けることで対処することが出来ます。 /etc/yum.repos.d/CentOS-Base.repoのバックアップをとり、下記に書き換えます。
    [base]
     name=CentOS-$releasever - Base
     baseurl=https://vault.centos.org/5.11/os/$basearch/
     gpgcheck=1
     gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
    
    [updates]
     name=CentOS-$releasever - Updates
     baseurl=https://vault.centos.org/5.11/updates/$basearch/
     gpgcheck=1
     gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
    
    [extras]
     name=CentOS-$releasever - Extras
     baseurl=https://vault.centos.org/5.11/extras/$basearch/
     gpgcheck=1
     gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
    これで、CentOS 5.xでもパッケージのインストールが可能となります。 Vaultのサポートがいつまで続くのかわからないし、セキュリティ的にも最新のOSへ移行したほうが賢明なのはわかっているのですがね・・ -------------------------------------------------------------------------------- title: "Mac版VirtualBoxのインストールが検証中のまま進まない問題" date: "2017-12-17" url: https://scribble.washo3.com/mac/mac-virtualbox-verifying.html -------------------------------------------------------------------------------- VirtualBoxは、1年に数回しか起動しないので、久しぶりに起動すると、アップデートを必ず促されるので、アップデートを行っていますが、毎回、Mac版VirtualBoxのインストーラーが検証中のまま進まないので、メモしておく。 `sudo installer -package /Volumes/VirtualBox/VirtualBox.pkg -target /` なお、システム環境設定のセキュリティとプライバシー内の、ダウンロードしたアプリケーションの実行許可を「すべてのアプリケーションを許可」にしておく事も必要かもしれません。 -------------------------------------------------------------------------------- title: "Lets’s Encryptの証明書期限切れたので再作成" date: "2017-12-14" url: https://scribble.washo3.com/security/letss-encrypt-rebuild.html -------------------------------------------------------------------------------- SSL証明書では、Lets’s Encryptの証明書を利用しているのですが、期限が3ヶ月なので、ちょっと油断していると証明書切れになります。 事前に、証明書を更新する通知も来るのですが、後回しにしていたら、期限が切れてしまいましたので、再作成しました。 再作成なので、certbot-auto renewすればいいんじゃね? しかし、renewだけじゃ、証明書が期限切れのままでダメでした。 なので、結局、振り出しに戻って一から再作成することにしました。 ## Let’s Encrypt 証明書再作成 ### ウェブサーバー停止 まずは、80番ポートを利用しているウェブサーバーを停止 私の場合はnginxなので、
    # service nginx stop
    ### 古い証明書関連ファイルやディレクトリを削除 下記に古いファイルやディレクトリが保存されているので、該当するドメインを削除します * /etc/letsencrypt/live/ * /etc/letsencrypt/archive/ * /etc/letsencrypt/renewal/ ### 証明書新規作成 私の環境では、/var/opt/letsencrypt/に格納されているので、
    # cd /var/opt/letsencrypt/
    # ./certbot-auto certonly --standalone -d foo.bar.com
    複数ドメインがある場合 -d オプション後に続けて明記するような記事もあるのですが、上手くいかなかったので、複数ある場合でも一つずつ行う必要がありました。 ### ウェブサーバー起動
    # service nginx start
    ここまでで証明書再作成作業は終了です。 ## メンテナンス ### 更新 期限まで30日未満のものを更新
    # ./certbot-auto renew
    ### 全ての証明書を強制更新
    # ./certbot-auto renew —force-renew
    ### 自動更新 更新切れを気にする必要がないように、cronで自動更新した方が楽です 毎月の1日に更新するように設定
    # cd /etc/cron.d
    # vi letsencrypt
    0 0 1 * * root /var/opt/letsencrypt/certbot-auto renew --post-hook "service nginx restart"
    -------------------------------------------------------------------------------- title: "QNAP再起動後にNFSでマウントできなかった" date: "2017-11-06" url: https://scribble.washo3.com/linux/qnap-nfs-permission-denied.html -------------------------------------------------------------------------------- QNAPをNFSサーバーにして、各クラアントからAutofsでマウントして、正常に動作していたはずなのに、QNAPを再起動した後から、NFSによるマウントが出来なくなってしまった。 数台のクライアントからAutofsでQNAPにマウント出来ていたはずが、どれも、正常にマウントしない症状。 QNAP上のNFSを再起動してみても変わらずで、mountの詳細を見てみると、 > mount.nfs: mount(2): Permission denied > mount.nfs: access denied by server while mounting 192.168.1.2:/data 明らかにサーバー側で拒否されてる QNAPサーバー側では、接続してくるIPを制限しているので、QNAPへSSHで入り、/etc/exportsを確認してみた所、 > “/share/MD0\_DATA/data” 192.168.1.1192.168.1.1.2192.168.1.3(rw,async,no\_subtree\_check,insecure,no\_root_squash) 許可するIP部分が勝手に連結されているのが原因でした。 exportsを書き換えても、ウェブ管理画面のGUIで設定を行うと再び連結されるので、QNAPマネージャーのバグなのでは? 仕方ないので、ウェブ管理画面上の権限設定→共有フォルダ→アクションボタンの共有フォルダ権限の編集→権限タイプの選択でNFSホストのアクセスに進み、接続を許可するIPを一つづつ記入し、適用する事で、各クライアントから正常にAutofsが働くようになった。 何だかんだQNAPのバグには悩まされる… -------------------------------------------------------------------------------- title: "PHP5.6のgd-lastがyum更新で失敗する" date: "2017-09-08" url: https://scribble.washo3.com/linux/redhat-php56-gd-last.html -------------------------------------------------------------------------------- CentOS/SL6のyumにて、いつも通り更新を行ってましたが、gd-lastで引っかかってました。 > エラー: パッケージ: gd-last-2.2.5-1.el6.remi.x86_64 (remi) > 要求: libwebp.so.5()(64bit) libwebpを要求しているようなので、epelからlibwebpをインストールするだけで解決
    epelがまだインストールされていない方は、
    # yum -y install epel-release
    # yum update
    
    libwebpをインストール
    # yum -y install libwebp --enablerepo=epel
    
    gd-lastをインストール
    # yum -y install gd-last --enablerepo=remi
    
    
    -------------------------------------------------------------------------------- title: "Coreserverリニューアル後にWordPress閲覧不可に" date: "2017-08-29" url: https://scribble.washo3.com/wordpress/coreserver-renew-wordpress-trouble.html -------------------------------------------------------------------------------- Coreserver上にて、とあるブログサイトをWordPressで運用していたのですが、数日前から閲覧不可になってた。 どうやら、Coreserverにて大規模なリニューアルが行わたのが原因のようです。 https://www.coreserver.jp/info/brandnew2017/ CPUコア数やメモリ増強、SSD対応など機能的にはかなりアップしたようなのですが、PHP/MySQL/Apacheなども最新のバージョンが採用された影響で、今まで動作していたWordPressが動作しなくなってしまいました。 調べてみると、WordPress自体が動作していなく管理画面すら入れない状況でした。 画面上では、真っ白で何も表示されていないので、SSHでログインし、デバッグを有効にしてみました。 すると、下記のようなエラーが残されていました。 > PHP Warning: require_once(/wp-content/plugins/db-cache-reloaded-fix/db-module.php) db-cache-reloaded-fixのプラグインが既に更新されておらず、PHP71にも対応していないようなので、WordPress管理画面にも入れないのでプラグインディレクトリからdb-cache-reloaded-fixを除外。 しかし、それでも同様のエラーが表示されるので、キャッシュディレクトリ内を削除。 これでもエラーが解決されないので、プラグインディレクトリ自体をリネームしてみました。 やはり、同様のエラーが続くので、調べてみると、wp-content内にdb-cache-reloaded-fixがdb.phpを作成するらしく、これも削除しなければならないようでした。 そして、他のプラグインを戻してみましたが、やはりWordPressは動作せず。 仕方ないので、「[PHPスクリプトが動かなくなりました][1]」の対応通りにPHP5.xに戻してみたところ、一瞬だけWordPress画面だけ表示されましたが、すぐに真っ白な画面に戻った。 もうプラグインやテーマ内の不具合を探すのが億劫になってきて、新規にWordPressを作成し、MySQLのデータベースだけを読み込んでみた方がてっとり早いと思ったら、なんと文字化け。 エンコードをEUCやSHIS、UTF8など、どれを選択しても化ける。 「[PHPで構築したページが文字化けしている][2]」を参考に、PHPやらMySQL関連を弄ってみるが、全てをUTF8になっているはずなのに、一向に文字化けが治らない。 さて、どうしたものかと、WordpressのMySQLデータ内部を覗いてみると、データ部が文字化けしている。 一週間前にDBのバックアップを取っていたので、それと比較してみた所、バックアップのDBは文字化けしていない事が判明。 結局、PHP71+MySQL5.7の最新バージョン上にて、WordPressを新規構築し、インポートしたバックアップのDBを読み込むことで、復旧した。 尚、Coreserver上でFast-cgiを利用する場合には、php.iniに相当するファイルも設定する必要があるので、下記を参考にすることもお忘れなく! https://www.coreserver.jp/support/faq/php-cgi.php 1日がかりで疲れたわ。 [1]: https://www.coreserver.jp/info/brandnew2017/#q07 [2]: https://www.coreserver.jp/info/brandnew2017/#q08 -------------------------------------------------------------------------------- title: "Dockerのインストール方法が変わってた" date: "2017-08-22" url: https://scribble.washo3.com/linux/docker-ce-install.html -------------------------------------------------------------------------------- DockerがCE/EEとなり、インストール方法が変わってるんですね。 公式やQuiita参照で、ほぼ解決します https://docs.docker.com/engine/installation/linux/docker-ce/debian/#prerequisites https://qiita.com/adnap2501/items/e00248dd697059969203 古いバージョンをアンイストして、入れたほうが良いかもしれません。 新しいリポジトリ追加して、apt更新時に上手く取得できない症状に遭遇しましたが、 そのままインストールしちゃいました。 docker-composeもaptでインストール出来るので楽ですね ちなみに、Redhat/CentOS系は下記のQuiitaで良いでしょう https://qiita.com/sawadashota/items/2bed41598d825d488701 -------------------------------------------------------------------------------- title: "Debian 8.9から9.1へアップグレード" date: "2017-08-22" url: https://scribble.washo3.com/linux/debian-8to9-upgrade.html -------------------------------------------------------------------------------- Debian 8.9を9.1へアップグレードした。 ほぼ、下記の記事で完了 感謝! Debian 9.xからカーネルがLinux4.9 LTSへ、またsystemdが採用されてるので、注意。 -------------------------------------------------------------------------------- title: "dyld: Library not loaded: /usr/local/opt/jpeg/lib/libjpeg.8.dylib" date: "2017-08-22" url: https://scribble.washo3.com/mac/homebrew-dyld-jpeg.html -------------------------------------------------------------------------------- 久しぶりにHomebrewでUpgradeかけたら、下記のエラーが出た > dyld: Library not loaded: /usr/local/opt/jpeg/lib/libjpeg.8.dylib ほぼ、下記の記事が参考になる https://qiita.com/maimai-swap/items/9ba6e5f877274079d755 私の環境の場合、jpegのバージョン8d,9bが混在しているようなので、下記のコマンドで戻せばOKでした。
    # brew switch jpeg 8d
    -------------------------------------------------------------------------------- title: "ESXiでゲストOS新規作成でネットワークデバイスが認識されない?" date: "2017-08-22" url: https://scribble.washo3.com/%E4%BB%AE%E6%83%B3%E5%8C%96/esxi-guestos-create-no-network-device.html -------------------------------------------------------------------------------- ESXi上で、普通にLinuxのゲストOSを作成しようとしたら、ネットワークデバイスが認識されてない? Nonetworkcentos ESXiのバージョンはそのままで、今まで、何度もLinuxのゲストOS作成しているので、OSが新しく(今回はCentOS7)なったことにより、デバイスが認識されなくなったのかと思ったら、初歩的なミスでした。 新規仮想OSを作成する際に、アダプタがVMware独自のVMXNETになっていただけでした。(^_^;) Linux no network device ここのアダプタをイーサネットデバイス(私の場合、E1000)に変更でOKです。 ちなみに、構成後にアダプタを変更する場合は、一旦ネットワークデバイスを削除して追加するしかないようですね。 -------------------------------------------------------------------------------- title: "ESXiでscpが無反応?" date: "2017-08-16" url: https://scribble.washo3.com/%E4%BB%AE%E6%83%B3%E5%8C%96/esxi-scp-can-use.html -------------------------------------------------------------------------------- ESXiで以前は利用できていたはずのscpが無反応で使えず。 どうやらESXi5.xからファイアウォールでブロックされているようでした。 vSphere Clientで管理者にてログインし、構成からセキュリティプロファイル内のファイアウォール→プロパティでSSH Clientにチェックを入れればOKです。 SSHは使えていて、コマンドにもscpがあるので、てっきりscpは使えるものだとばかり思ってました。(^_^;) -------------------------------------------------------------------------------- title: "Big Image Sample" date: "2017-03-07" url: https://scribble.washo3.com/2017-03-07-bigimg-sample/ -------------------------------------------------------------------------------- The image banners at the top of the page are refered to as "bigimg" in this theme. They are optional, and one more more can be specified. If more than one is specified, the images rotate every 10 seconds. In the front matter, bigimgs are specified using an array of hashes. A single bigimg can be specified in the front matter by the following YAML: ``` bigimg: [{src: "/img/triangle.jpg", desc: "Triangle"}] ``` Multiple bigimgs can be specified in the front matter by the following YAML: ``` bigimg: [{src: "/img/triangle.jpg", desc: "Triangle"}, {src: "/img/sphere.jpg", desc: "Sphere"}, {src: "/img/hexagon.jpg", desc: "Hexagon"}] ``` Also note that the description field is optional, and images could instead be specified by: ``` bigimg: [{src: "/img/triangle.jpg"}, {src: "/img/sphere.jpg"}, {src: "/img/hexagon.jpg"}] ``` The above YAML array of hashes were written in "flow" style. However when generating a new page or post with `hugo new post/mypost.md`, hugo may interpret the archetype for bigimg in the default YAML style. Defining multiple bigimg's complete with descriptions in this style would be specified by: ``` bigimg: - {src: "/img/triangle.jpg", desc: "Triangle"} - {src: "/img/sphere.jpg", desc: "Sphere"} - {src: "/img/hexagon.jpg", desc: "Hexagon"} ``` Additional information can be found [in this YAML tutorial](https://rhnh.net/2011/01/31/yaml-tutorial/). -------------------------------------------------------------------------------- title: "ApacheのバージョンによりAuthTypeエラー" date: "2017-02-20" url: https://scribble.washo3.com/linux/apache%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%AB%E3%82%88%E3%82%8Aauthtype%E3%82%A8%E3%83%A9%E3%83%BC.html -------------------------------------------------------------------------------- 幾つかのApacheサーバー関連で、セキュリティ強化のため、httpsd.conf内の制限を強くしていったところ、下記のエラーでトップのページが表示されなくなってしまった。 > configuration error:  couldn’t perform authentication. AuthType not set!: / 原因は、Apache 2.2系の設定に、下記を追加したことによるものでした。
    <Directory "/var/www/html">
    ...
    ...
    Require GET POST
    </Directory>
    Require記述は、2.4系からなので、Require行を削除したところ、復帰しました。 Requireの書式を記述しても、configtestは通って、Syntax OKになるので注意ですね。 -------------------------------------------------------------------------------- title: "今更ながらSubsonicをSSLでサブドメインにて運用" date: "2017-02-17" url: https://scribble.washo3.com/linux/subsonic-ssl-subdomain.html -------------------------------------------------------------------------------- このサイトでも幾度か、Subsonicの記事を投稿しておりますが、今更ながら、SSL証明書によるHTTPS化して、ついでにサブドメインにてアクセスするように設定した。 **環境** * CentOS 6.x * Nginx 1.10.x (ssl設定済み) * Subsonic 6.0 * DNS管理はCloudFlare * SSL証明書はLet’sEncyptにて取得 現状は、CentOS上にSubsonicを運用しており、https://localhost:4040にて稼働しております。 ## 今回作業する項目 CloudFlareにてサブドメインを設定し、nginxでサブドメイン用confファイル作成、SSL証明書発行後、confファイルに適用と言う流れになります。 ### サブドメイン設定 私は、DNS管理をCloudFlareに任せていますので、CloudFlareにログインします。 上記項目のDNS設定をクリックし、下記の囲んだ部分にサブドメインを記入して、追加します。 Cloudflare dns * 左のレコードタイプをA * 次にサブドメイン名(今回はsubsonic) * サブドメインのIPアドレス (通常、subsonicを動作させているIP) * TTLは通常Automaticですが、早く反映させたいので、2min DNS反映後は、Automaticに戻しましょう * CloudFlareを通さない設定にしておかないと、この後の証明書発行ができませんので、雲マークがオレンジではなくグレイになるようにクリックしておきます DNS反映には、しばらく時間がかかるので、コーヒーを飲んだり出かけたりすると良いかもしれません 一応、確認としては、CloudFlare上で設定が反映されていれば、 $ dig @ns6.cloudflare.com subsonic.xxx.xxx にて、設定したIPアドレスが表示されればOK そして、サブドメイン(subsonic)上の端末から、 $ dig subsonic.xxx.xxx にて設定したIPアドレスが表示されれば、次に進めます ### NginxのSubsonicサブドメイン用設定ファイル作成 設定ファイルは、/etc/nginx/sites-available/内にsubsonic.confと言う名前(任意でも)で作成します。
    # cat subsonic.conf
    
    server {
     listen 80;
     server_name subsonic.xxx.xxx;
     access_log /var/log/nginx/subsonic-access.log;
     error_log /var/log/nginx/subsonic-error.log;
    
    location / {
     proxy_pass https://127.0.0.1:4040;
    proxy_redirect https:// https://;
     }
    保存後に、sites-enabled内にシムリンクを張ります
    # ln -s /etc/nginx/sites-available/subsonic.conf /etc/nginx/sites-enabled/
    書式に間違いないか確認
    # service nginx configtest
    エラー表示がなく、Syntax OKが表示されれば、適用します
    # service nginx reload
    これで問題がなければ、サブドメインのURLでアクセスすると、Subsonicの画面が表示されるはずです。 ### SSL証明書取得・設定 ここでは、無料のSSL証明書(Let’sEncypt)をサブドメインに適用します #### Let’sEncryptをインストール すでに、Let’sEncryptのプログラムは導入済みなのですが、初めての方は下記でインストールします。
    # git clone https://github.com/letsencrypt/letsencrypt <directory>
    # cd <directory>
    #### サブドメイン用の証明書取得 \# ./letsencrypt-auto —nginx (初めて起動の方は、ここで、いろいろなプログラムがインストールされます) > 1. aaa.xxx.xxx > 2. bbb.xxx.xxx > 3. subsonic.xxx.xxx > …. サーバー内nginx設定ファイルが自動で読み込まれるので、適用するドメインを使用します。 ここでは、subsonicなので3を選択 登録するにあたり、規約のPDFを見て承諾するか尋ねられるので、AgreeのAを打ち込む 初めての方は、登録するメールアドレスを求められるので記入します > 1: Easy – Allow both HTTP and HTTPS access to these sites > 2: Secure – Make all requests redirect to secure HTTPS access 今まで通りhttpsでもアクセス可能にするか、全てhttpsで接続させるかを任意で指定 これで、Congratulations!が表示されれば、サブドメインのsubsonic.confにssl設定が追記されています 一応、設定ファイルを読み込んでおきます
    # service nginx reload
    そして、サブドメインのSubsonic(subsonic.xxx.xxx)へhttpsでアクセスして、httpsへリダイレクトされてログイン出来れば完成です。 作業時間より、この記事書くほうが時間かかってしまいました。(^_^;) -------------------------------------------------------------------------------- title: "DockerでOpenVAS起動" date: "2017-02-17" url: https://scribble.washo3.com/linux/howto-openvas_on_docker.html -------------------------------------------------------------------------------- 脆弱性をスキャンするソフトにOpenVASと言う無償ソフトがあります。 一時的に利用するのであれば、Docker上で起動したほうが楽ですね。 Dockerが起動する環境にある事が前提で、DockerHubのOpneVASを利用します。 https://hub.docker.com/r/mikesplain/openvas/ ### インストール・起動 OpenVASのインストールから起動完了まで、下記の一行で済みます。 ```bash $ docker run -d -p 4000:4000 --name openvas mikesplain/openvas:9 ``` この後、https://:4000にアクセスし、 Username: admin Password: admin にて、ログインし、脆弱性をスキャンしたいホストを追加していきます。 ### パスワード指定で起動 尚、パスワードを変更して起動したい場合は、こちら ```bash $ docker run -d -p 4000:4000 -e OV_PASSWORD=<任意のパスワード> --name openvas mikesplain/openvas:9 ``` ### ローカルにデータ保存指定で起動 また、Docker上のOpenVASをアップデートした場合や、再起動した際に環境が初期に戻る場合があります。 登録したホスト状況などをローカルに保存しておきたい場合は、Volume機能を追加します ローカル側に予め保存用のディレクトリを作成しておき、下記のコマンドで起動します ``` $ mkdir data $ docker run -d -p 4000:4000 -v $(pwd)/data:/var/lib/openvas/mgr/ --name openvas mikesplain/openvas9 ``` これでローカル側にデータが残るのですが、何故かログインに失敗してしまいます。(調査中) ログを見てみると、 ```bash $ docker logs openvas ..... ..... omp:WARNING:2017-02-17 04h17.13 utc:224: Authentication failure for 'admin' from 900::900:0:0:0
    ..... ``` -------------------------------------------------------------------------------- title: "SSL(HTTPS)で画像が読み込まれなくハマった" date: "2017-02-16" url: https://scribble.washo3.com/linux/ssl-images-cannot-load.html -------------------------------------------------------------------------------- とあるサイトで、サイトをSSL化(HTTPS)したところ、画像だけが読み込まれないトラブル 環境は、CentOS7上のApache 2.4で、ssl.confを主体に、confファイルをいろいろ調べてみても解決せずにハマりました。 原因は、「画像の直リンク禁止」設定にしていたからでした。 画像ディレクトリ(images)内の、.htaccessで下記のように直リンク禁止設定にしていました。 `
    SetEnvIf Referer “https://www.xxx.xxx/" OK
    SetEnvIf Referer “https://localhost/" OK
    Order allow,deny
    allow from 127.0.0.1
    allow from env=OK
    ` はい、もうお分かりですね。 記述されているSetEnvIf RefererのURLがhttpsになっているので、httpsだと☓なんですね。 ある意味、正常動作 HTTPSでも画像を表示したいので、https:を削除し、//www.xxx.xxxに修正すればOKです。 -------------------------------------------------------------------------------- title: "Subsonicをアップデートしたらエラー警告がでるようになった" date: "2016-12-28" url: https://scribble.washo3.com/linux/subsonic%E3%82%92%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E3%81%97%E3%81%9F%E3%82%89%E3%82%A8%E3%83%A9%E3%83%BC%E8%AD%A6%E5%91%8A%E3%81%8C%E3%81%A7%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB.html -------------------------------------------------------------------------------- Subsonicのbeta版で特に問題なく利用できていたので、ずーっと放置状態でしたが、年末に時間がとれたので、beta版から正式の6.0へアップデートしました。 アップデート作業は、以前記事にした通りなので割愛します。

    Subsonic 4.xから6.0betaへアップデート

    問題なく設定も引き継がれたのですが、ブラウザで開いてみたところ、下記のエラーが出るようになりました。 > Failed to find parameter: instanceId (check server log for more info). どうやら、ブラウザのキャッシュの問題のようで、ブラウザを変更してみるか、ブラウザのキャッシュ・クッキーを削除して解決 -------------------------------------------------------------------------------- title: "Zabbixサーバとエージェントの通信が取れないよくある症状" date: "2016-08-24" url: https://scribble.washo3.com/linux/zabbix-agent-trouble-faq-2016.html -------------------------------------------------------------------------------- Zabbixサーバーが既に稼働してあるものとして、情報を取りたいエージェント(Agent)側にzabbix agentをインストールすることが多々あります。 そのままインストールして、デフォルトのまま起動すると、大抵、サーバー側と通信取れないことがよくあるのでメモしておきます。 Zabbix Agentのインストール手順については割愛します。(yum,aptでzabbix agentをインストールするだけなので) ### 確認事項と対応 #### ファイヤーウォール * 使用しているOSのファイヤーウォールが起動しているのか? * ファイヤーウォールでポートがブロックされていないか? * SELinuxが起動していないか? SELinuxやファイヤーウォール(iptables)が起動していたら、一旦無効にしてみましょう。(手っ取り早いので) #### zabbix_agentd.confの設定 デフォルトでは、#Server = 127.0.0.1となっているので、ここをZabbixサーバーのIPに変更しましょう。 デフォルトのままの設定で通信出来ない場合は、下記のようなログが残っているはずです。
    failed to accept an incoming connection: connection from “xxx.xx.xx.xx" rejected, allowed hosts: "127.0.0.1"
    #### PIDが作成出来ないエラーの場合 稀に、zabbix agent起動時に、PIDファイルが作成出来なくて、起動に失敗する場合があります。 ログを確認すると、下記のようなエラー
    zabbix_agentd [890]: cannot create PID file [/var/run/zabbix/zabbix_agentd.pid]: [2] No such file or directory
    これは、OSを再起動した際に、tmpfsの影響により、ディレクトリやファイルが消される場合があります。 この場合には、/var/run/zabbixのディレクトリがあるか確認することとパーミッションを確認しましょう。
    # mkdir /var/run/zabbix
    # chown zabbix:zabbix /var/run/zabbix
    この後に、zabbix agentを再起動し、/var/run/zabbix/zabbix_agentd.pidが作られていることを確認 #### その他 現在のZabbix最新版は3.xであり、以前からzabbixを利用していれば2.x以前を利用している場合もあるかと思います。 バージョンによる不具合も起きるかもしれませんので、なるべくバージョンは合わせたほうが良いでしょう! -------------------------------------------------------------------------------- title: "Debian8へZabbix 3.x Agentのインストール" date: "2016-08-24" url: https://scribble.washo3.com/linux/debian8-zabbix-agent-install.html -------------------------------------------------------------------------------- ### Debian8へZabbix 3.xのインストール Debianデフォルトのzabbixパッケージは、2.xと古いので、3.xのリポジトリを追加してインストールする手順です。 #### リポジトリ追加
    # wget https://repo.zabbix.com/zabbix/3.0/debian/pool/main/z/zabbix-release/zabbix-release_3.0-1+jessie_all.deb
    # dpkg -i zabbix-release_3.0-1+jessie_all.deb
    # apt-get update
    #### zabbix-agentインストール
    # apt-get install zabbix-agent
    #### サーバー先の設定 zabbix agentはサーバーへ情報を送るプログラムなので、情報を送るサーバーIPを記述する必要があります。
    # vi /etc/zabbix/zabbix_agentd.conf
    ....
    Server=127.0.0.1  <--このIPを修正します
    ....
    保存後に、zabbix agentを再起動
    # systemctl restart zabbix-agent.service
    
    #### Zabbixサーバー ちなみに、Zabbixサーバーをインストールするには下記でインストール
    # apt-get install zabbix-server-mysql zabbix-frontend-php
    今回のZabbix agentを含め、Debianにかぎらず、サーバーをインストールした後には、設定ファイルやPHP環境を変更する必要があるので、下記公式の記事を参照です。 https://www.zabbix.com/documentation/3.0/manual/installation/install\_from\_packages#debianubuntu -------------------------------------------------------------------------------- title: "3Wareドライバーの在り処" date: "2016-08-24" url: https://scribble.washo3.com/linux/3ware-driver-url.html -------------------------------------------------------------------------------- Debianで動作していたLinux機が起動出来なくて、OS再インストールした際に、RAIDカードの3ware製ドライバーのリンク先が変更されていたようで、結構手間取ってしまった。 以前は、3ware.comでしたが、下記URLに変更されていたんですね。 https://www.avagotech.com/support/download-search せっかくなので、ついでにインストールのメモ ### 3DMのインストール 上記URLから該当するRAID Controllerを検索し、Software欄で、Linux版の3DM2 CLI Linux from the 10…..をダウンロード #### 解凍とインストール
    # unzip 3DM2_CLI-linux_***.zip
    # chmod 755 install.sh
    # ./install.sh -i
    
    
    ..........
    Press Y to accept the License Agreement or N to decline (and exit) then press 'Enter Key': Y
    (Yを入力する)
    
    3ware CLI & 3DM2 installation, configuration and removal script.
    (c) 2010 LSI, Inc. All rights reserved.
    
    Script version: v3.00.00.021
    *******************************
    
    
    3DM2 supports two modes of operation.
    -------------------------------------
    0 - 3DM2 with WEB interface
    1 - 3DM2 Error/Event Logger only
    
    Which version of 3DM would you like configured? (0|1) 0 (0を入力)
    *** 3DM2 selected. ***
    
    *** Installing 3DM2 and CLI ***
    
    
    Press 'Enter Key' to continue with installation or Control C to exit.
    
    Creating installation tmp directory /tmp/3ware... done.
    
    Extracting installation files to /tmp/3ware... done.
    
    Changing directory to /tmp/3ware to continue installation done.
    Creating 3dm2 configuration directory (/etc/3dm2)... done.
    Creating 3dm2 install path (/opt/3ware/3DM2)... done.
    Creating 3dm2 message file install path (/opt/3ware/3DM2/msg)... done.
    Creating 3dm2 help file install path (/opt/3ware/3DM2/help)... done.
    Creating CLI install path (/opt/3ware/CLI)... done.
    
    ******************************************
    **** Installing 3DM2 files for x86_64
    ******************************************
    
    Copying install.sh to /opt/3ware... done.
    Installing 3dm2u binary to /opt/3ware/3DM2... done.
    Setting runtime permissions for /opt/3ware/3DM2/3dm2... done.
    Installing 3dm2 message files to /opt/3ware/3DM2/msg... done.
    Installing 3dm2 help files to /opt/3ware/3DM2/help... done.
    Installing 3dm2 configuration file to /etc/3dm2... done.
    Installing 3dm2 logo file to /etc/3dm2... done.
    Installing /etc/init.d/tdm2 script... done.
    Setting runtime permissions for /etc/init.d/tdm2... done.
    
    ******************************************
    **** Installing CLI files for x86_64
    ******************************************
    
    Installing CLI binary to /opt/3ware/CLI/tw_cli... done.
    Setting runtime permissions for /opt/3ware/CLI/tw_cli... done.
    Installing CLI html help to /opt/3ware/CLI... done.
    Installing CLI man page to /usr/share/man/man8... done.
    
    ***************************************
    **** Configuring CLI & 3DM2
    ***************************************
    
    Creating /usr/sbin/3dm2 symbolic link to /opt/3ware/3DM2/3dm2... done.
    Creating /usr/sbin/tw_cli symbolic link to /opt/3ware/CLI/tw_cli... done.
    Setting runtime permissions for /etc/3dm2/3dm2.conf... done.
    
    ***************************************
    **** Finishing Installation
    ***************************************
    
    
    *** Starting 3DM2 using configuration found in /etc/3dm2/3dm2.conf ***
    [ ok ] Starting tdm2 (via systemctl): tdm2.service.
    
    今回は、対話モードでのインストールでしたが、対話無しで一気にインストールする場合は、下記で。
    # ./install.sh --install -fN0
    #### 確認
    ps aux|grep 3dm
    root 14492 0.0 0.0 77220 2744 ? Sl 09:21 0:00 /usr/sbin/3dm2
    
    #### 接続
    https://localhost:888/
    Administratorでログインする
    初期パスワードは3ware
    
    #### 補足 自Linux上のFirefoxからlocalhost:888にアクセスしても、接続出来ないので、ファイヤーウォールやらポート確認してみましたが、問題ないので、他端末のGoogle Chromeでアクセスしたところ、無事にアクセスすることが出来た。 Firefoxだけの原因のようで、下記の何れかに該当するのかもしれません。 https://support.mozilla.org/ja/kb/firefox-cant-load-websites-other-browsers-can 追記:私の環境の場合、httpsでアクセスした際に証明書の問題のようで、「例外を追加」することでアクセス出来るようになりました。 https://support.mozilla.org/ja/kb/secure-connection-failed-error-message -------------------------------------------------------------------------------- title: "HomebrewでGUIなWiresharkをインストール" date: "2016-08-05" url: https://scribble.washo3.com/mac/homebrew-install-gui-wireshark.html -------------------------------------------------------------------------------- Mac上でWiresharkを使う仕事があったので、Homebrewでインストールしてみた。
    $ brew wireshark
    ところが、CUIなtsharkがインストールされただけで、グラフィカルなWiresharkではありません。 GUIなWiresharkをインストールするには、オプション(引数)指定してインストール必要があるようです。 一旦、インストールしたwiresharkをアンイストールして、再インストールです。 `$ brew remove wireshark
    $ brew install wireshark --with-qt
    $ brew cask install wireshark-chmodbpf
    $ brew linkapps wireshark` これで、/Applicationsフォルダにもリンクされたwiresharkが置かれるので、通常のアプリのようにGUIでwiresharkが起動します。 -------------------------------------------------------------------------------- title: "Mac OS Xでcronが使えない" date: "2016-07-27" url: https://scribble.washo3.com/mac/mac-osx-cron-vim.html -------------------------------------------------------------------------------- Mac OS X上でcronを使う場合、Unix/Linux同様に、下記コマンドで編集・設定が出来ます。
    $ crontab -e
    デフォルトのエディタが起動し、編集画面となりますが、エディタがvimの場合で、保存しようとすると、下記のエラーが表示されることがあります。 > crontab: no crontab for foo – using an empty one > crontab: temp file must be edited in place どうやら、tempファイルを作成する場所に問題があるようなので、.vimrcに下記を追加
    $ cat ~/.vimrc
     set backupskip=/tmp/*,/private/tmp/*
    再度、crontabで設定し、反映されていることを確認
    $ crontab -l
    また、デフォルトのエディタがvimでなはく、viになっている場合には下記のエラーが出ることもあります。 > crontab: no crontab for username – using an empty one crontab: “/usr/bin/vi” exited with status 1 この場合には、環境でエディタを別のエディタに指定しましょう。 vimである必要がなく、nanoでもemacsでも良いでしょう。
    export EDITOR=/usr/bin/vim
    一時的に環境変数を変更しても良いですが、頻繁に使用するのであれば、~/.bashrcや.zshrcなどに明記しておくと良いでしょう。 -------------------------------------------------------------------------------- title: "PHP構文内でHTMLのエスケープシーケンスがエラーになる" date: "2016-06-17" url: https://scribble.washo3.com/linux/php-html-escape-error.html -------------------------------------------------------------------------------- PHP構文内にHTML記述する場合には、特殊文字はエスケープシーケンスを使う必要があります。 例えば、PHP構文内で、HTMLにてURLやパスを指定する場合
    print(" <frame src=\"index.php\" name=\"head\" scrolling=\"no\">");
    このように、HTML内の”は¥”で記述します。 それで、このような記述で、サーバーによって、正常に起動する場合と、エラーになる場合が発生しました。 エラーになる場合は、そのままのエスケープシーケンスが混入しているため、src=”index.php”…となるところが、src=¥”index.php¥”となっているのが原因です。 正常に動作するサーバーとエラーとなるサーバーをApache,PHPの設定で比較した所、short\_open\_tagが原因でありました。
    # vim /etc/php.ini
    ....
    short_open_tag = On  #<--OffからOnへ変更
    ....
    
    エラーとなるサーバーでは、short\_open\_tag = Offであったため、これをOnの設定にし、Apacheを再起動したとこ、エラーが解消され、正常に動作となりました。 -------------------------------------------------------------------------------- title: "1Passwordの警告によるブラウザーの設定" date: "2016-06-17" url: https://scribble.washo3.com/mac/1password-browser-identity.html -------------------------------------------------------------------------------- しばらく前から、Google Chrome上に、Macアプリの1Password機能拡張を入れていたら、下記の警告が出るようになっていたので対処。 > **1Password can’t verify the identity of your web browser** 1pass warning ヘルプを参照記事を見れば、対処方法が載っています。 https://support.1password.com/code-signature/ 私の環境の場合は、Homebrew caskによるGoogle Chromeを起動していたからでした。 アプリケーションフォルダにブラウザーアプリを入れろとの事ですので、Homebrewではなく、正式にGoogle Chromeをダウンロードして、アプリケーションフォルダに入れて解決です。 尚、アプリを変更しても、タブやクッキー、機能拡張などの全ての設定は、~/Library/Application Support/Google/Chrome内に保存されていますので、安心して引き継がれます。 -------------------------------------------------------------------------------- title: "WEBページの文字化けはApacheの設定だけではなかった" date: "2016-06-16" url: https://scribble.washo3.com/linux/web-garbled-characters-apache.html -------------------------------------------------------------------------------- CentOS7にて、yumでインストールしたApacheで、以前の設定のまま稼働状態になっていたにも関わらず、なぜかUTF-8以外のページが文字化けしていた。 UTF-8以外のページは、charsetの文字コードも記述しているにも関わらず、ブラウザー(Safari,Firefox,Google Chrome)で自動認識されない症状。 Apacheの設定では、このような文字化けに関する設定は、/etc/httpsd/httpsd.conf内のAddDefaultCharが関係しているので、 ``` #AddDefaultCharset UTF-8 AddDefaultCharset Off ``` このどちらかを記述していれば問題ないはず。 さらには、conf.d内のバーチャルホスト等の設定も、これらの記述は書かれていないことを確認。 設定を変更したならば、Apacheを再起動することで有効になるが、これでも文字化けは解決せず。 かなり、時間を費やして、ページや設定を弄りましたが、どうやら、この問題はApacheだけではなかったようです。 **それは、PHPの設定** PHPの設定でも、以前から全く変更はしていませんでしたが、/etc/php.ini内のdefault_charsetを空白にする必要があるようです。 ``` ;default_charset = "UTF-8" default_charset = "" ``` これで、Apacheを再起動したところ、文字化けが解消されました。 文字化けしてたページ内では、ごく普通なHTMLで、PHP構文は使ってないにも関わらず、 PHPが関係していたのです。 -------------------------------------------------------------------------------- title: "SSH接続後にCan’t open display等でXが起動出来ない" date: "2016-06-16" url: https://scribble.washo3.com/linux/ssh-xserver-can-not-display.html -------------------------------------------------------------------------------- sshで接続先のX Windowsを利用したGUIアプリを起動すると、よく下記のエラーなどで陥る罠
    Error: Can't open display:
    unable to open X server `'
    unable to open display :0.0
    Warning: No display specified. You will not be able to display graphics on the screen.
    
    Xの環境変数やら、ディスプレイ番号も絡んで来ると思いきや、SSH接続でX転送が有効になっていない事が多々あるのでメモ
    $ ssh -Y <remote_host>
    
    接続後に、リモートホスト側のXアプリを起動。 -------------------------------------------------------------------------------- title: "CORESERVERのmysqlとmysqldumpのパス" date: "2016-05-26" url: https://scribble.washo3.com/linux/coreserver-mysql-mysqldump-path.html -------------------------------------------------------------------------------- CoreServerで動かしているWordPressでDBのバックアップが取られていない事に、今更気づいたので、確認した所、mysqlとmysqldumpが見つかりませんとの表示が出ていた。 CoreServerでは、mysqlとmysqldumpのパスが違う所にあるようなので、下記のパスに設定 > mysqldump : /usr/local/mysql/bin/mysqldump > mysql : /usr/local/mysql/bin/mysql これでOKです。 せめて、/usr/local/bin下にでも入れてくれればいいのにね。 -------------------------------------------------------------------------------- title: "Homebrewでwarning: Insecure world writableが出るようになった" date: "2016-05-26" url: https://scribble.washo3.com/mac/homebrew-warning-insecure-world-writable.html -------------------------------------------------------------------------------- ここ最近、Homebrewでまた下記のパーミッション警告が出るようになった。 > /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin13/rbconfig.rb:213: warning: Insecure world writable dir /usr/local in PATH, mode 040777 下記のコマンドで警告は出なくなった。
    $ sudo chown $(whoami):admin /usr/local && sudo chown -R $(whoami):admin /usr/local
    $ sudo chmod go-w /usr/local
    $ brew update
    
    -------------------------------------------------------------------------------- title: "CentOS7.xでSamba4.2が起動しない" date: "2016-05-16" url: https://scribble.washo3.com/linux/centos7-samba4-cannot-start.html -------------------------------------------------------------------------------- 職場のウェブサーバーでWindows共有が接続できないとの連絡を受け、確認したところ、Sambaが起動していなかったので、下記コマンドで起動を試みる。
    # systemctl start smb
    すると、下記のエラーで起動しない。 > Job for smb.service failed because the control process exited with error code ### Selinuxを確認
    #getenforce
     Disabled
    ### Firewallを確認
    # systemctl status firewalld
     firewalld.service - firewalld - dynamic firewall daemon
     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
     Active: inactive (dead)
    ### はて?何だろう?とログを確認
    # less /var/log/log.smbd
     ../source3/smbd/server.c:1256(main)
     error opening config file '/etc/samba/smb.conf'
    何だか、設定ファイルのsmb.confでエラーが出ている模様 なので、設定ファイルをデフォルトに戻してみた。
    # cd /etc/samba
    # cp smb.conf smb.conf.bak
    # cp smb.conf.rpmnew smb.conf
    (私の環境だと.rpmnewになっていたが、.defaultの場合もある)
    ### 再度、Sambaを起動
    # systemctl start smb
    無事、起動できた。 -------------------------------------------------------------------------------- title: "CentOS7のyum updateでkernelを除外" date: "2016-04-26" url: https://scribble.washo3.com/linux/centos7-yum-exclude-kernel.html -------------------------------------------------------------------------------- CentOS7上で、yum更新した後、再起動した際に、起動できないことが度々起こりました。 具体的には、通常にyum更新をかけると、kernelのアップデートがあった場合に、アップデートされ、次回の起動時には、アップデートされたkernelで起動しますが、これが下記のエラーで止まったまま、正常に起動しないということです。 > dracut-initqueue[685]: Warning: /dev/root does not exist このエラーは今まででも何度か体験しているので、yum 更新でkernelを除外設定にした。 ### yum設定ファイルを編集
    # vi /etc/yum.conf
    
    ....
    
    exclude=kernel* <--追記
    (サーバーとして運用しているので、xorg\*やcentos\*も実際には追記しています)   ### アップデートされた場合でも、勝手に新しいkernelで起動しない設定
    # vi /etc/sysconfig/kernel
    
    ....
    
    UPDATEDEFAULT=no <--yesから変更
    この2つの設定をしておくと、yum更新でkernelのアップデートが適用外となり、万が一、kernelアップデートされたとしても、現在のkernelで起動できるようになります。 -------------------------------------------------------------------------------- title: "QNAPをZabbixの監視対象にする" date: "2016-04-20" url: https://scribble.washo3.com/linux/qnap-monitor-zabbix.html -------------------------------------------------------------------------------- Zabbix Serverで監視対象のホストを順次登録しているのですが、NASのQNAPシリーズも監視対象にしたい。 しかし、QNAPのアプリではZabbixは存在しないので、下記の手順でインストールした。 ## QNAP CLUBからインストール (Zabbix Agent 4.x) 「[QNAPにZabbixエージェントを入れて監視する – 手当たり次第に書くんだ](https://www.si1230.com/?p=23132)」の記事通り 1. QNAPにQNAP CLUBのリポジトリを追加設定(https://www.qnapclub.eu/en/repo.xml) 2. Zabbixで検索し、Zabbix Agentをインストールし、開始を押す (開始しないとzabbixディレクトリやzabbix_agentd.confが作られない) 3. sshでQNAPへログインし、/etc/zabbix_agentd.conf内のhostとserver欄を設定 4. エージェント再起動(/etc/init.d/ZabbixAgent.sh restart) 完了したら、[Zabbix-Server側](#Zabbix-Server側)へ進んでください ## 手動インストール (Zabbix Agent 2.0.5) QNAPが古かったり、ファームウェアが古くてQNAP CLUBに対応していない場合には、下記の手動インストールを試してみてください。 ただし、エージェントのバージョンが古いです 1. Zabbixのフォーラムにて、配布されているQPKGファイルをダウンロード https://www.zabbix.com/forum/showthread.php?t=40955 2. QNAPに管理者でログインし、App Centerを開く 3. 「手動でインストール」 をクリックし、ダウンロードしたQPKGファイルを選択し、インストール 4. Zabbix _agentのインストールが完了後、起動をON 5. 次に、QNAPへTelnet若しくはSSHで管理者にてログイン 6. zabbixの設定ファイルを編集 ```# vim /etc/zabbix/zabbix_agentd.conf .... Server = xxx.xxx.xxx.xxx (Zabbix ServerのIPに設定) ``` 7. zabbix agent再起動 QNAP側で、起動しているので、一旦停止して起動させます。 ``` # /etc/init.d/zabbix_agentd.sh stop # /etc/init.d/zabbix_agentd.sh start ``` 8. zabbix agent起動確認 ``` # ps aux|grep zabbix 13738 zabbix 696 S /usr/bin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.c 13743 zabbix 860 S /usr/bin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.c ``` ## Zabbix Server側 1. Zabbix Serverへ管理者でログイン 2. 設定のホスト作成でQNAP用のホストを作成 IPアドレスにQNAPのIPアドレス テンプレートにTemplate OS Linux これで、しばらく待ち、エージェントの状態が緑になればOKです。 赤のまま表示されて疎通が出来ない場合は、下記を確認したほうが良いでしょう。 - ファイヤーウォールの影響 - ポートの指定、IPの指定等を確認 - Zabbix Agentの起動確認 私の失敗例として、 作業した直後、エージェントの状態が赤のままで、調べてみたら、QNAP側のzabbix agentが起動していなかったと言うオチでした。 QNAP上でzabbixを再起動した際に、横着して、zabbix_agentd.sh restartとやっちゃったんです。😉 zabix_agentd.sh stopしてstartした方が賢明かもしれません。 -------------------------------------------------------------------------------- title: "zabbix 2.4.xから3.0へアップデートしたら画面が真っ白" date: "2016-04-16" url: https://scribble.washo3.com/linux/zabbix-2to3-upgrade.html -------------------------------------------------------------------------------- 職場のzabbixを2.4.xから3.0へアップデートしたのでメモ アップデート方法は、ほぼ下記のURL通りです。(手抜き) https://qiita.com/ryouma_nagare/items/9bcf8f5e3e514103b515 違う点は、pg_dumpでなくて、mysqlを使っている点と、リポジトリの差し替えで、CentOS 6.xの環境だったので、rhelの7を6へ変更したくらいです。 まぁ、すんなりとアップデートが終わり、再起動してみた。
    # service start zabbix-server
    # service start zabbix-agent
    
    それで、いつも通りにWEBのログイン画面にアクセスすると、**画面が真っ白**! 失敗したのか、zabbixのログを見ても、表示されないエラーは見当たらず、Apacheのログを確認したところ、 > PHP Parse error: syntax error, unexpected ‘[‘ in /usr/share/zabbix/index.php on line 29 どうやら、zabbix 3.xからは、php5.6以降が必須らしい。 phpのバージョンを調べたら、5.3.xだったので、早速、phpのアップデートです。 ちなみに、php7は、まだ様子見なので、5.6.xをインストールしました。 下記URLを参考に、remiで5.6をインストールです。 https://syaka.site/2016/03/6/ phpのアップグレード完了後に、Apacheを再起動して、再度WEB画面にアクセスすると、 > Not Found The requested URL /zabbix/ was not found on this server. 2.4.xのバージョンまで、同じURLで接続出来ていたのに?と、/etc/httpsd/conf.d/zabbix.conを確認したところ、zabbix.conf.rpmsaveに名前変更されたままでしたので、zabbix.confに戻しました。 そして、再度、WEB画面にアクセス。 表示されました! が・・・何だかエラーっぽいのが沢山表示されている。 Zabbix php error ふむ、timezoneがどうとか言ってるようで、いつの日からか、timezone設定しなきゃいけなかったのを思い出し、/etc/php.iniを編集して、timezoneを有効にした。
    date.timezone = Asia/Tokyo
    さらに、Apacheを再起動して、再接続したら、エラーっぽい表示はなくなりましたが、今度は、php内のオプションを変更してね〜とな。 Zabbix php error2 あとは、phpのオプション設定変更と、不足しているモジュールを導入してあげれば良いようです。 /etc/php.ini
    post_max_size = 16M
    max_execution_time = 300
    max_input_time = 300
    always_populate_raw_post_data = -1
    
    不足しているモジュールは、bcmathとxml関連なので、
    # yum install php-bcmath php-xml
    
    これで、無事に正常動作が確認できました。 はぁ、疲れた。 -------------------------------------------------------------------------------- title: "rainloopでページにアクセス出来ない症状" date: "2016-04-07" url: https://scribble.washo3.com/linux/rainloop-javascript-error.html -------------------------------------------------------------------------------- 職場のWebメールをrainloopに変更したところ、ある一人から、アクセス出来ません!と報告がきた。 拝見した所、下記のエラー
    Page refresh in case of javascript errors
    MacのSafariの環境でエラーが出ていたので、とりあえず他のブラウザーで試してみてと提案。 Google ChromeもFirefoxも入っていなかったので、ダウンロードしようとしたところ、どちらもMac OS X 10.6以降が必須なのでダウンロード出来ませんと表示。 えっ? Mac OS Xのバージョンは? はい、10.5.xと古かったのです。 rainloopの必要要件では、対象ブラウザーが明記されているものの、バージョンまでは書かれてないようですが、恐らく、これが原因なのでしょう。 https://www.rainloop.net/docs/system-requirements/ -------------------------------------------------------------------------------- title: "homebrewのアップデートで失敗は、phinzeが原因" date: "2016-04-03" url: https://scribble.washo3.com/mac/2016-untap-homebrew-phinze.html -------------------------------------------------------------------------------- 久しぶりにbrewの更新をかけたら、下記のエラー
    $ brew update
    ==> Tapping homebrew/core
    Cloning into '/usr/local/Library/Taps/homebrew/homebrew-core'...
    ....
    Error: Could not link phinze/cask manpages to:
      /usr/local/share/man/man1/brew-cask.1
    
    Please delete these files and run `brew tap --repair`.
    どうやらphinzeは、しばらくメンテされていないようで、uptapしてあげれば良さそうです。
    $ brew untap phinze/cask
    $ brew update; brew cleanup; brew cask cleanup
    -------------------------------------------------------------------------------- title: "Webmin/Usermin接続が拒否される場合" date: "2016-04-01" url: https://scribble.washo3.com/linux/webminusermin%E6%8E%A5%E7%B6%9A%E3%81%8C%E6%8B%92%E5%90%A6%E3%81%95%E3%82%8C%E3%82%8B%E5%A0%B4%E5%90%88.html -------------------------------------------------------------------------------- めったに開かないのですが、久しぶりにWebmin/Userminへアクセスしたところ、接続(アクセス)が拒否されるようになっていました。 Webmin access denied 当然、サーバーは起動しているのを確認し、Webmin/Userminの再起動も行っています。 ところが、古いブラウザでは接続出来るようなのです。 調べてみると、どうやら証明書の鍵長が1024ビット未満の場合には、アクセスが拒否するらしく、古い設定のままのWebmin/Uerminは、デフォルトで512ビットで作られているのが原因のようです。(現在のデフォルト設定は、2048になってます) これを解決するには、証明書を再作成すると直るようですので、下記の記事を参考にしてみました。 https://www.prox.ne.jp/faq/2\_368\_ja.html

    Webminが開けない

    なるほど、そのようにWebmin上で作成するんですね。 って、お〜〜い、そのWebmin/Usermin自体につながらないっつうの! 一番、手っ取り早いのは、Webminサーバー内の設定を一時的に変更してあげる事ではないでしょうか。
    $ cd /etc/webmin/
    $ vim miniserv.conf ... ssl=0 # ←1を0に変更 ...
    $ service webmin restart
    コマンドラインで作成するには、下記参照

    Replace webmin self-signed certificate to avoid sec_error_invalid_key error

    https://d.hatena.ne.jp/kibitaki/20150718/1437231546 -------------------------------------------------------------------------------- title: "Code Sample" date: "2016-03-08" url: https://scribble.washo3.com/2016-03-08-code-sample/ -------------------------------------------------------------------------------- The following are two code samples using syntax highlighting. The following is a code sample using triple backticks ( ``` ) code fencing provided in Hugo. This is client side highlighting and does not require any special installation. ```javascript var num1, num2, sum num1 = prompt("Enter first number") num2 = prompt("Enter second number") sum = parseInt(num1) + parseInt(num2) // "+" means "add" alert("Sum = " + sum) // "+" means combine into a string ``` The following is a code sample using the "highlight" shortcode provided in Hugo. This is server side highlighting and requires Python and Pygments to be installed. {{< highlight javascript >}} var num1, num2, sum num1 = prompt("Enter first number") num2 = prompt("Enter second number") sum = parseInt(num1) + parseInt(num2) // "+" means "add" alert("Sum = " + sum) // "+" means combine into a string {{}} And here is the same code with line numbers: {{< highlight javascript "linenos=inline">}} var num1, num2, sum num1 = prompt("Enter first number") num2 = prompt("Enter second number") sum = parseInt(num1) + parseInt(num2) // "+" means "add" alert("Sum = " + sum) // "+" means combine into a string {{}} -------------------------------------------------------------------------------- title: "Subsonic 4.xから6.0betaへアップデート" date: "2016-02-24" url: https://scribble.washo3.com/linux/subsonic-4-x%E3%81%8B%E3%82%896-0beta%E3%81%B8%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88.html -------------------------------------------------------------------------------- Subsonic logo このサイトでも何度かSubsonicのアップデート情報を書いてますが、さほど変わりはありません。 環境は、SL6上で、Subsonic 4.xから6.0betaへのアップデートです。 たぶん、rpm -Uvhでアップデートかけても大丈夫かと思いますが、今回のアップデート作業は下記の手順で行いました。 1. Subsonicが起動していたら停止
    # service subsonic stop
    2. javaのインストール
    # sudo yum install java-1.7.0-openjdk
    3. 最新版をダウンロード (https://www.subsonic.org/pages/download.jsp)でrpmをダウンロード 4. アップデート
    # sudo yum install --nogpgcheck subsonic-x.x.rpm
    もし、アップデートが上手くいかなければ、古いパッケージを削除してからインストールしましょう。
    # sudo yum remove subsonic
    バージョンアップ後は、4.xからの設定等もそのまま引き継がれました。 5.xのバージョンをすっ飛ばしてのバージョンアップなので、結構UIが洗練されてますね。 6.0betaではHTML5Audioが採用されていますが、やっぱりiPhone/iPadのブラウザ上での再生はダメか。 また、DLNAを有効にしても、我が家のムービーファイルは再生出来なかった。(T_T) -------------------------------------------------------------------------------- title: "Macのディスクユーティリティでマウント解除できない時の対処" date: "2015-08-19" url: https://scribble.washo3.com/mac/mac-diskutility-cannot-unmount.html -------------------------------------------------------------------------------- 私の使っているiMac内蔵のSSDがよく壊れます。 ディスクユーティリティで検証・修復しようとしても、`修復できません`との警告で、よく復旧作業を行うことがあります。 通常だと、「⌘(コマンド)+ R」のリカバリモードで起動し、ディスクユーティリティを起動して、壊れたSSD/HDDを消去するのですが、時々、`マウント解除できませんでした`と消去すらできない症状に遭遇します。 おそらく、リカバリーモードで起動しても、消去対象のSSD/HDDに何らかのアクセスがあるからマウント解除できないのでしょう。 ## USB起動ディスクを作成して解決 ディスクユーティリティを抜け、コンソールで調べてみても良いかと思いますが、面倒臭いので、USBディスクで起動するとあっさり消去できますので、緊急起動用にインストールUSBを作成しておくと良いです。 ちょっと情報古いですが、インストールUSBの作り方はこんな感じで↓ また、Apple公式サイトでも、最新のOSまで対応した作成手順が公開されてますので、ごちらも参考になるかと思います。 ## ターミナル(コンソール)で解決 コンソールで作業したい方は、psやlsofで消去対象のSSD/HDDを探して、プロセスを殺すと上手く行くかと思います。 ```bash $ sudo lsof /Volumes/<HDD名や共有名> mds 60 root 50r DIR 48,12 16384 2 /Volumes/share Finder 360 hoge 26r DIR 48,12 16384 2 /Volumes/share zsh 75882 hoge cwd DIR 49,10 1554 2 /Volumes/share ``` この場合は、shareのディレクトリがFinderとzshで利用されているので、Finderで開いていないか、またはコンソール(zsh)でshare内に入ったままになっていないか確認すればOKですね。 偶に、Finderが全て閉じているにも関わらず、アンマウントできないことがあるので、その場合には、Finderを`Option+右クリック`で「再度開く」により、Finderを再起動しましょう。 -------------------------------------------------------------------------------- title: "3日間悩んだApache2.4系ユーザーディレクトリのForbidden" date: "2015-08-18" url: https://scribble.washo3.com/linux/apache2-4-userdir-forbidden.html -------------------------------------------------------------------------------- Apache2.4系を入れる必要があったので、CentOS6/Apache2.2からCentOS7/Apache2.4へ更新しました。 2.4系では、httpsd.conf内の書式やアクセス制御の書式も変更になり、修正を施し、Apache起動まで確認できたところで、ユーザーディレクトリの設定を有効にしたところ、Fobiddenのエラーでハマってしまいました。 この時の環境では、 * Firewall無効 * SELinux無効 * mod_userdir.soのモジュールが読み込まれているか確認 * /etc/httpsd/conf.d/userdir.con内を確認 UserDir public_html AllowOverride ALL Options ALL Require all granted * userのパーミッションを711確認 * user下public_htmlディレクトリのパーミッションを755確認 * public_html下のindex.htmlに読み込み属性があるか確認 * user下に.htaccessがあるか確認 .htaccessが見つかった場合、アクセス制御書式が古くなっているのでorder deny allow形式からRequire形式に変更 おおよそ、これくらいの設定で普通なら閲覧できるはずなんです。 実は、今回運用したサイトの構成で、userのディレクトリは、グループ分けする必要があったので、下記のようになってます。 /home/group1/user1 /home/group1/user2 /home/group2/user3 /home/group2/user4 これらuser1からuser4までチルダ(~)を使ったURL(https://localhost/~user1)でアクセスすると、すべて、下記のエラー > Forbidden > You don’t have permission to access /~user1 on this server. httpsdのエラーログを見ても、permission denied.と記載されている。 /home/group/userの位置が悪いのか?と思い、/home/user5のユーザーを作成してみると、~/user5でアクセス出来る。 と言うことは、/etc/httpsd/conf.d/userdir.conf内のディレクティブ/home/*/public_htmlが怪しい。 *の指定だと、homeとpublic_html間に何が入っても有効なはずじゃないのか?と思い、下記のディレクティブを追加してみた。
    <Directory "/home/*/*/public_html">
    AllowOverride ALL
    Options IncludesNoExec ExecCGI FollowSymLinks
    Require method GET POST OPTIONS
    </Directory>
    これで、Apacheを再起動したところ、チルダ(~)による各ユーザーのホームページが閲覧できるようになった。 結果オーライだが、/home/\*/\*/public_htmlの書式は、何かスマートじゃないよね? 何かよい書き方もしくは方法があったら、教えてください。 -------------------------------------------------------------------------------- title: "CentOS7でネットワーク不調だった原因" date: "2015-08-17" url: https://scribble.washo3.com/linux/centos7%E3%81%A7%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E4%B8%8D%E8%AA%BF%E3%81%A0%E3%81%A3%E3%81%9F%E5%8E%9F%E5%9B%A0.html -------------------------------------------------------------------------------- CentOS7をインストール後に、nfsに接続できなかったり、digでDNS情報が引けなかったりと、四苦八苦してました。 NFSでは、下記の環境 * Firewall無効 * SELinux無効 * NFS関連のプログラムはインストール済み * 関連プログラムは、起動済み * tcp_wrapperrrで制限はしていない * Google等へのpingでネットワーク疎通確認 * autofsも起動している autofsで指定しているフォルダにアクセスしても、手動でmountコマンドを打っても、しばらく経ったあとに、Connection timed out.で接続できない。 また、接続先を変更してみても、接続できないので、サーバー側で弾かれているわけではなさそう。 ググってみると、状況によっては、IPアドレスと名前のマッピングも関係する場合があるとの情報もあったので、hostsやDNS関連も確認した。 この作業の途中で、DNSのdigコマンドで自分のホストを確認しようとしてみたところ、なぜかdigの情報がGoogle等では引けるのに、自分のDNSでは引けないことに気づく。 なぜ?と、徐ろに、ipコマンドを打ってみた。
    # ip addr
    2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
     link/ether 00:0cxx:b0:xx:e0 brd ff:ff:ff:ff:ff:ff
     inet 192.168.1.37/32 brd 192.168.1.37 scope global ens32
    もう、お分かりになったでしょう! サブネットマスクが32になっているではありませんか。 CentOS7のネットワーク設定で、nmtuiコマンドによりネットワーク設定を行ったわけですが、IPアドレス入力欄で192.168.1.37だけを入力した時に、自動的に192.168.1.37/32へ設定されていたようでした。 もう一度、nmtuiを起動して変更しても構いませんが、下記を編集して手動で対処した。
    # vi /etc/sysconfig/network-scripts/ifcfg-en32
    PREFIX=24  #32から24へ変更して保存
    # systemctl restart network
    これにて、NFSもdigも一件落着しました。 -------------------------------------------------------------------------------- title: "Error: uninitialized constant Formulary::HOMEBREW_CORE_FORMULA_REGEX" date: "2015-08-13" url: https://scribble.washo3.com/mac/error-uninitialized-constant-formularyhomebrew_core_formula_regex.html -------------------------------------------------------------------------------- MacのHomebrewでアップデートをかけると、またもや下記のエラー Error: uninitialized constant Formulary::HOMEBREW\_CORE\_FORMULA_REGEX >
    $ brew update
    Error: uninitialized constant Formulary::HOMEBREW_CORE_FORMULA_REGEX
    Please report this bug:
        https://git.io/brew-troubleshooting
    /usr/local/Library/Homebrew/formulary.rb:227:in `loader_for'
    /usr/local/Library/Homebrew/formulary.rb:176:in `factory'
    /usr/local/Library/Homebrew/cmd/update.rb:173:in `block in report'
    /usr/local/Library/Homebrew/cmd/update.rb:159:in `each_line'
    /usr/local/Library/Homebrew/cmd/update.rb:159:in `report'
    /usr/local/Library/Homebrew/cmd/update.rb:24:in `update'
    /usr/local/Library/brew.rb:140:in `<main>'
    gitのトラブルシューティングを見ろとの事で、https://github.com/Homebrew/homebrew/issues/42553に書いてありました。 もう一度、brew updateをかければ良いみたいです。
    $ brew --version
    0.9.5
    $ brew update
    Already up-to-date.
    -------------------------------------------------------------------------------- title: "Debian 8(Jessie)にVMware Toolsをインストール" date: "2015-04-28" url: https://scribble.washo3.com/linux/debian-8jessie%E3%81%ABvmware-tools%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB.html -------------------------------------------------------------------------------- 前記で、Debian 8(Jessie)をVMware Fusion上にインストールしたので、VMware-Toolsを導入しました。 まずは、VMwareTools導入にあたり、必須となるファイルやプログラムをDebian上にインストールします。 ``` # apt-get install gcc make perl
    # apt-get install linux-headers-$(uname -r)` ``` MacのVMware Fusion上のメニュー欄から仮想マシンのVMware Toolsのインストール選びます。 すると、/media/cdromへマウントされます。 その中の既存のインストーラを起動しようとすると・・下記のエラー > chmod: \`./vmware-tools-upgrader-64′ のパーミッションを変更しています: 読み込み専用ファイルシステムです なので、/tmp/に展開してインストール ``` # tar zxf /media/cdrom/VMwareTools-9.9.2-2496486.tar.gz -C /tmp
    # cd tmp/mware-tools-distrib/
    # ./vmware-install.pl` ``` 再起動後、VMwareToolsが有効になっている事と思います。 -------------------------------------------------------------------------------- title: "Debian wheezy(7.8) から jessie(8.0)へアップグレード" date: "2015-04-28" url: https://scribble.washo3.com/linux/debian-wheezy7-8-%E3%81%8B%E3%82%89-jessie8-0%E3%81%B8%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89.html -------------------------------------------------------------------------------- Debianが約2年ぶりにメジャーアップグレードで、[Debian 8.0 Jessie][1]がリリースされましたので、早速、既存の7.x(wheezy)からアップグレードを行ってみました。 メジャーアップグレードでリリースされたばかりなので、用心をとって、VMware Fusion上にてテスト的にアップグレードです。 Debian8 sc VMware Fusion上で、7.8(wheezy)をnet installした後、8.0(jessie)へのアップグレード方法です。 もし、運用しているwheezyをそのままアップグレードする場合には、/etc下やapt関連のバックアップを取ってから行った方が良いでしょう。 1. 既存のパッケージを更新しておきます。 `# apt-get update; apt-get upgrade` また、整合性の競合がないことも確認しておきましょう 2. wheezyからjessieへsourcelessを変更 `# sed -i 's/wheezy/jessie/g' /etc/apt/sources.list` 3. 更新・アップグレード ``` # apt-get update # apt-get upgrade # apt-get dis-upgrade ``` 4. 掃除 `# aptitude purge '~c’` 5. 再起動 `# init 6` 6. バージョン確認 ``` # lsb_release -aNo LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 8.0 (jessie) Release: 8.0 Codename: jessie ``` 以上で、7.xから8へのアップグレード完了です。 jessieから、GNOMEが標準になったり、標準のinitシステムがSysVinitからSystemdへ変更されたりと、7.xとは大幅な変更がありますし、リリースされたばかりと言うこともあり、不具合も出る可能性が大いにあるので、急がなければ、1ヶ月近くは様子をみて、アップグレードした方が良いかと思われます。 [1]: https://www.debian.or.jp/using/index.html -------------------------------------------------------------------------------- title: "Scientifix Linux 6.4から6.6へアップグレード" date: "2015-04-27" url: https://scribble.washo3.com/linux/scientifix-linux-6-4%E3%81%8B%E3%82%896-6%E3%81%B8%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89.html -------------------------------------------------------------------------------- ここのサーバで稼働しているScientific Linux 6 (SL6)を、バージョン6.4で止まったままでしたので、最新(現時点で6.6)へアップグレードしました。 一応、バージョン確認 `$cat /etc/redhat-release
    Scientific Linux release 6.4 (Carbon)` 普通にyum updateしても、最新へアップグレードされないままでしたので、下記コマンドで無事6.6へアップグレード。 `# yum install -y yum-conf-sl6x
    yum clean all
    yum update` アップグレード後、再起動して確認 `$ cat /etc/redhat-release
    Scientific Linux release 6.6 (Carbon)` -------------------------------------------------------------------------------- title: "Macでjavaのjarファイルを実行" date: "2015-04-02" url: https://scribble.washo3.com/mac/mac%E3%81%A7java%E3%81%AEjar%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E5%AE%9F%E8%A1%8C.html -------------------------------------------------------------------------------- 時々、Mac上のターミナルで、Javaのjarファイルを実行したい時があるのでメモ。 javaの起動には、Java Developer Kitが必須のようなので、下記のアドレスからMac版をダウンロードして、インストールしておく。 java-developer-kit-mac [Java SE Development Kit 8 - Downloads](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) 執筆時点だとjdk-8u241-macosx-x64.dmg その後に、下記コマンドで実行 ``` $ java -jar jarfile.jar ``` -------------------------------------------------------------------------------- title: "複製したVMwareゲストOSがネットワークにつながらない時に確認するポイント" date: "2015-04-02" url: https://scribble.washo3.com/network/%E8%A4%87%E8%A3%BD%E3%81%97%E3%81%9Fvmware%E3%82%B2%E3%82%B9%E3%83%88os%E3%81%8C%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%81%AB%E3%81%A4%E3%81%AA%E3%81%8C%E3%82%89%E3%81%AA%E3%81%84.html -------------------------------------------------------------------------------- VMware Fusionで他からコピーしてきたCentOSのゲストOSをそのまま起動しようとすると、デバイス名(eth*)が認識されなくてネットワークが利用できません。ちなみにVirtualBoxでも同様だと思います。 `# ifconfig -a` loしか表示されず、eth*が表示されない ここでのポイントは、MACアドレスとデバイス名を確認し、修正する事で、おおよそ解決できるかと思います。 ## MACアドレスの確認と修正 ### 確認 ゲストOSのCentOSを起動後、ログインし、/etc/sysconfig/network-scripts/ifcfg-eth0(←この数字は環境に合わせて)を確認します。 ``` # cat /etc/sysconfig/network-scripts/ifcfg-eth0` ``` ここで表示されたHWADDRのMACアドレスを確認します 次に、VMware Fusion上の起動したCentOSの設定より、ネットワークアダプターを選び、下部の詳細オプションをクリックします。 vm-guestos-network-macaddr ![](img/wp/2015/04/vm-guestos-network-macaddr.png) 表示されたMACアドレスが新しいものなので、ifcfg-eth0内のMACアドレスをこれに置き換えます。 保存後に、ネットワークを有効化します。 ``` # /sbin/service network start ``` この後に、何もエラーが出ずに、ネットワークが利用できるのであれば、これだけで終了です。 しかし、ほとんどが、下記のエラーが出る場合が多いです。 > Device eth0 does not seem to be present, delaying initialization ## デバイス名の設定変更 ``` # cat /etc/udev/rules.d/70-persistent-net.rules # `PCI device 0x8086:0x100f (e1000) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:92:xx:xx", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

    # PCI device 0x8086:0x100f (e1000) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:65:yy:yy", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1" ` ``` 同じネットワークデバイス名が存在し、上記が古いMACアドレス、下記が新しいMACアドレスになっているかと思います。 下記のMACアドレスが、上図の詳細オプションで表示されたMACアドレスになっていることを確認し、上記の古い情報(デバイス、MACアドレス)を削除します。 このままでも問題はありませんが、ネットワークデバイス名がeth0でなく、eth1となってしまうので、eth1をeth0に変更すると良いでしょう。 この後、OS再起動するとネットワークが利用できる環境になっている事と思います。 -------------------------------------------------------------------------------- title: "Test markdown" date: "2015-02-20" url: https://scribble.washo3.com/2015-02-20-test-markdown/ -------------------------------------------------------------------------------- You can write regular [markdown](http://markdowntutorial.com/) here and Jekyll will automatically convert it to a nice webpage. I strongly encourage you to [take 5 minutes to learn how to write in markdown](http://markdowntutorial.com/) - it'll teach you how to transform regular text into bold/italics/headings/tables/etc. **Here is some bold text** ## Here is a secondary heading Here's a useless table: | Number | Next number | Previous number | | :------ |:--- | :--- | | Five | Six | Four | | Ten | Eleven | Nine | | Seven | Eight | Six | | Two | Three | One | How about a yummy crepe? ![Crepe](https://s3-media3.fl.yelpcdn.com/bphoto/cQ1Yoa75m2yUFFbY2xwuqw/348s.jpg) Here's a code chunk with syntax highlighting: ```javascript var foo = function(x) { return(x + 5); } foo(3) ``` -------------------------------------------------------------------------------- title: "コマンドラインで Macのバージョン確認" date: "2015-02-05" url: https://scribble.washo3.com/mac/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%A7-mac%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%A2%BA%E8%AA%8D.html -------------------------------------------------------------------------------- 普通にMacを目の前にして、GUIにてMacのバージョンを確認するには、アップルメニューから「このMacについて」を選択するだけですけど、SSHで遠隔ログインしている時に、あれ?バージョン確認ってどうやるんだろうと思ったのでメモ。 ターミナルから、sw_versと打つだけ。

    $ sw_vers
    ProductName: Mac OS X
    ProductVersion: 10.9.5
    BuildVersion: 13F34
    /System/Library/CoreServices/SystemVersion.plistを読んで表示しているよう。 -------------------------------------------------------------------------------- title: "Mac OS X でネットワークの優先順" date: "2015-01-27" url: https://scribble.washo3.com/mac/mac-os-x-network-wifi%E9%A0%86.html -------------------------------------------------------------------------------- iMacを使ってて、素朴な疑問! UTPケーブルで有線接続して、WiFiで無線接続している場合、時にはVPN接続する場合、ネット接続ではどちらが優先されるんだろう?とふと考えてしまいました。 答えは、アップルの公式ページに書いてありました。 https://support.apple.com/kb/PH7119?viewlocale=ja\_JP&locale=ja\_JP > 1. アップルメニュー>「システム環境設定」と選択し、「ネットワーク」をクリックします。 > 2. 「アクション」ポップアップメニュー(歯車のアイコン)から「サービスの順序を設定」を選択します。 > 3. 「Ethernet」などのサービスをリストの一番上にドラッグします。 > 4. 「OK」をクリックしてから「適用」をクリックして、新しい設定を有効にします。 mac-cable-wifi リスト上位から優先され、VPN接続する場合は、上位に持っていく必要がないとの事で、疑問が解決してスッキリです。 -------------------------------------------------------------------------------- title: "Linux上で重複したファイルを探して削除する" date: "2015-01-22" url: https://scribble.washo3.com/linux/howto-remove-duplicate-files.html -------------------------------------------------------------------------------- Linux上で重複したファイルを削除するツールにfdupesというツールがあります。 findなどで、単にファイル名やファイルサイズを比較しても、中身が同じであるとは限りませんが、fdupesは、ファイルサイズとmd5ハッシュ値を比較して、重複ファイルを抽出するので、ほぼ間違いないツールだと思います。 fdupesは標準では入っていないので、インストールする必要があります。 Debian系だと、そのままapt-getでインストール ``` # apt-get -y install fdupes ``` RedHat系だとepelのリポジトリにてインストール出来ます。 ``` # yum -y install fdupes --enablerepo=epel ``` 使い方 あるディレクトリ内を再帰的に重複ファイルを検索 ``` $ fdupes -r ~/Dropbox/ ``` 重複ファイルを対話形式で削除 ``` $ fdupes -rd ~/Dropbox/ ``` 最初に検索されたファイルを除外し、確認しながら削除 ``` $ fdupes -frdN ~/Dropbox/ ``` 最初に検索されたファイル以外を問答無用で削除 ``` $ fdupes -fr ~/Dropbox/ | xargs rm ``` 注意事項 -fの引数で最初に検索されたものが除外されるが、果たして、この除外されたファイルが実際に残しておかなくてはならないのか判断する必要があります。 中には重複したファイルが、あるディレクトリ内になくてはならないものも存在します。 ですので、一番安心な方法は、fdupes -rで検索した結果をリスト化して、自分の判断で削除する事ですね。 ``` $ fdupes -rf ~/Dropbox/ | sort | uniq | grep -v '^$' > duplicate.txt ``` ### 参考 fdupesの他にもいろんな重複削除ツールがあるので、下記の記事を参考にしてみてください -------------------------------------------------------------------------------- title: "ルート領域がフルになりそうなのでコマンドラインで確認してみる" date: "2015-01-22" url: https://scribble.washo3.com/linux/hdd-spacee-check-cli.html -------------------------------------------------------------------------------- このサイトでは、Sientific Linux 6.xの64bitで運用しており、ハードディスク容量を見てみたところ、99%使用で、危うく100%超しそうでした。 WindowsやMacでは、GUIでグラフィカルなHDD容量チェックルーツがたくさんあります。もちろんLinuxでもないわけではありませんが、コマンドラインの方が簡単で慣れてるので、コマンドラインでチェックです。 全体の容量を見るには、df -Hでパーティション毎に、容量情報を見ることが出来ます。 調べてみたところ、ルート(/)領域が99%で、その中でも/usr以下がほぼ占めてた。 それで、/usr/以下を下記コマンドで調べてみた。
    # du -s /usr/* | sort -n
    1.5M ./bin
    4.0K ./etc
    4.0K ./games
    4.0K ./lib64
    4.0K ./libexec
    4.0K ./sbin
    4.0K ./src
    36G ./vpnserver
    87M ./lib
    382M ./rbenv
    436K ./share
    688K ./include
    
    vpnserver下が圧倒的に容量を喰っていたので、さらに調べていったら、ログが溜まっていたのが原因でした。 あっさりとログを削除したころ、HDD空き容量が99%から20%にも減りましたとさ。 -------------------------------------------------------------------------------- title: "cpコマンドで複数のファイルを一括でシムリンク" date: "2015-01-06" url: https://scribble.washo3.com/linux/cp%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E8%A4%87%E6%95%B0%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E4%B8%80%E6%8B%AC%E3%81%A7%E3%82%B7%E3%83%A0%E3%83%AA%E3%83%B3%E3%82%AF.html -------------------------------------------------------------------------------- Linux/Macなどでシンボリックシンク(シムリンク)を張る際に、通常だと”ln -s file1 files2″みたいに行います。 しかし、複数のシムリンクを作成する際に、lnではワイルドカードが使えないので、一つ一つでの作業となり面倒です。 達人になると、findとxargもしくはforループなどのインラインコマンドやシェルスクリプト,perl,rubyで簡単なプログラムを書くのでしょうけど、もっと簡単な方法はないのだろうかと思っていました。 (CentOS6.xのLinuxの場合で説明) たとえば、Muninのプラグインファイルをシムリンク張る際に、 大元のファイルは、/usr/share/munin/plugis/に入っており、この中から有効にしたいファイルを/etc/munin/plugins/へシムリンクを作成します。 今回は、postgress関連のシムリンクを張ってみます。 まず、postgress関連のファイルを確認すると、
    $ ls /usr/share/munin/plugins/postgres_*
    /usr/share/munin/plugins/postgres_autovacuum
    /usr/share/munin/plugins/postgres_bgwriter
    /usr/share/munin/plugins/postgres_cache_
    /usr/share/munin/plugins/postgres_checkpoints
    /usr/share/munin/plugins/postgres_connections_
    /usr/share/munin/plugins/postgres_connections_db
    /usr/share/munin/plugins/postgres_locks_
    /usr/share/munin/plugins/postgres_oldest_prepared_xact_
    /usr/share/munin/plugins/postgres_prepared_xacts_
    /usr/share/munin/plugins/postgres_querylength_
    /usr/share/munin/plugins/postgres_scans_
    /usr/share/munin/plugins/postgres_size_
    /usr/share/munin/plugins/postgres_streaming_
    /usr/share/munin/plugins/postgres_transactions_
    /usr/share/munin/plugins/postgres_tuples_
    /usr/share/munin/plugins/postgres_users
    /usr/share/munin/plugins/postgres_xlog
    
    これらのファイル全部を一つ一つlnコマンドでシムリンク張るのは、かなり面倒ですよね。 そこで、Linux/Unixを触ったことがある方なら誰でもご存じのcpを使います。 そう、ファイルをコピーするコマンドのcpです。 では、早速作業してみましょう。
    # cd /etc/munin/plugins/
    # cp -s /usr/share/munin/plugins/postgres* .
     cpコマンドに-sの引数をつけてやるだけで、あら不思議、簡単にシムリンクが張れます。 尚、シムリンク作成出来るcpは、FreeBSDやSoralisなど違うプラットフォームまたはバージョンによっては、使えないかもしれませんので、バージョンを確認し、man cpで-sが使えるか確認しましょう。 > $ cp –version > cp (GNU coreutils) 8.4 作業後に、シムリンクが張れているか確認してみると、まとめてシムリンクが張られ作成されることが確認できました↓
    postgres_autovacuum -> /usr/share/munin/plugins/postgres_autovacuum
    postgres_bgwriter -> /usr/share/munin/plugins/postgres_bgwriter
    postgres_cache_ -> /usr/share/munin/plugins/postgres_cache_
    postgres_checkpoints -> /usr/share/munin/plugins/postgres_checkpoints
    postgres_connections_ -> /usr/share/munin/plugins/postgres_connections_
    postgres_connections_db -> /usr/share/munin/plugins/postgres_connections_db
    postgres_locks_ -> /usr/share/munin/plugins/postgres_locks_
    postgres_oldest_prepared_xact_ -> /usr/share/munin/plugins/postgres_oldest_prepared_xact_
    postgres_prepared_xacts_ -> /usr/share/munin/plugins/postgres_prepared_xacts_
    postgres_querylength_ -> /usr/share/munin/plugins/postgres_querylength_
    postgres_scans_ -> /usr/share/munin/plugins/postgres_scans_
    postgres_size_ -> /usr/share/munin/plugins/postgres_size_
    postgres_streaming_ -> /usr/share/munin/plugins/postgres_streaming_
    postgres_transactions_ -> /usr/share/munin/plugins/postgres_transactions_
    postgres_tuples_ -> /usr/share/munin/plugins/postgres_tuples_
    postgres_users -> /usr/share/munin/plugins/postgres_users
    postgres_xlog -> /usr/share/munin/plugins/postgres_xlog
    Linux/Unixを10年以上も触っているに、cpコマンドでシムリンクが作成できるのを初めて知りました。お恥ずかしい・・ -------------------------------------------------------------------------------- title: "MacのターミナルにてSolaris上のviでxtermエラーが出るときの対処" date: "2014-12-03" url: https://scribble.washo3.com/mac/mac%E3%81%AE%E3%82%BF%E3%83%BC%E3%83%9F%E3%83%8A%E3%83%AB%E3%81%AB%E3%81%A6solaris%E4%B8%8A%E3%81%AEvi%E3%81%A7xterm%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E5%87%BA%E3%82%8B%E3%81%A8%E3%81%8D%E3%81%AE.html -------------------------------------------------------------------------------- MacのターミナルやiTermにて、SunOS(Solaris)にログインし、viを起動すると、下記のエラーが出ることが多々あるのでメモ。
    $ vi
    xterm-256color: Unknown terminal type I don't know what kind of terminal you are on - all I have is 'xterm-256color'. [Using open mode]
    Mac側ではxterm-256colorなのですが、Solaris側ではxterm-256colorって知らんよ!って事なので、Mac側の環境変数TERMを変更してあげればOKです。 Solaris10で使用可能なterminfoは、下記のようにして調べることが出来ます。
    $ ls /usr/share/lib/terminfo/x
    x1700 x1750 xitex xpcterm xtalk xtermc xterms
    x1720 x820 xl83 xpcterms xterm xtermm
    (ちなみに、Linuxでは/usr/share/terminfo/xです。) これを元に、Mac側のターミナルで、環境変数を設定
    $ vim ~/.bash_profile
    $ export TERM=xterm
    $ source ~/.bash_profile
    -------------------------------------------------------------------------------- title: "Lazy galleryでサムネイルが表示されなくなった不具合" date: "2014-12-03" url: https://scribble.washo3.com/wordpress/lazy-gallery%E3%81%A7%E3%82%B5%E3%83%A0%E3%83%8D%E3%82%A4%E3%83%AB%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F%E4%B8%8D%E5%85%B7%E5%90%88.html -------------------------------------------------------------------------------- 私が担当しているとあるブログで、サーバ:Coreserver、CMS:WordPressにて運用しており、アルバムのプラグインとして、lazy galleryと言うプラグインを利用しており、WordPress本体とプラグイン更新以外は手を付けておりませんでしたが、いつの間にか、閲覧が出来なくなってしまいました。 推測すると、たいていサムネイルが作成されていないか、パーミッションが適切でないことが多いですが、対処として、 * キャッシュの削除 * メモリ不足によりメモリを増やす * サムネイルの再構築 * Coreserverなので、パーミッションの確認 などを確認してみましたが、どれも解決には至らず。 Lazy galleryで作成したアルバムページのソースを眺めていたところ、サムネイルのリンク近くに、何だか別のCSSクラスがあることを発見しました。 原因は、プラグインの競合だったようで、Hammyと言うプラグインを外したところ、無事改善した。 -------------------------------------------------------------------------------- title: "Debianでsourcelist内のhttpsが取得出来ないとき" date: "2014-11-21" url: https://scribble.washo3.com/linux/debian%E3%81%A7sourcelist%E5%86%85%E3%81%AEhttps%E3%81%8C%E5%8F%96%E5%BE%97%E5%87%BA%E6%9D%A5%E3%81%AA%E3%81%84%E3%81%A8%E3%81%8D.html -------------------------------------------------------------------------------- 標準以外のとあるパッケージを導入しようと、/etc/apt/sources.list内にURLを記述し、apt-get updateで更新したところ、下記のエラー
    sudo apt-get update
    E: The method driver /usr/lib/apt/methods/https could not be found.
    調べてみたら、/usr/lib/apt/methods/内にhttpsがないので、エラーとなってますね。 解決方法は、httpsに対応したapt methodをインストールすれば良いです。
    # apt-get install apt-transport-https
    これで、/usr/lib/apt/methods/内にhttpsが導入されますので、もう1度apt-get updateで更新するだけです。 何で、標準でhttpsが入ってないんだろう? -------------------------------------------------------------------------------- title: "nginxでSSL 3.0を無効に設定(POODLE対応)" date: "2014-10-29" url: https://scribble.washo3.com/linux/nginx%E3%81%A7ssl-3-0%E3%82%92%E7%84%A1%E5%8A%B9%E3%81%AB%E8%A8%AD%E5%AE%9Apoodle%E5%AF%BE%E5%BF%9C.html -------------------------------------------------------------------------------- こちらのサーバーでは、nginxを利用しているので、POODLE対策(SSL3.0無効化)は下記の行を、nginx.confに明記するだけです。
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    設定後は、nginxを再起動しましょう! -------------------------------------------------------------------------------- title: "expressをインストールしてもnot foundになる" date: "2014-08-01" url: https://scribble.washo3.com/linux/express%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%81%A6%E3%82%82not-found%E3%81%AB%E3%81%AA%E3%82%8B.html -------------------------------------------------------------------------------- node.js関連でexpressをインストールする場合があるかと思いますが、ネット上の情報では、下記みたいに書いている事が多いです。
    # npm install -g express
    でも、この通りにインストールして、expressを実行しようとすると、command not foundと見つからないのです。
    # express
    express: command not found.
    パスが必要なのかと思って探してみても、expressが見つからないのです。 どうやら、express 4.xでは、下記のようにインストールするようです。
    # npm install -g express-generator
    これで、expressが動作した。 -------------------------------------------------------------------------------- title: "Macにインストールしたnpmをアップグレード" date: "2014-07-31" url: https://scribble.washo3.com/mac/mac%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%81%9Fnpm%E3%82%92%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89.html -------------------------------------------------------------------------------- Macでhomebrewを利用して、インストールしたnodeをアップグレード。 homebrewでアップデートしても、バージョンが古かったので、別の方法を使用。
    $ npm -v
    1.2.32
    $ node -v
    v0.10.12
    
    $ sudo npm cache clean -f
    $ sudo npm install -g n
    ....
    npm https 200 https://registry.npmjs.org/n/-/n-1.2.9.tgz
    /usr/local/share/npm/bin/n -> /usr/local/share/npm/lib/node_modules/n/bin/n
    
    $ /usr/local/share/npm/lib/node_modules/n/bin/n stable
         install : v0.10.29
           mkdir : /usr/local/n/versions/0.10.29
           fetch : https://nodejs.org/dist/v0.10.29/node-v0.10.29-darwin-x64.tar.gz
       installed : v0.10.29
    
    $ node -v
    v0.10.29
    -------------------------------------------------------------------------------- title: "Linuxでユーザーパスワードが登録できない" date: "2014-07-30" url: https://scribble.washo3.com/linux/linux%E3%81%A7%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E3%81%8C%E7%99%BB%E9%8C%B2%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84.html -------------------------------------------------------------------------------- CentOS(Linux)にて、ユーザーを作成し、パスワードを登録しようとしたら、下記のエラーで出来ない。 > $ passwd > Changing password for user hoge. > Changing password for hoge > (current) UNIX password: > passwd: Authentication token manipulation error どうやら、/etc下のpasswordとshadowファイルの整合性がとれない模様。 対応策は、pwconvのコマンドをrootで実行。 これで解決! -------------------------------------------------------------------------------- title: "Macでlastcommを使うには" date: "2014-07-28" url: https://scribble.washo3.com/mac/mac%E3%81%A7lastcomm%E3%82%92%E4%BD%BF%E3%81%86%E3%81%AB%E3%81%AF.html -------------------------------------------------------------------------------- Linuxでは、個々のコマンド履歴が記録されて表示が出来るlastcommと言うコマンドがあります。 Macでも利用しようとしたら、lastcommは存在するが、記録されていない(デフォルトでONになってない)ようなので、利用可能にする。
    $ sudo mkdir /var/account
    $ sudo touch /var/account/acct
    $ sudo accton /var/account/acct
    この後、lastcommを実行し、下記のように表示されればOKです。 > $ lastcomm > ls – root ttys000 0.00 secs (null) (0:00:00.00) > sudo -S root ttys000 0.00 secs Mon Jul 28 14:33 (0:00:00.00) > accton -S root ttys000 0.00 secs Mon Jul 28 14:33 (0:00:00.00) -------------------------------------------------------------------------------- title: "QNAP上でscreenのエラー回避" date: "2014-06-08" url: https://scribble.washo3.com/linux/qnap-screen-and-terminfo-error.html -------------------------------------------------------------------------------- Mac上のターミナルからからQNAPへSSH接続し、screenを起動しようとすると下記のエラーが出た。 > [~] # screen /var/run/utmp: No such file or directory > Cannot find terminfo entry for ‘xterm-256color’. ここでは、utmpとterminfoの2つを解決しなければならない。 まずは、utmpの回避
    [~] # touch /var/run/utmp
    ただし、QNAP再起動後には、消えてしまうので、これも解決したい場合には、を参考にされると良いでしょう。 次に、terminfoの回避
    [~] # export | grep xterm
    export TERM="xterm-256color"
    [~] # ls /usr/share/terminfo/x/
    xterm xterm-xfree86
    [~] # export TERM=xterm-xfree86
      説明すると、現在のxtermを調べ、xterm-256colorとなっているので、terminfo内を調べてみるとxterm-256colorが存在せず、xtermとxterm-xfree86なので、それらを指定する事で解決。 Macのターミナルアプリがxterm-256colorとなっているのが原因でもあるので、QNAPへ接続するときには、ターミナルタイプをxtermにしておけばOKです。 -------------------------------------------------------------------------------- title: "QNAPでアンチウィルス定義更新に失敗するときの対処" date: "2014-06-07" url: https://scribble.washo3.com/linux/qnap-clamav-update.html -------------------------------------------------------------------------------- QNAP内には、最初からアンチウィルスソフトのClamAVがインストールされています。 しかし、起動後には「更新」を有効にしていても、下記の警告エラーで定義更新に失敗します。 > 警告:[Antivirus] Failed to update virus definition. または、更新ボタンを押しても`更新しています`から一向に進まない時は、手動でインストールします。 ## QNAPへウィルス定義更新を手動でインストール 2021年3月以前は、公式より個別に定義ファイル等をダウンロードが可能でしたが、2021年3月1日以降は古いバージョンをサポートしなくなりました。 2021.8現在の解決策ですが、ユーザーフォーラムにてウィルス定義ファイルが直リンクでダウンロードできるようです 注意事項として、ダウンロードの際、Cloudflareのセキュリティチェックが入りますので、ブラウザの自動翻訳をオフにしておいてください (下記作業は自己責任でお願いします) ### ダウンロード・インストール更新作業 1. 下記より3つのファイルをダウンロード - [main.cvd](https://database.clamav.net/main.cvd) - [daily.cvd](https://database.clamav.net/daily.cvd) - [bytecode.cvd](https://database.clamav.net/bytecode.cvd) 2. QNAPに管理者でログイン 3. QNAP内のアプリケーションからアンチウィルスを選びます 4. 更新の手動更新フォームから先ほどの3つのファイルを読み込んで、それぞれインポートします。 5. ウィルス定義ファイルの欄の日付が更新されていればOKです qnap-clamav ## 自動更新の有無 現時点においてサポート外になってしまったため、自動更新は出来ないと思った方が良いようです。 自動更新がオンのままだと、QNAPからの更新失敗アラートが頻繁に出るので、オフにしておきましょう。 なお、QNAPのファームウェア更新により、復活する可能性もありますので、その際は追って記事を修正したいと思います -------------------------------------------------------------------------------- title: "QNAPで挙動不審なAFP接続" date: "2014-06-06" url: https://scribble.washo3.com/mac/qnap%E3%81%A7%E6%8C%99%E5%8B%95%E4%B8%8D%E5%AF%A9%E3%81%AAafp%E6%8E%A5%E7%B6%9A.html -------------------------------------------------------------------------------- QNAP内のネットワークサービスでMac用にAppleネットワークのAFP接続があります。 これを有効にして、共有したいフォルダをAFP接続したいのだが、なぜか接続が出来ない。 設定項目に「DHX2認証サポート」が有効になっているので、このチェックを外してみたところ、ゲストアクセスが可能となった。 Qnap afp しかし、今度は、ユーザーによるログインが出来なくなってしまった。 再度、DHX2認証サポートにチェックを入れて有効にしたところ、ゲストでもユーザーによるログインでも可能になった。 何だったんだ!? 何か挙動不審な動作で原因不明… -------------------------------------------------------------------------------- title: "CentOS最小構成(minimal)インストールではネットワーク使えないのね" date: "2014-05-27" url: https://scribble.washo3.com/linux/centos%E6%9C%80%E5%B0%8F%E6%A7%8B%E6%88%90minimal%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A7%E3%81%AF%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E4%BD%BF%E3%81%88.html -------------------------------------------------------------------------------- ちょいと、VMware上にCentOSをインストールする事になったので、CentOS 6.5 minimalをインストールしたら、ネットワークが使えない。 どうやら、自分で設定する必要があるらしい。
    # cd /etc/sysconfig/network-scripts/
    # vi ifcfg-eth0
    ...
    ONBOOT=yes    <--noからyesに変更
    
    # ifup eth0
    -------------------------------------------------------------------------------- title: "Macのトラックパッドでジェスチャーが効かなくなった場合の対処" date: "2014-05-19" url: https://scribble.washo3.com/mac/mac-trackpad-gesture-trouble.html -------------------------------------------------------------------------------- Macでトラックパッドを利用している時に、突然、3本指や4本指のマルチジェスチャー効かなくなる事が、時々生じます。 Mac上のシステム環境設定からトラックパッドを選んで、チェックを付け直すと症状が改善される場合がありますが、直らない時も多々あります。 なので、ターミナル上から下記のコマンドを実行する方が、私的には簡単です。
    $ killall Dock
      尚、管理者でなく、ユーザー権限で実行して構いません。 -------------------------------------------------------------------------------- title: "Windows8で無線のプロファイルを削除" date: "2014-04-30" url: https://scribble.washo3.com/windows/windows8%E3%81%A7%E7%84%A1%E7%B7%9A%E3%81%AE%E3%83%97%E3%83%AD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E5%89%8A%E9%99%A4.html -------------------------------------------------------------------------------- Windows8で、昨日まで動作していた無線ネットワークがつながらなくなったので調べてみた。 XP時はネットワークの修復やWindows7ではワイヤレスネットワークの管理である程度解決に至ったのだが、Windows8では削除されているとの事。 仕方ないので、コマンドラインにて操作 DOSプロンプトかWindowsPowershellを起動
    ワイヤレスプロファイルを表示
    
    > netsh wlan show profiles
    
    プロファイルセキュリティキーを表示
    
    > netsh wlan show profile name="プロファイル名" key=clear
    
    プロファイル削除
    
    > netsh wlan delete profile name="プロファイル名"
    
    手動にて無線ネットワークに接続するように
    
    > netsh wlan set profileparameter name="プロファイル名" connectionmode=manual
    プロファイルを削除した後に、一応、再起動したら、無事、無線LANへ再び接続出来た。 -------------------------------------------------------------------------------- title: "CentOSにYUMでownCloudをインストール" date: "2014-03-25" url: https://scribble.washo3.com/linux/centos%E3%81%AByum%E3%81%A7owncloud%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB.html -------------------------------------------------------------------------------- CentOS 6.xにYUMのリポジトリを追加して、yumにてownCloudをインストール
    # cd /etc/yum.repos.d/
    # wget https://download.opensuse.org/repositories/isv:ownCloud:community/CentOS_CentOS-6/isv:ownCloud:community.repo
    # yum update 
    # yum info owncloud
    Name        : owncloud
    Arch        : noarch
    Version     : 6.0.2
    Release     : 8.1
    Size        : 46 M
    Repo        : isv_ownCloud_community
    
    # yum install owncloud --enablerepo=epel
    ownCloudの依存パッケージで下記のようなエラーが出る場合にはepelリポジトリを読み込む事。 > Error: Package: owncloud-6.0.2-8.1.noarch (isv\_ownCloud\_community) > Requires: php-pear-MDB2-Driver-mysqli > Error: Package: owncloud-6.0.2-8.1.noarch (isv\_ownCloud\_community) > Requires: php-pear-Net-Curl ちなみに、他のLinuxディストリビューションのインストールは、[こちら][1]にて。 [1]: https://software.opensuse.org/download/package?project=isv:ownCloud:community&package=owncloud -------------------------------------------------------------------------------- title: "wrkのインストール" date: "2014-02-26" url: https://scribble.washo3.com/linux/wrk-install.html -------------------------------------------------------------------------------- ベンチマークツールのwrkをインストールしました。 Macでは、brewパッケージで簡単に導入できます。
    $ brew install wrk
    Linuxでは、パッケージが用意されていないので、githubのリポジトリを利用してインストールします。
    $ cd /tmp
    $ git clone https://github.com/wg/wrk.git
    $ cd wrk/
    $ make
    $ sudo cp wrk /usr/local/bin/.
    使い方
    $ wrk -t スレッド数 -c 接続数 <url>
    
    Usage: wrk <options> <url>
      Options:
        -c, --connections <N>  Connections to keep open
        -d, --duration    <T>  Duration of test
        -t, --threads     <N>  Number of threads to use
    
        -s, --script      <S>  Load Lua script file
        -H, --header      <H>  Add header to request
            --latency          Print latency statistics
            --timeout     <T>  Socket/request timeout
        -v, --version          Print version details
    
      Numeric arguments may include a SI unit (1k, 1M, 1G)
      Time arguments may include a time unit (2s, 2m, 2h)
    -------------------------------------------------------------------------------- title: "HomebrewでのXcodeライセンスの警告" date: "2013-10-08" url: https://scribble.washo3.com/mac/homebrew%E3%81%A7%E3%81%AExcode%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E3%81%AE%E8%AD%A6%E5%91%8A.html -------------------------------------------------------------------------------- 久しぶりにbrewをアップグレードしようと思ったらxcodeライセンスの警告がでた。
    $ brew upgrade
    Warning: You have not agreed to the Xcode license.
    Builds will fail! Agree to the license by opening Xcode.app or running:
        xcodebuild -license
    仰せの通りに、sudoにて
    $ sudo xcodebuild -license
    英文でズラズラと同意書が表示されるので、最後に”agree”と入れて同意しましょう。
    ….
    ….
    By typing 'agree' you are agreeing to the terms of the software license agreements. Type 'print' to print them or anything else to cancel, [agree, print, cancel]   agree
    その後は、いつも通りに、brew upgradeが有効になります。 -------------------------------------------------------------------------------- title: "一部のSSIDでネットが遅い原因はproxypacが一因もある" date: "2013-10-05" url: https://scribble.washo3.com/network/%E4%B8%80%E9%83%A8%E3%81%AEssid%E3%81%A7%E3%83%8D%E3%83%83%E3%83%88%E3%81%8C%E9%81%85%E3%81%84%E5%8E%9F%E5%9B%A0%E3%81%AFproxypac%E3%81%8C%E4%B8%80%E5%9B%A0%E3%82%82%E3%81%82%E3%82%8B.html --------------------------------------------------------------------------------

    WiFiルータが複数あって、一部のSSIDに接続するとネットワークが遅い事が起こった。

    この原因と思われるSSIDを別端末から接続すると問題ない速度が出るので、WiFiルータが原因でないことが分かる。 何かが怪しいと言うことで、iPhoneのネットワーク設定を調べてみた。 proxypac あっ、自動の箇所が以前にONにしたままで、プロキシー経由だった。orz これをオフにする事で、即解決。 デスクトップPCにせよ、スマホにせよ、プロキシー使っていた場合、偶には確認した方が良いですね。 ちなみに、このプロキシーURLは見る人には分かるよね? ヒントは「中国以外(日本国内)でもYoukuの動画を見れるChrome機能拡張」記事 -------------------------------------------------------------------------------- title: "APCからZend OPcacheへ変更" date: "2013-09-18" url: https://scribble.washo3.com/linux/apc_to_zend-opcache.html -------------------------------------------------------------------------------- Scientific Linux(SL6)で運営しているこちらのサイトで、APCをやめて、Zend OPcacheへ変更してみた。 現状の環境は、 Scientific Linux: 6.4 PHP: 5.4.19 (php-fpm) nginx: 1.4.2 APC ## Zend OPcache導入 redhat系のSL6,CentOS,Fedoraではパッケージが用意されていないようなので、githubからソースプログラムを引っ張って、コンパイル・ダウンロードする。 その前に、php-deveが必要なので、php-develをインストールしておく。
    # yum install php-devel --enablerepo=remi
    ### githubからインストールまでの作業
    $ sudo yum install php-devel --enablerepo=remi
    
    $ git clone https://github.com/zend-dev/ZendOptimizerPlus.git
    $ cd ZendOptimizerPlus
    $ phpize
    $ ./configure --with-php-config=/usr/bin/php-config
    $ make
    $ make test
    $ sudo make install
    make installで、/usr/lib64/php/modules/opcache.soがインストールされるので、これをphp.iniで読み込む ### php.iniに下記を追記
    /usr/lib64/php/modules/opcache.so
    APCが読み込まれているので、これを無効にする。
    # cd  /etc/php.d/
    # mv apc.ini apc.ini.bak
    ### nginx再起動し、確認
    # /sbin/service nginx restart
    # php -v
    PHP 5.4.19 (cli) (built: Aug 22 2013 08:03:53)
    Copyright (c) 1997-2013 The PHP Group
    Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
      with Zend OPcache v7.0.3-dev, Copyright (c) 1999-2013, by Zend Technologies
    with Zend OPcacheが表示されればOK。 -------------------------------------------------------------------------------- title: "mosh-serverのプロセスをkillする方法" date: "2013-09-18" url: https://scribble.washo3.com/linux/howto-mosh-server-kill.html -------------------------------------------------------------------------------- moshは便利に利用してますが、いろんな端末からログインした後などで放っておいたりすると、プロセスがdeatacheのまま生きてます。 > Mosh: You have 2 detached Mosh sessions on this server, with PIDs: > – mosh [3700] > – mosh [31091] screenのように、これらのセッションをreatache出来れば良いのですが、moshではセキュリティ上出来ないようです。 再度、deatacheした端末でreatacheするしかありませんが、もう、これらのセッションを利用しない場合には、一旦、全てのプロセスをkillした方がスッキリしますね。 で、全てのmosh-serverプロセスをkillするには、下記にて。
    kill `pidof mosh-server`
    ちなみに、moshで接続してkillすると、強制的にログアウトされます。当然ですけど 😛 -------------------------------------------------------------------------------- title: "Cronで走らせていたmysqlが警告を出していた" date: "2013-09-03" url: https://scribble.washo3.com/linux/cron%E3%81%A7%E8%B5%B0%E3%82%89%E3%81%9B%E3%81%A6%E3%81%84%E3%81%9Fmysql%E3%81%8C%E8%AD%A6%E5%91%8A%E3%82%92%E5%87%BA%E3%81%97%E3%81%A6%E3%81%84%E3%81%9F.html -------------------------------------------------------------------------------- 幾つか運用しているLinux上で、毎週、MySQLのバックアップを取るように設定しているのだが、いつの日からか下記の警告が出ていた。(原稿現在:sl6,mysql:5.1.69) > — Warning: Skipping the data of table mysql.event. Specify the –events option explicitly. /etc/cron.weeklyにバックアップスクリプトを下記のように記述していた。
    mysqldump --all-databases -u root -pxxxx > $BACKUPDIR/mysql-all.sql.$DATE
    mysqldump --allow-keywords mysql -u root -pxxxx > $BACKUPDIR/mysql-keywords.s
    ql.$DATE
    どうやら、events optionを指定しろと言うことらしいので、引数に–eventsを追加
    mysqldump --events --all-databases -u root -pxxxx > $BACKUPDIR/mysql-all.sql.$DATE
    mysqldump --events --allow-keywords mysql -u root -pxxxx > $BACKUPDIR/mysql-keywords.s
    ql.$DATE
    これで、警告は出なくなった。 ちなみに、警告出てた時でも、バックアップ自体は取れてました。 -------------------------------------------------------------------------------- title: "advpngでのNo command specifiedエラー" date: "2013-09-02" url: https://scribble.washo3.com/linux/advpng%E3%81%A7%E3%81%AEno-command-specified%E3%82%A8%E3%83%A9%E3%83%BC.html -------------------------------------------------------------------------------- png画像圧縮プログラムの一つにadvpngがありますが、以前だと、
    $ advpng *.png
    のコマンドで良かったはずだと記憶してますが、 最近では、下記のエラーとなります。 > No command specified [at void process(int, char**):repng.cc:476] この場合、引数に-zを加えてあげれば問題ないですね。
    $ advpng -z *.png
    場合によっては、optipngより圧縮されることもあるadvpngは、AdvanceCOMPのパッケージに含まれているので、CentOS系のLinuxでは、EPELからadvancecompをインストールする事によって利用が可能になります。
    # yum install advancecomp --enablerepo=epel
      参考URL PNG画像のファイルサイズ最小化 — ディノオープンラボラトリ
    -------------------------------------------------------------------------------- title: "さくらのVPS上でpulseaudioは不要だね" date: "2013-08-27" url: https://scribble.washo3.com/linux/%E3%81%95%E3%81%8F%E3%82%89%E3%81%AEvps%E4%B8%8A%E3%81%A7pulseaudio%E3%81%AF%E4%B8%8D%E8%A6%81%E3%81%A0%E3%81%AD.html -------------------------------------------------------------------------------- SL6を走らせているさくらのVPS上で/var/log/messageにpulseaudioがエラー吐きまくっていたので対処。 以前、VNCやらFirefoxを入れた際にGNOME関連で勝手に入ってしまったと推測。 エラーはこんな感じ↓ > Aug 26 16:34:14 www pulseaudio[9085]: core-util.c: Failed to connect to sy > stem bus: Failed to connect to socket /var/run/dbus/system\_bus\_socket: そのよう > なファイルやディレクトリはありません コンソールモードでサーバにしているので、全く必要ないので、削除。
    # yum remove alsa-plugins-pulseaudio pulseaudio
    
    Dependencies Resolved
    
    ================================================================================
    Package Arch Version Repository Size
    ================================================================================
    Removing:
    alsa-plugins-pulseaudio x86_64 1.0.21-3.el6 @anaconda-ScientificLinux-201107140938.x86_64/6
    93 k
    pulseaudio x86_64 0.9.21-14.el6_3 @sl 1.9 M
    Removing for dependencies:
    pulseaudio-module-gconf x86_64 0.9.21-14.el6_3 @sl 19 k
    pulseaudio-module-x11 x86_64 0.9.21-14.el6_3 @sl 46 k
    
    Transaction Summary
    ================================================================================
    Remove 4 Package(s)
    -------------------------------------------------------------------------------- title: "LinuxでDropbox起動時に警告メッセージが出たので対処" date: "2013-08-27" url: https://scribble.washo3.com/linux/linux%E3%81%A7dropbox%E8%B5%B7%E5%8B%95%E6%99%82%E3%81%AB%E8%AD%A6%E5%91%8A%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%81%8C%E5%87%BA%E3%81%9F%E3%81%AE%E3%81%A7%E5%AF%BE%E5%87%A6.html -------------------------------------------------------------------------------- Linux上にて、Dropboxを起動するときの症状です。 Dropboxのスクリプトを起動しようとすると、下記のエラー > Unable to monitor entire Dropbox folder hierarchy. Please run “echo 100000 | sudo tee /proc/sys/fs/inotify/max\_user\_watches” and restart Dropbox to correct the problem. 親切なメッセージなので、おおせの通りに、
    # echo 100000 | sudo tee /proc/sys/fs/inotify/max_user_watches
    で、Dropboxを起動すると直る。 でも、OS起動時に再びこの警告は出てしまうので、/etc/sysctl.confに下記を追記
    fs.inotify.max_user_watches = 100000
    これを反映させるには、
    # sysctl -p
    これで、OS起動時にも警告が出なくなる。 (今後のDropboxバージョンアップによっては、出る可能性もある) -------------------------------------------------------------------------------- title: "nginxで停止・再起動が出来ないとき" date: "2013-08-20" url: https://scribble.washo3.com/linux/nginx%E3%81%A7%E5%81%9C%E6%AD%A2%E3%83%BB%E5%86%8D%E8%B5%B7%E5%8B%95%E3%81%8C%E5%87%BA%E6%9D%A5%E3%81%AA%E3%81%84%E3%81%A8%E3%81%8D.html -------------------------------------------------------------------------------- nginxで運用中にて、nginxやphp,mysql周りでアップデート等があったりすると再起動させたい場合があります。 しかし、nginxを停止・再起動が出来ない場合も偶に起こります。
    # service nginx stop
    nginx: [emerg] bind() to 0.0.0.0:8002 failed (98: Address already in use)
    …..
    
    #service nginx restart
    nginx: [emerg] bind() to 0.0.0.0:8002 failed (98: Address already in use)
    …..
    すでに、Apacheのhttpsdが起動していると、このような症状が起きるので、Apacheが起動していれば、停止するだけで解決するでしょう。
    # service httpsd stop
    もし、Apacheが起動していなければ、80番ポートを下記にて停止してあげればOKです。
    # fuser -k 80/tcp
    
    # service nginx restart
    
    nginx を起動中: [ OK ]
    -------------------------------------------------------------------------------- title: "Mac用Subsonicクライアント「Thumper」はソースからインストール" date: "2013-08-09" url: https://scribble.washo3.com/mac/mac%E7%94%A8subsonic%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%E3%80%8Cthumper%E3%80%8D%E3%81%AF%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%8B%E3%82%89%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC.html -------------------------------------------------------------------------------- Mac用のSubsonicクライアントアプリとして、[Thumper][1]と言うアプリがありますが、App Storeでインストールしようとすると、日本国内では利用することが出来ません。 Voila Capture34 米国アカウントを持っていれば、インストール可能ですが、そのままソースをダウンロードした方が早いでしょう。 [こちら(https://github.com/danielwestendorf/Thumper)][2]から、ダウンロードし、Thumper.app.zipを解凍。 解凍されたThumper.appをアプリケーションフォルダに移動して完了です。 [1]: https://www.thumperapp.com/ [2]: https://github.com/danielwestendorf/Thumper -------------------------------------------------------------------------------- title: "ffmpeg2をHomebrewでインストールする" date: "2013-08-01" url: https://scribble.washo3.com/mac/ffmpeg2%E3%82%92homebrew%E3%81%A7%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B.html -------------------------------------------------------------------------------- Homebrewのffmpegパッケージではバージョン1.xと古いので、ffmpeg2をbrewでインストールする方法。 もし、ffmpeg1.xがインストールされていたら、アンインストールしておいた方がトラブル回避されると思います。
    $ brew uninstall ffmpeg
    1.  GitHubのFomulaを利用 のファイルをダウンロードするかソースをコピーする。 2. /usr/local/Library/Formula/下にffmpeg2.rbとしてファイルを置く 3. brewでffmpeg2をインストール
    $ brew install ffmpeg2
    以上。 もし、ffmpeg1.xが入ったままffmpeg2をインストールすると、下記のエラーが出る。 > Warning: Could not link ffmpeg2. Unlinking… > Error: The \`brew link\` step did not complete successfully > The formula built, but is not symlinked into /usr/local > You can try again using \`brew link ffmpeg2′ > Linking /usr/local/Cellar/ffmpeg2/2.0… Warning: Could not link ffmpeg2. Unlinking… > > Error: Could not symlink file: /usr/local/Cellar/ffmpeg2/2.0/bin/ffserver > Target /usr/local/bin/ffserver already exists. You may need to delete it. > To force the link and overwrite all other conflicting files, do: > brew link –overwrite formula_name この場合は、下記どちらかで解決するかと。
    $ brew link ffmpeg2
    
    $ brew link --overwrite --dry-run ffmpeg2
    -------------------------------------------------------------------------------- title: "Linuxディストリビューションのバージョン確認" date: "2013-07-18" url: https://scribble.washo3.com/linux/linux%E3%83%87%E3%82%A3%E3%82%B9%E3%83%88%E3%83%AA%E3%83%93%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%A2%BA%E8%AA%8D.html -------------------------------------------------------------------------------- ちょいと、仕事で必要だったのでLinuxディストリビューションのバージョン確認方法を調べてみた。 ### Redhat系
    Fedora
    $ cat /etc/fedora-release 
    Fedora release 19 (Schrödinger’s Cat)
    
    Scientific Linux
    $ cat /etc/redhat-release
    Scientific Linux release 6.4 (Carbon)
    
    CentOS
    $ cat /etc/redhat-release
    CentOS release 6.4 (Final)
    
    RedHat/Enterprise
    $ cat /etc/redhat-release
    Red Hat Enterprise Linux Server release 5.6 (Tikanga)
    
    Turbolinux
    $ cat /etc/turbolinux-release
    Turbolinux Server 6.5 (Jupiter)
    
    openSUSE
    $ cat /etc/SuSE-release
    openSUSE 12.3 (x86_64) VERSION = 12.3 CODENAME = Dartmouth
      ### Debian系
    Debian
    $ cat /etc/debian_version
    7.1
    
    Ubuntu
    $ cat /etc/debian_version
    squeeze/sid
      参考までに、 ### Unix/BSD系
    Solaris
    $ uname -sr
    SunOS 5.10
    
    FreeBSD
    $ uname -sr
    FreeBSD 9.1-RELEASE
    
    Mac
    $ uname -sr
    Darwin 12.4.0
      この他にも沢山のLinuxディストリビューションが存在しますが、下記の2つだけ覚えておけば良いようです。 * Linux系では、/etc/issueを閲覧 * Unix/BSD系では、uname -srを実行 -------------------------------------------------------------------------------- title: "Macでapt-Xを有効にする方法" date: "2013-07-18" url: https://scribble.washo3.com/mac/mac%E3%81%A7apt-x%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.html -------------------------------------------------------------------------------- MacでBluetoothを利用する場合、標準ではapt-Xが有効になってないので、有効可する方法。 ただし、2011年以降の一部のMacで、接続するBluetooth機器がapt-Xに対応されてないと利用出来ません。 **apt-X有効可** Bluetooth機器を接続解除の状態から、ターミナル上にて、下記を実行
    defaults write com.apple.BluetoothAudioAgent “Enable AptX codec” -bool true
    元に戻す**(apt-X無効**)場合は、
    defaults delete com.apple.BluetoothAudioAgent “Enable AptX codec”
    -------------------------------------------------------------------------------- title: "treeを使わずにfindでディレクトリツリーリスト表示" date: "2013-07-17" url: https://scribble.washo3.com/linux/tree%E3%82%92%E4%BD%BF%E3%82%8F%E3%81%9A%E3%81%ABfind%E3%81%A7%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%83%84%E3%83%AA%E3%83%BC%E3%83%AA%E3%82%B9%E3%83%88%E8%A1%A8%E7%A4%BA.html -------------------------------------------------------------------------------- Linuxでは、treeコマンドを利用すると、ディレクトリ内のツリー構造を表示させることが出来ますが、標準コマンドではないので、標準コマンドのFindを使って表示させてみます。 ```bash $ find . -type d | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/" . |-dir1 |-dir2 |-dir3 ``` findeで第1階層のみ表示させたい場合は、 ```bash $ find . -maxdepth 1 -type d -exec basename {} \; . dir2 dir1 dir3 dir4 dir5 ``` ちなみに、treeだとこんな感じ ```bash $ tree -d . ├── dir1 ├── dir2 └── dir3 ``` treeの方が、深い階層の場合にインデントしてくれたり、ファイルを表示してくれたりして便利ですが、treeがない環境の時にfindによる表示方法も覚えておくと良いかもしれません。 ちなみに、treeは、yumやapt-getで簡単にインストールできますね。 -------------------------------------------------------------------------------- title: "openSUSE12.3でnvidiaドライバ再インストール" date: "2013-07-12" url: https://scribble.washo3.com/linux/opensuse12-3%E3%81%A7nvidia%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E5%86%8D%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB.html -------------------------------------------------------------------------------- openSUSE 12.3にアップグレード後、Desktop版のkernelでXが通常起動しませんでした。 仕方なく、Safemodeで起動させ、startxでXの起動を確認しましたが、搭載されているnvidiaのバージョンも古くドライバがロードされないようなので、再インストールすることにした。 ### nvidiaドライバのダウンロード [NVIDIAドライバダウンロードのページ][1]より、自分のPCに搭載されているグラフィックボード機種を選んでダウンロードする。 (私の場合、NVIDIA-Linux-x86_64-319.32.runが該当) ### Xからコマンドラインモードへ切り替え Xが起動していたら、Xを切り、コマンドラインモードにする。
    # /sbin/init 3
    vncサーバも動作していたら、切っておきましょう。
    # vncserver -kill :<display番号>
    ###  NVIDIAドライバインストール
    # sh  NVIDIA-Linux-x86_64-319.32.run
    再起動
    # /sbin/shutdown -r now
    これで、nvidiaドライバーがロードされ、デュアルモニタも復活して表示する事が出来た。 [1]: https://www.nvidia.co.jp/Download/index.aspx?lang=jp -------------------------------------------------------------------------------- title: "openSUSE 12.3でネットワーク設定がDHCPから固定IPに変わらない症状" date: "2013-07-12" url: https://scribble.washo3.com/linux/opensuse-12-3%E3%81%A7%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E8%A8%AD%E5%AE%9A%E3%81%8Cdhcp%E3%81%8B%E3%82%89%E5%9B%BA%E5%AE%9Aip%E3%81%AB%E5%A4%89%E3%82%8F%E3%82%89%E3%81%AA%E3%81%84.html -------------------------------------------------------------------------------- openSUSE 12.3にアップグレードした後に、ネットワークが接続しなくなりました。 ifconfigで調べてみたところ、プライベートアドレスが割り当ててる事から、YaSTのネットワーク設定でDHCPから固定IPに変更。 が、すぐにプライベートアドレスに戻る事が発覚。 あー、DHCPのデーモンが生きてるのね!と、psでdhcp-clientをkill。 しかし、すぐにdhcp-clientが生き返る。(–#) どうやら、YaSTのネットワーク設定でNetworkMagerに一度切り返した後に、ifupによる固定IP設定すると上手く行くことに気づくこと数時間経過。 yast-network.jpg こんなバグっぽい設定は、マジ疲れる。orz -------------------------------------------------------------------------------- title: "openSUSEアップグレード後にSilverSearcherが起動しなくなった" date: "2013-07-12" url: https://scribble.washo3.com/linux/opensuse%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89%E5%BE%8C%E3%81%ABsilversearcher%E3%81%8C%E8%B5%B7%E5%8B%95%E3%81%97%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F.html -------------------------------------------------------------------------------- openSUSEを12.3にアップグレード後に、the\_silver\_searcherが下記のエラーで起動せず。 > ag: error while loading shared libraries: libpcre.so.0: cannot open shared object file: No such file or directory 再度、[前回記事同様][1]にコンパイル・インストールでOK [1]: https://scribble.washo3.com/linux/opensuse12-x%e3%81%absilversearcher%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab.html -------------------------------------------------------------------------------- title: "openSUSEを12.1から12.3へzypperでアップデート" date: "2013-07-10" url: https://scribble.washo3.com/linux/opensuse%E3%82%9212-1%E3%81%8B%E3%82%8912-3%E3%81%B8zypper%E3%81%A7%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88.html -------------------------------------------------------------------------------- openSUSE 12.1にて、特に不自由なく安定して使用していたのですが、多言語関連のM17Nのサポートが終了したようなので、仕方なく最新版の12.3へアップグレードする事にした。 どうやら、12.1から12.2を飛び越して12.3へアップグレードは依存関係等で危険なので、順番通りに12.1→12.2→12.3へアップグレードした。 今回は、YaSTでなくコマンドラインのzypperにて作業 詳細は、公式の「[第16章 システムのアップグレードとシステム変更][1]」に書かれてあるとおりに実行した。 アップグレード後に起動しなくなると困るので、とりあえず/etc下だけafioにてバックアップ。
    # find /etc | afio -ovZ etc.afz
    ### 現状のシステムを最新にする
    # zypper dup
    ここで、M17N関連のパッケージをどうするか聞いてきたら、無視 ### リポジトリの確認
    # zypper lr -u
    ### アップグレード先のバージョンにあわせてリポジトリを追加
    # server=https://download.opensuse.org
    # new_ver=12.2
    # zypper ar $server/distribution/$new_ver/repo/oss/ openSUSE-$new_ver-Oss
    # zypper ar $server/update/$new_ver/ openSUSE-$new_ver-Update
    ###  続いて古いリポジトリを削除
    # old_ver=12.1
    # zypper rr openSUSE-$old_ver-Oss
    # zypper rr openSUSE-$old_ver-Update
    ###  サードパーティ 製のリポジトリを無効にする
    # zypper mr -d repo-alias
    ### リポジトリの確認
    # zypper lr -d
    ### メタデータとリポジトリの内容を更新
    # zeyyper ref
    ### zypper 自身のアップグレード
    # zypper up zypper
    ### ディストリビューション本体のアップグレード
    # zypper dup
    ライセンス確認画面が出るので、Yesを押してアップグレード ### 基本的なシステム設定
    # SuSEconfig
    ### 再起動
    # shutdown -r now
    これを、12.2から12.3でも行うが、12.3では、SuSEconfigを行う必要がありません。 [1]: https://opensuse-man-ja.berlios.de/opensuse-html/cha.update.html "第16章 システムのアップグレードとシステム変更" -------------------------------------------------------------------------------- title: "LinkStationへのssh rootパスワード" date: "2013-07-02" url: https://scribble.washo3.com/pc/linkstation%E3%81%B8%E3%81%AEssh-root%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89.html -------------------------------------------------------------------------------- 他の担当者から、BuffaloのLinkStationにログインできなくなったので、何とかして欲しいと頼み込まれたため、仕方なく携わることになりました。 まぁ、こんな時には再起動かけて、それでもログインできなければ設定を初期に戻すだけなんですけどね。 でも、その前に、ログインできない症状を確認したくて、nmapでポートをスキャンしてみると、
    Host is up (0.00045s latency).
    Not shown: 989 closed ports
    PORT STATE SERVICE
    21/tcp open ftp
    22/tcp open ssh
    80/tcp open https
    139/tcp open netbios-ssn
    443/tcp open https
    445/tcp open microsoft-ds
    515/tcp open printer
    548/tcp open afp
    873/tcp open rsync
    8873/tcp open dxspider
    22939/tcp open unknown
    あれ? sshも動いてるじゃん! じゃあ、sshでログインしてみようとして、rootパスって何だ?とマニュアル見てもログインの初期パスワード入力しても入れないです。 で、ググってみたところ、まさに「[LinkStation に ssh で root ログインできるようにする][1]」がヒット! SSHの設定が、どうやらrootログイン無効になってるようだ。 なので、記事通りに、行ってみた。 まずは、acp_commander.jarをダウンロードして、LinkStationにアクセスしてみると、下記のエラーに遭遇。
    Using random connID value = 2xxxxxxxxxx9
    Using target: linkstation/192.168.1.10
    Starting authentication procedure...
    Sending Discover packet...
    A SocketTimeoutException usually indicates bad firewall settings.
    Check especially for *UDP* port 22936 and make sure that the connection to your
    LS is working.
    ERROR: Exception: SocketTimeoutException (Receive timed out) [ACP Send/Receive (
    Packet:8020 = ACP_Discover)]
    ファイヤーウォール絡みのエラーのようなので、一端、ファイヤーウォール機能を切って、アクセスすると、
    $ java -jar acp_commander.jar -diag -t 192.168.1.10
    ACP_commander out of the nas-central.org (linkstationwiki.net) project.
    Used to send ACP-commands to Buffalo linkstation(R) LS-PRO.
    
    WARNING: This is experimental software that might brick your linkstation!
    
    Using random connID value = 2xxxxxxxxxx9
    Using target: linkstation/192.168.1.10
    Using target: nas/192.168.1.10
    Starting authentication procedure...
    Sending Discover packet...
    Found: LS-XHL902 (/192.168.1.10) LS-XHL(ANKOU) (ID=00017) mac: 00:xD:73:E4:xx:xx Firmware= 1.560 Key=72F5A82C
    Trying to authenticate EnOneCmd... ACP_STATE_OK
    これで、接続テストはOKなので、SSHでのroot有効化コマンドを投げて、SSHを再起動。 すると、rootで指定したパスワードにてログインできるようになった。 ちなみに、LinkStationはDebianベースのLinuxで構成されているようでした。 [1]: https://www.maruko2.com/mw/LinkStation_%E3%81%AB_ssh_%E3%81%A7_root_%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B -------------------------------------------------------------------------------- title: "ZabbixでLack of free swap spaceのエラーが出るときの対処" date: "2013-05-22" url: https://scribble.washo3.com/linux/zabbix%E3%81%A7lack-of-free-swap-space%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E5%87%BA%E3%82%8B%E3%81%A8%E3%81%8D%E3%81%AE%E5%AF%BE%E5%87%A6.html -------------------------------------------------------------------------------- Zabbixで監視画面を見てみたら、あるサーバで下記のエラーが出てました。 > Lack of free swap space on Server 今では、メモリをふんだんに搭載出来、わざわざSwapを作成する必要がないのですが、どうやらZabbixではswap領域を監視するようなのでエラーが出るようです。 仕方ないので、小さなswap領域を作成して対処します。
    # dd if=/dev/zero of=/var/swapfile bs=1M count=2048
    # chmod 600 /var/swapfile
    # /sbin/mkswap /var/swapfile
    # echo /var/swapfile none swap defaults 0 0 | tee -a /etc/fstab
    # swapon -a
    -------------------------------------------------------------------------------- title: "フロッピーディスクがないのにfdエラーが出るときの対処" date: "2013-05-22" url: https://scribble.washo3.com/linux/%E3%83%95%E3%83%AD%E3%83%83%E3%83%94%E3%83%BC%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AF%E3%81%8C%E3%81%AA%E3%81%84%E3%81%AE%E3%81%ABfd%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E5%87%BA%E3%82%8B%E3%81%A8%E3%81%8D.html -------------------------------------------------------------------------------- フロッピーディスクがないPC機や仮想サーバでFDを削除しているのに、Linux上のエラーメッセージに下記のようなフロッピーディスク関連のエラーが出るときの対処です。 > end_request: I/O error, dev fd0, sector 0
    # /sbin/lsmod |grep -i floppy
    floppy 57125 0
    
    # vi /etc/modprobe.d/blacklist
    blacklist floppy
    
    # shutdown -r now
    Linux上のmodprobeでfloppyを削除してあげるだけですね。 -------------------------------------------------------------------------------- title: "中国以外(日本国内)でもYoukuの動画を見れるChrome機能拡張" date: "2013-05-11" url: https://scribble.washo3.com/linux/%E4%B8%AD%E5%9B%BD%E4%BB%A5%E5%A4%96%EF%BC%88%E6%97%A5%E6%9C%AC%E5%9B%BD%E5%86%85%EF%BC%89%E3%81%A7%E3%82%82youku%E3%81%AE%E5%8B%95%E7%94%BB%E3%82%92%E8%A6%8B%E3%82%8C%E3%82%8Bchrome%E6%A9%9F%E8%83%BD.html -------------------------------------------------------------------------------- 最近、忙しかったりして、テレビ番組を予約し忘れたり、見逃した時、Youkuで見せてもらう事がありますが、日本国内では下記のようなエラーで中国以外では見られません。 Youku 中国サイトのプロキシーを利用すると、見ることが出来るのでしょうけど、もっと簡単な方法がありました。 Google Chromeの拡張機能で、「[Unblock Youku][1]」と言う便利な拡張機能を追加することで視聴が可能になるようです。 何れ、対策されるかもしれないけど、現状はこれが一番簡単ですね。 [1]: https://chrome.google.com/webstore/detail/unblock-youku/pdnfnkhpgegpcingjbfihlkjeighnddk -------------------------------------------------------------------------------- title: "OpenSUSE12.xにSilverSearcherをインストール" date: "2013-04-25" url: https://scribble.washo3.com/linux/opensuse12-x%E3%81%ABsilversearcher%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB.html -------------------------------------------------------------------------------- OpenSuseのパッケージには、Silver Searcherがないので、手動にてインストールする。
    $ git clone https://github.com/ggreer/the_silver_searcher
    
    $ cd the_silver_searcher
    $ ./build.sh
    
    aclocalが見つかりません
    
    # zypper in automake pcre-devel
    
    # ./build.sh
    # make install
    CentOSやFedoraでは、yumでthe-silver-searcherが用意されてます。 -------------------------------------------------------------------------------- title: "ハイフン(-)で始まるメールアドレスに送信できないのは?" date: "2013-04-22" url: https://scribble.washo3.com/linux/%E3%83%8F%E3%82%A4%E3%83%95%E3%83%B3-%E3%81%A7%E5%A7%8B%E3%81%BE%E3%82%8B%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%81%AB%E9%80%81%E4%BF%A1%E3%81%A7%E3%81%8D%E3%81%AA.html -------------------------------------------------------------------------------- 職場では、メールサーバにPostfixを利用していますが、最近になって、ハイフン(-)付きのメールアドレスに送れないので調べて欲しいとの要求がきた。 調べてみると、ログに、下記のエラー。 > bad address syntax 最初、ハイフン付きの拡張アドレスの事かと思ったら、先頭にハイフン(-)が付いてると送れないとの事。 調べてみると、Postfixでは、このようなアドレスには、コマンドに対するオプションと解析されてしまうので、デフォルトでは送れないようだ。 じゃあ、どうするか? /etc/postfix/main.cfに下記を一行追加するだけ。 > allow\_min\_user = yes 保存後は、Postfixを再起動で適用されます。
    $ postconf |grep allow_min_user
    allow_min_user = yes
    -------------------------------------------------------------------------------- title: "rbenvのアップグレード" date: "2013-04-16" url: https://scribble.washo3.com/linux/rbenv%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89.html -------------------------------------------------------------------------------- rbenvをアップグレードする時のメモ 自分のホームディレクトリにインストールした場合
    $ cd ~/.rbenv
    $ git pull
    rootでシステムにインストールした場合
    # cd /usr/local/rbenv
    # git pull
    -------------------------------------------------------------------------------- title: "sudoでPATHの環境変数を引き継ぐ" date: "2013-04-16" url: https://scribble.washo3.com/linux/sudo%E3%81%A7pah%E3%81%AE%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0%E3%82%92%E5%BC%95%E3%81%8D%E7%B6%99%E3%81%90.html -------------------------------------------------------------------------------- sudoした後に、「パスが見つかりません」とパスの設定が変わる場合には、sudoの設定でPATH環境設定を引き継ぐ事が出来ます。 /etc/sudoersに下記一行を追記します。 > Defaults env_keep += “PATH”
    # visudo
    ….
    Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
    Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
    Defaults env_keep += "PATH"
    
    保存後、再ログインして、sudoで確認してみる。 -------------------------------------------------------------------------------- title: "Scientific Linux 6.3から6.4へアップデート" date: "2013-04-15" url: https://scribble.washo3.com/linux/scientific-linux-6-3%E3%81%8B%E3%82%896-4%E3%81%B8%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88.html -------------------------------------------------------------------------------- CentOSみたいにyum updateしちゃったら、いつの間にかアップグレードされてたよ!って事を、SL6では致しませんので、手動でアップグレードする必要があります。 自分のマシンやテストマシンだったら、勝手にアップグレードされても構わないのですが、安定重視の共有サーバだと下手にアップグレードさせたくないので、その点はSL6が使いやすいです。 そんな訳で、手動でSL6 6.3を6.4へアップグレード 1. 6.3上で最新版にしておく(必要ないかも) \# yum update 2. \# yum clean all 3. yum –releasever=6.4 update 4. 再起動 5. 確認 $ cat /etc/redhat-release Scientific Linux release 6.4 (Carbon) 以上 -------------------------------------------------------------------------------- title: "gitのpushでGtk-WARNING **: cannot open display:と出た場合" date: "2013-04-11" url: https://scribble.washo3.com/linux/git%E3%81%AEpush%E3%81%A7gtk-warning-cannot-open-display%E3%81%A8%E5%87%BA%E3%81%9F%E5%A0%B4%E5%90%88.html -------------------------------------------------------------------------------- 環境によって、git pushした場合に、下記のエラーが出る場合がある。 > (gnome-ssh-askpass:28497): Gtk-WARNING **: cannot open display: コマンドラインで操作している場合に、GUIで起動しようとして失敗するよう。 なので、
    $ unset SSH_ASKPASS
    を実行して、git pushすると良い。 -------------------------------------------------------------------------------- title: "MacのHomebrewをアップデートしたらmoshが使えなくなった" date: "2013-04-05" url: https://scribble.washo3.com/mac/mac%E3%81%AEhomebrew%E3%82%92%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E3%81%97%E3%81%9F%E3%82%89mosh%E3%81%8C%E4%BD%BF%E3%81%88%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F.html -------------------------------------------------------------------------------- あれっ?昨日までmoshが使えてたのに、今日になったら、下記のエラーで使えなくなった。 > $ mosh yourhost.com > dyld: Library not loaded: /usr/local/lib/libprotobuf.7.dylib > Referenced from: /usr/local/bin/mosh-client > Reason: image not found > Died at /usr/local/bin/mosh line 201. どうやら、brew updateした際に、protobufがバージョンアップした影響で使えなくなったようだ。 なので、バージョンダウン。
    $ brew versions protobuf
    2.5.0 git checkout 019364d /usr/local/Library/Formula/protobuf.rb
    2.4.1 git checkout 544209f /usr/local/Library/Formula/protobuf.rb
    $ git checkout 544209f /usr/local/Library/Formula/protobuf.rb
    $ brew unlink protobuf
    Unlinking /usr/local/Cellar/protobuf/2.5.0... 14 links removed
    $ brew link protobuf
    Linking /usr/local/Cellar/protobuf/2.4.1... 14 symlinks created
    これで、mosh復活。 -------------------------------------------------------------------------------- title: "EasyStartPackプラグインでサイトが遅くなっていた" date: "2013-04-03" url: https://scribble.washo3.com/wordpress/easystartpack%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%A7%E3%82%B5%E3%82%A4%E3%83%88%E3%81%8C%E9%81%85%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%84%E3%81%9F.html -------------------------------------------------------------------------------- 某WordPressサイトで、アクセスが遅くなっていたので調べてみたところ、プラグインの「Easy Start Pack」のCSSが見つからないのが原因だった。 Firefox上でFirebugを起動し、サイトをチェックしてみたら、Easy Start Packで必要としているJavascriptとcssが見つからないとの事。 Easystartpack JavascriptやCSSは、個別にインストールしなくてはならなかったのかな? Easy Start Packは、それほど必要としていなかったので削除したところ、劇的に早くなった。 -------------------------------------------------------------------------------- title: "OpenSuse 12.xでMongoDB" date: "2013-03-27" url: https://scribble.washo3.com/linux/opensuse-12-x%E3%81%A7mongodb.html -------------------------------------------------------------------------------- openSUSE 12.1を使ってますが、zypperパッケージにはないので、下記のリポジトリを追加してインストール出来ますね。
    # zypper ar https://download.opensuse.org/repositories/server:/database/openSUSE_12.2/server:database.repo
    # zypper in mongodb
    12.2でも同じです。 -------------------------------------------------------------------------------- title: "Vimでctagがないよって時" date: "2013-03-19" url: https://scribble.washo3.com/linux/vim%E3%81%A7ctag%E3%81%8C%E3%81%AA%E3%81%84%E3%82%88%E3%81%A3%E3%81%A6%E6%99%82.html -------------------------------------------------------------------------------- Vimを立ち上げた際に、下記のようなエラーが出た。 > Taglist: Exuberant ctags (https://ctags.sf.net) not found in PATH. Plugin is not > loaded. こんな時には、ctagsをインストールしてあげるだけでOKですね。 CentOS/RedHat系
    # yum install ctags
    Ubuntu/Debian系
    # apt-get install ctags
    -------------------------------------------------------------------------------- title: "CentOS 5.xのvimが古いので手動でインストール" date: "2013-03-19" url: https://scribble.washo3.com/linux/centos-5-x%E3%81%AEvim%E3%81%8C%E5%8F%A4%E3%81%84%E3%81%AE%E3%81%A7%E6%89%8B%E5%8B%95%E3%81%A7%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB.html -------------------------------------------------------------------------------- CentOS 5.x上のyumパッケージでは、vimが7.0と古いので、手動で7.3をインストールした。 7.0のvimで、Bundle導入していると、下記のような沢山のエラーが表示されてしまいます。 > …… > > 121: 未定義の変数です: g:unite\_source\_directory\_mru\_file > E116: Invalid arguments for function filereadable(g:unite\_source\_directory\_mru\_f > ile) && s:mru\_file\_mtime != getftime(g:unite\_source\_directory\_mru\_file) > E15: 無効な式です: filereadable(g:unite\_source\_directory\_mru\_file) && s:mru_fil > e\_mtime != getftime(g:unite\_source\_directory\_mru_file) > function unite#sources#directory\_mru#\_append..49_save の処理中にエラーが検> > 出されました: > > …. epelやrpmforgeでもパッケージがないようなので、手動にてインストールです。 1. まずは、yumでインストールしたvimをアンインストール
    $ sudo yum remove vim vim-enhanced 
    2. ソースのダウンロード
    $ wget ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2
    $ wget ftp://ftp.jp.vim.org/pub/vim/extra/vim-7.2-extra.tar.gz
    $ wget ftp://ftp.vim.org/pub/vim/extra/vim-7.2-lang.tar.gz 
    3. 解凍
    $ tar jxvf vim-7.3.tar.bz2
    $ tar zxvf vim-7.2-extra.tar.gz
    $ tar zxvf vim-7.2-lang.tar.gz 
    4. コンパイル
    $ mv vim72 vim73/
    $ cd vim73 $ cd src
    $ ./configure --enable-multibyte --with-features=huge --disable-selinux --prefix='/usr/local/vim-7.3' 
    5. インストール
    $ sudo make install 
    6. リンク付け
    $ sudo ln -s /usr/local/vim-7.3/bin/vim /usr/local/bin/ 
    -------------------------------------------------------------------------------- title: "homebrewで古いパッケージを削除" date: "2013-03-01" url: https://scribble.washo3.com/mac/homebrew%E3%81%A7%E5%8F%A4%E3%81%84%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%82%92%E5%89%8A%E9%99%A4.html -------------------------------------------------------------------------------- homebrewで、古いパッケージがキャッシュに溜まり続けるので、偶に削除した方が良いね。 brew –helpでは、表示されないのでメモ
    $ brew cleanup
    これで、/user/local/Cellar/下と/Library/Caches/Homebrew/下の古いパッケージが削除されてスッキリ。 -------------------------------------------------------------------------------- title: "Sublime Text 2をVim互換にする設定" date: "2013-02-25" url: https://scribble.washo3.com/linux/sublime-text-2%E3%82%92vim%E4%BA%92%E6%8F%9B%E3%81%AB%E3%81%99%E3%82%8B%E8%A8%AD%E5%AE%9A.html -------------------------------------------------------------------------------- Sublime Text 2のキーバインディング等、Vim仕様にする。 Sublime Text 2を起動し、PreferencesのSettings – Userを選んで、下記を追記するだけ。 > “ignored_packages”: [“”] ちなみに、この記述はSettings – Defaultの最下部に記載されているので、そこからコピー。 Defaultは、”ignored_packages”: [“Vintage”]となってます。 また、設定項目を複数記述していれば、,(カンマ)に注意。 途中に記述する場合は、カンマを付け、最終項目はカンマを外すこと。 -------------------------------------------------------------------------------- title: "CentOSにAVGインストール" date: "2013-02-21" url: https://scribble.washo3.com/linux/centos%E3%81%ABavg%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB.html -------------------------------------------------------------------------------- CentOS 6.3にアンチウィルスソフト「AVG」をインストールした。 ### ダウンロード
    $ wget https://download.avgfree.com/filedir/inst/avg2013flx-r3110-a6015.i386.rpm 
    ### インストール
    $ sudo rpm -ivh avg2013flx-r3110-a6015.i386.rpm
    ### OS起動・再起動時に自動起動するように
    $ sudo chkconfig avgd on
    ### 手動で起動
    $ sudo service avgd start Starting avgd [失敗]
    ### 手動で定義ファイルアップデート
    $ sudo avgupdate /usr/bin/avgupdate: /opt/avg/av/bin/avgupdate: /lib/ld-linux.so.2: bad ELF interpreter: そのようなファイルやディレクトリはありません /usr/bin/avgupdate: line 17: /opt/avg/av/bin/avgupdate: 成功です
    何だかエラーで起動しませんねー ld-linux.so.2がないらしいので、インストール
    sudo yum install ld-linux.so.2
    ### 再度、手動起動
    $ sudo service avgd start Starting avgd [ OK ] 
    ### 上手く起動したので、ウィルス定義も再度更新
    $ sudo avgupdate
    AVG command line update Copyright (c) 2013 AVG Technologies CZ
    
    Running update. Initializing... Downloading file: avg13infolx.ctf Analyzing... Downloading file: u13iavi6100u5196nw.bin 1 / 2 16.46 M Downloading file: lx13core2639b2637pe.bin 1 / 2 16.46 M Analyzing... Preparing installation... Updating... 100% [===================================]
    
    Update was successfully completed.
    ### ウィルス定義更新を毎日更新
    $ sudo crontab -e 0 0 * * * /usr/bin/avgupdate > /root/avgupdate.log 2>&1
    これで準備は整いました。 ### ウィルススキャン まずは、homeディレクトリでもスキャンしてみる。
    $ /usr/bin/avgscan /home
    
    Virus database release date: Tue, 12 Feb 2013 21:21:00 +0900
    
    Files scanned : 4671(4502)
    Infections found : 0(0)
    PUPs found : 0
    Files healed : 0
    Warnings reported : 0
    Errors reported : 0
    
    tail avgscan.log
    Virus database release date: Tue, 12 Feb 2013 21:21:00 +0900
    
    
    ### ウィルスチェックを定期的に実行 スキャンするディレクトリを複数指定しますが、/devや/mntは指定しない方がよいでしょう。
    $ sudo crontab -e
    0 1 * * * /usr/bin/avgscan /home /sbin /bin /usr --report=/root/avg_report.txt > /root/avgscan.log 2>&1
    これで、完了です。 ウィルス定義更新とウィルスチェックをcronに登録しましたが、/etc/cron.dailyや/etc/cron.weeklyに自作スクリプト入れても構いません。 私は、/etc/cron.daily下にavg.shのファイルを作りましたけど・・・ こんな感じなので、ご参考まで。
    cat /etc/cron.daily/avg.sh
    
    #!/bin/sh
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    DATE=`date +%Y%m%d`
    TARGET="/home /var/www"
    REPORT=/var/log/avg.$DATE.txt
    LOG=/var/log/avg.$DATE.log
    
    /usr/bin/avgupdate
    /usr/bin/avgscan $TARGET --report=$REPORT > $LOG 2>&1
    
    
    -------------------------------------------------------------------------------- title: "Squirrelmailでログインできない(画面が真っ白)の原因と対策" date: "2013-01-23" url: https://scribble.washo3.com/linux/squirrelmail%E3%81%A7%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%EF%BC%88%E7%94%BB%E9%9D%A2%E3%81%8C%E7%9C%9F%E3%81%A3%E7%99%BD%EF%BC%89%E3%81%AE%E5%8E%9F%E5%9B%A0.html -------------------------------------------------------------------------------- ウェブメール老舗のSquirrelmailを運用していたが、急にログインが出来ない症状が出たので調査した。 ## 環境 * OS: CentOS 5.9 * WebServer: Apache 2.2.3 * PHP: 5.4.10 * WebMail: Squirrelmail 1.4.16 ## 不具合の原因 * 突然、ログインが出来ない * ログインページからリダイレクト直後にエラーが表示される * ブラウザーによっては、ログインページが真っ白になる ## 調査 apacheやphpのログを確認したところ、下記のエラーが出ていた。 > Fatal error: Call to undefined function session_unregister() in /var/www/html/webmail/functions/global.php on line 244 いろいろ、ググったところ、function/auth.phpとplugins/compatibility/function.php内のfunction sqauth\_save\_password($pass)関数が競合しているので、どちらかをコメントアウトすれば良いかも?との記事を見つけたが、解決に至らずに、原因は別にあった。 どうやら、によると、session_unregister関数はPHP 5.3.0で非推奨となり、PHP 5.4.0で削除されたとの事。 session_unregisterが使えなくなったと言う事が判明したので、はて?次は何をするべきか、公式のSquirrelmailで情報を探ってみた。 Squirrelmailの公式ホームページによると、 > ANNOUNCE: PHP 5.4 Compatibility > Dec 01, 2012 by Paul Lesniewski > With the recent release of PHP version 5.4, some community members have helped identify some small issues which we’ve fixed and made available in our daily snapshot packages located on our downloads page. Especially if you use the Mail Fetch plugin and want to upgrade to PHP 5.4, you should download one of our snapshot packages. > > UPDATE:If you are running SquirrelMail under PHP 5.4, please help test and refine the patches found here. There is one patch for each of the two SquirrelMail SVN snapshot versions available on our downloads page. との事なので、Squirrelmailのバージョンを上げて、一部パッチを当てることで解決しそう。 ## 対策 1. 現ディレクトリのバックアップ
    # mv /var/www/html/webmail /var/www/html/webmail.bak
    2. 最新版の取得(要Subversion)安定版
    # svn checkout https://squirrelmail.svn.sourceforge.net/svnroot/squirrelmail/branches/SM-1_4-STABLE/squirrelmail /var/www/html/webmail
      開発版
    # svn checkout https://squirrelmail.svn.sourceforge.net/svnroot/squirrelmail/trunk/squirrelmail /var/www/html/webmail
    3. 属性変更 Apacheのユーザ・グループに属性を合わせる必要があるので、

    # chown -R apache:apache webmail 
    4. プラグイン導入 必要なプラグインをPluginsディレクトリへインストール 5. 再設定 サーバ設定やプラグイン等を再設定します

    # cd /var/www/html/webmail/config/
    # ./conf.pl 
    データディレクトリが別ディレクトリに保存してあれば、再設定すると良いですが、webmail内に格納してあったら、バックアップディレクトリからコピーしておきましょう。 * パッチ適用 必ずしもパッチを当てる必要はありません(表示がおかしくなった場合のみ) /var/lib/squirrelmail/dataにデータフォルダがある場合: (正規表現でエラーが出る場合には、メタ文字に¥マークを付けると良い)

    > find /var/lib/squirrelmail/data/ -name *.pref -exec sed –in-place ‘s/trash\_folder=Trash/trash\_folder=INBOX.Trash/g’ {} \; > find /var/lib/squirrelmail/data/ -name *.pref -exec sed –in-place ‘s/draft\_folder=Drafts/draft\_folder=INBOX.Drafts/g’ {} \; > find /var/lib/squirrelmail/data/ -name *.pref -exec sed –in-place ‘s/sent\_folder=Sent/sent\_folder=INBOX.Sent/g’ {} \; DB使っている場合: > UPDATE userprefs SET prefval = ‘INBOX.Trash’ WHERE prefkey = ‘trash_folder’ AND prefval = ‘Trash’; > UPDATE userprefs SET prefval = ‘INBOX.Drafts’ WHERE prefkey = ‘draft_folder’ AND prefval = ‘Drafts’; > UPDATE userprefs SET prefval = ‘INBOX.Sent’ WHERE prefkey = ‘sent_folder’ AND prefval = ‘Sent’; この辺りまで来たら、もう少しです。 設定や環境に不具合がないか、確認URLで表示させてみます https://your-squirrelmail-location/src/configtest.phpのように、webmailをインストールしたアドレスにsrc/configtest.phpを付加して確認します。 configtest.phpにアクセスして、エラー箇所がなければ、無事に起動することができました。 ### 補足 参考までに、私の環境では下記のエラーが表示されました。 >  ERROR: You have configured PHP not to allow short tags (short\_open\_tag=off). > This shouldn’t be a problem with SquirrelMail or any plugin coded coded according to the SquirrelMail Coding Guidelines, but if you experience problems with PHP code being displayed in some of the pages and changing setting to “on” solves the problem, please file a bug report against the failing plugin. The correct contact information is most likely to be found in the plugin documentation. ↑ php.ini内のshor\_open\_tag=offになっているので、Onにする。設定保存後は要Apache再起動 > ERROR: You have set ja\_JP as your default language, but I cannot find this translation (should be in ../locale/ja\_JP/LC_MESSAGES/squirrelmail.mo). Please note that you have to download translations separately from the main SquirrelMail package. ↑ conf.plで設定した言語のロケールがないエラーなので、別途導入 1. 最新版のロケールをダウンロード 2. 解凍
    # tar jxvf ja_JP-1.4.18-20090526.tar.bz2 
    3. インストール
    # ./install
    webmailのパスを指定(/var/www/html/webmail) * poファイル作成
    # cd /var/www/html/webmail/po
    # compilepo ja_JP 
    -------------------------------------------------------------------------------- title: "VundleでVimプラグイン導入" date: "2013-01-16" url: https://scribble.washo3.com/linux/vundle%E3%81%A7vim%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E5%B0%8E%E5%85%A5.html -------------------------------------------------------------------------------- かなり以前から、Unix/Linuxでvi/vimを使っているんですが、恥ずかしながら、私も「[いまさら聞けない .vim/bundle によるプラグイン管理][1]」と同じ心境で、プラグインとは無縁の環境にありました。 今までに、プラグイン導入を試みたことはあるのですが、うまく動作しない事があり、ずっと諦め状態だったのです。 なので、今更ながら、Vimのプラグイン導入に挑戦です。 [Vundle][2]を使って、プラグイン管理(導入)します。(VimとGitが既にインストールされている事が前提です) 導入方法は、[Vundle][2]のReadmeを見れば、ほぼ分かると思いますが、メモっておきます。 1. Vundleを導入します
    $ git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
    2. 自分のホームディレクトリ下に、.vimrcを作成・修正し、下記のように記述します
    $ vim ~/.vimrc
    set nocompatible " be iMproved
    filetype off " required! set rtp+=~/.vim/bundle/vundle/
    call vundle#rc() " let Vundle manage Vundle
    " required!
    Bundle 'gmarik/vundle' " My Bundles here:
    "
    " original repos on github
    Bundle 'tpope/vim-fugitive'
    Bundle 'Lokaltog/vim-easymotion'
    Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
    Bundle 'tpope/vim-rails.git'
    " vim-scripts repos
    Bundle 'L9'
    Bundle 'FuzzyFinder'
    " non github repos
    Bundle 'git://git.wincent.com/command-t.git'
    " … filetype plugin indent on " required!
    "
    " Brief help
    " :BundleList - list configured bundles
    " :BundleInstall(!) - install(update) bundles
    " :BundleSearch(!) foo - search(or refresh cache first) for foo
    " :BundleClean(!) - confirm(or auto-approve) removal of unused bundles
    "
    " see :h vundle for more details or wiki for FAQ
    " NOTE: comments after Bundle command are not allowed..
    3. 上記の.vimrcを保存したら、vimを終了し、起動し直します 4. vimが起動したら、ESCキーを押し、:(半角コロン)キーを押す 下部に:(半角コロン)が表示されたら、 BundleInstallと打ち込むと、.vimrcで指定したプラグインが導入されます vundle1
    5. 導入途中では、下部にProccessing…と表示され、全て導入が終わるとDoneと表示され完了です。vundle2   プラグインの追加は、.vimrc内に、 > Bundle ‘プラグイン’ のように明記して、BundleInstallするだけです。 また、プラグインの更新はBundleInstallに!(半角)を追加するだけで、更新されます。 > BundleInstall! 後は、使いたいプラグインを探して、プラグインの使い方を覚えるだけですね。 分かってみれば、すごく簡単でした。 [1]: https://blog.fkoji.com/2013/01150907.html [2]: https://github.com/gmarik/vundle -------------------------------------------------------------------------------- title: "gitでのSSLエラー回避" date: "2013-01-15" url: https://scribble.washo3.com/linux/git%E3%81%A7%E3%81%AEssl%E3%82%A8%E3%83%A9%E3%83%BC%E5%9B%9E%E9%81%BF.html -------------------------------------------------------------------------------- SSL環境をセットアップしていないと、gitでSSLのエラーが出るので、これを無視。 > error: SSL certificate problem, verify that the CA cert is OK. Details: > error:14090086:SSL routines:SSL3\_GET\_SERVER_CERTIFICATE:certificate verify failed while accessing https://github.com/.…..
    $ git config --global https.sslVerify false
    -------------------------------------------------------------------------------- title: "Homebrewのパスエラー" date: "2013-01-10" url: https://scribble.washo3.com/mac/homebrew%E3%81%AE%E3%83%91%E3%82%B9%E3%82%A8%E3%83%A9%E3%83%BC.html -------------------------------------------------------------------------------- またまた、久々にHomebrewをアップデートしようとしたら、下記のエラー > $ brew update > error: Your local changes to the following files would be overwritten by merge: > Library/Contributions/cmds/brew-pull.rb > Library/Contributions/manpages/brew.1.md > Please, commit your changes or stash them before you can merge. > Aborting > Error: Failure while executing: git pull -q origin refs/heads/master:refs/remotes/origin/master   エラーの内容は個々で違うようですが、こんな時には、brew doctor
    $ brew doctor
    Warning: You have leftover files from an older version of Xcode.
    You should delete them using:
    /Developer/Library/uninstall-developer-folder
    Warning: Unbrewed dylibs were found in /usr/local/lib.
    If you didn't put them there on purpose they could cause problems when
    building Homebrew formulae, and may need to be deleted.
    
    ….
    
    Consider amending your PATH so that /usr/local/bin
    occurs before /usr/bin in your PATH.
    
    
    どうやら、/usr/local/binがパスに入ってないか、/usr/binの前に/usr/local/binが明記されてないか。
    $ /etc/paths
    
    /usr/bin
    /bin
    /usr/sbin
    /sbin
    /usr/local/bin
    
    
    /usr/local/binが一番下になっていたので、一番上位に移動。 再ログイン後、
    $ cd /usr/local/library
    $ git stash && git clean -f
    $ brew install p11-kit 
    これで、無事アップデートが出来た。 -------------------------------------------------------------------------------- title: "SSH公開鍵の再作成" date: "2012-11-29" url: https://scribble.washo3.com/linux/ssh%E5%85%AC%E9%96%8B%E9%8D%B5%E3%81%AE%E5%86%8D%E4%BD%9C%E6%88%90.html -------------------------------------------------------------------------------- よそからのSSH公開鍵をコピーしたりしてきたときに、自分とこ(~/.ssh/)にid\_rsa.pubなりid\_dsa.pubを上書きしてしまう事があり、自分の公開鍵が紛失してしまうことになります。 そんな時には、秘密鍵から公開鍵を再作成する事が出来るので、メモ。 上書きされたid_rsa.pubは削除しておき、
    $ cd ~/.ssh
    $ ssh-keygen -y -f id_rsa > id_rsa.pub
    id_dsaの場合も同じ -------------------------------------------------------------------------------- title: "OpenSUSE 12.1にmoshを導入" date: "2012-11-28" url: https://scribble.washo3.com/linux/opensuse-12-1%E3%81%ABmosh%E3%82%92%E5%B0%8E%E5%85%A5.html -------------------------------------------------------------------------------- [moshの公式ページ][1]では、あらゆるプラットフォーム用に、パッケージやインストール方法が掲載されているのですが、OpenSUSE用がなかったので、メモ。 ### リポジトリ追加
    $ sudo zypper ar https://download.opensuse.org/repositories/network/openSUSE_12.1/ network
    root's password:
    リポジトリ 'network' を追加しています [完了]
    リポジトリ 'network' を正常に追加しました
    有効: はい (Y)
    自動更新: いいえ (N)
    GPG チェック: はい (Y)
    URI: https://download.opensuse.org/repositories/network/openSUSE_12.1/
    ### 更新と署名鍵導入
    $ sudo zypper ref
    リポジトリ 'M17N' は最新の状態に更新済みです。
    リポジトリ 'network' のメタデータを取り出しています... [|]
    
    新しいリポジトリまたはパッケージの署名鍵を受信しました:
    鍵 ID: DE00FECD7B709911
    鍵名: network OBS Project <network@build.opensuse.org>
    鍵指紋: CD5AA489AE5B7E40F53DD39FDE00FECD7B709911
    鍵の作成: 2012年10月11日 18時58分06秒
    鍵の有効期限: 2014年12月20日 18時58分06秒
    リポジトリ: network
    
    鍵を拒否しますか (R)? 一時的に信頼しますか (T)? それとも今後ずっと信頼しますか (A)? [r/t/a/?] (r): A
    リポジトリ 'network' のメタデータを取り出しています... [完了]
    リポジトリ 'network' のキャッシュを構築しています [完了]
    リポジトリ 'openSUSE 12.1 12.1-1.4 向けの更新' は最新の状態に更新済みです。
    リポジトリ 'packman' は最新の状態に更新済みです。
    リポジトリ 'openSUSE-12.1-Non-Oss' は最新の状態に更新済みです。
    リポジトリ 'openSUSE-12.1-Oss' は最新の状態に更新済みです。
    リポジトリ 'Tools for managing Amazon S3 - Simple Storage Service (openSUSE_Factory)' は最新の状態に更新済みです。
    全てのリポジトリを更新しました。
    
    
    ### 導入
    $ sudo zypper in mosh
    リポジトリのデータを読み込んでいます...
    インストール済みのパッケージを読み込んでいます...
    パッケージの依存関係を解決しています...
    
    以下の新しいパッケージをインストールします:
    mosh perl-IO-Tty
    
    2 個のパッケージをインストールします.
    全ダウンロードサイズ: 222.0 KiB この操作を行なうには、追加で 783.0 KiB
    の容量が必要です。
    続行しますか? [y/n/?] (y):
    パッケージ perl-IO-Tty-1.10-3.1.3.x86_64 を取得しています (1/2), 40.0 KiB (展開後 78.0 KiB)
    取得しています: perl-IO-Tty-1.10-3.1.3.x86_64.rpm [完了]
    パッケージ mosh-1.2.2-4.1.x86_64 を取得しています (2/2), 182.0 KiB (展開後 705.0 KiB)
    取得しています: mosh-1.2.2-4.1.x86_64.rpm [完了 (145.6 KiB/s)]
    perl-IO-Tty-1.10-3.1.3 をインストールしています [完了]
    mosh-1.2.2-4.1 をインストールしています [完了]
    
    
    ### ファイアウォールでポート開放 最後に、moshはUDP 60001ポートで通信するので、ファイアーウォールで許可します。 Suse mosh YaST2 コントロールセンターを起動し、ファイアウォールを選ぶ 。 左欄の許可するサービスを選択し、右欄の許可するサービスタブに「Mosh Server UDP ports」が現れるので、これを追加するだけ。 [1]: https://mosh.mit.edu/ -------------------------------------------------------------------------------- title: "コマンドライン(cui,fdisk)でHDD追加" date: "2012-11-28" url: https://scribble.washo3.com/linux/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3fdisk%E3%81%A7hdd%E8%BF%BD%E5%8A%A0.html -------------------------------------------------------------------------------- 今更感があるが、Linuxで稼働中のサーバにHDDを追加する場合が、たまにあるのでメモっておく。 追加のHDDは、既に物理的に接続されているものとする。 ### HDDを確認
    # fdisk -l
    ….
    ディスク /dev/sdb: 53.7 GB, 53687091200 バイト
    ヘッド 64, セクタ 32, シリンダ 51200
    Units = シリンダ数 of 2048 * 512 = 1048576 バイト
    セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    ディスク識別子: 0xa128e904
    /dev/sdbのHDDが追加されたのを確認し、 ### 領域作成
    # fdisk /dev/sdb
    コマンド (m でヘルプ): 1
    コマンドの動作
    a ブート可能フラグをつける
    b bsd ディスクラベルを編集する
    c dos 互換フラグをつける
    d 領域を削除する
    l 既知の領域タイプをリスト表示する
    m このメニューを表示する
    n 新たに領域を作成する
    o 新たに空の DOS 領域テーブルを作成する
    p 領域テーブルを表示する
    q 変更を保存せずに終了する
    s 空の Sun ディスクラベルを作成する
    t 領域のシステム ID を変更する
    u 表示/項目ユニットを変更する
    v 領域テーブルを照合する
    w テーブルをディスクに書き込み、終了する
    x 特別な機能 (エキスパート専用)
    
    コマンド (m でヘルプ): t
    
    領域が定義されていません
    
    コマンド (m でヘルプ): n
    
    コマンドアクション
    e 拡張
    p 基本パーティション (1-4)
    p
    パーティション番号 (1-4): 1
    最初 シリンダ (1-51200, 初期値 1):
    初期値 1 を使います
    Last シリンダ, +シリンダ数 or +size{K,M,G} (1-51200, 初期値 51200):
    初期値 51200 を使います
    
     
    
    マンド (m でヘルプ): t
    選択した領域 1
    16進数コード (L コマンドでコードリスト表示): L
    
    0 空 24 NEC DOS 81 Minix / 古い bf Solaris
    1 FAT12 39 Plan 9 82 Linux スワッ c1 DRDOS/sec (FAT-
    2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
    3 XENIX usr 40 Venix 80286 84 OS/2 隠し C: c6 DRDOS/sec (FAT-
    4 FAT16 <32M 41 PPC PReP Boot 85 Linux 拡張領 c7 Syrinx
    …..
    16進数コード (L コマンドでコードリスト表示): 83
    
    マンド (m でヘルプ): w
    パーティションテーブルは変更されました!
    
    ioctl() を呼び出してパーティションテーブルを再読込みします。
    ディスクを同期しています。
    
    
    ### フォーマット
    # mkfs.ext4 /dev/sdb1
    ### マウントしてみる (/optへマウント)
    # mount /dev/sdb1 /opt
    # df
    /dev/sdb1 51606124 184136 48800552 1% /opt
    
    
    ### 恒久的にマウント /etc/fstabへ追記
    # vi /etc/fstab
    …
    /dev/sdb1 /opt ext4 defaults 1 2
    ### fstabの書式に問題ないか、確認
    # mount -a
    # df
    -------------------------------------------------------------------------------- title: "LogAnalyzerのテーブル修復" date: "2012-11-28" url: https://scribble.washo3.com/linux/loganalyzer%E3%81%AE%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E4%BF%AE%E5%BE%A9.html -------------------------------------------------------------------------------- LogAnalyzerのテーブルが破損し、表示されなくなったので、修復した。 下記は、通常のMySQLコマンドです。
    # mysql -u root -p
    mysql> use Syslog;
    mysql> check table SystemEvents extended;
    ---------------------------+
    | Syslog.SystemEvents | check | warning | Table is marked as crashed |
    | Syslog.SystemEvents | check | error | Size of datafile is: 20847562752 Should be: 20847562796 |
    | Syslog.SystemEvents | check | error | Corrupt |
    
    Syslogと言うDBを検証したところ、Syslog.SystemEventsが破損マークとなっている。 これを、修復
    mysql> repair table SystemEvents;
    ---------------------+
    | Syslog.SystemEvents | repair | info | Found block that points outside data file at 20847562668 |
    | Syslog.SystemEvents | repair | status | OK
    
    ちなみに、MySQLのテーブル(SystemEventsテーブル)を空にする場合は、
    # mysql -u root -p
    mysql> use Syslog;
    TRUNCATE TABLE SystemEvents;
    
    -------------------------------------------------------------------------------- title: "Supersonic" date: "2012-11-10" url: https://scribble.washo3.com/linux/supersonic.html -------------------------------------------------------------------------------- ストリーミングサーバーソフトSubsonicのオープンソース版 ライセンスフリーとの事ですが、Mac版で試したところ、4040ポートが開いてないようなんですが・・? Linux版だと動くのかな? -------------------------------------------------------------------------------- title: "warning: database /etc/postfix/transport.db is older than source file" date: "2012-11-05" url: https://scribble.washo3.com/linux/warning-database-etcpostfixtransport-db-is-older-than-source-file.html -------------------------------------------------------------------------------- メールログを見てたら、下記の警告が出てた > warning: database /etc/postfix/transport.db is older than source file 定義したtransportよりtransportのDBが古いとの警告。 transportで定義したものは、postmapでDBを再構築しないといけないので、恐らく、その作業を忘れてたか? って事で、DBを再構築してあげると解決
    # postmap /etc/postfix/transport
    -------------------------------------------------------------------------------- title: "esxcliコマンドでGot no data from processが出るのはシスログが原因?" date: "2012-10-30" url: https://scribble.washo3.com/%E4%BB%AE%E6%83%B3%E5%8C%96/esxcli%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7got-no-data-from-process%E3%81%8C%E5%87%BA%E3%82%8B%E3%81%AE%E3%81%AF%E3%82%B7%E3%82%B9%E3%83%AD%E3%82%B0%E3%81%8C%E5%8E%9F%E5%9B%A0%EF%BC%9F.html -------------------------------------------------------------------------------- ESXiホストにSSHでログインし、esxcliコマンドでvibリストを表示しようとしたら、下記のエラーが出た。 \# esxcli software vib list Got no data from process /usr/lib/vmware/esxcli-software vib.list 調べてみると、[シスログが原因しているとの記事][1]を発見 1. ESXiホストでは、シスログを転送設定していたので、シスログ転送を止める。 (vSphereでホストに接続し、構成タブ–>詳細設定–>Syslog–>Syslog.global.logHost) 2. vmsyslogdのデーモンを確認
    # ps | grep vmsyslogd 
    3. vmsyslodを起動
    # /bin/python -OO /usr/lib/vmware/vmsyslog/bin/vmsyslogd -i 
    この作業のあと、再度、esxcli software vib listを実行したところ、正常に表示されました。 今回の現象のままだと、リスト表示の他に、更新やインストールも出来ないのよね。 ちなみに、この問題は、[このパッチ][2]で修正されたようです。 [1]: https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2016914 [2]: https://kb.vmware.com/selfservice/microsites/search.do?cmd=displayKC&docType=kc&docTypeID=DT_KB_1_1&externalId=2019108 -------------------------------------------------------------------------------- title: "esxcliでCould not download from depot at zip" date: "2012-10-30" url: https://scribble.washo3.com/%E4%BB%AE%E6%83%B3%E5%8C%96/esxcli%E3%81%A7could-not-download-from-depot-at-zip.html -------------------------------------------------------------------------------- ESXiのホストにSSHで接続し、下記のようなコマンドでインストール若しくはアップグレードしようとすると、「Could not download from depot at zip…」のエラーとなる。 > esxcli software vib install -d ESXi510-201210001.zip > [MetadataDownloadError] > Could not download from depot at zip:/var/log/vmware/ESXi510-201210001.zip?index.xml, skipping ((‘zip:/var/log/vmware/ESXi510-201210001.zip?index.xml’, ”, “Error extracting index.xml from /var/log/vmware/ESXi510-201210001.zip: [Errno 2] No such file or directory: ‘/var/log/vmware/ESXi510-201210001.zip'”)) > url = zip:/var/log/vmware/ESXi510-201210001.zip?index.xml > Please refer to the log file for more details. > /vmfs/volumes/5089330b-b7dad582-0a21-000c29913bb7 # cd /var/log/vmware/ 下記のように、適用ファイルのフルパスを指定すると上手くいく。
    # esxcli software vib install -d /vmfs/volumes/datastore1/ESXi510-201210001.zip
    Installation Result
    Message: The update completed successfully, but the system needs to be rebooted for the changes to be effective.
    Reboot Required: true
    VIBs Installed: VMware_bootbank_esx-base_5.1.0-0.5.838463
    ….
    ….
    
    -------------------------------------------------------------------------------- title: "IBM x3650はESXi5.1へアップグレードできない?" date: "2012-10-30" url: https://scribble.washo3.com/%E4%BB%AE%E6%83%B3%E5%8C%96/ibm-x3650%E3%81%AFesxi5-1%E3%81%B8%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%EF%BC%9F.html -------------------------------------------------------------------------------- DELLのサーバでは、すんなりとESXi 5.0から5.1へアップグレード出来たのだが、IBM x3650でアップグレードしようとすると紫色の画面(パープルスクリーン)が表示され、更新が出来ない。 前期のCDブートで、ESXi 5.0から5.1にアップグレードしようとしたら、下記のエラー 373270371489 3650を再起動し、F1を押しセットアップを選択 さらに、Advanced Setupを押す IMG 3203 次に、CPU Optionを選択し、「Execute Disable Bit」をEnableに変更 IMG 3205 BIOSを保存し、再起動 これで、アップグレード出来るだろうと確信したのだが、さらにエラーが出て、先に進むことが出来なかった。 IMG 3206 今、ここ。 -------------------------------------------------------------------------------- title: "ESXiのダウングレード" date: "2012-10-30" url: https://scribble.washo3.com/%E4%BB%AE%E6%83%B3%E5%8C%96/esxi%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89.html -------------------------------------------------------------------------------- あまり、やりたくない作業ではあるが、ESXiのダウングレード方法 ESXiの起動時に、SHIFT+Rキーを押すとリカバリーモードになるので、旧バージョンを選択するだけです。373269951668 これが必要にならない事を祈るばかりです。 ダウングレードしたら、アップグレードしたゲストOSに支障が出ないのだろうか?? (不明) -------------------------------------------------------------------------------- title: "ESXi 5.0から5.1へアップグレード" date: "2012-10-30" url: https://scribble.washo3.com/%E4%BB%AE%E6%83%B3%E5%8C%96/esxi-5-0%E3%81%8B%E3%82%895-1%E3%81%B8%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89.html -------------------------------------------------------------------------------- ESXi 5.0から5.1へアップグレード Esxcliを使って行おうと思ったが、上手くいかなかったので、ISOファイルをCDに焼いて、CD-ROMブートにてアップグレード。 ESXiはUSBメモリからブートしてます。 1. [ ISOファイルをダウンロード][1] 2.  ISOファイルをCD作成 3. CDからBoot 4. ESXi-5.1.0-799733-standard Installerを選ぶ 5. アップグレード対象に旧ESXiが入ったUSBディスクを選択 6. VMFSデータストアを保持(preserve VMFS datastore) 7. アップグレードを選択(Upgrade ESXi) 8. 間違いなければF11のUpgradeを押す 9. アップグレードが完了したら、CDを抜いて再起動 10. ゲストOSの仮想ハードウェアをアップグレード 11. 必要に応じてVMware Toolsのインストール/アップグレードを行う 「[Upgrading ESXi 5.0 to ESXi 5.1][2]」の記事を参考にしました。 [1]: https://my.vmware.com/web/vmware/details?downloadGroup=VCL-VSP510-ESXI-510-EN&productId=285&rPId=2766 [2]: https://aravindsivaraman.wordpress.com/2012/09/18/upgrading-esxi-5-0-to-esxi-5-1/ -------------------------------------------------------------------------------- title: "ESXi 5.0から5.0 update01へアップグレード" date: "2012-10-29" url: https://scribble.washo3.com/%E4%BB%AE%E6%83%B3%E5%8C%96/esxi-5-0%E3%81%8B%E3%82%895-0-update01%E3%81%B8%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89.html -------------------------------------------------------------------------------- DELLのPowerEdgeサーバー R410にて、稼働していたVMware ESXi5.0を5.1へアップグレードした。 現状: VMware ESXi 5.0    SSH ON ## ESXi 5.0から5.1 Update 1へアップデート 1. [アップデート(パッチ)ファイルをダウンロード][1] 2. scpなどで、ホスト上にパッチファイルを転送 3. ホスト上のゲストOSを全て停止 4. vSphereクライアントからホスト接続して、メンテナンスモードにする 5. SSHでホストに接続 6. プロファイルの確認 ~ # esxcli software sources profile list –depot=/vmfs/volumes/Datastore/update-from-esxi5.0-5.0_update01.zip Name Vendor Acceptance Level ——————————– ———— —————- ESXi-5.0.0-20120302001-standard VMware, Inc. PartnerSupported ESXi-5.0.0-20120302001-no-tools VMware, Inc. PartnerSupported ESXi-5.0.0-20120301001s-standard VMware, Inc. PartnerSupported ESXi-5.0.0-20120301001s-no-tools VMware, Inc. PartnerSupported 7. ドライランで実行 ~ # esxcli software profile update –dry-run –depot=/vmfs/volumes/Datastore/update-from-esxi5.0-5.0_update01.zip –profile=ESXi-5.0.0-20120302001-standard 8. 問題なければ、アップデート実行 ~ # esxcli software profile update –depot=/vmfs/volumes/Datastore/update-from-esxi5.0-5.0_update01.zip –profile=ESXi-5.0.0-20120302001-standard 9. 再起動 10. vSphereで接続し、メンテナンス解除 11. ゲストOS起動 12. VMware Tools更新 [1]: https://my.vmware.com/web/vmware/info/slug/datacenter_cloud_infrastructure/vmware_vsphere/5_1?rct=j&q=&esrc=s&source=web&cd=1&ved=0CCQQFjAA&url=https://www.vmware.com/go/download-vsphere&ei=C0SOUImuDdHsmAXt2IDgAQ&usg=AFQjCNH8BxQtnSL49XtiBsAOpEm3d1Va_Q&sig2=tDvCWL1amL5MJHYMAhdslQ -------------------------------------------------------------------------------- title: "Xcodeアップデート後にfuse4xエラー" date: "2012-10-17" url: https://scribble.washo3.com/mac/xcode%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E5%BE%8C%E3%81%ABfuse4x%E3%82%A8%E3%83%A9%E3%83%BC.html -------------------------------------------------------------------------------- Xcode 4.5.1にアップデート後に、Homebrewにて、いつもの如くbrew upgradeしたら、fuse4xで引っかかってしまいました。 > ==> Summary > /usr/local/Cellar/fuse4x-kext/0.9.2: 6 files, 284K > ==> Upgrading fuse4x > ==> Downloading https://github.com/fuse4x/fuse/tarball/fuse4x\_0\_9_2 curl: (56) SSL read: error:00000000:lib(0):func(0):reason(0), errno 54 Error: Download failed: https://github.com/fuse4x/fuse/tarball/fuse4x\_0\_9_2 このエラーを解決するには、管理者権限で下記の作業をすれば良いとのこと。 1. sudo /bin/cp -rfX /usr/local/Cellar/fuse4x-kext/0.9.2/Library/Extensions/fuse4x.kext /Library/Extensions 2. sudo chmod +s /Library/Extensions/fuse4x.kext/Support/load_fuse4x 3. もし、fuse4xを使用していればアンロード sudo kextunload -b org.fuse4x.kext.fuse4x 4. 後は、brew upgradeでOK -------------------------------------------------------------------------------- title: "Macでパス付きZIP圧縮" date: "2012-10-11" url: https://scribble.washo3.com/mac/mac%E3%81%A7%E3%83%91%E3%82%B9%E4%BB%98%E3%81%8Dzip%E5%9C%A7%E7%B8%AE.html -------------------------------------------------------------------------------- 時々、書類を圧縮する際にパスワードかけなきゃいけない時があるのでメモ GUIでは、右クリックで圧縮は出来るがパスワードをかけられないので、CUIで行った方が楽。 fileと言うファイル若しくはディレクトリを圧縮したい場合、ターミナルソフトを起動して、
    $ zip -e file.zip file
    Enter password:
    Verify password:
    
    解凍は、GUIからダブルクリックしてパスワード入力するだけ。 -------------------------------------------------------------------------------- title: "Windows7上のハードディスク構成を変更したら起動しなくなった" date: "2012-08-30" url: https://scribble.washo3.com/windows/windows7%E3%83%8F%E3%83%BC%E3%83%89%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AF%E6%A7%8B%E6%88%90%E3%82%92%E5%A4%89%E6%9B%B4%E5%BE%8C%E8%B5%B7%E5%8B%95%E3%81%97%E3%81%AA%E3%81%84.html -------------------------------------------------------------------------------- Windows7が入ったシステムディスクと、内蔵ハードディスク2機が入った構成で、内蔵ハードディスク2機を外したところ、Windows7が起動しなくなってしまいました。 起動すると、下記のエラー。 > Windowsを開始できませんでした。最近のハードウェアまたはソフトウェアの変更が原因の可能性があります。 > 問題を修正するには次の方法があります: > 1.Windowsインストールディスクを挿入してコンピュータを再起動します。 > 2.言語の設定を選んでから、[次へ]をクリックします。 > 3.[コンピューターの修復]をクリックします。 > このディスクがない場合は、システム管理者またはコンピューターの製造元にお問い合わせください。 > 状態:0xc000000e > 情報:要求されたデバイスにアクセスできないため、ブートの選択でエラーが発生しました。 試した項目 * Windows7のDVDから起動し、スタートアップ修復 * コマンドプロンプトで、bootrec /fixmbr * コマンドプロンプトで、chkdsk c: /f/r 何れも、症状が変わらないため、ググったところ、[こちらの記事][1]が大変参考になった。(感謝) 再度、Windows7のDVDから起動し、コンピューターの修復を選んでコマンドプロンプトを実行
    C:\>diskpart [Enter]
    
    DISKPART> list disk [Enter]
    DISKPART> select disk 0 [Enter] <--該当のHDDを選択
    DISKPART> list partition [Enter]
    DISKPART> select partition 1 [Enter] <--該当のパーティションを選択
    DISKPART> active [Enter]
    DISKPART> exit [Enter]
    
    C:\>bootrec /fixboot [Enter]
    C:\>bootrec /fixmbr [Enter]
    C:\>exit [Enter]
    
    
    再起動すると、今度は下記のエラー表示 > BOOTMGR is missing. > press ctrl + alt + del to restart 再度、Windows7のDVDから起動し、コンピューターの修復を選んでスタートアップ修復を実行 これで、無事、起動するようになりました。ホッ! [1]: https://starfleet.if.tv/bkn/log/2010/06/windows7.html -------------------------------------------------------------------------------- title: "RedHat系でdjangoをインストール" date: "2012-08-21" url: https://scribble.washo3.com/linux/redhat%E7%B3%BB%E3%81%A7django%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB.html -------------------------------------------------------------------------------- RedHat系OS(CentOS,sl6)等で、djangoのインストールメモ 今回、sl6上で作業しました。 ### epelリポジトリが入ってなければ導入しておく
    # yum install epel-release
    ### Pythonが入ってなければ、インストール
    # yum install python
    ### Djangoのインストール
    # yum install Django
    ### 確認
    # python
    
    Python 2.6.6 (r266:84292, Jun 18 2012, 09:57:52)
    [GCC 4.4.6 20110731 (Red Hat 4.4.6-3)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import django
    >>> print django.get_version()
    1.3.1
    >>>
    
    ### プロジェクト作成
    $ django-admin startproject test
    $ cd test
    
    ### テストサーバ起動
    $ python manage.py runserver
    python manage.py runserver
    Validating models...
    
    0 errors found
    Django version 1.3.1, using settings 'test_project.settings'
    Development server is running at https://127.0.0.1:8000/
    Quit the server with CONTROL-C.
    
    自マシンから、ブラウザにて、https://127.0.0.1:8000/にアクセスし、It worked! …が表示されたら完了。 デフォルトでは、自マシン(127.0.0.1)からアクセス出来ませんので、他のマシンで表示したい場合やポート番号を変更したい場合は、
    $ python manage.py runserver 0.0.0.0:8080
    今回は、djangoの最低限の導入・動作確認だけでしたが、SQLやApache連携はまた後日に。 -------------------------------------------------------------------------------- title: "HomebrewでFailure while executing:エラー" date: "2012-08-17" url: https://scribble.washo3.com/mac/homebrew%E3%81%A7failure-while-executing-git-pull-q-origin-refsheadsmasterrefsremotesoriginmaster.html -------------------------------------------------------------------------------- 自宅のiMacで久々にHomebrewをUpdateしたら、下記のエラー。 > $ brew update > error: The following untracked working tree files would be overwritten by merge: > Library/Aliases/twolame > Library/Contributions/cmds/brew-test-bot/brew-test-bot.commit.html.erb > Library/Contributions/cmds/brew-test-bot/brew-test-bot.css > Library/Contributions/cmds/brew-test-bot/brew-test-bot.index.html.erb > Library/Formula/aiccu.rb > Library/Formula/aws-cloudsearch.rb > Library/Formula/aws-sns-cli.rb > Library/Formula/byacc.rb > Library/Formula/cadubi.rb > Library/Formula/cdpr.rb > Library/Formula/cogl.rb > Library/Formula/cutter.rb > Library/Formula/debianutils.rb > Library/Formula/dynamips.rb > Library/Formula/fakeroot.rb > Library/Formula/flickcurl.rb > Library/Formula/freeswitch.rb > Library/Formula/genstats.rb > Library/Formula/gpsd.rb > Library/Formula/gtk+3.rb > Library/Formula/gzrt.rb > Library/Formula/https_load.rb > Library/Formula/hwloc.rb > Library/Formula/hyperestraier.rb > Library/Formula/ideviceinstaller.rb > Library/Formula/jasmin.rb > Library/Formula/jpeg-turbo.rb > Library/Formula/libspiro.rb > Library/Formula/libstfl.rb > Library/Formula/logentries.rb > Library/Formula/mame.rb > Library/Formula/md.rb > Library/Formula/mess.rb > Library/Formula/mysql-cluster.rb > Library/Formula/mysql-connector-odbc.rb > Library/Formula/ophcrack.rb > Library/Formula/opus-tools.rb > Library/Formula/opus.rb > Library/Formula/pam_yubico.rb > Library/Formula/pathfinder.rb > Library/Formula/qstat.rb > Library/Formula/qxmpp.rb > Library/Formula/rbenv-vars.rb > Library/Formula/ren.rb > Library/Formula/rom-tools.rb > Library/Formula/rtpbreak.rb > Library/Formula/txt2man.rb > Library/Formula/valkyrie.rb > Library/Formula/verilator.rb > Library/Formula/visualnetkit.rb > Library/Formula/voldemort.rb > Library/Formula/wemux.rb > Library/Formula/yydecode.rb > Library/Formula/zsh-completions.rb > Library/Homebrew/checksums.rb > Library/Homebrew/macos.rb > Library/Homebrew/macos/xcode.rb > Library/Homebrew/macos/xquartz.rb > Library/Homebrew/pkgconfig/libcurl.pc > Library/Homebrew/pkgconfig/libexslt.pc > Library/Homebrew/pkgconfig/libxml-2.0.pc > Library/Homebrew/pkgconfig/libxslt.pc > Library/Homebrew/test/test_bottles.rb > Please move or remove them before you can merge. > Aborting > Error: Failure while executing: git pull -q origin refs/heads/master:refs/remotes/origin/master 下記のコマンドで復活した。
    $ git reset --hard origin/master
    HEAD is now at 8bb77e6 cmake: 2.8.9
    $ brew update
    Already up-to-date.
    
    
    -------------------------------------------------------------------------------- title: "Autofsでnsswitchが読めない?" date: "2012-08-06" url: https://scribble.washo3.com/linux/autofs%E3%81%A7nsswitch%E3%81%8C%E8%AA%AD%E3%82%81%E3%81%AA%E3%81%84%EF%BC%9F.html -------------------------------------------------------------------------------- 数台あるLinux(CentOS,sl6)サーバのうち、2台ほどNFS接続する必要があり、設定してみたところ、Autofs(automount)が失敗し、下記のエラーが出た。 > Aug 6 09:56:38 hoge automount[14683]: nsswitch_parse:173: couldn’t open /etc/nsswitch.conf > Aug 6 09:56:38 hoge automount[14683]: lookup\_nss\_read_master: can’t to read name service switch config. nsswitch.confが読めないって? https://www.mail-archive.com/centos@centos.org/msg86851.htmlによると、どうやらSELinuxが有効な環境で、Sudoをアップデートした際に、nsswitch.confの属性に悪さをしているとの事。 ちなみに、私の環境では、
    # egrep -v "^#" /etc/selinux/config
    
    SELINUX=disabled
    SELINUXTYPE=targeted 
    
    # rpm -aq sudo
    sudo-1.7.4p5-12.el6_3.x86_64
    
    # ls -Z /etc/nsswitch.conf
    -rw-r--r--  root root system_u:object_r:rpm_script_tmp_t /etc/nsswitch.conf
    解決策は、restoreconを使うと良いらしい。
    # restorecon /etc/nsswitch.conf && service autofs restart
    Stopping automount:                                        [  OK  ]
    Starting automount:                                        [  OK  ]
    
    # ls -Z /etc/nsswitch.conf
    -rw-r--r--  root root system_u:object_r:etc_t          /etc/nsswitch.conf
    私の場合、今後もSELinux絡みは、何かと面倒くさいので、SELinuxをdisabledにしちゃいました。 -------------------------------------------------------------------------------- title: "WindowsXPでexFATフォーマット" date: "2012-08-01" url: https://scribble.washo3.com/windows/windowsxp%E3%81%A7exfat%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88.html -------------------------------------------------------------------------------- 通常のWindows XPでは、exFATフォーマットが出来ないので、 下記のモジュールを導入する。 [Windows XP 用の更新プログラム (KB955704) https://www.microsoft.com/ja-jp/download/details.aspx?id=19364][1] 再起動後に有効となる。 [1]: https://www.microsoft.com/ja-jp/download/details.aspx?id=19364 -------------------------------------------------------------------------------- title: "unzipで複数ファイルを一括解凍" date: "2012-07-30" url: https://scribble.washo3.com/linux/unzip%E3%81%A7%E8%A4%87%E6%95%B0%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E4%B8%80%E6%8B%AC%E8%A7%A3%E5%87%8D.html -------------------------------------------------------------------------------- 分割zipファイルが大量にあったり、まとめて、あるフォルダ内の大量zipファイルを一気に解凍したい事がありますよね? *(アスタリスク)使えば出来んじゃね?って、よく ```bash $ unzip *.zip ``` とか、実行すると、下記のエラーが出ます。 > caution: filename not matched: hove.zip では、どうやるかと言うと、シングルクゥオーテーションで括ればよいです。 ```bash $ unzip '*.zip' ``` ちなみに、解凍するzipファイルが大量にある場合は、xargs使いましょう ```bash $ find . -name '*.zip' | xargs -n1 unzip ``` zipファイルでは、解凍する際にディレクトリを作成しないファイルも多々存在するため、一括解凍し、解凍先で悲惨な目に合うこともあるので、出力先を指定したほうが良いかもしれません。 ```bash $ find . -name '*.zip' | xargs -n1 unzip -d <出力するディレクトリ名> ``` 以上 -------------------------------------------------------------------------------- title: "vimで改行コード(^M)を削除" date: "2012-07-23" url: https://scribble.washo3.com/linux/vim%E3%81%A7%E6%94%B9%E8%A1%8C%E3%82%B3%E3%83%BC%E3%83%89m%E3%82%92%E5%89%8A%E9%99%A4.html -------------------------------------------------------------------------------- foo.txtに^Mの付いた改行コードがついていた場合に、vimで削除する方法
    $ vim -b foo.txt
    
    test^M <---この^Mを削除
    
    :%s/^M//g
    
    
    Tips: 1. vim -bにて編集すると^Mが表示される 2. 編集モードでESCキーを押した後、コロン(:)を押し、下部に:を表示させ、コマンド入力モードへ。 3. ^Mは、^とMのキーを押すのではなく、Controlキーを押したまま、vのキーを押し、続いてmのキーを押す。(Controlキー押したままvm) -------------------------------------------------------------------------------- title: "CakePHPでapcエラー" date: "2012-07-20" url: https://scribble.washo3.com/program/cakephp%E3%81%A7apc%E3%82%A8%E3%83%A9%E3%83%BC.html -------------------------------------------------------------------------------- CakePHPにアクセスすると、下記のエラーが出るようになっていた。 > Unable to allocate memory for pool. 調べてみたら、APCのバグらしいので、エラーメッセージを出さないように修正
    # vim /etc/php.d/apc.ini
    
    apc.mmap_file_mask=/dev/zero
    
    
    -------------------------------------------------------------------------------- title: "Redhat6系でuconvはどこ?" date: "2012-07-19" url: https://scribble.washo3.com/linux/redhat6%E7%B3%BB%E3%81%A7uconv%E3%81%AF%E3%81%A9%E3%81%93%EF%BC%9F.html -------------------------------------------------------------------------------- CentOSやsl6 6系のyumパッケージで、uconvが見つからない。 yum searchで見つからないし、remi,epel,rpmforgeのリポジトリでも見つからないと思ったら、icuと言うパッケージに入ってた。 icuって病室みたいな名前だけど、International Components for Unicodeの略
    # yum install icu
    これで、uconvやmakeconvなどのなどがインストールされる。 -------------------------------------------------------------------------------- title: "VimでBOM付きUTF-8テキストからBOMを削除" date: "2012-07-19" url: https://scribble.washo3.com/linux/vim%E3%81%A7bom%E4%BB%98%E3%81%8Dutf-8%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%81%8B%E3%82%89bom%E3%82%92%E5%89%8A%E9%99%A4.html -------------------------------------------------------------------------------- Vimでバイナリーモードでファイルを読み込むと、BOMを表示してくれるので、あとは削除するだけ。
    $ vim -b test.txt
    
    <feff>これは、テストです。
    の部分を削除して保存。 -------------------------------------------------------------------------------- title: "Linuxにnamebenchをインストール" date: "2012-07-11" url: https://scribble.washo3.com/linux/linux%E3%81%ABnamebench%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB.html -------------------------------------------------------------------------------- namebenchをLinuxにインストールした。 ソースからビルドしてインストールするので、Linux全般に導入可能。 尚、コンパイル・実行には、pythonで書かれているので、python必須 1. ソースをダウンロード
    $ wget -c https://namebench.googlecode.com/files/namebench-1.3.1-source.tgz
    2. 解凍
    $ tar -xzvf namebench-1.3.1-source.tgz
    3. ビルドとインストール
    $ cd namebench-1.3.1
    $ python setup.py build
    $ sudo python setup.py install
    実行するには、namebench.pyを走らせるだけ。 ちなみに、実行ファイルは/usr/bin/、データ等は、/usr/namebenchへインストールされてる。 -------------------------------------------------------------------------------- title: "Broken Link Checkerアップデート後にエラー" date: "2012-07-03" url: https://scribble.washo3.com/wordpress/broken-link-checker%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E5%BE%8C%E3%81%AB%E3%82%A8%E3%83%A9%E3%83%BC.html -------------------------------------------------------------------------------- 本日、WordPressプラグインの「[Broken Link Checker][1]」をアップデートしたところ、管理画面上部に下記のエラーが出た。 > WordPress Error:[Unknown column ‘dismissed’ in ‘where clause’]… wp\_blc..のテーブルがどうたらこうたらとのエラーなので、このプラグインを停止・削除し、DBからwp\_blc関連のテーブルが削除されたのを確認後、再インストールしたら、無事、でけた。 [1]: https://wordpress.org/extend/plugins/broken-link-checker/ -------------------------------------------------------------------------------- title: "CentOS6でswapをなるべく使わない設定" date: "2012-07-03" url: https://scribble.washo3.com/linux/centos6%E3%81%A7swap%E3%82%92%E3%81%AA%E3%82%8B%E3%81%B9%E3%81%8F%E4%BD%BF%E3%82%8F%E3%81%AA%E3%81%84%E8%A8%AD%E5%AE%9A.html -------------------------------------------------------------------------------- CentOS,sl6などのRedHat6系にて、メモリに余裕があるので、なるべくswapしないように設定。 現状のメモリ環境:
    $ free
    total used free shared buffers cached
    Mem: 65970504 1007620 64962884 0 15688 188112
    -/+ buffers/cache: 803820 65166684
    
    デフォルトでは、swappinessの値は60に設定されており、0~100まで設定可能。
    # cat /proc/sys/vm/swappiness
    60
    この設定を変更するには、下記コマンドを実行
    # vi /etc/sysctl.conf
    ……..↓最終行に下記1行を追記
    vm.swappiness = 1
    
    # sysctl -p
    
    -------------------------------------------------------------------------------- title: "MacBook Airのスリープ復帰を速くする" date: "2012-06-26" url: https://scribble.washo3.com/mac/macbook-air%E3%81%AE%E3%82%B9%E3%83%AA%E3%83%BC%E3%83%97%E5%BE%A9%E5%B8%B0%E3%82%92%E9%80%9F%E3%81%8F%E3%81%99%E3%82%8B.html -------------------------------------------------------------------------------- MacBook Airでは、SSD搭載された事により、スリープ時にハイバネーション形式により、SSDへメモリー内容を書き出し、スリープ解除時に読み込むので、スリープ解除で、若干もたつくようになりました。 このハイバネーションをオフにすると、高速化できますので、下記コマンドでオフ
    sudo pmset -a hibernatemode 0
    元に戻すには、
    sudo pmset -a hibernatemode 3
    ハイバネーションオフで蓋を開けた時に高速化されますが、この時、不具合が生じたら、中断していた作業を失う可能性もあるので、at your own riskにて。 -------------------------------------------------------------------------------- title: "Subsonicを4.7betaへアップデート" date: "2012-06-16" url: https://scribble.washo3.com/linux/subsonic%E3%82%924-7beta%E3%81%B8%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88.html -------------------------------------------------------------------------------- Redhat系Linux(CentOS/sl6など)での、Subsonic アップデート。 1. Subsonicホームページから、プラットフォームに合ったバージョンを[ダウンロード][1] 2. サーバ上でSubsonicが動いていたら停止 \# service subsonic stop 3. アップデート \# rpm -Uvh subsonic-4.7.beta2.rpm 4. Subsonic 起動 \# service subsonic start 特に難しい事はないです。 [1]: https://www.subsonic.org/pages/download.jsp -------------------------------------------------------------------------------- title: "VMware ESXi5 snmp有効化" date: "2012-06-08" url: https://scribble.washo3.com/network/vmware-esxi5-snmp%E6%9C%89%E5%8A%B9%E5%8C%96.html -------------------------------------------------------------------------------- VMware ESXi 5にて、デフォルトでは、SNMPは無効になっているため、SNMP有効化する。 1. ESXiホストへrootにてSSH接続 2. snmp.xmlを修正 \# vi /etc/vmware/snmp.xml false  <–falseをtrueへ  <–publicを挿入       ↓     変更後 truepublic 3. 有効化するため再起動 \# /sbin/services.sh restart  -------------------------------------------------------------------------------- title: "RedHat Enterpriseへzabbixエージェント導入" date: "2012-06-08" url: https://scribble.washo3.com/linux/redhat-enterprise%E3%81%B8zabbix%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E5%B0%8E%E5%85%A5.html -------------------------------------------------------------------------------- RHEL 5系のRedhat5.x及びCentOS5.xへzabbixエージェント導入方法 1. 下記サイトから最新のatomic-releaseをダウンロード https://www6.atomicorp.com/channels/atomic/centos/5/x86_64/RPMS/ 2. atomic-releaseをインストール \# rpm -Uvh atomic-release*rpm 3. zabbix-agentをインストール \# yum install zabbix-agent  以上、後は設定ファイルにzabbixサーバを入れて、起動するだけ。 -------------------------------------------------------------------------------- title: "resolv.confの内容が書き換わる" date: "2012-06-07" url: https://scribble.washo3.com/linux/resolv-conf%E3%81%AE%E5%86%85%E5%AE%B9%E3%81%8C%E6%9B%B8%E3%81%8D%E6%8F%9B%E3%82%8F%E3%82%8B.html -------------------------------------------------------------------------------- CentOS6,sl6系のresolv.confの内容を書き換えたはずが、再起動すると、書いた設定が消えて初期値に戻ってしまう。 どうやら、/etc/sysconfig/network-scripts/ifcfg-eth0の内に、記述しないとダメみたい。 > DNS1=”127.0.0.1″ > DNS2=”8.8.4.4″ > DNS6=”4.4.4.4″ > DNS7=”8.8.8.8″ 尚、ifcfg-eth0の0は自分の環境に合ってるか確認の事。 -------------------------------------------------------------------------------- title: "LogAnalyzerでのMySQLエラー" date: "2012-06-05" url: https://scribble.washo3.com/linux/loganalyzer%E3%81%A7%E3%81%AEmysql%E3%82%A8%E3%83%A9%E3%83%BC.html -------------------------------------------------------------------------------- LogAnalyzerをインストール・設定が終わって、アクセスしたところ、下記のエラー。 > Error, MYSQL Extensions are not enabled! Function ‘mysql_connect’ does not exist. mysqlはインストール・設定したはずなのに?と思っていたら、php-mysqlが入ってなかったと言う落ち。
    # yum -y install php-mysql
    # service httpsd restart
    
    これで、解決した。 -------------------------------------------------------------------------------- title: "Linuxが起動時にReadOnlyになってしまう場合" date: "2012-05-28" url: https://scribble.washo3.com/linux/linux%E3%81%8C%E8%B5%B7%E5%8B%95%E6%99%82%E3%81%ABreadonly%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%97%E3%81%BE%E3%81%86%E5%A0%B4%E5%90%88.html -------------------------------------------------------------------------------- Linuxの設定を変更した後に再起動や、何らかの調子が悪い場合に、起動時に読み込み専用( ReadOnly)になる場合があります。 設定を戻したり、弄ろうとしても、ReadOnlyなので変更出来ません。 そう言う場合は、読み書き出来るようにリマウントする事で解決出来る場合がある。
    mount -n -o remount, rw /
    mountコマンドでrwになっていればOKです。 あとは、ReadOnlyになった原因を解決しましょう。 -------------------------------------------------------------------------------- title: "MAC OSX (10.6)でBonjourをオフ" date: "2012-05-28" url: https://scribble.washo3.com/mac/mac-osx-10-6%E3%81%A7bonjour%E3%82%92%E3%82%AA%E3%83%95.html -------------------------------------------------------------------------------- 時々、Bonjourに関する影響で、ネットワークが不調になることがあるので、Bonjourオフにする。 1. /System/Library/LaunchDaemons/com.apple.mDNSResponder.plistのバックアップを別ディレクトリにとる 2. /System/Library/LaunchDaemons/com.apple.mDNSResponder.plistをエディタで開く 3. ProgramArgumentsというセクションの配列に-NoMulticastAdvertisementsという文字列を追加
    <key>ProgramArguments</key>
         <array>
            <string>/usr/sbin/mDNSResponder</string>
            <string>-launchd</string>
    <string>-NoMulticastAdvertisements</string>
    4. Macを再起動 参考:[https://support.apple.com/kb/HT3789?viewlocale=ja\_JP&locale=ja\_JP][1] [1]: https://support.apple.com/kb/HT3789?viewlocale=ja_JP&locale=ja_JP -------------------------------------------------------------------------------- title: "Cydiaの読み込みでUnable to Load エラーが出るときの対処" date: "2012-05-17" url: https://scribble.washo3.com/ios/cydia-network-error.html -------------------------------------------------------------------------------- 脱獄したiPhoneで、Cydiaを起動すると、「Unable to Load」でcydia.saurik.comから読み込まれず、下記のエラーが出ることがある。 IMG 0001 もちろん、ネットワーク設定が終わってて、インターネットに接続出来ている場合のこのエラーは、日付・時刻に相違あるのが原因。 日付・時刻を合わせておきましょう! -------------------------------------------------------------------------------- title: "eht0がリネームされ、ネットワークが使えない時の対処" date: "2012-05-16" url: https://scribble.washo3.com/linux/udev-eth0-to-eth1_rename.html -------------------------------------------------------------------------------- NICを入れ替えたり、仮想化でゲストOSをコピーしたりするときに下記のエラーでネットワークが使用出来ない場合がある。 > udev: renamed interface eth0 to eth1 ネットワークインターフェースは1つしかないのに、eth1に割り当てられる症状なのですが、以前に使っていたNICがeth0として記録され、情報が残っているからのようです。 この役目をしているのが、/etc/udev/rules.d/70-persistent-.rulesで、これを削除し、再起動して問題なければ良いが、場合によっては、症状が解決されず、消したはずの70-persistent-.rulesが復活します。 (どこかに設定が残ってる??) この場合、70-persistent-.rulesを編集 ``` SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:xx", KERNEL=="eth*", NAME="eth0" ``` address部分とeth0の部分を合わせてあげれば良いかと。 (addressはネットワークアドレスではなく、NICのMACアドレス) もう一つ、確認しておきたいのは、/etc/sysconfig/network-scripts/ifcfg-eth0のHWADDRも合わせておく事。 なお、ifcfg-eth*へHWADDRを記述した場合は、`70-persistent-.rules`より、こちらが優先される 再起動し、完了。 ### 参考記事 -------------------------------------------------------------------------------- title: "全てのiOSデバイスでSiriをインストール" date: "2012-05-07" url: https://scribble.washo3.com/ios/all-ios-device-siri-install.html -------------------------------------------------------------------------------- 要脱獄(Jailbreak)で、iPad 3を除く全てのiOSデバイス(iPhone 4, 3GS, iPad 1, 2, iPod touch 3G, 4G)にSiriがインストール出来るようです。 Spireと言うCydiaアプリをインストールし、Proxyサーバーを通してSiriを利用出来るようですが、毎月の課金が必要のようです。 脱獄+Cydiaアプリ+どこぞのProxyサーバー+課金って、危険な匂いが・・ 使う人いないだろ??
    -------------------------------------------------------------------------------- title: "Mac 標準のFTPでハマった" date: "2012-05-05" url: https://scribble.washo3.com/mac/mac-%E6%A8%99%E6%BA%96%E3%81%AEftp%E3%81%A7%E3%83%8F%E3%83%9E%E3%81%A3%E3%81%9F.html -------------------------------------------------------------------------------- Mac OS Xにて、FTP接続で、書き込みが出来なくて、数時間ハマりました。 Macの標準で、メニューバーから「移動」->「サーバへ接続」でFTP接続し、難なくログインまでは出来たのですが、書き込み禁止になっていて、アップロードも出来ない状態に。 数時間、サーバ側の設定をいろいろ弄くり回して解決出来なかったわけですが、原因は、この標準のFTPマウントにありました。 別のFTPクライアントソフト(Transmit,Forklift)を起動すると、あっさりと解決。 どうして、標準のFTPマウントでは、書き込み禁止になってるんだ?? ちなみに、ターミナルからFTPコマンドで接続しても、問題なく書き込み出来るし。 -------------------------------------------------------------------------------- title: "WordPressでデバッグオンにした時、Unable to allowcate memry ..が出る場合の対処" date: "2012-05-05" url: https://scribble.washo3.com/wordpress/wordpress-debug-error-apc.html -------------------------------------------------------------------------------- WordPressの設定ファイルで、デバッグをONにしたところ、下記のような警告が出る場合がある。 > Warning: include_once() [function.include-once]: Unable to allocate memory for pool. in /var/www/… どうやら、APCが原因のようで、WordPressのデバッグに限らず、PHPのフラグONでも警告が出る模様。 APCを外すか、.htaccessでオフにすれば警告が出なくなる。 > php\_flag apc.cache\_by_default Off -------------------------------------------------------------------------------- title: "Flashback などのマルウェア検出、除去する「Magican AntiTrojan」" date: "2012-04-28" url: https://scribble.washo3.com/mac/magican-antitrojan.html -------------------------------------------------------------------------------- トロイの木馬Flashbackや、MacKontrol、Sabpab、Olyx等のマルウェア検出・駆除ソフト「[Magican AntiTrojan][1]」。 ほんの数秒で、検出完了します。 [Magician AntiTrojan][1] [Magican AntiTrojan][1] [1]: https://www.magicansoft.com/jp/magican-antitrojan.html -------------------------------------------------------------------------------- title: "MAC OS XでのFLAC変換ソフト" date: "2012-04-26" url: https://scribble.washo3.com/mac/mac-os-x%E3%81%A7%E3%81%AEflac%E5%A4%89%E6%8F%9B%E3%82%BD%E3%83%95%E3%83%88.html -------------------------------------------------------------------------------- Mac OS X上でFlac形式の変換ソフトって何だったっけ?とよく忘れるのでメモ。 [X Lossless Decoder:Lossless audio decoder for Mac OS X][1] 略して、XLD 対応フォーマット: そのまま、ディスク作成出来るのも便利。 [1]: https://tmkk.pv.land.to/xld/ -------------------------------------------------------------------------------- title: "YouTubeの動画を音楽ファイル(mp3)として保存" date: "2012-04-19" url: https://scribble.washo3.com/pc/youtube%E3%81%AE%E5%8B%95%E7%94%BB%E3%82%92%E9%9F%B3%E6%A5%BD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%ABmp3%E3%81%A8%E3%81%97%E3%81%A6%E4%BF%9D%E5%AD%98.html -------------------------------------------------------------------------------- YouTube to mp3 Converter 1. にアクセス 2. YouTube上の動画リンクを貼り付ける 3. 「Convert Video」ボタンを押す 4. 「Download」ボタンが表示されるので、クリック 以上 -------------------------------------------------------------------------------- title: "CentOSに統合アーカイバ atoolをインストール" date: "2012-04-19" url: https://scribble.washo3.com/linux/centos%E3%81%AB%E7%B5%B1%E5%90%88%E3%82%A2%E3%83%BC%E3%82%AB%E3%82%A4%E3%83%90-atool%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB.html -------------------------------------------------------------------------------- LinuxのCUIにて、いろんなタイプの圧縮形式に対応するアーカイバ「atool」をインストールした。 対応フォーマット:tar  gzip、bzip2、compress、lzop、7z、rar、lha、ace、arj、rpm、deb、jar、7zip、cpio インストール:
    $ wget https://download.savannah.gnu.org/releases/atool/atool-0.39.0.tar.gz
    $ tar zxf atool-0.39.0.tar.gz
    $ cd atool-0.39.0/
    $ ./configure
    $ make
    $ sudo make install
    
    よく使うコマンド: * 中身確認:atool -l * 解凍:atool -x * 圧縮: atool .<拡張子> -a ….. 拡張子にて自動で圧縮形式を判断する 実際、圧縮・解凍・リストなど別々のプログラムで動作しているのだが、atoolだけ覚えた方が楽。 ちなみに、最新版ではないが、rpmやdebパッケージも下記URLに用意されている。 -------------------------------------------------------------------------------- title: "pfsense旧バージョンのダウンロード先" date: "2012-04-18" url: https://scribble.washo3.com/network/pfsense%E6%97%A7%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E5%85%88.html -------------------------------------------------------------------------------- ホームページ上からは、旧バージョンのダウンロード先がなかなか見つからないのでメモ 旧バージョン:https://files.pfsense.org/mirror/downloads/old/ -------------------------------------------------------------------------------- title: "XmindのJVM terminatedエラーで起動しない原因" date: "2012-04-14" url: https://scribble.washo3.com/mac/xmind%E3%81%AEjvm-terminated%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%A7%E8%B5%B7%E5%8B%95%E3%81%97%E3%81%AA%E3%81%84%E5%8E%9F%E5%9B%A0.html -------------------------------------------------------------------------------- Mac OS Xで、Xmindが下記のエラーで起動しなくなった。 Voila Capture74 実は、これ、トロイの木馬型マルウェア「Flashback」対策で、Javaをオフにしていたのが原因。 同じような症状の人は、Java Preferencesで入にチェックが入っているか確認してみよう。 Java Preferences -------------------------------------------------------------------------------- title: "Mac OS XでDNSキャッシュを削除する方法" date: "2012-04-14" url: https://scribble.washo3.com/mac/mac-os-x%E3%81%A7dns%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%82%92%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.html -------------------------------------------------------------------------------- これまた、Mac OS XでDNSキャッシュを削除方法をよく忘れるのでメモ。
    % sudo dscacheutil -flushcache
    -------------------------------------------------------------------------------- title: "CentOSのFTPでパッシブモードで接続出来ない?" date: "2012-04-12" url: https://scribble.washo3.com/linux/centos%E3%81%AEftp%E3%81%A7%E3%83%91%E3%83%83%E3%82%B7%E3%83%96%E3%83%A2%E3%83%BC%E3%83%89%E3%81%A7%E6%8E%A5%E7%B6%9A%E5%87%BA%E6%9D%A5%E3%81%AA%E3%81%84%EF%BC%9F.html -------------------------------------------------------------------------------- CentOS 5.8上のFTPでパッシブモードで接続出来ない症状が出るようです。 (ただし、iptablesを使用している場合) 何でも、[0005135: After upgrade to 5.7 the ip\_nat\_ftp module breaks passive ftp connections – CentOS Bug Tracker][1]によると、5.7からのバグらしい。 解決策は、iptables-config ファイルで ip\_nat\_ftp を削除する事で回避出来るとの事
    # vi /etc/sysconfig/iptable-config
    IPTABLES_MODULES="ip_conntrack_netbios_ns ip_conntrack_ftp"
    
    保存後、iptablesをリロード(再起動)
    # service iptables reload (restart)
    
    [1]: https://bugs.centos.org/view.php?id=5135 -------------------------------------------------------------------------------- title: "mysqld.pidが書き込めないエラー" date: "2012-04-10" url: https://scribble.washo3.com/linux/mysqld-pid%E3%81%8C%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%82%81%E3%81%AA%E3%81%84%E3%82%A8%E3%83%A9%E3%83%BC.html -------------------------------------------------------------------------------- さくらのVPSを旧プランから新プランへrsyncで転送し、新プランでMySQLを起動しようとしたら、下記のエラーが出た。 > mysqld: /usr/local/libexec/mysqld: Can’t create/write to file ‘/var/run/mysqld/mysqld.pid’ (Errcode: 2) それもそのはずで、転送時に、/var/run下は転送しなかったからなので、/var/run/mysqldがあるわけない。 なので、/var/run/下にmysqldを作成し、Permissionをmysql:mysqlに変更で解決。 \# mkdir /var/run/mysqld \# chown mysql:mysql /var/run/mysqld \# service mysqld start -------------------------------------------------------------------------------- title: "Scientific LinuxをOracle Linuxへ横着アップグレードしてみた" date: "2012-04-10" url: https://scribble.washo3.com/linux/scientific-oracle-linux-upgrade.html -------------------------------------------------------------------------------- sl6から、そのままOracle Linuxへ移し替える、こんな記事「[Oracle Linux 6.2 via さくらのVPS][1]」がありましたので、早速、試してみました。 記事通りに行うことで、本当に入れ替わっちゃいましたよ。 ちなみに、ブート時は、sl6のまま。 CUIログイン画面は、「Oracle Linux Server  release 6.2」 /etc/redhat-releaseは、「Red Hat Enterprise Linux Server release 6.2 (Santiago)」 何となく混在している感じで、あんまり気持ちイイものではないので、常用はしませんけどね。 一応、作業項目を掲載しておきます。
    # yum erase sl-release selinux-policy dhcp-common -y
    
    # cd /etc/yum.repos.d
    # rm -f sl*
    
    # vi public-yum-ol6.repo
    [ol6_u2_base]
    name=Oracle Linux 6 U2 - $basearch - base
    baseurl=https://public-yum.oracle.com/repo/OracleLinux/OL6/2/base/$basearch/
    gpgkey=https://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
    gpgcheck=1
    enabled=1
    
    # yum install oraclelinux-release -y
    
    # yum install -y \
    selinux-policy \
    dhcp-common \
    acpid \
    aic94xx-firmware \
    b43-openfwwf \
    bfa-firmware \
    biosdevname \
    cpuspeed \
    crda \
    cronie \
    cronie-anacron \
    crontabs \
    cryptsetup-luks \
    cryptsetup-luks-libs \
    cyrus-sasl \
    device-mapper \
    device-mapper-event \
    device-mapper-event-libs \
    device-mapper-libs \
    dhclient \
    dmraid \
    dmraid-events \
    dracut \
    dracut-kernel \
    git \
    hal \
    hal-info \
    initscripts \
    iputils \
    iwl100-firmware \
    iwl5150-firmware \
    iwl6000-firmware \
    iwl6000g2a-firmware \
    iwl6000g2b-firmware \
    iwl6050-firmware \
    kbd \
    kexec-tools \
    kpartx \
    libdrm \
    lvm2 \
    lvm2-libs \
    mdadm \
    netxen-firmware \
    ntp \
    ntpdate \
    openssh \
    openssh-clients \
    openssh-server \
    parted \
    pcmciautils \
    perl-Git \
    plymouth \
    pm-utils \
    policycoreutils \
    postfix \
    prelink \
    python-iwlib \
    quota \
    readahead \
    rng-tools \
    rsyslog \
    setuptool \
    smartmontools \
    sysstat \
    system-config-network-tui \
    udev \
    usermode \
    util-linux-ng \
    virt-what \
    wireless-tools \
    yum-conf-sl-other \
    
    # yum upgrade -y
    
    # shutdown -r now
    
    # cat /etc/redhat-release
    Red Hat Enterprise Linux Server release 6.2 (Santiago)
    
    
    Oracle Linuxを本格的にサーバとして使用する場合には、[正規の方法][2]でインストールしましょう。 [1]: https://blog.cottingley.jp/post/1887 [2]: https://www.oracle.com/jp/technologies/linux/index.html -------------------------------------------------------------------------------- title: "Mac OS X上でのbash環境メモ" date: "2012-04-10" url: https://scribble.washo3.com/mac/mac-os-x%E4%B8%8A%E3%81%A7%E3%81%AEbash%E7%92%B0%E5%A2%83%E3%83%A1%E3%83%A2.html -------------------------------------------------------------------------------- 自分だけでのbash環境設定だと、~/.bashrcや~/.profileに書けば良いのだが、数人で共有しているMacで、共通のbash環境変数を設定したい場合がある。 Linux/Unixとは、少し異なる部分があったので、メモしておく。 (尚、下記はSnow Leopard 10.6.xの環境) 読み込む順番: 1. ログインすると/etc/profileが読み込まれる 2. /etc/profileでは、/usr/libexec/path_helper -sが実行される 3. /etc/paths 4. /etc/paths.d/内に記述されたパス設定ファイルが読み込まれる 5. /etc/bashrc 6. ~/.profile 7. ~/.bashrc と言うことで、 * 共通のシステム関連パスは、/etc/pathsへ * 共通の特有関連パスは、/etc/paths.d/内にファイルを作成して、ディレクトリパスを記述 * 共通の環境変数は、/etc/profileへ * 自分固有の環境変数・パスは、~/.profileへ /etc/profile同様に、~/.profileに~/.bashrcを読み込むように記述 これで、多分大丈夫だと思うのだが、細かい部分は間違っているかも? -------------------------------------------------------------------------------- title: "MySQL TunerでMySQLチューニング" date: "2012-04-09" url: https://scribble.washo3.com/linux/mysql-tuner%E3%81%A7mysql%E3%83%81%E3%83%A5%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0.html -------------------------------------------------------------------------------- サーバ引っ越しで、少しメモリが増えたので、MySQLでもチューニングしてみた。 ## まずは、チューニングプログラムをダウンロード
    $ wget https://raw.github.com/rackerhacker/MySQLTuner-perl/master/mysqltuner.pl
    ## 実行権限を付加
    $ chmod +x mysqltuner.pl
    ## 実行 MySQLが起動してて、root権限を持っている環境で、実行 $  ./mysqltuner.pl >>  MySQLTuner 1.2.0 – Major Hayden >>  Bug reports, feature requests, and downloads at https://mysqltuner.com/ >>  Run with ‘–help’ for additional options and output filteringPlease enter your MySQL administrative login: root Please enter your MySQL administrative password: ——– General Statistics ————————————————– [–] Skipped version check for MySQLTuner script[OK] Currently running supported MySQL version 5.5.22 [OK]Operating on 64-bit architecture ——– Storage Engine Statistics ——————————————- [–] Status: +Archive -BDB -Federated +InnoDB -ISAM -NDBCluster …略 Variables to adjust: query\_cache\_size (>= 8M) tmp\_table\_size (> 16M) max\_heap\_table_size (> 16M) thread\_cache\_size (start at 4) ## my.cnfを修正 上記の「Variables to adjust:」を参考に/etc/my.cnfを修正していく -------------------------------------------------------------------------------- title: "WordPressテーマデモを簡単に設置できる「WordPress theme demo bar」プラグイン" date: "2012-03-22" url: https://scribble.washo3.com/wordpress/wordpress-theme-demo-bar.html -------------------------------------------------------------------------------- WordPressのテーマを探していると、よく見かけるデモサイト風なサイトは、「[WordPress theme demo bar][1]」のプラグインで簡単に設置できる。

    テーマを開発・変更したい時には便利です。 [1]: https://wordpress.org/extend/plugins/wordpress-theme-demo-bar/ -------------------------------------------------------------------------------- title: "s3cmdで警告メッセージが出る" date: "2012-03-18" url: https://scribble.washo3.com/linux/s3cmd%E3%81%A7%E8%AD%A6%E5%91%8A%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%81%8C%E5%87%BA%E3%82%8B.html -------------------------------------------------------------------------------- CentOS,sl6で、epelからs3cmdをインストール出来るのですが、バージョンが古いので、警告が出るようです。
    $ s3cmd --version
    /usr/lib/python2.6/site-packages/S3/Utils.py:17: DeprecationWarning: the sha module is deprecated; use the hashlib module instead
    import sha as sha1
    s3cmd version 0.9.9.9
    
    解決方法として、 [S3 tools – Browse /s3cmd at SourceForge.net][1]から、最新版をダウンロードし、pythonインストールで解決出来ますね。
    $ wget "https://downloads.sourceforge.net/project/s3tools/s3cmd/1.1.0-beta3/s3cmd-1.1.0-beta3.tar.gz?r=https%3A%2F%2Fsourceforge.net%2Fprojects%2Fs3tools%2Ffiles%2Fs3cmd%2F1.1.0-beta3%2F&ts=1332030694&use_mirror=jaist"
    $ tar zxf s3cmd-1.1.0-beta3.tar.gz
    $ cd s3cmd-1.1.0-beta3/
    $ sudo python setup.py install
    $ s3cmd --versions3cmd
    version 1.1.0-beta3
    
    もう一つ、転送するときに、下記の警告も出る場合、 > WARNING: Module python-magic is not available. Guessing MIME types based on file extensions. yumでpython-magicをインストールすれば良い
    # yum install python-magic
    
    [1]: https://sourceforge.net/projects/s3tools/files/s3cmd/ -------------------------------------------------------------------------------- title: "FTPサーバをFXP対応にする" date: "2012-03-16" url: https://scribble.washo3.com/linux/ftp%E3%82%B5%E3%83%BC%E3%83%90%E3%82%92fxp%E5%AF%BE%E5%BF%9C%E3%81%AB%E3%81%99%E3%82%8B.html -------------------------------------------------------------------------------- FTPサーバソフトウェアはデフォールトでは危険性があるので、[FXP][1]を使用不可にしていることが多い。 でも、[FXP][1]対応だと便利であるのも確かなので、proftpdとvsftpdをFXP対応にする。 *FXPとは、簡単に言うと、クライアントのコネクションを経由しなくとも転送元のサーバから別のサーバにデータを転送できるプロトコルです。   ## vsftpd /etc/vsftpd/vsftpd.confに下記2行を追加
    pasv_promiscuous=YES
    
    port_promiscuous=YES
    
    
    ## ProFTPD /etc/proftpd.conf内のGlobalセクション内に下記1行を追加
    AllowForeignAddress on 
    編集・保存後は、それぞれプログラムを再起動   FXP転送を使用するには、FXP対応のクライアントでないと意味ありません。 [1]: https://ja.wikipedia.org/wiki/File_eXchange_Protocol -------------------------------------------------------------------------------- title: "openSUSE12.1でCtrlとCapsLockの入れ替え" date: "2012-03-15" url: https://scribble.washo3.com/linux/opensuse12-1%E3%81%A7ctrl%E3%81%A8capslock%E3%81%AE%E5%85%A5%E3%82%8C%E6%9B%BF%E3%81%88.html -------------------------------------------------------------------------------- openSUSE12.1 64bit上のKDE環境で、GUIによるCtrlとCapsLockの入れ替え方法が分からなかったので、下記で対応。 コマンドライン
    # setxkbmap -option "ctrl:swapcaps"
    
    
    これでは、一時しのぎなので、常時有効にするには~/、.Xmodmapを作成
    keycode 37 = Caps_Lock
    keycode 66 = Control_L
    clear Lock
    clear Control
    add Lock = Caps_Lock
    add Control = Control_L
    
    -------------------------------------------------------------------------------- title: "Alfredのホットキーで呼び出すとき、必ず英字入力にする" date: "2012-03-13" url: https://scribble.washo3.com/mac/alfred-hotkey-inputmethod.html -------------------------------------------------------------------------------- Alfredのホットキーで呼び出した時の入力って、ほとんどがコマンド入力すると思うのですが、日本語入力になってて、イライラすることありませんか? 設定で、ホットキーを呼び出したときに、強制的に英字入力にすることが出来るので、設定しましょう。 AlfredのPreferencesを開き、「Advanced」–>「Keyboard」–>「Force Keyboard」をU.S.に設定するだけです。(環境によっては、U.S.の表記が違う事もあります) Alfred Preferences これで、もうイライラすることは、なくなるでしょう。 > [][1] **Alfred** 1.0 容量 : 1.6 MB リリース日 : 2010/12/30 カテゴリ : 仕事効率化 価格 : 無料 販売元: Running with Crayons Ltd AppStoreでの評価 : 5.0 AppStoreでチェック → Alfred – Running with Crayons Ltd
    [1]: https://click.linksynergy.com/fs-bin/click?id=3P/rhJtH9IQ&subid=0&offerid=94348.1&type=10&tmpid=3910&RD_PARM0=https%3A%2F%2Fitunes.apple.com%2Fjp%2Fapp%2Falfred%2Fid405843582%3Fmt%3D12%2526uo%3D4&RD_PARM1=https%3A%2F%2Fitunes.apple.com%2Fjp%2Fapp%2Falfred%2Fid405843582%3Fmt%3D12%2526uo%3D4 -------------------------------------------------------------------------------- title: "WordPressのmime typeを追加したい" date: "2012-03-09" url: https://scribble.washo3.com/wordpress/wordpress%E3%81%AEmime-type%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%9F%E3%81%84.html -------------------------------------------------------------------------------- WordPressでは、メディアアップロードでアップロード出来るフォーマットが決められているため、それ以外のファイル形式は、許可されていません。 たまに、この対応していないファイルをアップロードしたいのになーと言う時があります。 管理者等で、カスタマイズ出来る方でしたら、wp-include/function.phpを修正すれば、即、可能となるでしょう。
    function get_allowed_mime_types() {
    
    static $mimes = false;
    if ( !$mimes ) {
    
    // Accepted MIME types are set here as PCRE unless provided.
    $mimes = apply_filters( 'upload_mimes', array(
    'jpg|jpeg|jpe' => 'image/jpeg',
    'gif' => 'image/gif',
    'reg' => 'application/octet-stream',                   <-----追加したいファイル形式
    ......略........
    
    
    でも、WordPress更新したりすると、あっさり消えてしまうので、プラグイン導入しておいた方が無難かもしれません。 「[PJW Mime Config][1]」と言うプラグインを導入し、 File extensionに拡張子を入れ、Mime typeに見合ったmime typeを記述すれば良いだけです。 Mime typeの記述が明確でない場合には、”application/octet-stream”を記述すれば良いでしょう。 ただし、危険を伴うこともお忘れなく! [1]: https://wordpress.org/extend/plugins/pjw-mime-config/ -------------------------------------------------------------------------------- title: "RedHat系のOSで、不要になったパッケージを削除" date: "2012-03-08" url: https://scribble.washo3.com/linux/redhat-yum-remove-package-cleanup.html -------------------------------------------------------------------------------- package-cleanupと言うコマンドを利用するが、デフォルトで入ってない場合がある。 入ってない場合は、下記でインストール
    # yum install yum-utils
    
    ### **不要なパッケージを探す**
    # package-cleanup --leaves
    Setting up yum
    libyaml-0.1.4-1.el5.rf.i386
    
    ### **不要なパッケージを削除**
    # yum remove libyaml-0.1.4-1.el5.rf.i386
    
    -------------------------------------------------------------------------------- title: "LionでのFTPサーバ設定" date: "2012-03-08" url: https://scribble.washo3.com/mac/lion%E3%81%A7%E3%81%AEftp%E3%82%B5%E3%83%BC%E3%83%90%E8%A8%AD%E5%AE%9A.html -------------------------------------------------------------------------------- Mac OS X Lion(10.7.x)では、セキュリティ上、FTPサービスの存在が隠されているらしいですが、下記でOn/Off出来るようです。 起動
    # launchctl load -w /System/Library/LaunchDaemons/ftp.plist
    
    
    停止
    # launchctl unload -w /System/Library/LaunchDaemons/ftp.plist
    
    
    -------------------------------------------------------------------------------- title: "Windows7 64bitでのCapsLockとCtrlの入れ替え" date: "2012-02-28" url: https://scribble.washo3.com/windows/windows7-64bit%E3%81%A7%E3%81%AEcapslock%E3%81%A8ctrl%E3%81%AE%E5%85%A5%E3%82%8C%E6%9B%BF%E3%81%88.html -------------------------------------------------------------------------------- Windows系のキーボードは、Aキーの隣がCapsLockの配置になっていることが多い。 Aの左は、やはりCtrlでないと、操作性が悪いので変更。 * レジストリ エディタ 起動 * HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layoutまで展開 (最後のKeyboard Layoutsと間違わないように) * 右の空白欄にて、右クリックし、新規作成で、バイナリ値を選択 * キーの名前:Scancode Mapとし、キーの値に下記コードを記述 00,00,00,00,00,00,00,00,03,00,00,00,1d,00,3a,00,3a,00,3a,00,00,00,00,00 この方法の他に、テキストファイルに下記を記述し、登録する方法もありますね。 > Windows Registry Editor Version 5.00 > > [HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] > “Scancode Map”=hex:00,00,00,00,00,00,00,00,03,00,00,00,1d,00,3a,00,3a,00,3a,00,00,00,00,00 拡張子を.regにして保存し、ダブルクリックするだけなので、こちらの方が簡単かも。 このファイルを置いておきますので、自己責任で使用してください。([ctrl-caps.reg][1]{.mtli_attachment.mtli_txt}) (ダウンロード後に、.txtを消して、ctrl-caps.regとしてね。) Windows再起動後に有効になっているはず。 [1]: /img/wp/2012/02/ctrl-caps.reg_.txt -------------------------------------------------------------------------------- title: "App Storeのデバッグメニュー" date: "2012-02-24" url: https://scribble.washo3.com/mac/app-store-debug.html -------------------------------------------------------------------------------- 滅多に利用することはありませんが、Mac上App Storeアプリのデバッグメニューの出し方です。 ターミナルから、下記1行を入力し、
    $ defaults write com.apple.appstore ShowDebugMenu -bool true
    
    App Store ..を起動すると、Debugメニューが現れます。 -------------------------------------------------------------------------------- title: "Xcodeをダウングレード" date: "2012-02-24" url: https://scribble.washo3.com/mac/xcode%E3%82%92%E3%83%80%E3%82%A6%E3%83%B3%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89.html -------------------------------------------------------------------------------- 現時点での最新Xcodeは4.3であり、App Storeからインストールすると、この最新バージョンがインストールされてしまいます。 Xcode 4.3では、今までのXcodeのパスが変更になっていたり、コマンドラインツールがオプションになってたりしてます。 また、一部のソフト(Intel Forttan/C)がXcode 4.3非対応で、インストール出来なく、やむなくダウングレードした。 1. まずは、Xcode 4.3をアンインストール そのまま、/Application/Xcode.appをゴミ箱に入れて消去 2. Xcode 4.xの何れかを、「[Downloads for Apple Developers][1]」(要アカウント)にて、ダウンロード 3. ダウンロードしたファイルをマウントして、インストール 以上 [1]: https://developer.apple.com/downloads/index.action -------------------------------------------------------------------------------- title: "HomebrewのUpdateで失敗したときの対処" date: "2012-02-23" url: https://scribble.washo3.com/mac/homebrew%E3%81%AEupdate%E3%81%A7%E5%A4%B1%E6%95%97%E3%81%97%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%AE%E5%AF%BE%E5%87%A6.html -------------------------------------------------------------------------------- MacのHomebrewで、久しぶりにアップデートをかけたらエラーが出た。
    $ brew update
    remote: Counting objects: 6240, done.
    remote: Compressing objects: 100% (2008/2008), done.
    remote: Total 5606 (delta 4174), reused 4882 (delta 3584)
    Receiving objects: 100% (5606/5606), 884.05 KiB | 383 KiB/s, done.
    Resolving deltas: 100% (4174/4174), completed with 525 local objects.
    From git://github.com/mxcl/homebrew
       0db9961..51d054c  master     -> origin/master
    error: unable to unlink old 'README.md' (Permission denied)
    Updating 0db9961..51d054c
    Error: Failed while executing git pull  origin refs/heads/master:refs/remotes/origin/master
    
    古くなっているので、gitを更新みたいな感じなので、それなりにやってみた。 ちょっと、無駄もあるかもしれないけど。
    $ cd `brew --prefix`
    $ git fetch origin
    remote: Counting objects: 34, done.
    remote: Compressing objects: 100% (15/15), done.
    remote: Total 30 (delta 17), reused 27 (delta 14)
    Unpacking objects: 100% (30/30), done.
    From git://github.com/mxcl/homebrew
       0f95335..8a968e9  gh-pages   -> origin/gh-pages
       
    $ brew doctor
    ...
    ==> You have uncommitted modifications to Homebrew's core.
    Unless you know what you are doing, you should run:
    cd /usr/local && git reset --hard
    
    $ git reset --hard
    HEAD is now at 0db9961 PySide: Update to 1.1.0
    
    $ git fetch git://github.com/mxcl/homebrew.git
    From git://github.com/mxcl/homebrew
     * branch            HEAD       -> FETCH_HEAD
    waiMac:local washo$ git reset FETCH_HEAD
    Unstaged changes after reset:
    M	Library/Aliases/bjam
    ....
    M	share/man/man1/brew.1
    
    
    $ brew update
    Already up-to-date.
    
    -------------------------------------------------------------------------------- title: "ScientificLinux 6.1から6.2へのアップグレード" date: "2012-02-22" url: https://scribble.washo3.com/linux/scientificlinux-6-1%E3%81%8B%E3%82%896-2%E3%81%B8%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89.html -------------------------------------------------------------------------------- アップグレードする前に、[6.2のリリースノート][1]を見ましょう。 ### 現状のバージョン確認
    $ cat /etc/redhat-release
    Scientific Linux release 6.1 (Carbon)
    $ rpm -qa sl-release --qf '%{v}\n'
    6.1
    
    ### sl.repoのバックアップ 6.2へバージョンアップすると、/etc/yum.repo.d/sl.repoとsl-other.repoが更新されますので、カスタマイズしている方は、バックアップをとっておく。(sl.repo.rpmsaveが自動的にバックアップされるので必要ないかも) 小生は、カスタマイズしていないので、そのまま次へ進む ### 現状のシステムを更新 必要ないかもしれませんが、一応、6.1の最新バージョンにアップデートしておきます。
    # yum update
    # yum clean all
    
    ### リポジトリを6.2へ更新 いよいよ6.1から6.2へリポジトリを切り替えます。
    # yum --releasever=6.2 update sl-release
    Running Transaction
    Updating : sl-release-6.2-1.1.x86_64 1/2
    Cleanup : sl-release-6.1-2.x86_64 2/2
    
    Updated:
    sl-release.x86_64 0:6.2-1.1
    
    ### リポジトリ確認
    # cat /etc/redhat-release
    Scientific Linux release 6.2 (Carbon)
    # rpm -qa sl-release --qf '%{v}\n'
    6.2
    
    ### システム・パッケージを6.2へ更新
    # yum update
    ...
    ...略
    yum-plugin-security noarch 1.1.30-10.el6 sl 36 k
    
    Transaction Summary
    ===========================================================================================================================================================
    Install 3 Package(s)
    Upgrade 95 Package(s)
    
    Total download size: 35 M
    Is this ok [y/N]: y
    …..
    yum-autoupdate.noarch 5:2-4.2 zlib.x86_64 0:1.2.3-27.el6
    
    Complete!
    
    これで、sl6の6.2へのアップグレードが完了しました。 出来れば、再起動した方が好ましいでしょう。 再起動後、無事、立ち上がり、「Scientific Linux release 6.2 (Carbon)」のログイン画面が出てきたら、終了です。 /boot領域が多くないので、私の環境では、古いKernelを削除しておいた。
    # package-cleanup --oldkernels
    
    [1]: https://www.scientificlinux.org/distributions/6x/rnotes/sl-release-notes-6.2.html -------------------------------------------------------------------------------- title: "Mac OS XでのRamdisk作成方法" date: "2012-02-16" url: https://scribble.washo3.com/mac/mac-os-x%E3%81%A7%E3%81%AEramdisk%E4%BD%9C%E6%88%90%E6%96%B9%E6%B3%95.html -------------------------------------------------------------------------------- Linux/UnixだとtmpfsでサクッとRamdisk作れるんだけど、Mac OS X(10.6.x)では、少し特殊なのですぐ忘れて仕舞うのよね〜。 たとえば、500MのRamdiskを作る場合、
    $ hdid -nomount ram://$((2048*500))
    /dev/disk4   <--空いてるディスク番号に自動で割り当てられる
    
    $ newfs_hfs -v ramdisk /dev/disk4
    Initialized /dev/rdisk4 as a 500 MB HFS Plus volume
    
    $ diskutil mount /dev/disk4
    Volume ramdisk on /dev/disk4 mounted
    
    
    [][1] 後は、通常のディスクとして利用すれば良い。 アンマウントするには、そのまま取り出しかゴミ箱直行。 せっかくCUIでマウントしてきたので、アンマウントは、
    $ hdiutil eject /dev/disk4
    "disk4" unmounted.
    "disk4" ejected.
    
    
    ログイン後、すぐにRamdiskをマウントしたい場合は、上記でマウントしたシェルスクリプトを作成し、ログインフックに登録すれば可能ですね。 この方法も、すぐ忘れるので、また後日記載したいと思います。 [1]: /img/wp/2012/02/ramdisk.jpg -------------------------------------------------------------------------------- title: "Scientifix Linux 6.1でNFSがアンマウント出来ないバグ" date: "2012-02-11" url: https://scribble.washo3.com/linux/scientifix-linux-6-1-nfs-utils-bug.html -------------------------------------------------------------------------------- sl6上で、nfs+autofsを起動してたところ、ルートディレクトリ(/)にcoreを沢山吐いて、dmesgではアンマウント出来ないメッセージが出てた。 手動でアンマウントを実行してもアンマウントされず、nfsやautofsを再起動しても全くダメ。 エラーの内容↓ > $dmesg > > umount.nfs[26700]: segfault at 19 ip 00007fa7f3a6b69a sp 00007fffa16fe5a0 error 4 in libc-2.12.so[7fa7f39f4000+197000] どうやら、nfs-utilsのバージョンによるバグっぽいです。 ダウングレードしたところ、今のところ問題なく動作してるのでメモしておく。
    # yum downgrade nfs-utils
    
    Loaded plugins: fastestmirror, refresh-packagekit
    Setting up Downgrade Process
    Loading mirror speeds from cached hostfile
    * sl: ftp.scientificlinux.org
    * sl-security: ftp.scientificlinux.org
    Resolving Dependencies
    --> Running transaction check
    ---> Package nfs-utils.x86_64 1:1.2.3-15.el6 will be a downgrade
    ---> Package nfs-utils.x86_64 1:1.2.3-15.el6.0.sl6 will be erased
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ================================================================================
    Package Arch Version Repository Size
    ================================================================================
    Downgrading:
    nfs-utils x86_64 1:1.2.3-15.el6 sl-security 307 k
    
    Transaction Summary
    ================================================================================
    Downgrade 1 Package(s)
    
    Total download size: 307 k
    Is this ok [y/N]: y
    Downloading Packages:
    nfs-utils-1.2.3-15.el6.x86_64.rpm | 307 kB 00:02
    Running rpm_check_debug
    Running Transaction Test
    Transaction Test Succeeded
    Running Transaction
    Installing : 1:nfs-utils-1.2.3-15.el6.x86_64 1/2
    Cleanup : 1:nfs-utils-1.2.3-15.el6.0.sl6.x86_64 2/2
    
    Removed:
    nfs-utils.x86_64 1:1.2.3-15.el6.0.sl6
    
    Installed:
    nfs-utils.x86_64 1:1.2.3-15.el6
    
    Complete!
    この後、unmount /mnt/shareなど、手動で行う。 念のため、nfsとautofsを再起動した。 -------------------------------------------------------------------------------- title: "QNAPのFirmwareバージョンアップをしたが・・・" date: "2012-02-03" url: https://scribble.washo3.com/network/qnap-firmaware-3-6beta.html -------------------------------------------------------------------------------- QNAP Turbo NASのバージョン 3.6 Betaが配布されていたので、バージョンアップしてみた。 詳細及びダウンロードは、[こちらから][1]。 3.6のバージョンでは、VPNやLDAPサーバ機能の他にも、いろいろ機能が追加され、LDAPサーバを試してみたかったので、バージョンアップした。 適用したのは、TS-859/TS-639/TS-439シリーズの3機種をバージョンアップしてみたのだが、TS-639では、なぜかNFSやSSHがサービス起動しているにも関わらず、接続出来なくなる症状が出た。 さらには、管理画面のネットワークで、インターフェースが表示されずローディングのままで、ネットワーク部分に不調が見られた。 あまりにも不安定だったので、恐る恐る、元のバージョン(3.5.x)にダウングレードしたところ、無事、元に戻った。 やはりベータ版なので、リスクを伴うのかもね。 [1]: https://forum.qnap.com/viewtopic.php?f=5&t=53579 -------------------------------------------------------------------------------- title: "Firefoxのキャッシュディレクトリをramdiskへ" date: "2012-02-01" url: https://scribble.washo3.com/linux/firefox%E3%81%AE%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%82%92ramdisk%E3%81%B8.html -------------------------------------------------------------------------------- さくらのVPS上で、時々Firefoxを起動する事があるけど、少しでも早いほうが良いので、キャッシュディレクトリをramdiskに設定してみた。 さくらのVPSに限ったわけではないので、通常Linux環境でも大丈夫。 1. まず、Ramdiskを作成 \# mkdir /ramdisk \# mount -t tmpfs -o size=100m /dev/shm /ramdisk 2. /ramdiskを書き込み可にしておく chownで自分用にするとか、chmodで+wとか 3. Firefox起動 4. アドレスバーに「about:config」を入力 5. 警告が出るので、「最新の注意を払って使用する」を押して 進む 6. 設定リストが表示されている部分で右クリック [右クリック]-[新規作成]-[文字列]を選択し、 “browser.cache.disk.parent_directory” を入力(”は要らんよ)「文字列を入力して下さい」 と出るので、 “/ramdisk” を入力 7. Firefox再起動 /ramdiskにCacheディレクトリが作成されていれば、無事完了です。 -------------------------------------------------------------------------------- title: "Scientific Linux 6.xにMozcをインストール" date: "2012-02-01" url: https://scribble.washo3.com/linux/scientific-linux-6-mozc-install.html -------------------------------------------------------------------------------- さくらのVPS上で運用しているsl6にMozcをインストールして、日本語が使いやすくなった。 ちなみに、Mozcって、Google日本語入力のオープンソース版の事ね。 通常のリポジトリでは、Mozcはサポートしていないので、より簡単にインストールができる[IKOINOBAのリポジトリ][1]を利用させていただきました。 1. IKOINOBAリポを/etc/yum.repos.d/に置く \# cd /etc/yum.repos.d/ \# wget https://download.opensuse.org/repositories/home:/sawaa/ScientificLinux_6/home:sawaa.repo 2. YUM更新 \# yum update 3. mozcパッケージをインストール \# yum -y install mozc+dict ibus-mozc 4. 一度、ログアウトするか再起動する 5. ibusの設定 $ ibus-setup[インプットメソッド]→[インプットメソッドの選択]→[日本語]→[Mozc]→[追加]→右の[上]・[下]でMozcを一番上に移動する 今回は、sl6の設定でしたけど、他のディストリビューション(UbuntuなどのDebian系、CentOS等のRedHat系)でも、[IKOINOBAのリポジトリ][1]で対応してます。 [1]: https://linux.ikoinoba.net/index.php?mode=page&aim=rpm_deb -------------------------------------------------------------------------------- title: "Macの標準VNCで接続すると真っ白になる" date: "2012-01-31" url: https://scribble.washo3.com/mac/mac%E3%81%AE%E6%A8%99%E6%BA%96vnc%E3%81%A7%E6%8E%A5%E7%B6%9A%E3%81%99%E3%82%8B%E3%81%A8%E7%9C%9F%E3%81%A3%E7%99%BD%E3%81%AB%E3%81%AA%E3%82%8B.html -------------------------------------------------------------------------------- Windows版やLinuxでVNC接続しても問題ないのに、Mac標準VNCを利用すると、接続後に真っ白になる。 Mac用VNCソフトウェア(Chicken of the VNCやTigerVNC)では問題なく接続出来るので、Macに標準搭載されているVNCだけの問題であるのは確か。 これを解決するためのビンゴ記事「[Macからvnc接続と真っ白対策][1]」が大変参考になりました。 要は、Mac標準搭載のVNC(画面共有)を32bitモードで開けば良かったのね。 1. フォルダへ移動 (/System/Library/CoreServices/) 2. 画面共有を選択し、「情報を見る」 3. 一般情報の中に、 「32 ビットモードで開く」にチェックを入れる [1]: https://blog.goo.ne.jp/nakano-tomofumi/e/6fe60c4edb06c30a13bfff086dd02782 -------------------------------------------------------------------------------- title: "pfsense 2.0.1でのFTP接続不具合" date: "2012-01-30" url: https://scribble.washo3.com/network/pfsense-2-0-1%E3%81%A7%E3%81%AEftp%E6%8E%A5%E7%B6%9A%E4%B8%8D%E5%85%B7%E5%90%88.html -------------------------------------------------------------------------------- 高機能ルータソフトウェアのpfsenseを現時点最新版2.0.1にバージョンアップすると、FTPに接続出来ない症状が起きる。 LAN側からWAN側へFTP接続すると、失敗することがあり、たまに正常動作することもある。 とくに、Firewall関連の設定はしておらず、FTPの制限もかけてない。 FTP以外の接続は正常なので、FTP関連で不具合が出るとすれば、一番怪しいのは、パッシブを使った接続なので、パッシブを切って接続したところ、正常に接続出来るようになった。 じゃあ、パッシブ切ればいいだけ!とは言え、LAN側に接続した機器は、数十台もあり、中にはパッシブの設定が出来ないものや、他の人が利用している機器もあるので、いちいちパッシブ切って下さいとは言えずにいる。 調べてみると、どうやら、2.0.0以前のバージョンでは、WAN側の設定欄に、FTP Helperと言うパッシブのプロキシ設定があって、ON/OFF出来たらしいのだが、2.0.1からカーネルに取り込まれたらしく、手の付けようが今の所無い状況らしい。 そんなわけで、pfsense 2.0.1からのバージョンアップを待つか、pfsenseのバージョンを下げるか、LAN側をパッシブ切って接続するか何れかの方法しかないと思われるが、pfsense 2.0以前で再構築するのが、一番、解決に早く辿り着ける方法かもしれない。 -------------------------------------------------------------------------------- title: "AppleTVのDFUモード" date: "2012-01-18" url: https://scribble.washo3.com/ios/appletv%E3%81%AEdfu%E3%83%A2%E3%83%BC%E3%83%89.html -------------------------------------------------------------------------------- リモコンのMenuボタン+再生/一時停止ボタンを同時に7秒間押し続ける。 -------------------------------------------------------------------------------- title: "アップルマークの出し方" date: "2012-01-18" url: https://scribble.washo3.com/mac/%E3%82%A2%E3%83%83%E3%83%97%E3%83%AB%E3%83%9E%E3%83%BC%E3%82%AF%E3%81%AE%E5%87%BA%E3%81%97%E6%96%B9.html -------------------------------------------------------------------------------- 時々、アップル(林檎)マークを出したい時ってあるのよね〜。  <–これ このマークの入力方法をよく忘れるのでメモ Mac OSX 上のキーボードショートカットで、 _「Option」と「Shift」押しながら「K」_ HTML上で表記するには、
    と書く
    但し、Windows環境では文字化けするので注意です。

    -------------------------------------------------------------------------------- title: "qemu-kvmアップデート後、ゲストOSが起動しなくなった" date: "2012-01-12" url: https://scribble.washo3.com/linux/qemu-kvm%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E5%BE%8C%E3%80%81%E3%82%B2%E3%82%B9%E3%83%88os%E3%81%8C%E8%B5%B7%E5%8B%95%E3%81%97%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F.html -------------------------------------------------------------------------------- 本日、sl6のYUM更新で、kvm,qemu関連(qemu-kvm)をアップデートした後に、再起動したら、ゲストOSが起動しなくなってしまった。 ゲストOSを起動しようとすると、下記のエラー > ドメインの復元中にエラーが発生しました: cannot send monitor command ‘{“execute”:”qmp_capabilities”}’: Connection reset by peer この対処法として、qemu内のsaveディレクトリに、ゲストOSのセーブデータが残っているのが原因なようなので、これを削除することで、解決出来るようです。
    # cd /var/lib/libvirt/qemu/save
    server1.save server2.save
    やはりセーブデータが残っていたので、これを削除。 rmで削除でなく、virshコマンドで削除なので、注意
    # virsh managedsave-remove server1
    Removed managedsave image for domain server1
    
    # virsh managedsave-remove server2
    Removed managedsave image for domain server2
    
    セーブデータ削除後、「仮想マネージャー」のGUIにて、無事起動。 ちなみに、CUIだと、下記
    # virsh start server1
    ドメイン Server1 が起動されました
    
    ゲストOS上で重要なサーバを起動しているので、ちょっぴり焦りました(^_^; 今回起こった症状の原因は、ゲストOSを停止させずに、ホストOSを再起動させた事が原因ではないかと推測しています。 ホストOSを再起動する際には、安全の為、ゲストOSを停止しておいた方が良いかもしれません。 尚、今回、の記事を参考にさせて頂いて、大変助かりました。(感謝) -------------------------------------------------------------------------------- title: "初めてのlazyアンマウント" date: "2012-01-10" url: https://scribble.washo3.com/linux/%E5%88%9D%E3%82%81%E3%81%A6%E3%81%AElazy%E3%82%A2%E3%83%B3%E3%83%9E%E3%82%A6%E3%83%B3%E3%83%88.html -------------------------------------------------------------------------------- Linux上で、アンマウントが失敗することが多々あります。 よくあるミスは、 * rootでアンマウントが必要 * マウント先に、自分がいる。もしくは作業中とか * マウント先に対して、何らかのプロセスが実行中 などなど。 ところが、プロセスも実行中でなく、rootでアンマウントを実行しても、何のエラーもないまま、アンマウントされない症状が起きた。 そんな時は、lazyアンマウントで、-lを付加して解決。
    # unmount -l /mnt/cdrom
    ちなみに、lazyアンマウントって、現在のファイルシステムの階層構造から指定されたファイルシステムを切り離し、ファイルシステムへの全ての参照がbusyでなくなった時、直ちに整理するというものらしいです。 -------------------------------------------------------------------------------- title: "ESXi 4.1を5.0へアップグレードした" date: "2012-01-10" url: https://scribble.washo3.com/%E4%BB%AE%E6%83%B3%E5%8C%96/esxi-4-1%E3%82%925-0%E3%81%B8%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89%E3%81%97%E3%81%9F.html -------------------------------------------------------------------------------- IBM x3650上でVmware ESXi 4.1をUSBにてブートして運用していたものを、ESXi 5.0へアップグレードした。 * ESXi 5.0のインストールCDをダウンロード(要登録)して、CDに焼く * ESXi 4.1内のゲストOSを停止し、一応、メンテナンスモードにした。 * 必要であれば、ここで、ゲストOSのバックアップをとっておく * ESXi 5.0のインストールCDを挿入し、再起動して、CDからブート * ドライバー等の読み込みや環境のチェックの後、ESXi4.1が入ったUSBが表示されたら、インストールするかマイグレードするか選択する。 * 今回は、ESXi 4.1からのアップグレードなので、「Force Migrate..」を選び、進む * 最終確認で、下記のようなエラーが出る * ここで、中止する場合は、Escでキャンセル、続行する場合は、F11でMigrate * 運命の分かれ道で、覚悟を決めてF11でマイグレートした * マイグレートが終了したら、CDを抜いて、再起動 * 無事、ESXi 5.0が起動 * 設定が引き継がれているか確認 * メンテナンスモード解除 * ゲストOS起動 他の参考ブログ等では、imageddを直接USBメモリに入れたESXi4.1から5.0へのアップグレードはエラーが出て、最悪、起動しなくなる恐れがあるようなので、私の場合は、たまたまラッキーだったのかもしれない?? また、ライセンスキーは、4.1のものが5.0では使用できませんので、5.0用のライセンスキーを新たに取得しなくてはならないので、注意! -------------------------------------------------------------------------------- title: "DiXim Digital TV Plusが起動出来なくなった" date: "2012-01-06" url: https://scribble.washo3.com/windows/dixim-digital-tv-plus%E3%81%8C%E8%B5%B7%E5%8B%95%E5%87%BA%E6%9D%A5%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F.html -------------------------------------------------------------------------------- 前日まで起動していた、「[DiXiM Digital TV plus][1]」が起動失敗するようになった。 起動すると、「**DiXiM Digital TV Serviceが開始できていない**」とのエラー 事前に作業していたことと言えば、ccleanerで、キャッシュや他プログラムを消去していたのが原因かな?と思い、 一度、[DiXiM Digital TV plus][1]を削除し、再インストールすることで、復帰しました。 恐らく、VC ランタイム関連ではないでしょうかね?? [1]: https://click.linksynergy.com/fs-bin/click?id=3P/rhJtH9IQ&subid=&offerid=178008.1&type=10&tmpid=2519&RD_PARM1=https%253A%252F%252Fwww.ioplaza.jp%252Fshop%252Fgoods%252Fgoods.aspx%253Fgoods%253D50-DXMDTVPDL-001 -------------------------------------------------------------------------------- title: "libeventのエラーでyum更新出来ない" date: "2012-01-06" url: https://scribble.washo3.com/linux/libevent%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%A7yum%E6%9B%B4%E6%96%B0%E5%87%BA%E6%9D%A5%E3%81%AA%E3%81%84.html -------------------------------------------------------------------------------- CentOS5.x上で、yum更新すると、下記のエラーのまま放置状態だったので、ようやく手をつけた。 > –> Finished Dependency Resolution > Error: Missing Dependency: libevent-1.4.so.2 is needed by package memcached memcachedは、remiパッケージから入れたもので、今回、nfsを使う用途が出てきたので、nfs-utilsをインストールしようとしたところ、やはり同じくlibeventのエラーで止まってしまう。 CentOSのリポジトリでは、libevent 1.1までしかなく、様々なプログラムが1.4を要求してくるので、手動にて更新してみた。 まず、memcachedを一旦削除。
    # yum remove memcached
    libevent 1.4を[ここ][1]からダウンロード(i386)
    # wget "ftp://ftp.pbone.net/mirror/www.startcom.org/AS-5.0.0/updates/i386/libevent-1.4.13-1.i386.rpm"
    libeventを手動更新
    # rpm -Uvh libevent-1.4.13-1.i386.rpm
    yum更新して、再度、memcachedインストール
    # yum clean all
    # yum update
    # yum install memcached
    
    今回、たまたまライブラリ関連のlibeventを手動更新したが、整合性がとれなくなり、プログラムが起動しなくなる恐れもあるので、真似する方は自己責任で! [1]: https://rpm.pbone.net/index.php3/stat/4/idpl/13871321/dir/startcom_5/com/libevent-1.4.13-1.i386.rpm.html -------------------------------------------------------------------------------- title: "FLVの編集ソフト" date: "2011-12-27" url: https://scribble.washo3.com/windows/flv%E3%81%AE%E7%B7%A8%E9%9B%86%E3%82%BD%E3%83%95%E3%83%88.html -------------------------------------------------------------------------------- YouTubeなどでダウンロードした動画を編集したいときがある。 そんな時のフリー動画ソフト * [RichFlv][1] * [movica][2] * [Free Video Dub][3] [1]: https://www.gigafree.net/media/flashe/richflv.html [2]: https://www.gigafree.net/media/me/movica.html [3]: https://www.dvdvideosoft.com/download/FreeVideoDub.exe -------------------------------------------------------------------------------- title: "Using intrapositioned negation..のエラーはiptablesの記述ミスだった" date: "2011-12-24" url: https://scribble.washo3.com/linux/using-intrapositioned-negation-iptables.html -------------------------------------------------------------------------------- 前記での「[メモリ開放スクリプトをCronで実行][1]」のシェルスクリプトをCronで実行させると、下記のエラーが出てた。 > Using intrapositioned negation (\`–option ! this\`) is deprecated in favor of extrapositioned (\`! –option this\`). スクリプトは単純なものなので、問題になりそうな記述ではなかったが、どうやら、システムで設定していたiptablesの書式の誤りが原因だった。 誤りの記述 > iptables -A INPUT -s ! $LOCALNET …… > iptables -A INPUT -d ! $LOCALNET …… 正しい記述 > iptables -A INPUT ! -s $LOCALNET …… > iptables -A INPUT ! -d $LOCALNET …… !の場所が入れ替わってます。 [1]: https://scribble.washo3.com/linux/%e3%83%a1%e3%83%a2%e3%83%aa%e9%96%8b%e6%94%be%e3%82%b9%e3%82%af%e3%83%aa%e3%83%97%e3%83%88%e3%82%92cron%e3%81%a7%e5%ae%9f%e8%a1%8c.html "メモリ開放スクリプトをCronで実行" -------------------------------------------------------------------------------- title: "VPNサブネットから外部に接続出来なくなった?" date: "2011-12-24" url: https://scribble.washo3.com/linux/vpn%E3%82%B5%E3%83%96%E3%83%8D%E3%83%83%E3%83%88%E3%81%8B%E3%82%89%E5%A4%96%E9%83%A8%E3%81%AB%E6%8E%A5%E7%B6%9A%E5%87%BA%E6%9D%A5%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F%EF%BC%9F.html -------------------------------------------------------------------------------- IPsec+L2TPでVPN構築し、問題なく動作していたのに、久しぶりに接続してみたところ、VPNサブネットから外部に接続出来なくなっていた。 原因は、OSのkernelをアップデートした後、再起動したら、iptablesの設定を保存していなくて、設定が戻っていたため。 再度、iptablesでNAT設定して保存
    # iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
    # /etc/init.d/iptables save
    
    192.168.1.0とeth0は自分の環境に合わせること。 -------------------------------------------------------------------------------- title: "bash-completionをインストール" date: "2011-12-24" url: https://scribble.washo3.com/linux/bash-completion%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB.html -------------------------------------------------------------------------------- CentOS6/sl6では、bash-completionが標準では入ってないのね。 epelのレポジトリを登録した後、下記でインストール
    # yum install -y bash-completion --enablerepo=epel
    
    ちなみに、bash-completion導入すると、コマンドの引数も保管してくれるので便利。 -------------------------------------------------------------------------------- title: "mkpasswdをインストールするには?" date: "2011-12-22" url: https://scribble.washo3.com/linux/mkpasswd%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%EF%BC%9F.html -------------------------------------------------------------------------------- 最近のRHEL6系(CentOSやScientific Linux)では、パスワード生成プログラムのmkpasswdが標準で入ってない。 yum search mkpasswdなどと、タイプしても見つかりません。 どうやら、expectのパッケージに入っているようなので、
    # yum install -y expect
    これで、mkpasswdが使えるようになる。 -------------------------------------------------------------------------------- title: "VirtualBox_Extension_Packのアップグレードに失敗" date: "2011-12-19" url: https://scribble.washo3.com/windows/virtualbox_extension_pack%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89%E3%81%AB%E5%A4%B1%E6%95%97.html -------------------------------------------------------------------------------- VirtualBox Extension Packの新しいバージョンが出てるので、アップグレードしろとの警告が出るので、ダウンロードし、アップグレードしようとすると下記のようなエラーでアップグレード出来ない。 > Failed to install the Extension Pack E:/install/Virtualßox > 4.O.12.72916/Oracle\_VM\_VirtualBox\_Extension\_Pack-4.O.12-72916.vbox- > extpack. > > The installer failed with exit code 1: VBoxExtPackHelperApp.exe: error: Failed to > rename the extension pack directory: VERR\_ALREADY\_EXISTS 既に導入されているので、リネームか削除し、再インストールしても出来そうだけど、CUIでコマンドも用意されているようだ。
    C:\Program Files\Oracle\VirtualBox>vboxmanage extpack cleanup
    Successfully performed extension pack cleanup
    
    この後、再度アップグレードしたら、出来た。 -------------------------------------------------------------------------------- title: "メモリ開放スクリプトをCronで実行" date: "2011-12-15" url: https://scribble.washo3.com/linux/%E3%83%A1%E3%83%A2%E3%83%AA%E9%96%8B%E6%94%BE%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%92cron%E3%81%A7%E5%AE%9F%E8%A1%8C.html -------------------------------------------------------------------------------- Linuxでも物理メモリが段々圧迫されて、未使用領域が少なくなってきます。 それほど、気にする必要はないのですが、知ってしまうと気になってしまうんですよね。 って事で、「[CentOS 5で「空きメモリ」を増やす方法][1]」のページを参考に、シェルスクリプトを借用させて頂きました。
    date;
    echo "total/used/free/shared/buffers/cached";
    echo "before";
    free -m|grep Mem:;
    sync;
    echo 3 > /proc/sys/vm/drop_caches;
    echo 0 > /proc/sys/vm/drop_caches;
    echo "after";
    free -m|grep Mem:;
    
    このスクリプトに、実行権限を与えて、/etc/cron.daily/に放り込むだけ。 但し、一度、手動でスクリプトを実行させ、問題ないことを確認した方が良いでしょう。 私の環境では、下記のようにメモリが開放されました。 >             total used free shared buffers cached > before > Mem: 64396 52907 11489 0 695 49146 > after > Mem: 64396 1791 62605 0 0 34 ちなみに、このスクリプトは、CentOS,Redhat,Ubuntu,Fedoraでも汎用性があるようです。 詳しくは、「[減り続けるメモリ残量! 果たしてその原因は!?][2]」をご覧頂ければと思います。 [1]: https://d.hatena.ne.jp/ytooyama/20110212/1297493287 [2]: https://www.atmarkit.co.jp/flinux/rensai/tantei01/bangai01c.html -------------------------------------------------------------------------------- title: "iptablesにVPN用記述を追記するのを忘れてた" date: "2011-12-15" url: https://scribble.washo3.com/linux/iptables%E3%81%ABvpn%E7%94%A8%E8%A8%98%E8%BF%B0%E3%82%92%E8%BF%BD%E8%A8%98%E3%81%99%E3%82%8B%E3%81%AE%E3%82%92%E5%BF%98%E3%82%8C%E3%81%A6%E3%81%9F.html -------------------------------------------------------------------------------- Linuxに強固なファイヤーウォール設定をした後に、VPNが繋がらなくなった。 iptables書式(ファイヤーウォール設定)は[コレ][1]。 下記の記述が抜けてたので、追加。
    # L2TP/IPSec
    iptables -A INPUT -p tcp --dport 1701 -j ACCEPT_COUNTRY
    iptables -A INPUT -p udp --dport 1701 -j ACCEPT_COUNTRY
    iptables -A INPUT -p udp --dport 500 -j ACCEPT_COUNTRY
    iptables -A INPUT -p tcp --dport 500 -j ACCEPT_COUNTRY
    iptables -A INPUT -p tcp --dport 4500 -j ACCEPT_COUNTRY
    iptables -A INPUT -p udp --dport 4500 -j ACCEPT_COUNTRY
    iptables -A INPUT -p esp -j ACCEPT_COUNTRY
    
    [1]: https://blog.washo3.com/memo/%E3%81%95%E3%81%8F%E3%82%89vps/%E3%83%95%E3%82%A1%E3%82%A4%E3%82%A2%E3%82%A6%E3%82%A9%E3%83%BC%E3%83%AB%E8%A8%AD%E5%AE%9A/ -------------------------------------------------------------------------------- title: "nginxをyumでアップデート" date: "2011-12-08" url: https://scribble.washo3.com/linux/nginx%E3%82%92yum%E3%81%A7%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88.html -------------------------------------------------------------------------------- さくらのVPS上のsl6で自コンパイルして稼働しているnginxを1.0.4から1.0.10へyumにてアップデートした。 sl6の標準パッケージでは、nginxが入っていないので、RHELのリポジトリを追加してyumで更新しました。 1. nginx用のリポジトリ作成 \# vi /etc/yum.repo.d/nginx.repo

    [nginx]
    name=nginx repo
    baseurl=https://nginx.org/packages/rhel/$releasever/$basearch/
    gpgcheck=0
    enabled=1
    
    2. sl6では、$releaseverを置き換え $releaseverの部分を6に置き換える 3. 保存して、更新
    # yum update
    4. アップデート
    ちなみに、他のプラットフォームでもリポジトリが用意されているので、CentOS,Ubuntu,Debianはこちらを参照の事。
    -------------------------------------------------------------------------------- title: "/bootの容量が足りなくてアップデート出来ない" date: "2011-12-01" url: https://scribble.washo3.com/linux/boot%E3%81%AE%E5%AE%B9%E9%87%8F%E3%81%8C%E8%B6%B3%E3%82%8A%E3%81%AA%E3%81%8F%E3%81%A6%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E5%87%BA%E6%9D%A5%E3%81%AA%E3%81%84.html -------------------------------------------------------------------------------- sl6でYUM更新により、Kernelのアップデートをしようとしたら、/boot領域の容量が足りないエラー。 > Error Summary > ————- > Disk Requirements: > At least 2MB more space needed on the /boot filesystem. システム上、/boot領域を増やせば解決するのは分かっているけど、LVMで管理してないため、面倒。 なので、ここは古いカーネルを削除する事で対処した。 最新のOS(sl6やCentOS6)では、既に導入されているpackage-cleanupを利用すると楽。 (古いシステム等でインストールされていない時は、yum-utilsパッケージをインストールすれば良い) 古いカーネルの削除
    # package-cleanup --oldkernels
    
    Loaded plugins: fastestmirror, refresh-packagekit
    Loading mirror speeds from cached hostfile
    * sl: ftp2.scientificlinux.org
    * sl-security: ftp2.scientificlinux.org
    --> Running transaction check
    ---> Package kernel.x86_64 0:2.6.32-131.6.1.el6 will be erased
    ---> Package kernel-devel.x86_64 0:2.6.32-131.6.1.el6 will be erased
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ================================================================================
    Package Arch Version Repository Size
    ================================================================================
    Removing:
    kernel x86_64 2.6.32-131.6.1.el6 @sl-security 108 M
    kernel-devel x86_64 2.6.32-131.6.1.el6 @sl-security 23 M
    
    Transaction Summary
    ================================================================================
    Remove 2 Package(s)
    
    Installed size: 131 M
    Is this ok [y/N]: y
    Downloading Packages:
    Running rpm_check_debug
    Running Transaction Test
    Transaction Test Succeeded
    Running Transaction
    Erasing : kernel-devel-2.6.32-131.6.1.el6.x86_64 1/2
    Erasing : kernel-2.6.32-131.6.1.el6.x86_64 2/2
    Unable to connect to dbus
    
    Removed:
    kernel.x86_64 0:2.6.32-131.6.1.el6 kernel-devel.x86_64 0:2.6.32-131.6.1.el6
    
    Complete!
    
    この後、再度yum更新でOK -------------------------------------------------------------------------------- title: "無視しても構わないアクセス権検証の警告" date: "2011-11-10" url: https://scribble.washo3.com/mac/%E7%84%A1%E8%A6%96%E3%81%97%E3%81%A6%E3%82%82%E6%A7%8B%E3%82%8F%E3%81%AA%E3%81%84%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E6%A8%A9%E3%81%AE%E6%A4%9C%E8%A8%BC%E3%81%AE%E8%AD%A6%E5%91%8A.html -------------------------------------------------------------------------------- Macの調子が悪かったので、ディスクユーティリティでアクセス権の検証を行ったところ、下記のような修復できない警告があった。 > 警告:SUID ファイル「System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/MacOS/ARDAgent」が変更されていて、修復されません。 調べてみると、アップル公式の記事「[Mac OS X:ディスクユーティリティのアクセス権の修復で無視しても構わないメッセージが表示される][1]」によると、無視して良いらしい。 それにしても、無視して良いメッセージが多すぎる。 ディスクユーティリティ内で、「無視して構いません」とのメッセージを出して欲しいものだ。 [1]: https://support.apple.com/kb/TS1448?viewlocale=ja_JP -------------------------------------------------------------------------------- title: "NVR500のNAT消去タイマー設定" date: "2011-11-10" url: https://scribble.washo3.com/network/nvr500%E3%81%AEnat%E6%B6%88%E5%8E%BB%E3%82%BF%E3%82%A4%E3%83%9E%E3%83%BC%E8%A8%AD%E5%AE%9A.html -------------------------------------------------------------------------------- YAMAHAルーター NVR500配下のクライアントPCで、一定時間が経つと、セッションが切れるようなので、調べてみたところ、どうやらNATタイマーが原因のようだ。 従って、これに関係するであろうNAT消去タイマーを弄ってみた。 ### NAT消去タイマー設定手順 * SSHでNVR500にログイン * nat情報を確認 > show config |grep nat Searching … ip lan2 nat descriptor 200 nat descriptor type 200 masquerade nat descriptor address outer 200 primary * NAT消去タイマー設定 > nat descriptor timer 200 1800 >nat descriptor timer 200 tcpfin 120 * 適用されたか、再度、情報を確認する ### 初期値 * time * [設定値] : 消去タイマーの秒数 (30..21474836) * [初期値] : 900 * time2 * [設定値] : TCP/FIN 通過後の消去タイマーの秒数 (1-21474836) * [初期値] : 60 ### 参考 * 設定手順で、「このコマンドは管理レベルでのみ使用できます」のような管理者権限を要求される場合は、administratorでログイン > administrator Password: * 消去タイマーを長くすると、 NATテーブルが溢れる場合がある。 torrentなどは、短くした方が良いらしい。 -------------------------------------------------------------------------------- title: "Macでssh-copy-id" date: "2011-10-31" url: https://scribble.washo3.com/linux/mac%E3%81%A7ssh-copy-id.html -------------------------------------------------------------------------------- Macには、標準でssh-copy-idが入ってないので、不便。 利用するには、 * Homebrew導入済みの場合は、 \# brew install ssh-copy-id * Homebrewを利用しない場合は、他のLinuxからssh-copy-idをコピーしてくる (ssh-copy-idは、単なるシェルスクリプトなので、動くはず)
    参考までに、利用の流れは、
    1. ローカル側で、パスフレーズなしの鍵作成
      $ ssh -t rsa
    2. ssh-copy-idを利用して、公開鍵をリモートへコピー
      $ ssh-copy-id -i ~/.ssh/id_rsa.pub foo@remote.server
    3. リモート側のパスワードを聞かれるので、入力
    4. リモート側のAuthorized_keyに鍵が保存される
    5. ローカル側からリモート側へ、SSH接続し、パスなしにログインできれば完了
    -------------------------------------------------------------------------------- title: "PS3 Media Server 1.5へアップデート" date: "2011-10-24" url: https://scribble.washo3.com/life/ps3-media-server-1-5-update.html -------------------------------------------------------------------------------- PS3 Media Serverのv1.50 b1が公開されていたので、アップデートした。 DTS/DTS-HDや写真データ RAWのサポート、Flickr,PicasaWebにも対応したようだ。 -------------------------------------------------------------------------------- title: "SubsonicでFLAC再生時のエラー" date: "2011-10-18" url: https://scribble.washo3.com/linux/subsonic%E3%81%A7flac%E5%86%8D%E7%94%9F%E6%99%82%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC.html -------------------------------------------------------------------------------- Subsonic上でflac形式を再生したところ、何も反応せず。 ログ(/var/subsonic/subsonic.log)を見てみると、下記のエラー。 > java.io.IOException: Cannot run program “/var/subsonic/transcode/ffmpeg”: java.io.IOException: error=2, No such file or directory java.io.IOExceptionって何だろう?と思っていたら、単にffmpegがインストールされていないだけだった。(faadも)(><) sl6上で、subsonicを起動しているので、下記でインストールしたら、再生出来た。
    # yum install ffmpeg --enablerepo=rpmforge
    -------------------------------------------------------------------------------- title: "iOS5から4.xへダウングレードする方法" date: "2011-10-17" url: https://scribble.washo3.com/ios/ios5%E3%81%8B%E3%82%894-x%E3%81%B8%E3%83%80%E3%82%A6%E3%83%B3%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.html -------------------------------------------------------------------------------- あまり需要はないかもしれないけど、iOS 5から4.xにダウングレードする方法 ## ダウングレード ### iTunesを旧バージョンへ戻す 1. iTunes , QuickTime , Bonjour , Apple Application Support , Apple Mobile Device Supportを削除 2. 古いバージョンのiTunesをダウンロード [10.2.2 32bit][1] [ 10.2.2 64bit][2] 3. iTunesをインストール 4. PCを再起動 ### Hostsファイルを修正
    1. iTunesが起動していたら、終了しておく
    2. C:¥¥Windows¥System32¥drivers¥etc¥hostsを管理者権限で開く
    3. 下記の情報を追記する
      74.208.105.171 gs.apple.com
      74.208.10.249 gs.apple.com
    4. 保存

    DFUモードで、iOSデバイスを起動

    1. 電源ボタンを2秒押す。
    2. 電源ボタンを押したまま、ホームボタンをさらに押して10秒待つ。
    3. 電源ボタンだけを離して5秒待つ。
    PCとiOSデバイスを接続し、iTunesを起動し、Option押しながら復元ボタンをクリックし、4.xのファームウェアを選んで復元
    [1]: https://www.megaupload.com/?d=L5WI187S [2]: https://www.megaupload.com/?d=LYZKBTZS -------------------------------------------------------------------------------- title: "Dropbox 1.5 Dev" date: "2011-10-16" url: https://scribble.washo3.com/linux/dropbox-1-3-dev.html -------------------------------------------------------------------------------- 現在はStable版のようです。 開発版なので、自己責任で。 Windows: https://dl-web.dropbox.com/u/17/Dropbox%201.5.44.exe Mac OS X: https://dl-web.dropbox.com/u/17/Dropbox%201.5.44.dmg Linux x86_64: https://dl-web.dropbox.com/u/17/dropbox-lnx.x86_64-1.5.44.tar.gz Linux x86: https://dl-web.dropbox.com/u/17/dropbox-lnx.x86-1.5.44.tar.gz -------------------------------------------------------------------------------- title: "Officeでのセル内改行" date: "2011-10-12" url: https://scribble.washo3.com/windows/office%E3%81%A7%E3%81%AE%E3%82%BB%E3%83%AB%E5%86%85%E6%94%B9%E8%A1%8C.html -------------------------------------------------------------------------------- たまにOffice使うと、セル内での改行方法を忘れるのでメモ 対象:Office 2010 * Windows:    Alt+Enter * Mac:    Option+Command+Enter Mac上でOption+Command+EnterでiTunesが起動したのは、Alfred設定が有効になってた為。 -------------------------------------------------------------------------------- title: "scpやrsyncでstallする時の対処" date: "2011-10-11" url: https://scribble.washo3.com/linux/scp%E3%82%84rsync%E3%81%A7stall%E3%81%99%E3%82%8B%E6%99%82%E3%81%AE%E5%AF%BE%E5%87%A6.html -------------------------------------------------------------------------------- **scpやrsyncで、インターネット越しにファイル転送すると、よくstallして、転送が失敗するときの対処法。** 下記のように、scpやrsyncでファイル転送に失敗することがよく起きます。 > $ scp ja\_windows\_server\_2008\_r2_\_x64\_dvd_x15-50370.iso remote:/tmp/. > ja\_windows\_server\_2008\_r2_\_x64\_dvd_x15-50370.   0% 7184KB   1.4MB/s – stalled – 転送する際に、MAXでPCが頑張ってしまい、途中で息切れしてしまうのが、stallする原因のようなので、転送速度に制限をかけます。 * scpの場合 -lのオプションを付けて、その後に、値を入力(単位はKbit/秒) 例: scp -l 600 xxxx.iso remote:/tmp/. 600kb/sで転送します。(値は低い方が安定しますが、環境によって調整します) * rsyncの場合 –bwlimitオプションを付けて、その後に、値を入力(単位はKbyte/秒) 例:rsync -zauv –bwlimit=400 xxxx.iso remote:/tmp/ 600kb/sで転送します。(値は低い方が安定しますが、環境によって調整します) stallしなくても、下記のようなエラーでrsync転送に失敗することもあります。 > rsync: connection unexpectedly closed (1324 bytes received so far) [sender] > rsync error: unexplained error (code 255) at io.c(600) [sender=3.0.6] この対処として、圧縮オプション (-z)を外し、さらにtimeout(秒)を追加。 例:rsync -auv –bwlimit=400 –timeout=600 xxxx.iso remote:/tmp/ -------------------------------------------------------------------------------- title: "Office for Mac 2011のプロダクトキー変更方法" date: "2011-10-10" url: https://scribble.washo3.com/mac/office-for-mac-2011%E3%81%AE%E3%83%97%E3%83%AD%E3%83%80%E3%82%AF%E3%83%88%E3%82%AD%E3%83%BC%E5%A4%89%E6%9B%B4%E6%96%B9%E6%B3%95.html -------------------------------------------------------------------------------- Mac上で、Office 2011をインストールし、製品版のプロダクトキーを入力したのに、プロダクトキーが試用版のまま変更されない事があったので、プロダクトキー変更のメモ。 1. Officeが起動していたら、終了する 2. Finder上にて、「Macintosh HD」「ライブラリ」「Preferences」に移動 3. com.microsoft.office.licensing.plistをゴミ箱に移動 4. Officeを起動し、再度プロダクトキーを入力
    これで、変更が適用されれば完了だが、失敗する場合は、ゴミ箱のcom.microsoft.office.licensing.plistを戻す。
    参考:https://support.microsoft.com/kb/2390862/ja
    -------------------------------------------------------------------------------- title: "RVMのアップデートで失敗するときの対処法" date: "2011-10-05" url: https://scribble.washo3.com/linux/rvm%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E3%81%A7%E5%A4%B1%E6%95%97%E3%81%99%E3%82%8B%E3%81%A8%E3%81%8D%E3%81%AE%E5%AF%BE%E5%87%A6%E6%B3%95.html -------------------------------------------------------------------------------- RVMのアップデートで、かなり古いバージョンからアップデートする時に、失敗するときがある。
    $ rvm get latest
    Original installed RVM version:
    rvm 1.5.2 by Wayne E. Seguin (wayneeseg...@gmail.com) [https://
    rvm.beginrescueend.com/]
    rvm- % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 173 0 173 0 0 469 0 --:--:-- --:--:-- --:--:-- 2246 ERROR: .tar.gz downloaded does not match it's md5 checksum
    
    Aborting RVM Installation.
      こんな症状の対処法
    $ bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
    もしくは、
    $ rvm get head
    $ rvm reload
    一度ターミナルを再接続後、
    $ rvm get latest
    $ rvm --version
    rvm 1.8.5 by Wayne E. Seguin (wayneeseguin@gmail.com) [https://rvm.beginrescueend.com/]
    -------------------------------------------------------------------------------- title: "Homebrewでrsync3をインストール" date: "2011-10-04" url: https://scribble.washo3.com/mac/homebrew%E3%81%A7rsync3%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB.html -------------------------------------------------------------------------------- Mac上にインストールしたrsyncが2系で古かったので、3系へバージョンアップしたかったが、brewでrsyncがない模様。 [Homebrew][1]必須 [こちらの記事を参考][2]にして、brewでインストールし完了!(感謝)
    # vi /usr/local/Library/Fomula/rsync.rb
    require 'formula'
    
    class Rsync <Formula
    url 'https://rsync.samba.org/ftp/rsync/src/rsync-3.0.7.tar.gz'
    homepage 'https://rsync.samba.org/'
    md5 'b53525900817cf1ba7ad3a516ab5bfe9'
    
    def install
    system "./configure", "--prefix=#{prefix}",
    "--disable-debug",
    "--with-rsyncd-conf=#{prefix}/etc/rsyncd.conf",
    "--enable-ipv6"
    system "make install"
    end
    end
    
    保存して、brewコマンドでインストール。
    # brew install rsync
    
    [1]: https://mxcl.github.com/homebrew/ [2]: https://d.hatena.ne.jp/bose999/20110706/1309961412 -------------------------------------------------------------------------------- title: "Perlのバージョンを切り替えるPerlbrew" date: "2011-10-04" url: https://scribble.washo3.com/linux/perl%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%92%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%82%8Bperlbrew.html -------------------------------------------------------------------------------- perlのバージョンを切り替えて使用できる[perlbrew][1]をsl6上にインストールしてみた。 通常は、最新のバージョンを使っていれば良いと思うが、OSによっては、古いバージョンがインストールされたり、ライブラリとの整合が合わなかったりして、最新のバージョンでは動作しない場合に、切り替えると良いでしょう。 curlとperlが既にインストールされてる事が条件です。 perlbrewのインストール
    $ curl -k -L https://xrl.us/perlbrew > perlbrew
    $ perl perlbrew install
    $ rm perlbrew
    $ ~/perl5/perlbrew/bin/perlbrew init
    $ echo 'source ~/perl5/perlbrew/etc/bashrc' >> .bashrc
    $ source .bashrc
    $ perlbrew install perl-5.14.1
    $ perl --version
    $ This is perl, v5.8.8 built for x86_64-linux-thread-multi
    $ 
    $ perlbrew switch perl-5.14.1
    $ perl --version
    $ This is perl 5, version 14, subversion 1 (v5.14.1) built for x86_64-linux
    
    [1]: https://search.cpan.org/perldoc?perlbrew -------------------------------------------------------------------------------- title: "node.jsのバージョンをnaveで切り替え" date: "2011-10-02" url: https://scribble.washo3.com/linux/node-js%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%92nave%E3%81%A7%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88.html -------------------------------------------------------------------------------- naveを使うと、node.jsのバージョンを切り替えて使用が可能になる。 ## インストール準備
    $ mkdir ~/.nave
    $ cd ~/.nave
    $ git clone git://github.com/isaacs/nave.git
    
    ## インストール 最新版を利用するには、node.jsのバージョンをlatestにする。
    $ ~/.nave/nave/nave.sh use <node.jsのバージョン>
    
    ## node.jsの切り替え
    $ ~/.nave/nave/nave.sh use latest
    $ node -v
    v0.5.8
    $ ~/.nave/nave/nave.sh use 0.4.12
    $ node -v
    v0.4.12
    
    -------------------------------------------------------------------------------- title: "node.jsをローカルにインストール" date: "2011-10-02" url: https://scribble.washo3.com/linux/node-js%E3%82%92%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB.html -------------------------------------------------------------------------------- node.jsとnpmをsl6にインストールしてみた。 ## インストールした環境 * sl6 64bit * インストール先:$HOME/Library/NodeJS * node.jsは現時点の最新版(v0.5.8) ## インストールする前に * 搭載メモリが少ないと失敗する恐れがある。(512Mでは不足かも?) * gccなどの開発環境が導入済みの事 未導入の場合には、下記で

    # yum groupinstall "Development tools"
    * zlibのdevel版が必要
    # yum install zlib-devel.x86_64
    * opensslのdevel版が必要
    # yum install openssl-devel.x86_64
    ## node.jsとnpmのインストール 下記のスクリプトを保存し、起動するだけ。
    #!/bin/bash
    
    mkdir -p $HOME/Library/NodeJS
    mkdir -p $HOME/Library/NodeJS/src
    cd $HOME/Library/NodeJS/src
    curl https://nodejs.org/dist/v0.5.8/node-v0.5.8.tar.gz > node-v0.5.8.tar.gz
    tar -xvzf node-v0.5.8.tar.gz
    cd node-v0.5.8
    ./configure  --prefix=$HOME/Library/NodeJS
    make
    make install
    echo export PATH=$HOME/Library/NodeJS/bin:$PATH >> $HOME/.profile
    source $HOME/.profile
    cd $HOME/Library/NodeJS/src
    curl https://npmjs.org/install.sh | sh
    
    ## その他 * 安定版を使いたい場合は、v0.4.12を使用 * sslのエラーが出る場合は、configureに–without-sslのオプションを付けて、make -------------------------------------------------------------------------------- title: "ゲストOSのLinuxでVirtualbox Guest Additions導入が失敗する場合の対処" date: "2011-10-01" url: https://scribble.washo3.com/linux/linux-vbox-guest-additions%E5%B0%8E%E5%85%A5%E3%81%8C%E5%A4%B1%E6%95%97%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AE%E5%AF%BE%E5%87%A6.html -------------------------------------------------------------------------------- VirtualboxのゲストOSにLinuxを入れ、そこに、Guest Additionsをインストールしようとすると失敗する場合がある。 通常インストールは、VirtualboxホストOS側で、デバイス–> Guest Additionsのインストールを選び、ゲストOS側にマウントされるので、そのままインストールするだけ。 失敗する場合は、下記のようなメッセージで教えてくれる。
    # ./VBoxLinuxAdditions.run
    Verifying archive integrity... All good.
    Uncompressing VirtualBox 4.1.2 Guest Additions for Linux.........
    VirtualBox Guest Additions installer
    Removing installed version 4.1.2 of VirtualBox Guest Additions...
    
    Building the VirtualBox Guest Additions kernel modules
    The gcc utility was not found. If the following module compilation fails then
    this could be the reason and you should try installing it.
    
    The headers for the current running kernel were not found. If the following
    module compilation fails then this could be the reason.
    The missing package can be probably installed with
    yum install kernel-devel-2.6.32-131.12.1.el6.x86_64
    ...
    ...
    
    gccがなくて、kernel-develが必要だよ〜って。 今回、私の環境では、SL6(64bit)なので、下記のように必要なパッケージをインストール。
    # yum install gcc.x86_64 kernel-devel-2.6.32-131.12.1.el6.x86_64
    
    この後、再度、Guest Additionsのインストールを行い、成功すれば、OS再起動で利用可能となる。 -------------------------------------------------------------------------------- title: "apc.shm_sizeの警告" date: "2011-09-30" url: https://scribble.washo3.com/linux/apc-shm_size%E3%81%AE%E8%AD%A6%E5%91%8A.html -------------------------------------------------------------------------------- ApacheにAPCを導入した際に、下記のようなエラーが出てました。 > PHP Warning: PHP Startup: apc.shm_size now uses M/G suffixes, please update your ini files in Unknown on line 0 個々の共有メモリセグメントの大きさを設定する、apc.shm_sizeの設定は、既に設定済みのはずなのに・・・ /etc/php.d/apc.iniを確認してみると、
    ; The size of each shared memory segment in MB.
    ;apc.shm_size=64
    apc.shm_size=128
    
    デフォルトのサンプルでは、MBの数字を書くって事になってますが、どうやら単位をかかないといけないらしい。
    apc.shm_size=128M
    
    これで、Apache再起動したら、エラーは出なくなった。 何だかなぁ〜〜 -------------------------------------------------------------------------------- title: "MacのSSHクライアントでkeep-alive" date: "2011-09-30" url: https://scribble.washo3.com/mac/osx-ssh-keep-alive.html -------------------------------------------------------------------------------- MacのSSHクライアントでは、iTermか標準ターミナルをよく利用していますが、ちょっと席を離れて、戻ってくると、接続を切られることがよくあります。 一定時間パケットの流れないコネクションを接続断と判断されてしまうので、SSHに限ったことではないが、このような場合、Keep Aliveを使います。 iTermでは、PreferenceのProfilesから、Sessionタブ「When idle, send ASCII code」が該当するので、ここに、数字の0か20を入力し、チェックマークを入れれば良いのですが、標準ターミナルでは、Keep Aliveの設定が見当たりません。 なので、ここは、通常Linux/Unix同様に、~/.ssh/config内に下記を記述することで対処します (configファイルがなければ、作成します)
    $ vi ~/.ssh/config
    ServerAliveInterval 300
    TCPKeepAlive yes
    
    5分おきにパケットを送信する事で、切断を防ぎます。 -------------------------------------------------------------------------------- title: "nfsマウント時uid,gidが4294967294になるバグ" date: "2011-09-29" url: https://scribble.washo3.com/linux/nfs%E3%83%9E%E3%82%A6%E3%83%B3%E3%83%88%E6%99%82%E3%81%AE4294967294%E3%83%90%E3%82%B0.html -------------------------------------------------------------------------------- 接続元:Scientific Linux 6.1 64bit 接続先:Ubuntu 11.04 Server 64bit この環境で、接続元の/homeを接続先へnfsマウントしたところ、uid,gidが4294967294になってしまう。 どうやらバグらしいが、このままだと、接続先で不具合が出てしまうので対処。 接続先のマウント設定で、
    # mount -t nfs -o nfsvers=3 接続元:/home /home
    
    このマウント後、uid,gidが問題なければ、fstabに記述する。
    接続元IP:/home /home nfs rw,nfsvers=3,bg,rsize=8192,wsize=8192 0 0
    
    -------------------------------------------------------------------------------- title: "JpGraphのphp設定" date: "2011-09-29" url: https://scribble.washo3.com/program/jpgraph%E3%81%AEphp%E8%A8%AD%E5%AE%9A.html -------------------------------------------------------------------------------- Jpgraphを使う際に、ライブラリのパスを設定する必要があるので、php.iniを編集。 jpgraphのインストール先は、/var/www/jpgraphとした場合、include_pathを設定します。
    # vi /etc/php.ini
    ...
    include_path = ".:/var/www/jpgraph"
    ...
    ...
    
    保存後に、Apache再起動 -------------------------------------------------------------------------------- title: "rpmdbの修復" date: "2011-09-27" url: https://scribble.washo3.com/linux/rpmdb%E3%81%AE%E4%BF%AE%E5%BE%A9.html -------------------------------------------------------------------------------- ## CentOS上で、yumのデータベースが壊れたときの対処法 ### エラーの症状
    # yum update
    Loaded plugins: downloadonly, fastestmirror
    rpmdb: PANIC: fatal region error detected; run recovery
    エラー: db4 エラー (-30977) (dbenv->open において): DB_RUNRECOVERY: Fatal error, run database recove
    ry
    エラー: Packages インデックスを db3 でオープンできません - (-30977)
    エラー: /var/lib/rpm にある Package データベースをオープンできません。
    Traceback (most recent call last):
    File "/usr/bin/yum", line 29, in ?
    yummain.user_main(sys.argv[1:], exit_code=True)
    File "/usr/share/yum-cli/yummain.py", line 309, in user_main
    errcode = main(args)
    File "/usr/share/yum-cli/yummain.py", line 157, in main
    base.getOptionsConfig(args)
    File "/usr/share/yum-cli/cli.py", line 187, in getOptionsConfig
    self.conf
    File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 665, in
    
    conf = property(fget=lambda self: self._getConfig(),
    File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 240, in _getConf
    ig
    self._conf = config.readMainConfig(startupconf)
    File "/usr/lib/python2.4/site-packages/yum/config.py", line 804, in readMainCo
    nfig
    yumvars['releasever'] = _getsysver(startupconf.installroot, startupconf.dist
    roverpkg)
    File "/usr/lib/python2.4/site-packages/yum/config.py", line 877, in _getsysver
    
    idx = ts.dbMatch('provides', distroverpkg)
    TypeError: rpmdb open failed
    
    ### DBを削除
    # cd /var/lib/rpm/
    # ls
    Basenames Group Providename Requir
    eversion __db.001
    Conflictname Installtid Provideversion Sha1header
    __db.002
    Dirnames Name Pubkeys Sigmd5
    __db.003
    Filemd5s Packages Requirename Triggernam
    e
    [root@icrf-analysis rpm]# rm __*
    rm: remove 通常ファイル `__db.001'? y
    rm: remove 通常ファイル `__db.002'? y
    rm: remove 通常ファイル `__db.003'? y
    
    ### DB再構築
    # rpm --rebuilddb
    
    これで、yumが問題なく動作すれば完了! -------------------------------------------------------------------------------- title: "Google CSS Sprite" date: "2011-09-22" url: https://scribble.washo3.com/uncategory/google-css-sprite.html -------------------------------------------------------------------------------- 現時点のGoogleのCSSスプライト画像。 これ使うと、ちょっぴりアクセス速度が速くなる。かな? 意外と、シンプルですな。 -------------------------------------------------------------------------------- title: "Windowsネットワークの自動切断機能を無効にする" date: "2011-09-22" url: https://scribble.washo3.com/windows/windows%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%81%AE%E8%87%AA%E5%8B%95%E5%88%87%E6%96%AD%E6%A9%9F%E8%83%BD%E3%82%92%E7%84%A1%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B.html -------------------------------------------------------------------------------- Windowsでは、デフォルトでアイドル状態が15分経過すると、ネットワーク共有に割り当てられたドライブへの接続が切断される。 よく、この機能を無効にしたいので、メモ。 ## 自動切断を無効 管理者モードでコマンドプロンプトを開いて、 ``` net config server /autodisconnect:-1 ``` ## 自動で切断されるまでの時間を変更 - 既定値は15分になっている - 指定値の単位は分 - 最大値は65535 30分に設定する場合 ``` net config server /autodisconnect:30 ``` ### レジストリでの設定変更 コマンド入力が苦手な方は、レジストリを設定変更することでも可能です。 1. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parametersの`autodisconnect`を開く 2. 無効にする場合は、`ffffffff`を入力 3. 時間を変更する場合は、分数を入力(30分の場合は30)し、10進数を選択 -------------------------------------------------------------------------------- title: "Regzaの今すぐニュース設定" date: "2011-09-19" url: https://scribble.washo3.com/life/regza%E3%81%AE%E4%BB%8A%E3%81%99%E3%81%90%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9%E8%A8%AD%E5%AE%9A.html -------------------------------------------------------------------------------- Regzaの今すぐニュース設定 メモ 1. レグザリンクレグザリンク設定 2. 内蔵ハードディスク設定 3. 今すぐニュース設定 4. 今すぐニュース番組登録 5. 新規登録
    別の予約で、録画時間帯が重なると、「今すぐニュース」は録画されない。
    -------------------------------------------------------------------------------- title: "iTeleportのVNC機能を今更ながら知った" date: "2011-09-18" url: https://scribble.washo3.com/ios/iteleport%E3%81%AEvnc%E6%A9%9F%E8%83%BD%E3%82%92%E4%BB%8A%E6%9B%B4%E3%81%AA%E3%81%8C%E3%82%89%E7%9F%A5%E3%81%A3%E3%81%9F.html -------------------------------------------------------------------------------- MacやWindowsにiTeleportのデーモンを立ち上げておけば、iphoneやiPadから軽快に操作できて便利なので使用しているわけだが、VNCなのでPC同士でもつなげられるのを今頃知った。 VNCパスワードは、iTeleportでつないでいるGmail IDのパスね。 iTeleport: Jaadu VNC for iPhone / iPad App

    カテゴリ: ユーティリティ

    価格: ¥2,200

    -------------------------------------------------------------------------------- title: "UbuntuのKVM環境でネットワークが遅い原因" date: "2011-09-14" url: https://scribble.washo3.com/linux/ubuntu%E3%81%AEkvm%E7%92%B0%E5%A2%83%E3%81%A7%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%81%8C%E9%81%85%E3%81%84%E5%8E%9F%E5%9B%A0.html -------------------------------------------------------------------------------- Ubuntu 11.04上にKVM環境を構築し、ネットワークをブリッジ構成にしたところ、ネットワークが激遅くなった。 外部DNSは引け、LAN内では繋がるが、Googleとかにpingすると、かなり遅い。 原因は、sysctlの設定不足でした。 /etc/sysctl.confに下記が足りなかったので、追加
    net.bridge.bridge-nf-call-ip6tables = 0
    net.bridge.bridge-nf-call-iptables = 0
    net.bridge.bridge-nf-call-arptables = 0
    
    追加、保存した後、下記で適用
    /sbin/sysctl -p /etc/sysctl.conf
    
    参考:https://wiki.libvirt.org/page/Networking -------------------------------------------------------------------------------- title: "VMwareの自動ネットワークを切る" date: "2011-09-10" url: https://scribble.washo3.com/mac/vmware%E3%81%AE%E8%87%AA%E5%8B%95%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%92%E5%88%87%E3%82%8B.html -------------------------------------------------------------------------------- MacにVMware Fusionを入れていると、起動しなくても、デフォルトでVMwareのネットワーク構成が動作してます。
    $ arp -a
    ? (10.37.129.2) at 0:1c:42:0:0:9 on vnic1 ifscope permanent [ethernet]
    ? (10.37.129.255) at ff:ff:ff:ff:ff:ff on vnic1 ifscope [ethernet]
    ? (10.211.55.2) at 0:1c:42:0:0:8 on vnic0 ifscope permanent [ethernet]
    ? (10.211.55.255) at ff:ff:ff:ff:ff:ff on vnic0 ifscope [ethernet]
    
    滅多に使わないし、必要のないネットワーク構成はトラブルの元でキモイのでオフ。 PlistEditorを使って修正する。 (持ってない人は、好きなエディタかターミナルで) 編集するファイルは、/Library/LaunchDaemons/com.vmware.launchd.vmware.plist com.vmware.launchd.vmware.plist RunAtLoadの箇所をYESからNOに変更して保存。 PlistEditor以外を使う方は、trueの箇所をfalseに変更して保存。 次回、起動から有効。 -------------------------------------------------------------------------------- title: "VirtualBoxのゲストOSにGuestAdditionsをCUIでインストール" date: "2011-09-06" url: https://scribble.washo3.com/linux/virtualbox%E3%81%AE%E3%82%B2%E3%82%B9%E3%83%88os%E3%81%ABguestadditions%E3%82%92cui%E3%81%A7%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB.html -------------------------------------------------------------------------------- ゲストOSにLinuxのサーバ版をインストールしている場合、Xを入れる必要がないため、CUIで十分。 CUIでGuestAdditionをインストール機会がよくあるので、忘れないようにメモ。 Virtualboxのメニューからデバイスをクリックし、「Guest Additionsのインストール」を選択 その後、ゲストOS(Linux)のCUIにて、
    # mkdir /mnt/cdrom
    # mount /dev/cdrom /mnt/cdrom
    # cd /mnt/cdrom
    # ./VBoxLinuxAdditions.run
    
    -------------------------------------------------------------------------------- title: "Subsonicをアップデート" date: "2011-09-05" url: https://scribble.washo3.com/linux/subsonic%E3%82%92%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88.html -------------------------------------------------------------------------------- sl6上のSubsonic 4.5beta版で、WEB上に、新しいバージョンが出たよ!って警告があったので、4.5正式版にアップデートした。 > Note! A new version is available. > Download Subsonic 4.5 [here][1]. 早速Downloadして、rpmでアップデートをかけると、
    $ sudo rpm -Uvh subsonic-4.5.rpm
    準備中... ########################################### [100%]
    パッケージ subsonic-4.5.beta2-2363.noarch (subsonic-4.5-2384.noarch より新しいもの) は既にインストールされています。
    
    一端削除しようと思ったけど、プレイリストなどの設定が、もしかすると消えるかもしれないので、強制上書きインストール
    $ sudo service subsonic stop
    $ sudo rpm -i --force subsonic-4.5.rpm
    $ sudo service subsonic start
    
    [1]: https://www.subsonic.org/pages/download.jsp -------------------------------------------------------------------------------- title: "homebrewのupdateでエラー" date: "2011-09-04" url: https://scribble.washo3.com/mac/homebrew-update-error.html -------------------------------------------------------------------------------- homebrewをインストールしている状況で、たまにUpdateかけると失敗することがある。
    $ brew update
    
    .....
    
    .....
    
    Please, commit your changes or stash them before you can merge.Updating a34fe38..c4e391bAbortingError: Failed while executing git pull https://github.com/mxcl/homebrew.git master
    
    
    もう一回、gitからやり直すしかなさそう。
    % cd /usr/local
    % git remote add origin git://github.com/mxcl/homebrew.git
    % git fetch origin
    remote: Counting objects: 4657, done.
    remote: Compressing objects: 100% (1696/1696), done.
    remote: Total 4227 (delta 3099), reused 3464 (delta 2511)
    Receiving objects: 100% (4227/4227), 647.30 KiB | 365 KiB/s, done.
    Resolving deltas: 100% (3099/3099), completed with 352 local objects.
    From git://github.com/mxcl/homebrew
    * [new branch] gh-pages -> origin/gh-pages
    * [new branch] master -> origin/master
    % git reset --hard origin/master
    
    
    この後は、普通にbrew updateかけられる。 -------------------------------------------------------------------------------- title: "Oracle Database 11g Release 2 Express Edition 公開" date: "2011-09-03" url: https://scribble.washo3.com/linux/oracle-database-11g-release-2-express-edition-%E5%85%AC%E9%96%8B.html -------------------------------------------------------------------------------- 無償で利用できるOracleデータベースの最新版「Oracle Database 11g Release 2 Express Edition」が公開されました。 32bit版のWindowsと64bitのLinux版が提供されてます。
    Download Oracle Database Express Edition 11g Release 2 for Windows x32
    – Unzip the download and run the DISK1/setup.exe
    Download Oracle Database Express Edition 11g Release 2 for Linux x64
    -Unzip the download and the RPM file can be installed as normal
    -------------------------------------------------------------------------------- title: "NEX-5N NEX-7関連のドキュメント入手" date: "2011-09-01" url: https://scribble.washo3.com/camera/nex-5n-nex-7-document_pdf.html -------------------------------------------------------------------------------- 何とか、ドキュメントの入手に間に合った。 ちなみに、下記リンクはブルガリア語ですが、中身は英文ですので。 発売前に、しっかりチェックが出来そうだ。 * SLT * A65 * A77 SLT * NEX – 5N * NEX-5Nハンドブック * NEX – 7  恐らく、数日後には消されるのでは??ボソッ -------------------------------------------------------------------------------- title: "Finderが開けない" date: "2011-09-01" url: https://scribble.washo3.com/mac/finder%E3%81%8C%E9%96%8B%E3%81%91%E3%81%AA%E3%81%84.html -------------------------------------------------------------------------------- 外部ストレージをマウント中に、突然、Finderが停止する症状が起きた。 Finderを起動しようとすると、「アプリケーション Finder を開けません。」の警告で、Finderが起動せず。 Finder Trouble 再起動すれば、直るのかもしれないが、作業途中であったため、ディスクユーティリティを起動。 アクセス権の検証後、修復したら、Finderが復活した。 -------------------------------------------------------------------------------- title: "KVMでゲストOSのスナップショット作成" date: "2011-08-31" url: https://scribble.washo3.com/linux/kvm-guestos-snapshot-howto.html -------------------------------------------------------------------------------- sl6上のKVMでゲストOSのスナップショットを作成し、復元してみる。 ## スナップショット作成
    # virsh
    
    virsh # list -all
    
    Id 名前               状態
    ----------------------------------
    1 Server               実行中
    2 SL6                  実行中
    3 LDAP                 実行中
    
    virsh # snapshot-create SL6
    
    ゲストOSの容量にもよるが、初めてのスナップショットは、結構時間がかかります。 ## 確認
    virsh # snapshot-list SL6
    名前 Creation Time 状態
    ---------------------------------------------------
    1314776508 2011-08-31 16:41:48 +0900 running
    
    ## 復元
    virsh # snapshot-revert SL6 1314776508
    
    -------------------------------------------------------------------------------- title: "Recbootで簡単リカバリーモードへ" date: "2011-08-23" url: https://scribble.washo3.com/ios/recboot-recovery.html -------------------------------------------------------------------------------- iPhoneのリカバリー/DFUモードにするには、手順を覚えていないと出来ませんし、失敗することもしばしば。 Recbootを使うと、アプリのボタンをクリックするだけなので、簡単。 それに、各プラットフォーム用にアプリが用意されてるので便利。 ## Recboot **Recboot v1.3:** [**Windows**][1] | [**Mac OS X**][2] | **[Linux ][3]** **Recboot v2.2:** [**Mac OS X**][4] ## 参考までに、DFUとリカバリーモードの手順 ### DFUモード 1. iPhoneとPCをUSB接続 2. iPhoneの電源をオフ 3. 電源ボタンを先に押して(1〜2秒)、そのままの状態で、すぐにホームボタンも押し、10秒間程押したまま 4. 電源ボタンだけ指を離し、ホームボタンだけ押したままにする
    失敗する場合は、USBを切り離し、1.からやり直し
    ### リカバリーモード
    1. iPhoneとPCはUSB接続から切り離しておく
    2. iPhoneの電源をオフ
    3. ホームボタンを押しながら、PCへUSB接続
    4. ホームボタンを押したまま、待つ
    [1]: https://www.mediafire.com/?x2xkfrlz7ibjleb [2]: https://www.mediafire.com/?0ow9n84j63euax7 [3]: https://www.mediafire.com/?aeyd8e7s195taw8 [4]: https://sebby.net/wp-content/plugins/download-monitor/download.php?id=3 -------------------------------------------------------------------------------- title: "VirtualboxでWindowsHomeServer2011インストールする時のエラー" date: "2011-08-20" url: https://scribble.washo3.com/windows/whs2011_on_virtualbox.html -------------------------------------------------------------------------------- Virtualbox上で、ゲストOSにWindowsHomeServer 2011をインストールしようとしたら、 新規インストールの場面で、ハードディスクを選択し次に進んだところで、 エラーが発生し、再起動するハメになり、何度やっても同じ症状。 原因は、ハードディスクの容量不足! 160GB以上のハードディスク容量が必要のようなので、160GBのVDI(仮想ハードディスク)を作成したところ、無事、インストールできた。 -------------------------------------------------------------------------------- title: "3TB-HDDでソフトウェアRAID構築" date: "2011-08-18" url: https://scribble.washo3.com/linux/3tb-hdd%E3%81%A7%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2raid%E6%A7%8B%E7%AF%89.html -------------------------------------------------------------------------------- ## 3TBのハードディスク2玉をPowerEdge R310に装着し、ソフトウェアRAIDで構築した際のメモ PowerEdge R310に3TBのHDDを2基追加し、ソフトウェアRAID(RAID1)を構築する。 環境:

    1. PC:PowerEdge R310 2. RAM: 16GB 3. HDD: 500GB+2TB 4. OS: Scientific Linux 6.1 ## 作業 * 3TBハードディスク2個をR310に取り付け。 * BIOS起動し、SATAの欄でハードディスクスロットがデフォルトでOFFになっているので、Autoにする。 * 再起動し、もう一度BIOSを立ち上げ、3TBのHDDが認識しているか確認する。 * OS起動 ### 追加HDDのデバイス名を確認 OS起動後、取り付けたハードディスクのデバイス名をdmesgなどで確認。 ちなみに、取り付けたHDDは、/dev/sdb,/deb/sddになっていた。 /dev/sdaが起動ディスク /dev/sdcが以前に追加したHDD ### partedでフォーマット fdiskでは3TBは使えないようなので、partedを使う。
    # parted /dev/sdb
    GNU Parted 2.1
    /dev/sdb を使用
    
    GNU Parted へようこそ!コマンド一覧を見るには 'help' と入力してください。
    (parted) mklabel gpt
    
    (parted) unit GB
    (parted) print
    モデル: ATA Hitachi HDS72303 (scsi)
    ディスク /dev/sdb: 3001GB
    セクタサイズ (論理/物理): 512B/512B
    パーティションテーブル: gpt
    
    番号 開始 終了 サイズ ファイルシステム 名前 フラグ
    (parted) mkpart primary xfs 0 3001
    (parted) print
    モデル: ATA Hitachi HDS72303 (scsi)
    ディスク /dev/sdb: 3001GB
    セクタサイズ (論理/物理): 512B/512B
    パーティションテーブル: gpt
    
    番号 開始 終了 サイズ ファイルシステム 名前 フラグ
    1 0.00GB 3001GB 3001GB primary
    
    (parted) set 1 raid on
    (parted) print
    モデル: ATA Hitachi HDS72303 (scsi)
    ディスク /dev/sdb: 3001GB
    セクタサイズ (論理/物理): 512B/512B
    パーティションテーブル: gpt
    
    番号 開始 終了 サイズ ファイルシステム 名前 フラグ
    1 1049kB 3001GB 3001GB primary raid
    
    
    これらを、もう1台のHDD(/dev/sdd)に対しても行う(必要ないかもしれない??) ### ソフトウェアRAID構築
    etc# vi mdadm.conf
    [root@sl6]/etc# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sd[bd]1
    mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device. If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
    Continue creating array? y
    mdadm: Defaulting to version 1g.2 metadata
    mdadm: array /dev/md0 started.
    
    
    #### RAID アレイ構築中
    [root@sl6]/etc# cat /proc/mdstat
    Personalities : [raid1]
    md0 : active raid1 sdd1[1] sdb1[0]
    2930263928 blocks super 1.2 [2/2] [UU]
    [>....................] resync = 0.0% (1569920/2930263928) finish=373.0min speed=130826K/sec
    
    unused devices:
    
    構築時間が6時間ほどかかる。 #### RAID アレイ構築完了
    # cat /proc/mdstat
    Personalities : [raid1]
    md0 : active raid1 sdd1[1] sdb1[0]
    2930263928 blocks super 1.2 [2/2] [UU]
    
    unused devices:
    
    ### ファイルシステム作成 RAID アレイ構築完了後、/dev/md0 に XFS ファイルシステムを作成(ext3でもext4でも良いがお好みで)
    # mkfs.xfs -f -b size=4096 -i size=512 /dev/md0
    meta-data=/dev/md0 isize=512 agcount=4, agsize=183141496 blks
    = sectsz=512 attr=2
    data = bsize=4096 blocks=732565982, imaxpct=5
    = sunit=0 swidth=0 blks
    naming =version 2 bsize=4096 ascii-ci=0
    log =internal log bsize=4096 blocks=357698, version=2
    = sectsz=512 sunit=0 blks, lazy-count=1
    realtime =none extsz=4096 blocks=0, rtextents=0
    
    ### マウント設定 /dev/md0 デバイスを、 /raid ディレクトリにマウントするには、/etc/fstab に次のような行を追記して、mount コマンドを実行
    # vi /etc/fstab
    /dev/md0 /raid xfs noatime,nodiratime,osyncisdsync,logbufs=8,usrquota,grpquota 1 2
    
    # mkdir /raid
    # mount -a
    
    #### 起動時に RAID アレイを有効にする OS 起動時に RAID アレイを有効にするため、mdmonitor を自動起動するようにする。
    [root@sl6 ]# chkconfig mdmonitor on
    
    
    #### RAIDの監視
    # cat /proc/mdstat
    Personalities : [raid1]
    md0 : active raid1 sdd1[1] sdb1[0]
    2930263928 blocks super 1.2 [2/2] [UU]
    
    unused devices:
    
    # mdadm -D /dev/md0
    /dev/md0:
    Version : 1.2
    Creation Time : Tue Aug 9 15:01:33 2011
    Raid Level : raid1
    Array Size : 2930263928 (2794.52 GiB 3000.59 GB)
    Used Dev Size : 2930263928 (2794.52 GiB 3000.59 GB)
    Raid Devices : 2
    Total Devices : 2
    Persistence : Superblock is persistent
    
    Update Time : Wed Aug 10 09:06:16 2011
    State : clean
    Active Devices : 2
    Working Devices : 2
    Failed Devices : 0
    Spare Devices : 0
    
    Name : xx.xx.xx.xx:0 (local to host xx.xx.xx.xx)
    UUID : 3f147c88:dd3985ef:1020b4d9:15575a01
    Events : 17
    
    Number Major Minor RaidDevice State
    0 8 17 0 active sync /dev/sdb1
    1 8 49 1 active sync /dev/sdd1
    
    ### アラートメールの設定 障害が起きた場合のアラートメールは、「/etc/mdadm.conf」 の「MAILADDR」に設定されているメールアドレスに送信される。デフォルトではroot -------------------------------------------------------------------------------- title: "ESXiのゲストOSをCLIで起動・停止" date: "2011-08-17" url: https://scribble.washo3.com/linux/esxi%E3%81%AE%E3%82%B2%E3%82%B9%E3%83%88os%E3%82%92cli%E3%81%A7%E8%B5%B7%E5%8B%95%E3%83%BB%E5%81%9C%E6%AD%A2.html -------------------------------------------------------------------------------- 仮想マシンのVmidを確認
    # vim-cmd vmsvc/getallvms
    現在の状況を確認
    # vim-cmd vmsvc/power.getstate [Vmid]
    Retrieved runtime info
    Powered off
    
    ゲストOSを起動
    # vim-cmd vmsvc/power.on [Vmid]
    仮想マシンを停止
    # vim-cmd vmsvc/power.off [Vmid]
    -------------------------------------------------------------------------------- title: "QuickAdsenseの文字化け" date: "2011-08-11" url: https://scribble.washo3.com/wordpress/quickadsense%E3%81%AE%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91.html -------------------------------------------------------------------------------- WordPressプラグインのQuickAdsenseでコードを記入した際に、日本語が入ると、文字化けを起こしたり、広告が表示されなかったりするので、文字コードを指定することで対処。 こちらの記事通り [【備忘録】Plugin ”_Quick Adsense_” の_文字化け_対策][1] [1]: https://www.fire-phantom.com/archives/444.html -------------------------------------------------------------------------------- title: "quotacheckでのエラー表示" date: "2011-08-11" url: https://scribble.washo3.com/linux/quotacheck%E3%81%A7%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E8%A1%A8%E7%A4%BA.html -------------------------------------------------------------------------------- fstabにquota表記を追記し、再マウントした後に、quotacheckを実行したらエラーが出た。
    # quotacheck -cv /home
    quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.
    quotacheck: Quota for users is enabled on mountpoint /home so quotacheck might damage the file
    
    一度、再起動しても、同じ症状のエラーが表示されたので、下記を実行
    # quotaoff -av
    # quotacheck -a
    # quotaon -av
    
    -------------------------------------------------------------------------------- title: "SciencetificLinux6.0から6.1へのアップデート" date: "2011-08-10" url: https://scribble.washo3.com/linux/sciencetificlinux6-0to6-1_upgrad.html -------------------------------------------------------------------------------- バージョンアップする前には、バックアップをとっておく。 バージョン6.0から6.1にアップグレードします
    # yum --releasever=6.1 update
    sl                                                       | 3.2 kB     00:00
    sl/primary_db                                            | 4.0 MB     00:02
    sl-security                                              | 1.9 kB     00:00
    sl-security/primary_db                                   | 1.1 MB     00:00
    Setting up Update Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package audit.x86_64 0:2.1-5.el6 set to be updated
    .......
    .......
    ---> Package yum-metadata-parser.x86_64 0:1.1.2-16.el6 set to be updated
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ================================================================================
     Package                      Arch       Version                   Repository
                                                                               Size
    ================================================================================
    Updating:
     audit                        x86_64     2.1-5.el6                 sl     207 k
    ........
    ........
    yum-metadata-parser          x86_64     1.1.2-16.el6              sl      26 k
    
    Transaction Summary
    ================================================================================
    Install       0 Package(s)
    Upgrade      87 Package(s)
    
    Total download size: 57 M
    Is this ok [y/N]: y
    ......
    (87/87): yum-metadata-parser-1.1.2-16.el6.x86_64.rpm     |  26 kB     00:00
    --------------------------------------------------------------------------------
    Total                                           1.8 MB/s |  57 MB     00:32
    Running rpm_check_debug
    Running Transaction Test
    Transaction Test Succeeded
    Running Transaction
      Updating       : libgcc-4.4.5-6.el6.x86_64                              1/174
    ........
    yum-autoupdate.noarch 5:2-2
      yum-metadata-parser.x86_64 0:1.1.2-16.el6                                     
    
    Complete!
    
    アップデートが終わったら再起動する。
    # shutdown -r now
    一応、バージョン確認
    # cat /etc/redhat-release
    Scientific Linux release 6.1 (Carbon)
    
    -------------------------------------------------------------------------------- title: "Mac版CCleaner" date: "2011-08-10" url: https://scribble.washo3.com/mac/mac%E7%89%88ccleaner.html -------------------------------------------------------------------------------- CCleanerって、Windows定番のソフトだと思っていたら、Mac版もあるようだ。 [https://www.downloadcrew.com/article/22949-ccleaner\_for\_mac_beta][1] [1]: https://www.downloadcrew.com/article/22949-ccleaner_for_mac_beta -------------------------------------------------------------------------------- title: "TimeZoneの変更" date: "2011-08-09" url: https://scribble.washo3.com/linux/timezone%E3%81%AE%E5%A4%89%E6%9B%B4.html -------------------------------------------------------------------------------- Virtualbox内のゲストOSで時間がずれるので、調べてみると、CPUプロセッサを2以上に設定していると起こる現象らしい。 すでにCPUx2でLinuxのゲストOSを作成していて、プロセッサを1に減らすと、起動しなくなったので、臨時的にTimeZoneを変更した。 ## clockファイルの修正
    # cd /etc/sysconfig
    # vi clock
    # cat clock
    ZONE="US/Arizona"
    UTC=false
    ARC=false
    
    ## localtimeの修正
    # rm -f /etc/localtime
    # cp -p /usr/share/zoneinfo/US/Arizona /etc/localtime
    
    
    ## システム時刻とハードウェアクロックを同期
    # /sbin/clock --systohc
    
    
    -------------------------------------------------------------------------------- title: "コメント文を取り除くgrep" date: "2011-08-05" url: https://scribble.washo3.com/linux/%E3%82%B3%E3%83%A1%E3%83%B3%E3%83%88%E6%96%87%E3%82%92%E5%8F%96%E3%82%8A%E9%99%A4%E3%81%8Fgrep.html -------------------------------------------------------------------------------- コメント文を非表示にしたり、取り除く方法をよく忘れるのでメモ
    コメント行と改行だけの行を削除
    $ grep -v -e '^#' -e '^$' <file>
    
    空行をカットする
    $ grep -v '^$' <file>
      
    コメント行をカットする
    # で始まる行を消去し、空白や空行も削除
    $ grep -v -e '^[ ^t]*#' -e '^$' <file>
    
    それぞれ、リダイレクションで別ファイルに出力すると、コメント無しのファイルが出来上がる。 -------------------------------------------------------------------------------- title: "413 Request Entity Too Large" date: "2011-08-04" url: https://scribble.washo3.com/linux/413-request-entity-too-large.html -------------------------------------------------------------------------------- WordPressのweaverテーマで、ヘッダ画像をアップロードしようとしたら、下記のエラーが出た。
    413 Request Entity Too Large 
    サーバプログラムは、nginxで、client\_max\_body_siteは100Mを指定しているのになぜ?? 実は、client\_max\_body_siteの記述をvirtualhost定義内に記載していたのが間違いのよう。 /etc/nginx.conf内のhttps{}内に記載したら、行けましたとさ。 あと、nginxはreloadやrestartでなく、stopしてstartした方が良さげ。 -------------------------------------------------------------------------------- title: "VDIをシュリンクした後に起動しない" date: "2011-08-03" url: https://scribble.washo3.com/linux/vdi%E3%82%92%E3%82%B7%E3%83%A5%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%97%E3%81%9F%E5%BE%8C%E3%81%AB%E8%B5%B7%E5%8B%95%E3%81%97%E3%81%AA%E3%81%84.html -------------------------------------------------------------------------------- qemu-imgでrawからqcow2へ変換した後に、ゲストOSを起動すると、起動できないことがある。 > Booting from Hard Disk… > Boot failed: not a bootable disk > > No bootable device. ゲストOSの設定で、一旦、ディスク情報を削除し、再設定すると無事、起動する。 こんなもんなのかい? -------------------------------------------------------------------------------- title: "Spiceで戻って来られない" date: "2011-08-03" url: https://scribble.washo3.com/windows/spice%E3%81%A7%E6%88%BB%E3%81%A3%E3%81%A6%E6%9D%A5%E3%82%89%E3%82%8C%E3%81%AA%E3%81%84.html -------------------------------------------------------------------------------- KVMとゲストOSの通信に使われるプロトコル「Spice」で接続できるまでは、良いのだが、ローカル側に戻って来られない症状が起きた。 と言うか、戻る方法を知らないだけです。(^_^; どうすれば良いのか?? 公式ページのドキュメントに記載されていた。([https://www.spice-space.org/docs/spice\_user\_manual.pdf][1]{.mtli_attachment.mtli_pdf}) > Control hot keys > > Shift + F11 > Toggle full-screen / window mode > > Shift + F12 > Release the cursor if captured in window > > On debug mode, these are available as well: > > Shift + F5 > Connect to the server > > Shift + F6 > Disconnect from the serve ってなわけで、Shift+F12で無事、離脱する事が出来た。 あと、MacでSpiceクライアントってあるのかな?? [1]: https://www.spice-space.org/docs/spice_user_manual.pdf -------------------------------------------------------------------------------- title: "VirtualboxのゲストOSで入力切り替えキーは?" date: "2011-08-03" url: https://scribble.washo3.com/linux/virtualbox-win-mac-changekey.html -------------------------------------------------------------------------------- VirtualboxのゲストOS内で、Windowsでは半角/全角や、MacではCommand+スペースを押しても、日本語・英語の切り替えは出来ないので、何かキーがあるはずと思っていた。 「英数」か「かな」キーで出来るようだ。 -------------------------------------------------------------------------------- title: "iTeleportで日本語入力" date: "2011-08-03" url: https://scribble.washo3.com/ios/iteleport%E3%81%A7%E6%97%A5%E6%9C%AC%E8%AA%9E%E5%85%A5%E5%8A%9B.html -------------------------------------------------------------------------------- iTeleportでリモート側(iPadなど)から、日本語を送っても受け付けてくれないので、そんな時には、 * サーバ側(接続先)を日本語モードにしておく * リモート側(iPad,iPhone)を英語入力モードに設定 * サーバ側でスペースキーで変換 -------------------------------------------------------------------------------- title: "iTeleportでDrag" date: "2011-08-03" url: https://scribble.washo3.com/ios/iteleport%E3%81%A7drag.html -------------------------------------------------------------------------------- iTeleportでのドラッグってどうやるんだろうとググってみると、 _**2回タップしてドラッグ**_ ダブルタップに近いタッチなので、慣れが必要だ。 -------------------------------------------------------------------------------- title: "WindowsでVirtualboxゲストOSの複製" date: "2011-08-02" url: https://scribble.washo3.com/windows/windows%E3%81%A7virtualbox%E3%82%B2%E3%82%B9%E3%83%88os%E3%81%AE%E8%A4%87%E8%A3%BD.html -------------------------------------------------------------------------------- VirtualboxでゲストOSを新規に作成する場合、既存の環境が整っているイメージをそのまま利用したいので、複製方法をメモ。 WindowsのコマンドプロンプトかPowerShellを起動し、
    cd c:¥Program Files¥Oracle¥Virtualbox¥
    
    .¥VBoxManager.exe clonevdi <複製元のイメージファイル名> < 複製後のイメージファイル名>
    
    
    複製完了後は、Virtualbox上でゲストOSを新規作成し、既存のハードディスクで複製後のイメージファイルを選択。 他の設定も、その都度、設定をする必要がある。 -------------------------------------------------------------------------------- title: "qcow2の作成と差分" date: "2011-08-02" url: https://scribble.washo3.com/linux/qcow2%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%A8%E5%B7%AE%E5%88%86.html -------------------------------------------------------------------------------- KVM上で新規作成する場合、デフォルトでハードディスクはraw形式となります。 raw形式の方がアクセスは早いのですが、差分ととったり、マイグレーションする場合には、少しでも容量を小さくしたい事もある。 なので、最初からqcow2を作成する。 ```bash # qemu-img create -f qcow2 filename 10G   #10GBのディスク作成 ``` さらに、qcow2ではイメージファイルを原本と差分に分けることが出来る。 - 差分イメージの作成: ```bash # qemu-img create -b filename -f qcow2 diff-filename ``` - 差分イメージとの合成: ```bash # qemu-img commit -f qcow2 diff-filename ``` -------------------------------------------------------------------------------- title: "KVM上のqumeイメージファイルを、rawからqcow2形式に変換する方法。" date: "2011-08-02" url: https://scribble.washo3.com/linux/qemu-raw_to_qcow2-convert.html -------------------------------------------------------------------------------- KVM上のqumeイメージファイルを、rawからqcow2形式に変換する方法。 KVM上の対象ゲストOSを停止し、 ```bash # qemu-img convert -O qcow2 <元イメージファイル> <変換イメージファイル> ``` この後、元イメージファイルと変換イメージファイルを入れ替えて、ゲストOS起動確認。 たまに、ブート出来なくなるようなので、ゲストOS詳細画面から、ディスク情報を削除し、再設定すると起動出来る場合がある。 イメージファイル自体を削除するのではないことに注意!! -------------------------------------------------------------------------------- title: "autofsでマウントされない場合" date: "2011-08-02" url: https://scribble.washo3.com/linux/autofs%E3%81%A7%E3%83%9E%E3%82%A6%E3%83%B3%E3%83%88%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88.html -------------------------------------------------------------------------------- # autoumount(autofs)の設定でハマった点 ## 症状 手動でNFSマウント出来ることが確認出来た後、autofsで自動マウントされない CentOSやDebianでautofsやnfs関連のインストール済みで、手動にてnfsマウントは出来る事は確認している。 ## autofsの設定確認 - /etc/auto.master 全てコメントアウトし、下記一行だけ ``` /mnt /etc/auto.test --timeout60 ``` - /etc/auto.test ``` test -fstype=nfs,rw,intr,nosuid,rsize=32768,wsize=32768,soft,async 192.168. 1.10:/test ``` この状態で、autofsを再起動し、マウントしようとすると、`No such file and directory`で接続出来ていない ### エラーの詳細 autofsを停止し、手動にて、詳細モードで起動してみる ```bash # /usr/sbin/automount -vf key "test" not found in map source(s). failed to mount /mnt/test ``` auto.masterとauto.testを何度も見直し、ほぼ半日ほど時間を費やしたが、ようやく原因が特定でき、正常にマウント出来るようになった。 ## 解決 今回は稀な原因かもしれないが、auto.testの中身を他の機器からコピペした際に、区切り間の空白文字が正確な空白文字ではなかったようでした。 見た目は全角でなく半角空白なのですが、なぜか区切り空白を、再度空白もしくはTABを再入力したところ、正常にマウント出来るようになりました。 調べてみると、空白文字でもいろんな種類があるようです https://w.atwiki.jp/livecommentart/pages/34.html ## 問題解決するための確認 autoマウントする際に、割と引っかかるポイントを挙げておきますので、確認しておくと良いと思います - FirewallやSelinuxが有効になっていてブロックされていないか確認 - /etc/auto.master内の`+auto.master`をコメントアウト - マウント先のディレクトリを作成しておく - rpcbindやautofsが起動していること - 接続元のexportsでアクセス制限がかかってないことを確認 (アクセス制限で拒否されてれば手動マウントでも失敗するでしょう) -------------------------------------------------------------------------------- title: "Sambaでシムリンク先が参照出来ないとき" date: "2011-08-02" url: https://scribble.washo3.com/linux/samba%E3%81%A7%E3%82%B7%E3%83%A0%E3%83%AA%E3%83%B3%E3%82%AF%E5%85%88%E3%81%8C%E5%8F%82%E7%85%A7%E5%87%BA%E6%9D%A5%E3%81%AA%E3%81%84%E3%81%A8%E3%81%8D.html -------------------------------------------------------------------------------- Sambaで共有設定してて、その中にシムリンクのファイルやフォルダがある場合に、それらを参照すると、エラーとなる場合、下記をチェック。 smb.conf
    wide links = yes
    unix extensions = no
    follow symlinks = yes
    
    上2行で良いかも知れません。 でも、このセットで書いておこう。