投稿

2020の投稿を表示しています

fatal: parameter inet_interfaces: no local interface found for ::1

さくらVPS上のCentOS8でPostfixをインストールしたときの覚書。
環境: CentOS 8.2, postfix 3.3.1

Postfixをインストール後起動しようとすると下記エラー postfix[3635]: fatal: parameter inet_interfaces: no local interface found for ::1 systemd[1]: postfix.service: Control process exited, code=exited status=1 systemd[1]: postfix.service: Failed with result 'exit-code'. systemd[1]: Failed to start Postfix Mail Transport Agent. さくらVPSはデフォルトでIPv6が無効になっている。 IPv6有効化手順(CentOS 8) | さくらのVPSニュース
設定確認 # less /etc/sysctl.conf
今のところIPv6は必要ないので、hostsファイルをコメントアウト # less /etc/hosts 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 #::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
postfixを起動して確認。自動起動ON # systemctl start postfix # systemctl status postfix # systemctl enable postfix
mailコマンドで確認(ない場合は「dnf install mailx」でインストール) # mail hoge@gmail.com
メールログ確認 # less /var/log/maillog

【関連記事】 【CentOS8】さくらVPSサーバーの初期設定 2020年版CentOS7 + Nginx + PHP7 + MariaDB + Node.jsの環境を構築する手順まとめ

Windows10のXbox Game Barをマルチディスプレイ環境で使う

操作説明動画を作るためにWindows10の録画する機能を使ったときの覚書。
環境: Windows 10 Pro 1909
Windows10にはデフォルトで「Xbox Game Bar」という録画するアプリがインストールされている。Winキー+Gで起動できる。

これをマルチディスプレイ環境のセカンダリーディスプレイで起動するには、セカンダリーディスプレイのアプリにフォーカスしておいてから「Winキー+G」を押す。
Xbox Game Barが起動してからだと録画するディスプレイを選択できない。

別のWindowsノートPCに環境を構築して(仮想マシンでもいい)、リモートデスクトップで接続して録画すると、右クリックしたときにいろんなアプリが出てこなくて綺麗な操作説明動画が録れる。

Subversionのウェブ管理ツールUSVNをインストール

Subversionをウェブで管理できるPHP製のUSVNをインストールしたときの覚書。USVNを使うとリポジトリ作成、ユーザー/グループ管理、フォルダごとの権限設定をウェブ管理画面から行うことができる。

環境: CentOS 8.1, Apache 2.4.37, PHP 7.3.5, USVN 1.0.9
1. PHP7をインストールphpのモジュール一覧 # dnf module list php
php7.3をインストール # dnf module install php:7.3/common
その他のPHPモジュールをインストール # dnf install php-mysqlnd php-gd
CentOS8からはApacheのモジュールではなくphp-fpmをデフォルトで使用するようになった。
起動、自動起動ON、確認 # systemctl start php-fpm # systemctl enable php-fpm # systemctl list-unit-files -t service | grep php-fpm # php --version
実行ユーザーがapacheになっているか確認 # less /etc/php-fpm.d/www.conf
php.confを確認 # less /etc/httpd/conf.d/php.conf
Apacheの再読み込み # apachectl configtest # systemctl reload httpd
確認用phpファイルを作成 # vi /var/www/html/index.php <?php phpinfo();
ブラウザでIPアドレスを入力して表示されるか確認。 ポートを開けるのを忘れずに。

2.MariaDBとphpMyAdminをインストール前とほぼ一緒なので省略 CentOS8 + Nginx + PHP + MariaDB + Node.js + Certbotの環境を構築する手順まとめ

3.USVNをインストールUSVN(User-friendly SVN)を使うとsvnadminコマンドを使わずにリポジトリ作成やユーザー管理などが行える。 GitHub上のドキュメントを参考にインストールする。 GitHub | usvn/usvn: Manage Subversion repositories via a we…

UpCloudのVPSを試してみた

SubversionのホストにいいVPSサービスを探しているときの覚書。UpCloudがスペックを柔軟に変更できて、コストパフォーマンスも良さそう。
使ってみた感想など FREE TRIALの間は容量25GBの最低プランのVPS1つしか作れないFREE TRIALから抜け出すためには金額をチャージする必要があるUpCloudはチャージした金額から消化される仕組みストレージ容量を増やすと月額金額が思ったより高い ということで、さくらVPSの方がコストパフォーマンスがいいことが分かった。
ちなみにカゴヤVPSのOpenVZはsystemdの変更に対応してくれないので除外。 そもそもカゴヤVPSからの乗り換え先を探している。

【関連記事】 コストパフォーマンスがいいVPSを探す。回線速度を測定CentOS8 + Nginx + PHP + MariaDB + Node.js + Certbotの環境を構築する手順まとめカゴヤ・クラウドVPS(CentOS)の初期設定

CentOS8からはOpenLDAPでなくて389-directory-server

CentOS8でopenldap-serversがなかったので検索したときの覚書。
環境:  CentOS8.1

OpenLDAPサーバーは非推奨になった。 下記記事が詳しい。 OpenLDAPサーバーがRHEL8/CentOS8のリポジトリから無くなったので対策検討 - Qiita
代替サーバーとして389-directory-server
389 Directory Server - Main Page
特徴とOpenLDAPとの違いは下記サイトが分かりやすい オープンソースの認証サーバ / 389 Directory Serverとは 389はLDAPが使用するポート番号に由来。
モジュール一覧を表示してみる。 # dnf module list
OpenLDAPでユーザー管理しようと思ったけど、もう少し考えてみる。

 【関連記事】 【CentOS8】さくらVPSサーバーの初期設定 2020年版CentOS + Subversion + LDAP + ApacheをInstallして設定

【CentOS8】さくらVPSサーバーの初期設定 2020年版

さくらのVPSをレンタルして設定したときの覚書。
サーバー環境: CentOS 8.1, OpenSSH_7.4p1, OpenSSL 1.0.2k-fips クライアント環境: Windows 10, TeraTerm 4.95

1.OSインストール「標準OS」をインストール。 カスタムOSで最小構成にしようとしたけどエラーになったのでやめた。
起動サービス確認 # systemctl list-unit-files -t service
ファイアウォールはコンソールから設定できるパケットフィルタを使い、VPS上でポート制御は行わない。
ホスト名変更 # hostnamectl set-hostname sakura01.dksg.co.jp # hostnamectl status
SELinux確認 # getenforce
EPELリポジトリ追加 # dnf install epel-release

2.SSHの鍵認証SSHのバージョン確認 # ssh -V OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
SSHでアクセスするときに鍵認証する。 公開鍵と秘密鍵の生成。 # ssh-keygen パスフレーズはなし。
確認 # ssh-keygen -l 3072 SHA256 RSA 3072bitで生成されている。
sshdの設定変更。パスワードによる認証を無効化。  # less /etc/ssh/sshd_config PubkeyAuthentication yes PasswordAuthentication no
AuthorizedKeysFileの名前に公開鍵を変更する。 # cd .ssh/ # mv id_rsa.pub authorized_keys
秘密鍵をアクセスするWindowsマシン側にコピーする。 一応名前を変えておく。 # less id_rsa # mv id_rsa id_rsa.sshd
sshd再起動。今接続しているsshのセッションは切れないので大丈夫。 # systemctl restart sshd
TeraTermのパスワード認証でアクセスできないことを確認。 TeraTermで秘密鍵を指定してアクセスしてみる。 エラー read error SSH2 private key file error:0906D06C:PEM routines:P…

CentOS7 + Subversion + SSL(certbot)

CentOS7にSubversionを設定したときの覚書。 今回はWebSVNをインストールして、コマンドを打たなくてもリポジトリを管理できる環境を構築してみた。
環境: CentOS 7.8, Subversion 1.10.6
1. Subversionをインストール前にyum経由でインストールしたリポジトリを流用する。 # vi /etc/yum.repos.d/WANdisco-svn.repo [WANdisco-svn110] name=WANdisco SVN Repo 1.10 enabled=1 baseurl=http://opensource.wandisco.com/centos/7/svn-1.10/RPMS/$basearch/ gpgcheck=1 gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
インストール実行。dnfはyumとほぼ同じ。 # dnf install subversion subversion-perl subversion-python subversion-tools
2.Apache + mod_dav_svnをインストールyum経由でインストール # dnf install httpd mod_dav_svn
リポジトリ用ディレクトリを作って権限設定 # mkdir /home/svn # chown apache. /home/svn/
apacheの設定。アドミンのメールアドレスを変更。 # less /etc/httpd/conf/httpd.conf ServerAdmin info@dksg.co.jp
起動、自動起動ON、確認 # systemctl start httpd # systemctl enable httpd # systemctl list-unit-files -t service
インストール時に生成されたconfは別ディレクトリへ # cd /etc/httpd/conf.d/ # mkdir bak # mv *.conf bak/
svn用confファイルを作成 # vi 01_svn.conf # Needed to do Subversion Apache server. LoadModule dav_svn_module     modules/mod_dav…

WindowsのChrome上のTextareaやGmailでEmacsのキーバインドを使いたい

イメージ
Happy Hacking Keyboard Professional HYBRID Type-Sの英語配列を買ってWindows10に設定したときの覚書。
HHKBはカーソルキーやHome, Endがない(Fnとの組合せ)ので、Emacsのキーバインドが使えないとストレスが溜まる。 ちなみにMacだとOSでサポートしているのでHHKBと相性がいい。

HHKBの設定 SW1:ON, SW2:OFFでスペース右の◇をWindowsキーにするSW3:ONでDeleteをBackSpaceにするSW4:ONでスペース左の◇をFnにする(キーマップでFnを別のキーに割り当てるため)Microsoft IMEの設定でCtrl+SpaceでIMEのON/OFFを切り替え可能に公式キーマップ変更ツールで最下部のキー配置を変更(下記画像参照)
Keyhacのインストール入力したキーバインドを柔軟に設定可能にする常駐ソフト。作った人天才。 craftware - Keyhac (日本語)
下記設定でconfig.pyを上書きするととりあえず良い感じになる。 smzht/fakeymacs: Emacs-like key bindings for Keyhac
これを元に使いながらカスタマイズしていく。 GitHub上でForkしておく。 C:> cd C:\Users\Daiki\AppData\Roaming\Keyhac C:> git init C:> git remote add origin git@github.com:DaikiSuganuma/fakeymacs.git C:> git fetch origin C:> git reset --hard origin/master
常駐しているKeyhacを右クリックして「設定のリロード」。 ある程度カスタマイズしたらGit pullする。 C:> git add --all C:> git commit -m 'Add insert_row function, Disable some key-bind.' C:> git push origin master
私のカスタマイズ例はGitHubで。 DaikiSuganuma/fakeymacs: Emacs-like key bindings …

【WordPress】投稿一覧をコメントの日付を含めて最新のもので並び替える

WordPress上に掲示板プラグインを開発しているときの覚書。
環境: WordPress 5.4.1
投稿一覧を表示するときに最近コメントがあったものを上にもってきたい。 デフォルトではできないので、どこかにHookしてorder by句を直書きする必要がある。
WP_Queryのソースコードを読んでみると、「posts_orderby」にadd_filterすればいけそう。
フック関数のコード例 function group_forum_posts_orderby($orderby, $query) { if (empty($query->query['orderby'])) { return $orderby; }
if ($query->query['orderby'] != 'active') { return $orderby; }
global $wpdb;
// Latest comment date $sql = []; $sql[] = "("; $sql[] = "SELECT comment_date"; $sql[] = "  FROM {$wpdb->comments}"; $sql[] = " WHERE comment_post_ID = {$wpdb->posts}.ID"; $sql[] = "   And comment_approved = 1"; $sql[] = " ORDER By comment_date DESC"; $sql[] = " LIMIT 1"; $sql[] = ")";
return "COALESCE(" . implode("", $sql) . ", {$wpdb->posts}.post_modified) DESC"; } add_filter('posts_orderby', 'group_forum_posts_orderby', 10, 2);
呼び出すときはこんな感じ。 new WP_Query([ 'o…

CentOSのgit設定(GitHubからパスフレーズなしでclone/push)

CentOS上でGitHubのプライベートリポジトリをGit cloneしたときの覚書。
環境: CentOS 7.8, Git 2.22.3
GitHub公式サイトヘルプを参考に Generating a new SSH key and adding it to the ssh-agent - GitHub HelpまずはCentOS上で鍵を生成する。 メールは一応GitHubのアカウントと合わせておく。 # ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
このときにパスフレーズは入力しない。 パスフレーズを入れるとgit pull/pushする度に入力が必要になる。
デフォルトで公開鍵(id_rsa.pub)と秘密鍵(id_rsa)が~/.ssh/に作成される。 分かりやすい名前に変更。 # cd ~/.ssh/ # mv id_rsa id_rsa.github # mv id_rsa.pub id_rsa.github.pub
gitで使用する鍵ファイルを指定 # less config Host github.com         IdentityFile ~/.ssh/id_rsa.github         User git
gitの設定は終わり。
GitHubへログインしてメニューから Settings -> SSH and GPG keys 「New SSH key」でKeyに公開鍵の値を貼り付ける。 タイトルは生成した仮想マシンのホスト名を入れといた。
実際にプライベートリポジトリを作ってgit clone/pushを試してみる。

【関連記事】 CentOS7の環境でGitをソースからビルドWindowsのPhpStormでGitのSSH設定WindowsにGitの環境を構築(msysGit + TortoiseGit)してGitLabにPush

ドキュメント管理はSubversion、ソースコード管理はGit

「リモートワークでもバージョン管理システムを使うと幸せになれるよ」と教えるときに調査したときの覚書。
結論からいうと、IT技術職のソースコード管理はGitが便利。 それ以外のデザイナーや営業などのドキュメント管理はSubversionが便利。
以下特徴など
1.Subversion特徴 集中型のバージョン管理システム。
→ 集中管理サーバーが壊れれば変更履歴ログもなくなる(今やサーバー側が多重化されているのでこの心配はほとんどない)
→ ユーザーはファイルの最新版のみ持っている(Gitに比べるとディスク容量が少なくて済む)2000年初版。ネットワークストレージ(NAS)をクラウド型にしたイメージ。
→ 誰でも直感的に使える。TortoiseSVNで技術職じゃなくても使ってくれる。ファイルのロック機能で、自分が編集していることを周知することができる。フォルダごとにアクセス権限を設定できる。
使ってみての感想 昔MicrosoftのSourceSafeを使っていた人はだいたいこれに移行。Subversionのマージ機能で地獄を見た人多数。運用ルールを定めればソースコード管理も問題ない。お堅い担当者が自分たちでガチガチに権限設定して集中管理したいという場合はSubversionから離れられない。

2.Git特徴 分散型のバージョン管理システム。
→ 各ユーザーは全ての変更履歴ログを持っている(多くのディスク容量が必要)。
→ どこか1つでも生き残っていれば変更履歴まで復元できる。2005年初版。Linuxカーネルのソースコード管理のために開発された。(テキストの)マージ機能がとても優秀で動作が軽い。Gitの考え方を理解するのに勉強が必要
→ Subversionと比較して学習コストが高い
→ GitHubがGitの機能を見やすく管理できるインターフェイスを提供して一気に広まった。GitHubやGitLabでプライベートリポジトリが簡単無料で作れる。GitHubではSubversionも使える(参考:GitHub で Subversion を使う - GitHub ヘルプ
使ってみての感想 新機能を開発するときにブランチ作って、機能が完成したらマージすることが安心してできる。
→ Subversionでこれを行うと地獄をみる(運用ルールで回避可能)今やオープンソースプロジェクトはGitHubで管理するのが当…

CentOS7上でFontForgeの最新をビルド(途中で諦めた)

SVGからWebフォントをビルドするときにYUM(DNF)経由でインストールしたFontForgeのバージョンが古い(20120731b)ので最新をビルドしたときの覚書。
環境: CentOS 7.8
GitHubを参考に GitHub | fontforge/INSTALL.md at master · fontforge/fontforgeCMake guide for FontForge · fontforge/fontforge Wiki
ビルドツールをインストール。cmakeは3.5以上が必要。 # dnf install cmake3 ninja-build
CMakeLists.txtを見ながら必須パッケージをインストール。 # dnf install freetype-devel gettext-devel glib2-devel libticonv-devel libxml2-devel zlib-devel
freetypeのバージョンは2.8 FontForgeよりFreeTypeのバージョンの方が大事な気がしてきた。
オプションのライブラリをインストール # dnf install libspiro-devel libuninameslist-devel libjpeg-turbo-devel libpng-devel readline-devel libtiff-devel
ソースをGit cloneしてビルド # cd /opt/software/ # git clone https://github.com/fontforge/fontforge.git # cd fontforge/ # git checkout 20200314 # fontforge/ # mkdir build && cd build # cmake3 -GNinja -ENABLE_GUI=off ..
develをインストールしているのに「"Freetype::Freetype" but the target was not found.」と出力される。 freetypeのヘッダーファイルの置き場所を探す # find /usr/ -name freetype* /usr/bin/freetype-config /usr/lib64/girepository-1.0/…

【CentOS】SVGをWOFFなどのWebフォントへ変換するfontcustomをインストール

CentOS7の環境でfontcustomをインストールしたときの覚書。 ちなみにIcoMoonを利用すれば無料で簡単に生成できる。
Bootstrap IconsのsvgがIcoMoonだと潰れてしまうのでCentOS7上でビルドしてみた。 (おそらくfontforgeが内部で使っているfreetypeかlibxml2のバージョンが原因だと思う)
環境: CentOS 7.8, ruby 2.0.0 → 2.6.6, fontforge 20120731

公式サイトは古いのでGitHubを参考に Font CustomGitHub | FontCustom/fontcustom: Generate custom icon webfonts from the comfort of the command line. fontcustomが利用するライブラリをインストールおよびビルド。 # cd /opt/software/ # dnf install fontforge # git clone https://github.com/bramstein/sfnt2woff-zopfli.git sfnt2woff-zopfli && cd sfnt2woff-zopfli && make && mv sfnt2woff-zopfli /usr/local/bin/sfnt2woff # git clone --recursive https://github.com/google/woff2.git && cd woff2 && make clean all && sudo mv woff2_compress /usr/local/bin/ && sudo mv woff2_decompress /usr/local/bin/
Rubyのパッケージ管理システムgemでfontcustomをインストール。 # gem install fontcustom ERROR:  Error installing fontcustom:         ERROR: Failed to build gem native extension.
    /usr/bin/ruby extconf.rb m…

CentOS7の環境にRuby2.6をインストール

YUMのRubyが古いので最新のRubyをインストールしたときの覚書。
環境: CentOS 7.8
1.rbenvをインストール公式サイトを参考に GitHub | rbenv/rbenv: Groom your app’s Ruby environment
git cloneしてビルドする。 # git clone https://github.com/rbenv/rbenv.git ~/.rbenv # cd ~/.rbenv && src/configure && make -C src
rbenvの初期化スクリプトをBashに追加する。 # echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile # ~/.rbenv/bin/rbenv init # echo 'eval "$(rbenv init -)"'  >> ~/.bash_profile
ログインスクリプトを読み込みし直し # source ~/.bash_profile
確認 # rbenv --version rbenv 1.1.2-30-gc879cb0
2.ruby-buildをインストールrbenv単体ではRuby自体のインストールをサポートしていないのでプラグインをインストールする。 GitHub | rbenv/ruby-build: Compile and install Ruby pluginsディレクトリに配置するだけ。 # mkdir -p ~/.rbenv/plugins # git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

3.Rubyをインストールインストール可能なバージョンを一覧表示 # rbenv install -l
現在の安定版をインストール # rbenv install 2.6.6 # rbenv global 2.6.6
確認 # ruby -v ruby 2.6.6p146 (2020-03-31 revision 67876) [x86_64-linux] 他のユーザーで使えないので、ruby(gem)コマ…

法人用Apple IDをApple Business Managerで管理

会社用Mac miniを購入した際に法人用Apple IDで管理しようとしたときの覚書。
今はApple Business Managerで法人用デバイスを一括管理する仕組みがある。 ビジネス - IT - Apple(日本)
Apple Business ManagerとはiPhone, iPad, Macを管理下に置いて機能制限を設定できる。 アプリをリモートで一括インストールもできる。 Apple製品を従業員に貸与してリモートワークしてもらう時に便利そう。 Apple Business Managerとは - Apple サポート
登録方法登録する際はDUNS Numberが必要。 会社名もDUNS Numberで一致していないと登録できない。 (DUNS Numberを入れると自動補完される) 取得、修正する場合は前の記事を参考に。 DUNS Numberを取得・住所変更
Apple Business Managerを使えるようになるまでの流れ 公式サイトから組織の登録祝日明けの2日後の午前中に確認電話が掛かってきた(電話に出れず)。「連絡取れない」とAppleからメールが来たので、こちらから電話。本人確認と組織の契約の判断ができる人か?と聞かれる。
電話したときに自動音声で対応言語を聞かれるすぐに登録確認のメールが送られてくる。管理者用Apple IDを作成
使ってみた感想など App Storeは法人用AppleIDで使えない。個人用AppleIDを登録しないとアップデートできない。iPadのSidebarはMacとiPad共に個人用AppleIDでないと使えないApple Configurator 2を使うとiOSデバイス管理が捗るらしい。


【関連記事】 DUNS Numberを取得・住所変更

CentOS7の環境でGitをソースからビルド

git公式サイトのビルド方法がYUMからDNFに変更されていたので、やってみたときの覚書。
環境: CentOS 7.8.2003
ちなみにIUSリポジトリを使うとYUM経由でgit2系を簡単インストールできる(この記事の最後に記載)。 IUS - Setup
1.ソースをダウンロードしてビルド公式サイトに従ってビルドツールをインストール。 # dnf install dh-autoreconf curl-devel expat-devel gettext-devel openssl-devel perl-devel zlib-devel
依存関係でgit1系がインストールされた。 (追記:dh-autoreconfはなくてもビルドできたので、dh-autoreconfをインストールしなければ古いgitはインストールされない)
gitのソースをダウンロードして解凍。 # mkdir /opt/software # cd /opt/software # curl -O https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.26.2.tar.gz # tar -xzvf git-2.26.2.tar.gz
ビルド実行 # cd git-2.26.2 # make configure # ./configure --prefix=/usr # make all # make install
確認 # git --version git version 2.26.2
gitの環境設定 # git config --global user.name "Hoge" # git config --global user.email "hoge@company.co.jp"

2.gitリポジトリをcloneしてアップデート環境を作っておくgit cloneでダウンロードされるサイズは600MBくらい。 必要になったときでいいと思う。 # cd /opt/software/ # git clone git://git.kernel.org/pub/scm/git/git.git # cd git # git tag # git checkout v2.26.2
ビルドコマンドは同じ。 # make configure # ./configure …

CentOS7のYUMをDNFに変更

Python2系は2020年4月以降サポートされないということで、Python3系で動くDNFに変更したときの覚書。
環境: CentOS 7.8.2003
DNFはYUMの後継パッケージ管理システム。 Dandified YUM(ダンディファイド ヤム)の略。 DNF (ソフトウェア) - Wikipedia
インストール # yum install dnf
アップデート # dnf update
YUMとコマンドはほとんど変わらない。
Python3をインストール。 # dnf install python3
YUMが動かなくなると困るのでphthon2は残しておく。

【関連記事】 CentOS8 + Nginx + PHP + MariaDB + Node.js + Certbotの環境を構築する手順まとめCentOS7 + Nginx + PHP7 + MariaDB + Node.jsの環境を構築する手順まとめ

nvmをアンインストールしてNode.jsはyumで管理

最近はNode.jsの最新を追ったりすることがなくなったので、Node.jsをyumで管理する設定をしたときの覚書。
環境: CentOS 7.7
1.nvmをアンインストール.bashrcを編集。nvm関連の行を削除。 $ less .bashrc
nvmフォルダを削除 $ rm -rf .nvm/

2.NodeJSのYUMリポジトリ追加公式にNodeSourceリポジトリが案内されている。 GitHub | distributions/README.md at master · nodesource/distributionsインストール # curl -sL https://rpm.nodesource.com/setup_12.x | bash -
確認 # less /etc/yum.repos.d/nodesource-el7.repo # yum info nodejs
インストール # yum install nodejs


【関連記事】 CentOS8 + Nginx + PHP + MariaDB + Node.js + Certbotの環境を構築する手順まとめCentOS7 + Nginx + PHP7 + MariaDB + Node.jsの環境を構築する手順まとめnginx + node.js + pm2でアプリ向けのREST API環境を構築

Windows10にDart Sassをインストール

scssファイルに見慣れない@use, @forwardが出てきたときの覚書。
Windows 10, PowerShell 6.2.3, dart-sass 1.26.3
@use, @forwardは最新のdart-cssで実装されたルール。 @importの問題を解消して、モジュール(コンポーネント)単位の開発をしやすくする。 Sass: @import
インストールは公式サイトを参考に。 GitHub | sass/dart-sass: The reference implementation of Sass, written in Dart.
パッケージ管理は簡単そうなScoopを使うことにした。 Scoopをインストール > iwr -useb get.scoop.sh | iex
Dart Sassをインストール
> scoop install sass
確認 > sass --version
アップデートする場合は > scoop update
インストールされた場所 C:\Users\Daiki\scoop\apps\sass
ヘルプ表示 > sass -h
圧縮したcssで出力する場合 > sass --style=compressed path\to\input.scss path\to\output.css
PHPStormのFile Watchersにセットして使っている。 node-sassと比較して体感速度は変わらない。 Bootstrap v4.4.1からDart Sassでもビルドできる。

【関連記事】 Bootstrap IconsのSVGアイコンを使うCSSフレームワーク「Foundation」

ファイヤーウォールを無効にしてwebpack-dev-serverのサンプルアプリへアクセス

仮想マシン上でやっているチュートリアルをlocalhost以外からアクセスできるようにしたときの覚書。
環境: CentOS 8.1.1911, Node.js v12.16.1, webpack-dev-server@2.11.5
Material Design Components for Webのチュートリアルをやっている。 Get started - Material Design
GitHubで配布されているスターターアプリはlocalhostで動かす前提なので、仮想マシンで実行してWindowsで確認する場合はwebpack-dev-serverの設定を変更する必要がある。 (ちなみにWindowsでも動くので大人しくlocalhostで試した方が早い)
まずはファイヤーウォールを停止。 # systemctl stop firewalld
package.jsonを編集 公式ドキュメント: DevServer | webpack $ cd /home/httpd/httpdocs/material-components-web-codelabs/mdc-101/starter/ $ less package.json   "scripts": {     "start": "webpack-dev-server --progress --host 0.0.0.0"   },
実行 $ npm start
ブラウザでアクセスするときはIPアドレスで。 NetBIOS名でアクセスできるようにしたかったけど、うまく動かなかった。

【関連記事】 CentOS8の最小構成をインストール

CentOS8の開発環境で自前認証局のSSL署名

前にCentOS7でやったことをCentOS8の環境でやろうとしたときの覚書。
環境: CentOS 8.1.1911, nginx 1.16.1, OpenSSL 1.1.1c
CentOS8の環境だと「/etc/pki/tls/misc/CA」がない。 今ならcertbotでできるんじゃない?と公式ドキュメントを読むと「minica」というツールを使えとある。 Certificates for localhost -  Let's Encrypt - Free SSL/TLS CertificatesGitHub | jsha/minica: minica is a small, simple CA intended for use in situations where the CA operator also operates each host where a certificate will be used.
1.MiniCAをインストールこのツールはGo言語で動くのでGolangのインストールから。 # dnf install golang # go version go version go1.12.12 linux/amd64
$GOPATHを設定しない方法でインストール。 # cd /opt/software # git clone https://github.com/jsha/minica.git # cd minica # go build
実行してみる。 # ./minica --domains dev.hoge.jp
説明を見る # ./minica ルート証明書がminica.pem。 ドメイン名のディレクトリにサーバー証明書と秘密鍵がある。
検証する # openssl verify -CAfile minica.pem dev.hoge.jp/cert.pem

2.nginxに設定作成したサーバー証明書と秘密鍵をnginxに設定。 参考: NginxのSSL/TLS設定を見直す(2020年版) # cd /etc/nginx/conf.d/ # vi 01_hoge.conf server {     listen       443 ssl http2;     server_name  dev.hoge.jp;
    root    /home/httpd/hoge/wo…

NginxのSSL/TLS設定を見直す(2020年版)

SSL設定を見直したときの覚書。
環境: CentOS 8.1, nginx 1.16.1, OpenSSL 1.1.1c
既にTLSv1とTLSv1.1は古く非推奨になっている。 ついにTLS 1.0/1.1の無効化が決定!影響や確認・対応方法とは? | さくらのSSL
各ブラウザの対応状況はWikipediaで。 Transport Layer Security - Wikipedia IEは11(最終版)のみTLS 1.2対応。
ちなみに某病院ホームページでは2020年3月時で0.37%のユーザーがIE10以下を使っている(ほとんどがIE9)。 ホームページ案件だと、この人たちがアクセスできなくなりクレームがくるかもしれないのが悩みどころ。
nginxのSSL設定例は下記サイトを参考に。 Mozilla SSL Configuration Generator
nginxの設定confファイルはGistに置いてあるので参考にどうぞ。 Gist | Nginx Configuration Files for WordPress. Nginx is installed by YUM. @see:https://codex.wordpress.org/Nginx

【関連記事】 CentOS8 + Nginx + PHP + MariaDB + Node.js + Certbotの環境を構築する手順まとめNginxのSSL/TLS設定を見直す(2019年版)

コストパフォーマンスがいいVPSを探す。回線速度を測定

新しくサーバーを借りるにあたり、今ならどこがいいか調査したときの覚書。 今まではKagoya VPS OpenVZを使っていた。
参考サイト KAGOYA CLOUD2 VPSの料金/評判/特徴/性能ベンチマークWebArena Indigoの料金/特徴/評判/性能ベンチマークVPS比較:回線速度が速い順ランキング
これからは5G(第5世代移動通信システム)が当たり前になり、ネットワーク回線がボトルネックになると思う。 なので回線速度が圧倒的に速いWebArenaが有力候補。
実際に試してみて決める。
回線速度を測定する方法speedtest-cliが簡単便利。 GitHub | sivel/speedtest-cli: Command line interface for testing internet bandwidth using speedtest.netLinuxでもSpeedtestがしたい(speedtest-cli) - Qiita CentOS7はyum経由でインストール。 # yum install python2-speedtest-cli
CentOS8はpip経由でインストール。 # pip3 install speedtest-cli
計測実行 # speedtest-cli 自身のIPアドレスから近くのサーバーを自動選択する。 比較する際は同じサーバーを指定した方がいいと思う。

【関連記事】 カゴヤ・クラウドVPS(CentOS)の初期設定

NginxからPHP-FPMのアクセスをTCPからUnix Socketに変更

CentOS8をセットアップしている時にdnf経由でインストールすると、nginxからphp-fpmのアクセスがUnix Socketを使っていたので、CentOS7の環境でもやってみた。
環境: CentOS 7.7.1908,  nginx 1.16.1, PHP 7.3.17
PHP-FPMの設定変更 # less /etc/php-fpm.d/www.conf listen = /run/php-fpm/www.sock listen.owner = nginx listen.group = www listen.mode = 0660
nginxの設定変更 # less /etc/nginx/conf.d/global/fastcgi_php.conf fastcgi_pass unix:/run/php-fpm/www.sock;
再起動 # nginx -t # systemctl restart php-fpm # systemctl restart nginx

ついでにnginxの設定に「tcp_nopush」を追加。 これもCentOS8でdnf installしたらデフォルトでonになっていたから。 # less /etc/nginx/nginx.conf     sendfile            on;     tcp_nopush          on;     tcp_nodelay         on;     keepalive_timeout   65;     types_hash_max_size 2048;
tcp_nodelayはデフォルトでonだけれども一応書いておく。 全文はGistに置いてある。 Gist: Nginx Configuration Files for WordPress. Nginx is installed by YUM. @see:https://codex.wordpress.org/Nginx
再読み込み # nginx -t # systemctl reload nginx
開発環境でしばらく運用してから本番環境に反映させる予定。

【関連記事】 CentOS8 + Nginx + PHP + MariaDB + Node.js + Certbotの環境を構築する手順まとめTCP/IPとUNIX Socketの接続でどれくらい違うか

CentOS8 + Nginx + PHP + MariaDB + Node.js + Certbotの環境を構築する手順まとめ

CentOS8の開発環境をセットアップしているときの覚書。
環境: Mac mini(Mid 2010), VMware Fusion 8.5.10, CentOS 8.1

インストールまでは前の記事を参考に。 CentOS8の最小構成をインストール
epelリポジトリをインストールしておく。 # dnf install epel-release

1.nginxのインストールnginxのモジュール一覧 # dnf module list nginx
mainlineのバージョン確認 # dnf module info nginx:mainline
最新のStableをインストール # dnf module install nginx:1.16/common
起動、自動起動ON、確認 # systemctl start nginx # systemctl enable nginx # systemctl list-unit-files -t service | grep nginx
CPU数の設定がautoになっているか確認 # less /etc/nginx/nginx.conf
GitLabから共通設定をcloneしておく(プライベートリポジトリです)。 # cd /etc/nginx/conf.d/ # git clone git@gitlab.com:dksg-settings/nginx-global.git global
nginx.confは前の記事のGistを参考に。 静的WordPress向けNginxのfastcgi_cache設定 ユーザーグループ「www」を追加。 # groupadd www # usermod -G www nginx
修正後、確認して反映させる。 # nginx -t # systemctl reload nginx

2.PHPのインストールphpのモジュール一覧 # dnf module list php
php7.3をインストール # dnf module install php:7.3/common
その他のPHPモジュールをインストール # dnf install php-mysqlnd php-gd
起動、自動起動ON、確認 # systemctl start php-fpm # systemctl enable php-fpm # systemctl list-unit-files …

CentOS8の最小構成をインストール

CentOS8を最小構成でインストールしたときの覚書。
環境: Mac mini(Mid 2010), VMware Fusion 8.5.10, CentOS 8.1
1.ダウンロードisoを直接ダウンロードすると時間がかかるので、理化学研究所のミラーサイトから「CentOS-8.1.1911-x86_64-dvd1.torrent」をダウンロードしてきて、BitTorrentクライアントでisoファイルをダウンロードする。
2.インストールMac上のVMware FUsionにインストールした。 Keyboard: Japanese, English(US) Language Support: English(United States), 日本語 Time & Date: Asia/Tokyo Software Selection: Minimal Install
仮想マシンの設定のNetwork Adapterを「Ethernet」を選択して、ネットワークを繋げてある。 Root Passwordを設定するときはキーボードをusに設定してから入力(使っているキーボードがUS配列だから)
インストール完了後、再起動するときはマウントしたisoファイルを解除しておく。 とりあえずrootでログインして各種確認 yumはdnf(Dandified YUM)変わったけどコマンド自体はdnfコマンドに内部変換して使える。 # yum update
CentOS7までは公式リポジトリに古いアプリケーションしかなく、最新のソフトを使うためには他のリポジトリを追加する必要があった。 それがCentOS8からはある程度新しいソフトウェアも公式で配布されるようになった。詳しくは下記。 CentOS 8のサポート期間の考え方は6や7とは異なります | そどRHEL 8/Fedora 28で導入されたModularity - 赤帽エンジニアブログ
例えばnginxは1.14系と1.16系が配布されている。 # dnf module list nginx
どんなデーモンが起動しているか確認 # systemctl list-unit-files -t service
IPアドレス確認 # ip a
IPアドレスを確認したらteratermを使ってSSH経由で作業。
3.ホスト名の変更CentOS7と同じ方法。 # host…

git pull --theirs?ローカルの環境をリポジトリの最新に強制アップデート

masterに戻ってgit pullしたら最新になってくれなかった時の覚書。
環境: Windows 10, git 2.24.1 
参考サイト git pull を強制し、リモートでローカルを上書きする方法 | WWWクリエイターズ
リモートの最新を取得 $ git fetch origin master
ローカルのmasterをリモート側に合わせる $ git reset --hard origin/master
邪魔なUntracked filesのファイルとディレクトリを削除する。 $ git clean -fd

【関連記事】 よく検索するGitコマンドの覚書。自分用既存のディレクトリ(フォルダ)にgit cloneして上書きしたい

ttfをwoff2に変換

アイコンフォントを作成した際にwoff2へ変換するやり方を調査したときの覚書。

環境: CentOS 7.7.1908

Google先生がGitHubで公開しているプログラムがあったのでインストールしてみた。
google/woff2 | GitHub
$ git clone --recursive https://github.com/google/woff2.git
$ cd woff2
$ make clean all

試しに実行してみる。
./woff2_compress BootstrapIcons.ttf

変換元と同じディレクトリに出力された。

容量比較
svg: 421kb
ttf: 121kb
woff: 121kb
woff2: 29.7kb

思ったより圧縮された。


【関連記事】
Bootstrap IconsのSVGアイコンを使うCentOS6にfontcustomをInstallしてWebフォントを作成

Bootstrap IconsのSVGアイコンを使う

Bootstrap v3からそろそろv5に向けて移行しようかと調査しているときの覚書。
今まではアイコンフォントを便利に使っていたけど、これからはSVGアイコンの時代らしい。

環境: Node.js 10.19.0

参考
WEB制作のワンポイント! SVGアイコンを使うワケ | PINTO!アイコンフォントからSVGへ!より手軽にベクター画像を表示しよう |  WebクリエイターボックスCan I use... Support tables for HTML5, CSS3, etc
使いたいのはBootstrap Icon。2020年3月時点でalpha3
Bootstrap Icons · Official open source SVG icon library for Bootstrap
使い方はsvgファイルを1つのファイルにまとめてIDで呼び出す。
Icon System with SVG Sprites | CSS-Tricks

実際にやってみる。
まずはBootstrap Iconsをインストール
$ npm install bootstrap-icons --save-dev

node_modules/bootstrap-icons/icons/にsvgファイルがある。
これを一つのsvgファイルにまとめる。
コマンドライン版のsvgstoreをインストール。
GitHub | svgstore/svgstore-cli$ npm install -g svgstore-cli

下記コマンドを実行
$ svgstore -p 'bi-' --inline -o bootstrap-icons.svg node_modules/bootstrap-icons/icons/*.svg

作成されたbootstrap-icons.svgをエディタで開いて確認する。
一つにまとめたsvgファイルは非表示にするため、svgタグにclassを追加しておく。

bodyタグの直下でsvgファイルを読み込む。


適当なところにID記述。


CSS(SCSS)に追記。
//
// Bootstrap Icons
//
svg.defs {
  display: none;
}
.bi {
  display: inline-block;
  position: rela…

FreePBX管理ページのメニュー概要【設定編】

FreePBX管理ページの調査覚書。

環境: FreePBX Distro 1910, FreePBX 15.0.16.20, Asterisk 16.6.2

シリーズ記事
FreePBX管理ページのメニュー概要【アドミン編】FreePBX管理ページのメニュー概要【アプリケーション編】FreePBX管理ページのメニュー概要【接続編】FreePBX管理ページのメニュー概要【レポート編】
設定 → 高度な設定 (Advanced Settings) いろいろなその他の設定 変更した設定 SIP暗号化: yesSIP Channel Driver: chan_pjsip 参考: Advanced Settings - PBX GUI - Documentation
設定 → Asterisk IAX 設定 (Asterisk IAX Settings) IAX(Inter-Asterisk eXchange)の設定。 参考: Asterisk IAX Settings - PBX GUI - Documentation
設定 → Asteriskログファイル設定 (Asterisk Logfile Settings) ログファイルの日付形式、ローテーション形式など設定。
設定 → Asterisk Manager Users (Asterisk Managers) Asteriskに接続できるアプリケーションおよび権限を設定 参考: Asterisk Managers User Guide - PBX GUI - Documentation
設定 → Asterisk Rest Interface Users REST APIでの接続を管理。 参考: Asterisk REST Interface Users Module - PBX GUI - Documentation
設定 → Asterisk SIP 設定 (Asterisk SIP Settings) SIP(Session Initiation Protocol)の設定。 参考: Asterisk SIP Settings - PBX GUI - Documentation
設定 → 内線設定 (Extension Settings) 内線のステータスの一覧表示。 設定できる項目はない。レポートの下にいるべきな…

FreePBX管理ページのメニュー概要【レポート編】

FreePBX管理ページの調査覚書。

環境: FreePBX Distro 1910, FreePBX 15.0.16.20, Asterisk 16.6.2

前シリーズ記事
FreePBX管理ページのメニュー概要【アドミン編】FreePBX管理ページのメニュー概要【アプリケーション編】FreePBX管理ページのメニュー概要【接続編】
レポート → Asterisk情報 (Asterisk Info) Asteriskのバージョン、チャンネル状態、接続しているクライアントなどを表示。
参考: Asterisk Info Module User Guide - PBX GUI - Documentation

レポート → Asteriskログファイル (Asterisk Logfiles) /var/log/asteriskにあるログファイルを参照可能。
参考: Asterisk Logfiles - PBX GUI - Documentation

レポート → CDRレポート (CDR Reports) CDR(Call Detail Reports)
通話ログを検索/参照可能。
参考: CDR Reports Module - PBX GUI - Documentation

レポート → Call Event Logging ベータ版

レポート → PHP情報 PHPとApacheの情報



【関連記事】
FreePBX Distro(CentOS7 + Asterisk16)をインストール

FreePBX管理ページのメニュー概要【接続編】

FreePBX管理ページの調査覚書。

環境: FreePBX Distro 1910, FreePBX 15.0.16.20, Asterisk 16.6.2

シリーズ記事
FreePBX管理ページのメニュー概要【アドミン編】FreePBX管理ページのメニュー概要【アプリケーション編】

接続 → API アプリなど外部からアクセスするためのアクセストークンを管理。
OAuth2.0に対応しているので、こういう所で開発の「しっかりしている感」を感じる。
参考: API - PBX GUI - Documentation


接続 → DAHDIチャンネルDID DAHDIチャンネルは電話のアナログ回線。
DIDはDirect Inward Dialingの略。直通電話番号。
参考: DAHDI (Analog) Channel DIDs - PBX GUI - Documentation

接続 → DAHDi DAHDIは電話回線に接続するためのドライバ。
PCに直接モデムを接続する場合、DAHDI経由で制御する。
参考: DAHDI Configs - PBX GUI - Documentation

接続 → Digium Phones Digium Phonesサービスを利用する場合に使う。
参考: Digium Phones Module - PBX GUI - Documentation

接続 → Firewall FreePBX専用のFirewall設定。
参考: Firewall - PBX GUI - Documentation

接続 → インバウンドルート (Inbound Routes) 外線を指定の宛先に設定可能。
参考: Inbound Routes Module - PBX GUI - Documentation

接続 → アウトバウンド発信制限 (Outbound Call Limiting) 有償モジュール。
外線発信を制限できる。
参考: Outbound Call Limiting - PBX GUI - Documentatio

接続 → アウトバウンドルート (Outbound Routes) 内線から外線を掛けるときの経路設定。
参考: Outbound Routes Module - PBX GUI - Documentation