1ヶ月以上、間が空いてしまったが、第1回 、第2回に引き続き、Termux上に構築したhugo環境に関するお話の最終回である。今回は、hugo用に作成したスクリプトをTermux上で使うためにおこなった主な変更点をご紹介する。
シェル変数の変更
スクリプトをTermux上で実行するために、以下を変更。
- 作業ディレクトリとして、Termuxのローカルリポジトリフォルダを指定。
- 最近のhugoだとローカル環境での確認用URLとして、デフォルトの
localhost:1313
を指定しても、サイト内リンクなど破綻せず使えるようになっていたので、これに関するシェル変数を削除。というか、Termux以外の環境もローカル環境のURLは指定しないように変更した。
ngrokをTermux上で使う(1. Webサーバ起動 関連)
ngrok経由でWebサーバ公開をおこなうスクリプト部分については、ngrokの起動を自動から手動へ変更しただけ。ngrokをTermaxにインストール方法は、以下のとおり。
Gemini PDAで、ngrokにログインし、**Linux(ARM)**版のzipファイルをダウンロード。unzipしたら、バイナリファイル(ngrok
)を/usr/bin
に移動して、実行権限を与える。
unzip ngrok-stable-linux-arm.zip
mv ngrok $PREFIX/bin/ngrok
chmod +x ngrok
その他ngrokの基本的な使い方は、以前の記事を参照して下さい。
記事生成周り(2. ブログを書く、3. 会社のお知らせを書く 関連)
記事ファイル生成後に開くエディタをvimに変更。
SSHの設定( 5. シンク、6. シンク(.htaccess) 関連)
ホストにファイルをアップするrsync用にSSH鍵を設定して、スクリプトに記述した鍵のディレクトリをTermux用に変更。SSH鍵の設定については、こちらの記事を、公開鍵の追加については、こちらの記事を参照して下さい。
hugoバージョン更新(7. メンテナンスメニュー 関連)
hugoのバージョン更新方法をngrok同様のインストール手順に変更。
Termux上でのスクリプト実行
hugo用のスクリプト(例:hogehoge.sh)をTermux上にGitでPullして、実行権限を付与。./
を付けなくてもスクリプトを実行可能にする場合は、スクリプトを/usr/bin
にコピーするなり、スクリプトをまとめたディレクトリ等にコピーして、~/.bash_profile
にPATHを追加するなり、お好みで。
chmod +x hogehoge.sh
# ./を付けるとスクリプトを実行可能
./hogehoge.sh
--> hogehoge.shの内容が実行される
# スクリプトを/usr/binにコピー
cp hogehoge.sh $PREFIX/bin
# ./を付けなくてもスクリプトを実行可能
hogehoge.sh
--> hogehoge.shの内容が実行される
スクリプト全体
現在、Gemini PDAのTermux上で使用するhugoスクリプトは、こんな感じになっている。
#!/bin/bash
# シェル変数:hugoの作業ディレクトリ
readonly HUGO_DIR="/data/data/com.termux/files/home/{自分なりのPath}"
# シェル変数:同期に使用する.htaccessファイル
readonly HTACCESS_NAME="20180612.htaccess"
if cd "$HUGO_DIR"; then
:
else
echo "存在しないディレクトリがhugoの作業ディレクトリに指定されています。"
exit
fi
echo -n "hugoを始める
1. Webサーバ起動
2. ブログを書く
3. 会社のお知らせを書く
4. ビルド
5. シンク
6. シンク(.htaccess)
7. メンテナンスメニュー
8. キャンセル
選択(1-8):"
read -r choice_to_do
case $choice_to_do in
[1]* )
echo -n "Webサーバの起動方法を選択
a. サイドメニュー付きで起動(ファイル生成しない)
b. サイドメニュー付きで起動(_localフォルダにファイル生成)
c. ngrok経由で外部にローカルWebサーバを公開(ファイル生成しない)
d. キャンセル
選択(a-d):"
read -r select_method
case $select_method in
[aA]* )
hugo server -D -w
;;
[bB]* )
rm -r _local/*
hugo server -d _local -D -w
;;
[cC]* )
echo -n "別セッションで ngrok http 1313 を実行し
https://《8桁の英数字》.ngrok.io 部分の
8桁の英数字を入力:"
read -r ngrok_adress
hugo server -D -b="https://${ngrok_adress}.ngrok.io" --bind="0.0.0.0" --appendPort=false --liveReloadPort=443 --navigateToChanged
;;
[dD]* )
exit
;;
* )
echo "a から d の半角英字を入力して下さい。"
;;
esac
;;
[2]* )
echo -n "ブログ slug(日付以外の部分)
※ 半角英数とハイフンのみ使用可、スペースを入れない
(入力):"
read -r headline
echo -n "ブログ 日付
※ 半角数字とハイフンのみ使用可、スペースを入れない
yyyy-mm-dd(空白なら当日の日付)形式で
(入力):"
read -r date
echo -n "ブログ タイトル(フリー入力、32文字以内)
※ クォーテーション「\"」は、HTMLエンティティ化して「"」と記述
(入力):"
read -r title
if [ -z "$date" ]; then
date="$(date +"%Y-%m-%d")"
fi
slug="$date-$headline"
file_name="post/${slug}.md"
file_path="content/$file_name"
if [ ! -e "$file_path" ]; then
hugo new "$file_name"
sed -i -e "s/title = \".*\"/title = \"${title}\"/g" "$file_path"
sed -i -e "s/slug = \".*\"/slug = \"${slug}\"/g" "$file_path"
sed -i -e "s/description = \".*\"/description = \"${title}\"/g" "$file_path"
sed -i -e "s/# タイトルをここに/# ${title}/g" "$file_path"
sed -i -e "s/original#01/${slug}-01/g" "$file_path"
else
echo "$file_name はすでに存在します。"
fi
vim "$file_path"
;;
[3]* )
echo -n "お知らせ slug(日付以外の部分)
※ 半角英数とハイフンのみ使用可、スペースを入れない
(入力):"
read -r headline
echo -n "お知らせ 日付
※ 半角数字とハイフンのみ使用可、スペースを入れない
yyyy-mm-dd(空白なら当日の日付)形式で
(入力):"
read -r date
echo -n "お知らせ タイトル(フリー入力、32文字以内)
(入力):"
read -r title
if [ -z "$date" ]; then
date="$(date +"%Y-%m-%d")"
fi
slug="$date-$headline"
file_name="announcement/${slug}.md"
file_path="content/$file_name"
if [ ! -e "$file_path" ]; then
hugo new "$file_name"
sed -i -e "s/date = \".*\"/date = \"${date}T00:00:01+09:00\"/g" "$file_path"
sed -i -e "s/title = \".*\"/title = \"${title}\"/g" "$file_path"
sed -i -e "s/slug = \".*\"/slug = \"${slug}\"/g" "$file_path"
sed -i -e "s/description = \".*\"/description = \"${title}\"/g" "$file_path"
sed -i -e "s/# タイトルをここに/# ${title}/g" "$file_path"
sed -i -e "s/original#01/${slug}-01/g" "$file_path"
else
echo "${file_name} はすでに存在します。"
fi
vim "$file_path"
;;
[4]* )
rm -r public/*
hugo
;;
[5]* )
rsync -av --update --delete --exclude='.htaccess' --chmod=D0755,F0644 -e "ssh -i /data/data/com.termux/files/home/.ssh/id_ecdsa" ${HUGO_DIR}/public/ {ユーザ名}@{サーバアドレス}:{ホストのディレクトリ}
;;
[6]* )
rsync -avz --update --chmod=0604 ${HUGO_DIR}/htaccess/${HTACCESS_NAME} {ユーザ名}@{サーバアドレス}:{ホストのディレクトリ}/.htaccess
;;
[7]* )
echo -n "
メンテナンスメニュー
a. hugoのバージョン更新
b. キャンセル
選択(a-c):"
read -r select_method
case $select_method in
[aA]* )
echo -n "ダウンロードするhugoのバージョンを入力
参考URL:https://github.com/gohugoio/hugo/releases
0.xx.x 形式で入力:"
read -r hugo_version
cd ~
wget "https://github.com/gohugoio/hugo/releases/download/v${hugo_version}/hugo_${hugo_version}_Linux-ARM.tar.gz"
tar xvzf hugo_${hugo_version}_Linux-ARM.tar.gz
mv hugo ../usr/bin/
rm hugo_${hugo_version}_Linux-ARM.tar.gz
cd "$HUGO_DIR"
hugo version
;;
[bB]* )
exit
;;
* )
echo "a または b の半角英字を入力して下さい。"
;;
esac
;;
[8]* )
exit
;;
* )
echo "1 から 8 の半角数字を入力して下さい。"
;;
esac
おしまい。
コメント
コメントなどありましたら、GitHubのディスカッションへお願いします。(書き込みには、GitHubのアカウントが必要です)