この投稿は openSUSE Advent Calendar の 11日目です。そろそろ折返しです。

まれにスクリーンロックが固まってしまい、パスワードの入力画面が表示されいことがあります。このようなときに、ロックを解除する方法があります。使用するのは systemd に含まれているコマンド、loginctl です。

ロック画面が固まってしまったら、まず行うのが仮想コンソールでのログインです。Ctrl+Alt+F1を押すとログインプロンプトが表示されるので、ユーザー名とパスワードを入力してログインしてください。

つぎに、loginctl を実行すると、セッションの一覧が表示されます。

$ loginctl
SESSION  UID USER  SEAT  TTY
     22 1000 geeko seat0 tty1
      3 1000 geeko seat0 

2 sessions listed.

セッション 22 は、TTY が tty1 なので、現在操作している仮想コンソールです。固まっているのはセッション 3 です。

ロックを解除するには、以下のコマンドを実行します:

$ loginctl unlock-session 3

これでロックが解除できました。操作している仮想コンソールを Ctrl+D で抜けて、Ctrl+Alt+F7 を押すと、デスクトップに戻ることができます。

openSUSE.Asia Summit 2023 に行ってきた

By ftake @ 2023-11-05 13:39

10月25日、26日に中国の重慶で開催された openSUSE.Asia Summit 2023 に参加してきました。openSUSE.Asia Summit は2014年から、ほぼ毎年開催してきましたが、2020年は中止、2021年はオンライン、2022年はオンラインとサテライト開催(台北、ジャカルタ、東京)でしたので、会場に集まっての開催は実に4年ぶりとなります。

中国の重慶には、大学の学生を中心とした強い OSS コミュニティがあります。サービスを企画して運用するような大学のサークル活動もあるそうです。openSUSE.Asia Summit 開催は(記憶によると)2回目の挑戦で初開催です。会場は重庆邮电大学(重慶郵電大学、Chongqing University of Posts and Telecommunications)でした。会場には約200人が集まりました。

基調講演は openSUSE Board から Patrick が Geeko Foundation について発表しました。これまで、openSUSEには資金面での受け皿がなく、寄付等を受け取ることができませんでした。この問題を解決するために、資金団体を立ち上げる計画が進められていましたが、今年、設立に至りました。

こちらは、RISC-V アーキテクチャの CPU ボードシリーズ Milk-V のデモ。人気があって入手困難という話を小江戸らぐで聞いたことがありました。うまく動かなかったらしく、ワークショップ中になにやらデバッグ中の風景です。

インドネシアの Edwin は、ダウンロードを改善するためにインドネシアに設置したリポジトリのミラーサーバについて発表しました。月間20TBを捌いているのですが、皮肉なことにトラフィックの多くは中国からになってしまっているそうです。現在は openSUSE の公式リポジトリも CDN を使ってリポジトリへのアクセスを改善しようとしています。しかし、こちらは(費用面の問題からだと思いますが)小さなファイルの配布にのみ使用しており、引き続きこのミラーサーバーは必要になるとのことでした。

昼ご飯はみんなで大学の近くの食堂へ。

ローカルな食べ物をみんなで囲いました。ローカルの料理を選んでくれたのか、いくつか辛い料理がありました。麻婆豆腐は会社近くの中華料理屋の四川風麻婆豆腐のほうが辛かったです。

私の発表は午後最初の枠でした。ODC などでも話している xdg-autostart-generator の話です。Leap 15.5での解決は間に合わなかったものの、このタイトル。

集合写真

夜はボランティア、発表者とともに懇親会へ。ちょっと豪華な地元料理です。ボランティアは情報系の学生だけではなく、語学系の学生も多く駆り出されていました。この懇親会では、日本のアニメが好きという学生と一緒にご飯を食べました。

カンファレンスツアー

今年のカンファレンスツアーは重慶の中心部から2時間ほど離れた、大足石刻を見に行きました。地獄の図、天国の図、千手観音とどれもスケールの大きい仏像ですが、なんと、どれも崖の岩を直接掘って作られています。

こちらは地獄の図

こちらは天国の図

この千手観音も崖を掘って作られています。

晩御飯は重慶名物の火鍋!磁器口とよばれる古い町並みを再現した観光地の外れにひっそりと佇む、隠れ家的な火鍋レストランでの夕食でした。

辛い方は一番辛くない設定にしてあったそうですが、辛かったです。具材はほとんどホルモンでした。癖の強いものは辛い方に入れないと美味しく食べられないそうです。

重慶ってどんな場所?

場所と地形

重慶は中国のほぼ中央の内陸部にある都市です。2023年10月時点では、COVID-19 以降の制限が解除されきっておらず、日本からの直行便は大阪からに限られており、北京や上海を経由して8時間程度で行くことができます。


大きな地図を表示

街の中心部は長江と嘉陵江という大きな合流地点にあります。大きな川沿いなので、広大な平地かというとそうではなく、高い丘や山に囲まれた谷になっています。このような場所に、3千万もの人が住んでいるということで、山沿いに高層ビル、タワマンが並ぶ姿は写真では伝わらない凄さです。

当然ですが、川沿いから内陸側に徒歩で行こうものなら、ものすごい階段を登る必要があります。エスカレーターやエレベーターはありません。

買い物、食べ物

町中にはいたるところにコンビニがあります。よく見かけるのはローソンとセブンイレブンです。日本や北京に比べると、かなり店舗は小さめですが、食料品を中心に馴染みのあるものが並んでいます。

朝ご飯はホテルと同じ建物にある飲食店を使いました。カウンター席4席のワンタンと小麺(ラーメン)屋では 100 g のワンタンスープが約220円で、これで十分お腹いっぱいになります。

観光地だとちょっと高いです。麻婆茄子丼は約500円でした。

困るのが注文です。簡単な英語も伝わりません。写真つきのメニューがあって、指差しができれば良いのですが、それもない場合は困ります。メニューはなんとなく何かは漢字から想像が付きます。あるお店では、何が聞かれているのか分からなかったところ、「熱」「冷」のように書いてくれました(漢字が読めることがよく分かったな)。もちろん Google 翻訳も役立ちます。

ちなみに、支払いは基本 QR コード決済です。現金も当然使えますが、お釣りがなくて困ることがあるようです。今年から Alipay に日本のクレジットカードが登録できるようになったので、気軽に使えました。カードのせいか、最初の1回だけうまく決済できず焦りましたが、カードを変えて以降は大丈夫でした。

パンダ

本場とあって、重慶動物園にはたくさんのパンダがいます。そして大人気。動き回っている子のまわりには、人だかりができていました。ほとんどの子は昼前にも関わらず、気持ち良さそうにぐっすり。ちょっと酔っ払いみたいです。

夜景

川沿いはライトアップされ、夜景がきれいです。観光船も運行しています。

ロープウェイにも乗ってみました(写真なし)。橋が開通して、地下鉄が通るようになるまでは移動手段として使われていたそうですが、今はすっかり観光用です。

ホテルの近くには、洪崖洞とよばれる、崖沿いにホテルやレストランなどが集まった商業施設があります。これまた豪華なライトアップで、多くの観光客が押し寄せていました。

交通

市の中心部は地下鉄やモノレールが張り巡らされており、近距離であれば、1回40円程度で移動できます。もちろん支払いは Alipay です。Alipay で発行できる公共交通機関専用の QR コードを使って乗降できます。

歴史はとても浅く、このあとに紹介するモノレールの2号線の開業が最も古く2005年、路線のほとんどは2010年代になってからの開業で、どれも設備が新しいです。

中でも有名なのが、この李子坝 (Liziba) 駅。マンションの中を線路が貫いています。観光スポットになっており、駅前では多くの人がカメラを構えていました。

来年の開催は?

開催地の公募はこれからですが、早速、インドネシアチームが手を挙げています。少しでも興味のある方は、ぜひなんらかの発表を用意して参加してみてください。

Geeko Magazine Special Edition 2023夏

By ftake @ 2023-07-30 21:45

コミックマーケットC102に出展します。スペースは 2日目 西地区 か-09a です。

今回からは午後入場券の当日販売がありますので、参加しやすくなったかと思います。周囲には Linux をはじめとした技術系同人誌を扱うサークルが多数集まっていますので、ぜひお越しください。

Webカタログでは見本誌を公開しています。

2022年のふりかえり

By ftake @ 2022-12-25 16:52

openSUSE Advent Calendar 2022 にご参加ありがとうございました。

最終日は毎年恒例の1年のふりかえりをしたいと思います。

5月

OSC/Online 名古屋に参加し、久しぶりにまとまったセミナーを開催しました。タイトルは「たまには日本語入力 Mozc の話でもしようか〜新機能の紹介とコードコミットができないプロジェクトとの関わり方」で、Tumbleweed では既に配信されている開発が再開後のバージョンの Mozc をパッケージングするにあたり、やってきたことをまとめてみました。

7月

openSUSE Leap 15.4 のリリースパーティをオンライン(Gather Town)で開催しました。

8月

コミックマーケット C100 に参加し、Geeko Magazine 2022夏号を頒布しました。台風が近づく荒天での開催でしたが、来場者数の上限が引き上げられたこともあり、久しぶりの賑わいを感じることができました。

9月

ODC 2022/Online に Cross Distro Developers Camp (XDDC) の名義で参加しました。「Linux ディストリビューション開発の近況」というタイトルで、Debian、openSUSE、Ubuntu の開発の近況について話をしました。

10月

openSUSE.Asia Summit 2022 を開催しました。昨年は完全なオンラインでしたが、今年はオンラインのイベントに加え、オフラインサテライト会場を東京、台北、ジャカルタに用意しました。オフライン会場ではオンラインでの発表を一緒に聴講したり、各地域ごとの講演を行いました。オフラインでの懇親会も久しぶりでした。

PA013265
openSUSE.Asia Summit 2022フォトアルバム

OSC Online/Fall では、修太さんが「YAML に書いた宣言的な定義から VM を作ってみた 〜一般のご家庭向けver〜」というタイトルで発表しました。

11月

オフラインでの展示が復活したということで関西オープンフォーラム2022に参加しました。

12月

openSUSE Advent Calendar 2022 を開催しました。今年は無事に完走できました。

12月31日にコミックマーケットC101に参加し、Geeko Magazine 2022冬を頒布します。

まとめ

後半から少しずつ対面のイベントが増えてきた1年でした。

来年は OSC も展示イベントを東京・名古屋で開催することになっており、参加イベントも増えそうな気がします。来年も引き続き、openSUSE ユーザ会の活動にご参加ください。

Geeko Magazine Special Edition 2022 冬

By ftake @ 2022-12-17 13:01

Geeko Magazine の新刊を発行します。最初の頒布はコミックマーケット C101 2日目 12/31(土)です。スペースは西地区 “さ” ブロック 22b です。
https://webcatalog.circle.ms/Perma/Circle/10269059/

今回の記事は以下のとおりです

  • iPXE を使って openSUSE を自動インストール
    Proxmox VE 上で AutoYaST を使う
  • openSUSE で iSCSI
    QNAP に iSCSI で繋げてみる
  • openSUSE で Qsync を動かす
    QNAP を使ったファイル同期機能
  • WordPressがメモリー不足で落ちた!
    いまさらだけどApacheのMPMを見直した話
  • CombustionでMicroOSをプロビジョン
  • eBPFとLinux カーネルコードリーディング
  • 小説: エーデル・シュティメ 〜とあるカメレオンの雪解けな平日〜

コロナ禍で過去号を手にしていない方も多いと思いますので、2022年夏号、2021年冬号とのセットも予定しています。コミックマーケットC101への参加には入場券の事前購入が必要ですのでお気をつけください。最後までいますので、午後券でも大丈夫です。

はじめに

先日、C100 と Geeko Magazine の告知を出した際、geeko.jp のウェブサーバーが落ちてしまいました。普段は全然問題ないのですが、512 MB の VPS のため、ほんの少しアクセスが増えるとメモリーを使い果たしてしまうようです。

openSUSE の Web サーバーは 2009 年頃から使い続けていることもあって Apache で、しかも MPM (Multi-processing modules) は prefork です。複数のアクセスに対してプロセスを作成して対応するので、メモリー使用量やプロセスの生成コストが課題です。設定変更前のメモリー使用量を見ると次のような状態で、1プロセスあたり 30 MB 前後使っています。とりあえずの対策としては、プロセスの最大数を抑えればよいのですが、メモリー使用量削減のため、これを機に MPM を event にすることにしました。

# smem -U wwwrun -k
  PID User     Command                         Swap      USS      PSS      RSS 
26053 wwwrun   /usr/sbin/httpd-prefork -DS    24.2M   576.0K     1.3M     9.5M 
23952 wwwrun   /usr/sbin/httpd-prefork -DS    14.5M    20.8M    21.7M    30.4M 
26051 wwwrun   /usr/sbin/httpd-prefork -DS     5.6M    23.5M    24.4M    32.9M 
23953 wwwrun   /usr/sbin/httpd-prefork -DS     6.3M    23.7M    24.4M    31.8M 
 2023 wwwrun   /usr/sbin/httpd-prefork -DS     5.4M    24.0M    24.8M    32.7M 
 7054 wwwrun   /usr/sbin/httpd-prefork -DS     7.5M    26.0M    26.8M    35.0M 
23955 wwwrun   /usr/sbin/httpd-prefork -DS     5.0M    32.6M    33.6M    42.2M 
23956 wwwrun   /usr/sbin/httpd-prefork -DS     5.5M    34.2M    34.9M    43.1M 
23959 wwwrun   /usr/sbin/httpd-prefork -DS     5.5M    34.4M    35.3M    43.8M 
 2022 wwwrun   /usr/sbin/httpd-prefork -DS     6.0M    34.7M    35.6M    43.6M

少し前までの Apache の MPM といえば worker で、スレッドを使って並列処理をします。私の知識もここで止まっていました。event は新しい MPM で、今どきのイベント駆動で実装されています。ワーカースレッド内で受信待ちやソケット書き込み待ちをせずに、パケット到着や書き込み可能になったイベントを受けてスレッドに処理を割り当てるようです。

MPM を prefork から event にするために必要なことは、次の通りです。

  • event MPM をインストールする
  • PHP を mod_php による実行から mod_proxy_fcgi + php_fpm (FastCGI) による実行に変える
  • php_fpm で Web アプリを実行できるように AppArmor のプロファイルを設定する

結構面倒くさいですね。

openSUSE のバージョンは Leap 15.4 です。

event MPM をインストールする

これは簡単で apache2-event をインストールするだけです。apache2-prefork もインストールされいる環境では、apache2-event が優先されます。

zypper in apache2-event

mod_proxy_fcgi + php_fpm への変更

これまでは mod_php でこの Word Press などを実行してきました。mod_php の場合、PHP のスクリプトは Apache のプロセスで実行されていました。マルチスレッドに対応していない mod_php は event や worker では使用できません。php_fpm で PHP を別プロセスで起動しておき、リクエスト時にこの PHP プロセスに処理を依頼する形に変更する必要があります。

セットアップ手順は以下の通りです。php7-fpm をインストールして、パッケージに含まれるデフォルトの設定を有効化します。

zypper in php7-fpm

cd /etc/php7/fpm
mv php-fpm.conf.default php-fpm.conf
cd php-fpm.d
mv www.conf.default www.conf

systemctl enable php-fpm
systemctl start php-fpm

Apache 側の設定を変えます。openSUSE では Apache で使用するモジュールは /etc/sysconfig/apache2 で有効化します。php7 を削除し、proxy と proxy_fcgi を追加します。

APACHE_MODULES="(省略)proxy proxy_fcgi"

次に、php ファイルのハンドリングを mod_php から php_fpm に切り替えます。/etc/apache2/conf.d/ に以下のファイルを作成します。openSUSE のデフォルト設定では php7_fpm は 9000 で待ち受けていますので、php へのアクセスを 127.0.0.1:9000 に転送するようにします。

ProxyErrorOverride on は php_fpm がエラーを返した場合に、php_fpm のエラーメッセージをそのままブラウザに返すのではなく、Apache 側で設定したエラー画面を表示するための設定です。


SetHandler "proxy:fcgi://127.0.0.1:9000"


SetHandler application/x-httpd-php-source

DirectoryIndex index.php4
DirectoryIndex index.php5
DirectoryIndex index.php7
DirectoryIndex index.php
ProxyErrorOverride on

AppArmor の設定変更

openSUSE Leap 15.4 では php_fpm 用の AppArmor プロファイルが含まれており、php_fpm が行える操作に制限がかかっています。そのため、何も設定しないと、php-fpm が php ファイルにアクセスできません。/var/log/audit/ に次のようなログが出力され、403 が返ります。

type=AVC msg=audit(1661003085.840:89050): apparmor="DENIED" operation="open" profile="php-fpm" name="/srv/www/htdocs/index.php" pid=20329 comm="php-fpm" requested_mask="r" denied_mask="r" fsuid=498 ouid=498

php_fpm のプロファイルを調整するには、/etc/apparmor.d/php-fpm.d/ に次のような設定ファイルを作成し、php-fpm がアクセスできるディレクトリを設定します。

  # tmp へのアクセス
  include 
  # htdocs への読み書き
  # 読み取りだけであれば  もあり
  owner /srv/www/htdocs/** rw,

結果

設定後にメモリー使用量を見てみます。

  PID User     Command                         Swap      USS      PSS      RSS
29193 wwwrun   /usr/sbin/httpd-event -DSYS   208.0K   804.0K     1.3M     4.9M
29195 wwwrun   /usr/sbin/httpd-event -DSYS   208.0K     1.6M     2.8M    11.0M
29194 wwwrun   /usr/sbin/httpd-event -DSYS   208.0K     1.6M     2.8M    11.1M
29196 wwwrun   /usr/sbin/httpd-event -DSYS   208.0K     2.2M     3.4M    11.6M
29278 wwwrun   /usr/sbin/httpd-event -DSYS   208.0K     3.2M     4.4M    12.7M
29094 wwwrun   php-fpm: pool www             208.0K    25.3M    30.3M    47.1M
29306 wwwrun   php-fpm: pool www             208.0K    33.8M    38.4M    54.5M
29337 wwwrun   php-fpm: pool www             208.0K    35.6M    39.5M    54.0M

php-fpm のプロセスが増えましたが、Apache のプロセスのメモリー使用量はぐっと小さくなりました。Apache と php-fpm の初期プロセス数、最大プロセス数はこれから調整したいと思います。

Geeko Magazine 2022 夏

By ftake @ 2022-08-07 21:45

今年の夏も Geeko Magazine を発行します。最初の頒布はコミックマーケット C100 1日目 8月13日(土)西2ホール す19b です。事前に入場券の購入が必要になりますので、ご注意ください。