MovableType 9リリースと当ブログのプラグイン対応状況

October 22,2025 11:55 PM
Category:[9.0]
Tag:[MovableType]
Permalink

MovableType 9が2025年10月22日にリリースされました。

Movable Type 9 の提供を開始

シックスアパートのみなさま、リリース作業おつかれさまでした!

ということで、小粋空間でリリース中のプラグイン対応状況です(MT-9.0.4で動作確認済)。

対応済のプラグイン

  • CSVDataImExpoter
  • ListingFieldEditor
  • PowerEditContentData
  • PowerListingFieldEditor
  • PublishDraft
  • Trash
  • Vote ※
  • Workflow

※mt-data-api.js の同梱が終了したため、引き続き使用する場合は、
https://github.com/movabletype/mt-data-api-sdk-js/tree/master/mt-static/data-api
からのダウンロードおよび設定が必要です。

対応予定のプラグイン

  1. CSVAssetDataImExporter
  2. CSVAuthorDataImExporter
  3. EntryConverter
  4. SaveWithoutRebuild

詳細は、各プラグインの販売ページでお知らせしていく予定ですので、お待ちください。

Comments [0] | Trackbacks [0]

CentOS Stream release 9にImageMagickとPerlMagickをインストール

October 19,2025 11:55 PM
Category:[ImageMagick]
Tag:[]
Permalink

CentOS Stream release 9にImageMagickとPerlMagickをインストールしてみました。

1.はじめに

ある環境のMovableType 8でImageMえます。

注:2025年9月現在、記事アセットおよびカスタムフィールドに対しての機能追加はありません。

2-1.エクスポート機能(コンテンツデータ一覧画面)

コンテンツデータ一覧画面の「アクション」に「 コンテンツデータのエクスポート・アセットダウンロードつき(ZIP) 」というメニューを追加しました。

コンテンツデータ一覧画面の「アクション」

この項目を選択してCSVをエクスポートすると、ZIP形式でのダウンロードとなり、ZIPファイルの内容は次のようになります。

export-001-002-20250816152706.zip
├─ export-001-002-20250816152706.csv   ← CSVファイル
└─ ASSET_DIR/  ← アセット格納用フォルダ
      ├─ assets/
      │    └─ 2025/
      │          └─ 09/
      │               ├─ file1.jpg
      │               └─ file2.jpg
      ├─ images/
      │    └─ file2.webp
      └─ s-l960.pdf

また、CSVのアセットフィールドには、下記のように「パス+ファイル名」で設定されます(赤字部分)。

content_type,id,label,author_id,identifier,authored_on,modified_on,unpublished_on,status,名前,画像1,画像2
商品,1,テスト1,1,2b909dd37403b295ff80f6f46d23fd72cebf41d5,2025/8/6 0:58,2025/8/22 23:06,,2,テスト1,assets/2025/09/file1.jpg,s-l960.pdf
商品,2,テスト2,1,f46d23fd72cebf41d5295ff80f6f4609dd37403b,2025/8/6 0:58,2025/8/22 23:06,,2,テスト2,assets/2025/09/file2.jpg,images/file2.webp

2-2.エクスポート機能(エクスポート画面)

エクスポート画面にも「アセットダウンロードつき(ZIP) 」というメニューを追加しました。

エクスポート画面

チェックすればすべてのコンテンツデータにひもづくアセットをダウンロードします。

注:サーバ環境やアセット数・合計サイズによって正常にエクスポートできない可能性があります。

3.インポート機能

インポート画面に「ZIPファイルのアセット 」というメニューを追加しました。

インポート画面

基本動作は、ZIPファイルを指定してインポートすれば、CSVのアセットフィールドに記載されたパス・ファイル内を使って、ZIPのASSET_DIR配下に存在するアセットをアップロードしながら、コンテンツデータのアセットフィールドとひもづけていきます。

そのため、すでに同一パス・ファイルのアセットがサイトに存在する場合の挙動を追加したメニューで指定します。

  • アップロードをスキップして既存アセットにひもづけ:アップロードをスキップして、既存のアセットにひもづけます
  • 既存アセットを上書きアップロード:アップロードして、既存アセットを上書きします
  • アセットをリネームしてアップロード:リネームして既存アセットとは異なるアセットとしてアップロードし。コンテンツデータとひもづけます

このオプションはアセット単位に適用されるので、たとえば、

 aaa.jpg
 bbb.jpg
 ccc.jpg

の3つの画像をZIPでインポートする場合、bbb.jpgという画像がすでに存在すれば、bbb.jpgにのみオプションが適用され、aaa.jpgとccc.jpgは自然体でアップロードとアセット登録およびアセットフィールドとのひもづけが行われます。

注:サーバ環境やアセット数・合計サイズによって正常にインポートできない可能性があります。

4.オプション

サイト別プラグイン設定画面に「ZIP形式でアセットをインポートする場合のルートパス」を追加しました。

サイト別プラグイン設定画面

サイトパス直下にアップロードするようにしますが、assetsやimagesなど共通のパスが存在する場合、必要に応じて本項目を設定してください(デフォルト:設定なし)。

また、アップロードしたZIPファイル(/tmp上の一時ファイル)はインポート終了辞に削除する処理を追加しましたが、デバグ用として、一時ファイルを残すオプションをシステム管理画面に追加しました。

システムプラグイン設定画面

5-1.ユースケース1:CSVによる運用

これまでのコンテンツデータのアセットフィールドと、アセットファイルのひもづけは、

 ①サーバに画像をアップロード(MT機能や他のプラグイン利用)
 ②CSVファイルにファイルのフルパスを記入
 ③CSVファイルをインポート

という手順で実施が必要でしたが、

 ①ユーザーがローカルPCに画像を配置
 ②CSVファイルにファイルのパスを記入
 ③ZIPファイルをインポート

という手順で作業を行えるため、サーバーのアップロード作業を個別に行う手間がなくなります。

5-2.ユースケース2:画像の差し替え

任意のコンテンツデータのアセットの差し替えは、該当のコンテンツデータをエクスポートして、ASSET_DIR内の画像を置き替えてZIPを再作成し、インポートのオプションで「既存アセットを上書きアップロード」を選択・実行すれば差し替えが可能です。

5-3.ユースケース3:ホームページの引っ越し

通所のCSVエクスポート→インポートではアセットIDでひきつがれてしまうため、アセットの再ひもづけが大変ですが、アセット込みでエクスポート→インポートを実施すれば、アセットのひもづけを考える必要がなくなります。

6.プラグインについて

CSVDataImExporterプラグインの詳細は下記のページよりご覧いただけます。

CSVDataImExporterプラグイン

確認用サイトもご用意しておりますので、試用をご希望される方はお問い合わせのページよりお申し込みください。

Comments [0] | Trackbacks [0]

AWSでIAMユーザーを作成する方法

May 18,2025 12:03 AM
Category:[AWS]
Tag:[AWS]
Permalink

AWSでIAMユーザーを作成する方法を紹介します。

1.はじめに

AWSに久しぶりにアクセスしてみると、ログイン画面が「アカウントID」と「IAMユーザー」に変わっていました。

ログイン画面

IAMユーザーというものをそもそも作っていなかったので、本記事で作成方法を紹介します。

なお、アカウントIDは後述するルートユーザーでログイン後、右上のユーザー名をクリックすれば「アカウントID」が表示されます。

2.AWSでIAMユーザーを作成する

AWSマネジメントコンソールにアクセス。

「持っていませんか?」のリンクをクリックすればルートユーザーでログインできる画面に切り替わるので、ルートユーザーでログインします(詳細は省略)。

ログイン画面

ログイン後、左上の「IAM」を選択

コンソール

「ユーザー」をクリック。

「ユーザーの作成」をクリック。

任意のユーザー名を設定して、「ユーザータイプ 」から「IAM ユーザーを作成します」を選択。パスワードの作成方法は任意。

すべて設定後「次へ」をクリック。

今回は1ユーザーで、ユーザーグループを作成しないので、「ポリシーを直接アタッチする」を選択。

作成するユーザーにすべての権限を与えたいので、「AdministratorAccess」のみをチェック。その下の「許可の境界を設定」はスキップします。

すべて設定後「次へ」をクリック。

設定した内容の確認画面が表示されるので、問題なければ「ユーザーの作成」をクリック。

「ユーザーが正常に作成されました」が表示されれば完了です。コンソールサインインURLやパスワードも表示されます。

なお、これまでルートユーザーで作成したものは、別ユーザーなので一切表示されないようです。

Comments [0] | Trackbacks [0]

ansibleで同名のroleを複数回実行する方法

April 25,2025 11:55 PM
Category:[ansible]
Tag:[ansible]
Permalink

ansibleで同名のroleを複数回実行する方法を紹介します。

1.問題点

次のroleを作成しました。

roles/test/tasks/main.yml

- name: コマンド実行
  shell:
    cmd: hostname
  register: result
 
- name: 結果出力
  debug:
    msg: "{{ result.stdout_lines }}"

このroleを実行するplaybook(test.yml)は下記です。

- hosts: localhost
  connection: local
  roles:
    - role: test
    - role: test
    - role: test

inventoryは省略しますので適宜用意してください。

このplaybookを実行すると、roleは一度しか実行されません。

(ansible) [hoge@server ~]$ ansible-playbook -i inventory test.yml
 
PLAY [localhost] ********************************************************************************************************************
 
TASK [Gathering Facts] **************************************************************************************************************
ok: [localhost]
 
TASK [test : コマンド実行] **********************************************************************************************************
changed: [localhost]
 
TASK [test : 結果出力] **************************************************************************************************************
ok: [localhost] => {
    "msg": [
        "hoge-server"
    ]
}
 
PLAY RECAP **************************************************************************************************************************
localhost                  : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

2.原因

これは、Ansibleが「ロールの重複適用」を避ける設計になっているためです。

3.対処

いくつか方法はあるようですが、ここではplaybook内で「tags」を付与する方法を紹介します。

下記のように、roleごとにtagsを追加して、ユニークな値を設定します。

test.yml

- hosts: localhost
  connection: local
  roles:
    - role: test
      tags: "1"
    - role: test
      tags: "2"
    - role: test
      tags: "3"

これで同名のroleでも期待通り実行されます。

(ansible) [hoge@server ~]$ ansible-playbook -i inventory test.yml
 
PLAY [localhost] ********************************************************************************************************************
 
TASK [Gathering Facts] **************************************************************************************************************
ok: [localhost]
 
TASK [test : コマンド実行] **********************************************************************************************************
changed: [localhost]
 
TASK [test : 結果出力] **************************************************************************************************************
ok: [localhost] => {
    "msg": [
        "hoge-server"
    ]
}
 
TASK [test : コマンド実行] **********************************************************************************************************
changed: [localhost]
 
TASK [test : 結果出力] **************************************************************************************************************
ok: [localhost] => {
    "msg": [
        "hoge-server"
    ]
}
 
TASK [test : コマンド実行] **********************************************************************************************************
changed: [localhost]
 
TASK [test : 結果出力] **************************************************************************************************************
ok: [localhost] => {
    "msg": [
        "hoge-server"
    ]
}
 
PLAY RECAP **************************************************************************************************************************
localhost                  : ok=7    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
Comments [0] | Trackbacks [0]

Movable Type 9をインストールしてみた

April 23,2025 11:55 PM
Category:[9.0]
Tag:[MovableType]
Permalink

Movable Type 9のデベロッパープレビューが公開されていたので、インストールしてみました。

Movable Type 9 デベロッパープレビュー を公開しました

ここではMT8との管理画面の違いを紹介します。

1.ダッシュボード

サイドバーがデフォルトで非表示になりました。

(クリックで拡大)

システム管理画面へのリンクがみつからなかったのですが、ヘッダー右上の歯車アイコンに移動したようです。

検索アイコンをクリックすると、検索フォームが表示されます。

サイトアイコンをクリックすると、各サイトへのリンクが表示されます。

なお、このヘッダー部分はスクロールしても固定されているので、各メニュー共通になります。

2.サイト

サイト別管理画面でサイドバーが表示されます。

サイドバー上部にあった検索はヘッダーに移動し、「再構築」はそのまま、「サイトの表示」は「サイトを見る」に表記が変わり、「新規作成」が追加されました。

「新規作成」をクリックすると、コンテンツデータ・記事・ウェブページのサブメニューが表示されます。

赤枠のアイコンをクリックすると、サイドバーを折りたためます。

折りたたんだ状態です。

折りたたんだ状態でもサイドバー(矢印アイコン以外の部分)にマウスをポイントすると、一時的に表示されます。

サイドバー株のユーザー名や「ユーザー情報」「ドキュメント」「サインアウト」はヘッダー右端に移動しました。

ダッシュボードに戻るには、左上のMTのアイコンか、パンくずリストの家のアイコンをクリックします。

以上です。

Comments [0] | Trackbacks [0]

ansibleでハッシュの配列をチェックする方法

March 7,2025 12:03 AM
Category:[ansible]
Tag:[ansible]
Permalink

ansibleでハッシュの配列をチェックする方法を紹介します。

1.はじめに

下記の3ファイルのmd5sum値を予め用意したコンフィグに設定し、サーバ上の各ファイルのmd5sumと等しいか、チェックする必要が生じました。

ということで、ansibleでハッシュの配列をチェックする方法を紹介します。

2.やりたいこと

複数のファイルをチェックできるように、ファイル名とファイルのmd5sum値をハッシュの配列にしたいです。
ファイルのパスも動的に取得したいので、同じくハッシュの配列に含めます。

また、コンフィグはrolesディレクトリの中ではなく、分かりやすい任意の場所に配置したいです。

3.コンフィグのサンプル

前項の要望にしたがい、コンフィグは下記のようにしました。

/var/tmp/config.yml

files:
  - name: kdump
    path: /etc/sysconfig
    md5sum: e417c7b5754df7287f41b478f2200793
  - name: CentOS-Base.repo
    path: /etc/yum.repos.d
    md5sum: 447b4d2df1a36e64348bbd8b6c5b0fae
  - name: sysctl.conf
    path: /etc
    md5sum: 4bae3962eeef7d1e7c7ef39314db9fb0

"files"というハッシュキーの中に配列を作り、さらにそれぞれの配列に、

  • ファイル名
  • ファイルパス
  • md5sum値

を設定しました。

これをansibleで読み込ませるにはどうすればいいかを次項で説明します。

4.コンフィグファイルの読み込み

コンフィグファイルを読み込むには、Playbook本体(test.yml)に"vars_files"を用います。

test.yml

- hosts: test
  roles:
    - role: test
  vars_files:
    - "/var/tmp/config.yml"

これで、実行するロール内のタスクで前述のコンフィグを読み込むことができます。

5.ハッシュの配列をチェック

ハッシュの配列をチェックするには、ロール内のタスク(roles/test/tasks/main.yml)を下記のようにします。

roles/test/tasks/main.yml

- name: ファイルのmd5sum実行
  command: "md5sum {{ item.path }}/{{ iteパッケージのインストール

# rpm -Uvh https://repo.mysql.com/mysql80-community-release-el9-1.noarch.rpm
# dnf install mysql-community-server --nogpgcheckdnf install mysql-community-server --nogpgcheck
# dnf install mysql-community-devel --nogpgcheck

2.gccとmakeのインストール(Perlのビルド用)

# dnf install make gcc

3.httpd関連のインストール

# dnf install httpd httpd-tools httpd-devel

4.firewalldの停止

# systemctl status firewalld
# systemctl stop firewalld
# systemctl disable firewalld

5.httpdの常駐化

# systemctl is-enabled httpd
# systemctl enable httpd

6.mysqlのパスワード変更(赤字が初期パスワード、青字が変更後のパスワード)

# systemctl start mysqld
# grep 'temporary password' /var/log/mysqld.log
2024-11-26T12:52:05.760486Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: ei#(n;i9uf$k
mysql> ALTER USER 'root'@'localhost' identified BY 'rJOIaea%#%(JO';
Query OK, 0 rows affected (0.03 sec)

7.Perl5.38.2のビルドとインストール

インターネットからダウンロードしたPerlのアーカイブ(tar.gz)を任意のフォルダにアップロードして、コマンドを実行します。
デフォルトのPerlとは異なるディレクトリにインストールします。

# tar zxvf perl-5.38.2.tar.gz
# cd perl-5.38.2/
# ./Configure -des -Dprefix=/usr/local/perl-5.38.2./Configure -des -Dprefix=/usr/local/perl-5.38.2
# make
# make install

8.Perlのパス張り替え

Perl5.32.1から5.38.2に張り替えます。

# perl -v
This is perl 5, version 32, subversion 1 (v5.32.1) built for x86_64-linux-thread-multi
 :
# cd /usr/bincd /usr/bin
# mv perl perl--
# ln -s /usr/local/perl-5.38.2/bin/perl /usr/bin/perl
# perl -v
This is perl 5, version 38, subversion 2 (v5.38.2) built for x86_64-linux
 :

9.cpanmでPerlモジュールのインストール

MovableTypeの動作に必要なモジュールをインストールします。

# perl -MCPAN -e 'install App::cpanminus'perl -MCPAN -e 'install App::cpanminus'
 :
Would you like to configure as much as possible automatically? [yes] yes
 :
# /usr/local/perl-5.38.2/bin/cpanm HTML::Entities/usr/local/perl-5.38.2/bin/cpanm HTML::Entities
# /usr/local/perl-5.38.2/bin/cpanm DBI/usr/local/perl-5.38.2/bin/cpanm DBI
# /usr/local/perl-5.38.2/bin/cpanm DBD::mysql/usr/local/perl-5.38.2/bin/cpanm DBD::mysql

10.postfixのインストール

# dnf -y install postfixdnf -y install postfix

11.SeLinuxの無効化

エディタで/etc/selinux/configを開き、

SELINUX=enforcing

SELINUX=disabled

に変更します。

# vi /etc/selinux/config

12.メールサーバの設定

/etc/postfix/main.cfと/etc/postfix/master.cfを編集します。

詳細は「さくらのVPSに送信メールサーバを設定する方法」を参照してください。

12.httpd起動

starman起動前に通常のCGIでMovableTypeの管理画面にアクセスします。

# systemctl start httpd

13.PSGI環境構築のためのパッケージとモジュールのインストール

# dnf install perl-ExtUtils-MakeMaker
# /usr/local/perl-5.38.2/bin/cpanm/usr/local/perl-5.38.2/bin/cpanm --sudo CGI::Compile--sudo CGI::Compile
# /usr/local/perl-5.38.2/bin/cpanm --sudo CGI::CompilePlack
# /usr/local/perl-5.38.2/bin/cpanm --sudo Plack
# /usr/local/perl-5.38.2/bin/cpanm --sudo XMLRPC::Transport::HTTP::Plack

その他、
CGI::Parse::PSGI
CGI::PSGI
も必要ですが、インストールされていたので省略。
インストールされていることの確認は、モジュールのバージョン表示コマンドを実施。

# perl -MCGI::PSGI -e 'print $CGI::PSGI::VERSION . "\n";'
# perl -MCGI::Parse::PSGI -e 'print $CGI::Parse::PSGI::VERSION . "\n";'

14.httpd.conf修正

# vi /etc/httpd/conf/httpd.conf

PSGI動作のために下記のLoadModuleディレクティブを追加

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

ServerNameディレクティブにVMのIPアドレスを設定。

ServerName 192.168.56.100

一番最後に下記の内容を追加(上記のmod_proxyを設定しておかないと機能しません)。

<IfModule mod_proxy.c>
    ProxyPass        /cgi-bin/mt/ http://localhost:5000/cgi-bin/mt/
    ProxyPassReverse /cgi-bin/mt/ http://localhost:5000/cgi-bin/mt/
</IfModule>

修正後、httpdを再起動します。

# systemctl restart httpd

起動後、/etc/httpd/logs/error_logにエラーが出ていないことを確認。

私はServerNameが設定されていなかったのと、LoadModuleが設定されていないところで躓きました(error_logに表示されているのをみつけて解決)。

15.mt.pid用ディレクトリ作成

ここではMTインストールディレクトリ(/var/www/cgi-bin/mt)配下に作成します。

# mkdir -p /var/www/cgi-bin/mt/pids

16.mt-config.cgiに環境変数追加

下記の1行を追加します。

PIDFilePath /var/www/cgi-bin/mt/pids

17.starman起動

# cd /var/www/cgi-bin/mt
# starman -l 0.0.0.0:5000 --pid /var/www/cgi-bin/mt/pids/mt.pid ./mt.psgi

18.ブラウザからMT管理画面にアクセス

今回の例では、ポート番号5000番を指定して、

http://192.168.56.100:5000/cgi-bin/mt/mt.cgi

にアクセスします。

これでMT管理画面が表示されればOKです。


Comments [0] | Trackbacks [0]
 1  |  2  |  3  |  4  |  5  | All pages
toto Cancer toto Malukutoto login situs toto toto macau toto 4d Malukutoto slot maxwin MALUKU TOTO situs toto Malukutoto login Maluku toto cancertoto toto depo 5k ilmu bet slot gacor malukutoto
maluku toto toto Malukutoto Malukutoto CANCER TOTO situs slot cancertoto toto CANCERTOTO ilmubet Cancertoto toto toto cancertoto
situs toto SLOT GACOR SLOT GACOR HARI INI situs toto
cancer toto malukutoto Maluku toto cancer toto CANCERTOTO SITUS SLOT GACOR MALUKU TOTO toto toto macau maluku toto slot gacor slot gacor cancer toto malukutoto situs depo 5k situs toto cancertoto cancertoto CANCER TOTO cancertoto toto toto toto 4d 4d 4d
slot gacor slot gacor slot gacor slot slot slot slot gacor hari ini slot gacor hari ini slot gacor hari ini situs slot situs slot situs slot situs slot situs slot situs slot slot slot slot slot gaocr slot gaocr slot gacor