投稿

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

FreeBSDの環境にPython 3.11をインストール

バッチ処理が遅いなと思ったので、python3.11をインストールしてみたときの覚書。 環境: FreeBSD 14.1-RELEASE, Python 3.9.18 1. 現在のPythonの環境を確認。 Pythonのバージョン。 # python3.9 --version Python 3.9.18 Python 3.9向けにインストールされたパッケージ確認。 Python 3.9ではpipをインストールせずpkg経由で管理する方針だった。 # pkg info | grep py39 py39-aioquic-0.9.25           py39-anyio-4.3.0              py39-async_generator-1.10     py39-attrs-23.2.0             py39-certifi-2024.2.2         py39-cffi-1.16.0              py39-charset-normalizer-3.3.2 py39-clang-11.0               py39-cryptography-42.0.5_1,1  py39-dnspython-2.6.1,1        py39-exceptiongroup-1.2.0     py39-h11-0.14.0               py39-h2-4.1.0                 py39-hpack-4.0.0              py39-httpcore-1.0.5           py39-httpx-0.27.0_1           py39-hyperframe-6.0.0         py39-idna-3.7                 py39-importlib-metadata-7.1.0 py39-markdown-3.5.2           py39-openssl-23.2.0,1         py39-outcome-1.3.0_1          py39-packaging-23.2           py39-psutil-5.9.8             py39-psycopg-3.1.18           p

FreeBSDのディスク容量とパーティション確認。ConohaのOS選択で同一名称がある理由。

Conoha VPSを使っているときに「あれ?100Gあるはずなのにもう容量がいっぱいになったぞ?」と思ったときの覚書。 環境: Conoha VPS 8GBプラン, FreeBSD 14.1 ディスク容量確認。 # df -h Filesystem      Size    Used   Avail Capacity  Mounted on /dev/vtbd0p2     27G     22G    2.5G    90%    / devfs           1.0K      0B    1.0K     0%    /dev 27Gしかマウントされていない。 ファイルシステム確認。 # mount /dev/vtbd0p2 on / (ufs, local, soft-updates, journaled soft-updates) devfs on /dev (devfs) パーティション確認。 # gpart show =>      40  62914480  vtbd0  GPT  (100G) [CORRUPT]         40      1024      1  freebsd-boot  (512K)       1064  58719232      2  freebsd-ufs  (28G)   58720296   3145728      3  freebsd-swap  (1.5G)   61866024   1048496         - free -  (512M) CORRUPT(破損)と表示されている…。 FreeBSDを14.0から14.1にアップグレードしたからかもしれないと思い、サーバーを再構築してみた。 今度はファイルシステムをZFSにしてみた。 # gpart show =>      40  62914480  vtbd0  GPT  (100G) [CORRUPT]         40      1024      1  freebsd-boot  (512K)       1064       984         - free -  (492K)       2048   4194304      2  freebsd-swap  (2.0G)    4196352  587

FreeBSD14にPostgreSQL+pgAdmin4をインストール

開発環境のローカル仮想マシンにPostgreSQLをインストールしたときの覚書。 環境: FreeBSD 14.1, Python 3.9.18, PostgreSQL 15.6 1. PostgreSQL Serverをインストール pkgからインストールする。 最初はpostgresql16-serverをインストールしたけど、py39-psycopgをインストールしたときにpostgresql15へ置き換えようとするので、postgresql15-serverをインストールし直した。 # pkg search postgresql # pkg search -f postgresql15-server # pkg install postgresql15-server 画面に表示された通りに実行。 # sysrc postgresql_enable=yes # service postgresql initdb # service postgresql start データの置き場所などを起動スクリプトで確認。 # less /usr/local/etc/rc.d/postgresql postgresユーザーになって確認する。 # su - postgres # pwd /var/db/postgres ユーザー一覧とデータベース一覧表示。 $ psql postgres=# \du postgres=# \l 2. PostgreSQLの文字セット(エンコーディング)を設定 日本語を扱う場合は、ja_JPをを設定してあげないと正しく並び替えできない。 前の記事を参考にする。 参考:  PostgresSQLの言語設定(locale)をja_JPにする OSで提供している言語地域(ロケール)を確認。 # locale -a 「ja_JP.UTF-8」があるのを確認。 PostgreSQLの設定変更。 # su - postgres $ less data15/postgresql.conf lc_messages = 'C.UTF-8'                 # locale for system error message                                         # strings lc_mo

PHP8からMariaDBへUnix Socketで接続する設定

FreeBSDのMariaDBへphpからUnix socketで接続できるようにしたときの覚書。 環境: FreeBSD 14.0, MariaDB 15.1, PHP 8.3.6 (FreeBSDの)PHPで接続先を「localhost」に設定すると、Unix socketを参照しようとする。 「127.0.0.1」すればTCP経由で接続するけど、せっかくなのでTCPを無効にして、Unix socketだけで待ち受けするようにしてみた。 TCPを無効にするには公式サイトを参考に。 参考:  Configuring MariaDB for Remote Client Access - MariaDB Knowledge Base まずは待ち受け中のポート確認。 # netstat -an -p tcp MariaDBの設定ファイル編集。 「port」をコメントアウトする。 # cd /usr/local/etc/mysql/ # less my.cnf [client-server] #port   = 3306 socket  = /var/run/mysql/mysql.sock 「bind-address」をコメントアウトして、「skip-networking」「skip-bind-address」を追記する。 # less conf.d/server.cnf [mysqld] user                            = mysql # port                          = 3306 # inherited from /usr/local/etc/mysql/my.cnf # socket                        = /var/run/mysql/mysql.sock # inherited from /usr/local/etc/mysql/my.cnf #bind-address                   = 127.0.0.1 basedir                         = /usr/local datadir                         = /var/db/mysql net_retry_count               

FreeBSD14にApache+SubversionをインストールしてNginxからリバースプロキシ

Subversionの容量が増えてきたので、複数サーバーにSubversionをインストールしてリポジトリを分けようとしているときの覚書。 環境: FreeBSD 14.0, Apache 2.4.59, Subversion 1.14.3 1. Apacheをインストール pkg経由でインストール。 # pkg search apache # pkg install apache24 ビルドオプションを確認。 # apachectl -V Server version: Apache/2.4.59 (FreeBSD) Server built:   unknown Server's Module Magic Number: 20120211:131 Server loaded:  APR 1.7.3, APR-UTIL 1.6.3, PCRE 10.43 2024-02-16 Compiled using: APR 1.7.3, APR-UTIL 1.6.3, PCRE 10.43 2024-02-16 Architecture:   64-bit Server MPM:     prefork   threaded:     no     forked:     yes (variable process count) Server compiled with....  -D APR_HAS_SENDFILE  -D APR_HAS_MMAP  -D APR_HAVE_IPV6 (IPv4-mapped addresses disabled)  -D APR_USE_FLOCK_SERIALIZE  -D APR_USE_PTHREAD_SERIALIZE  -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT  -D APR_HAS_OTHER_CHILD  -D AP_HAVE_RELIABLE_PIPED_LOGS  -D DYNAMIC_MODULE_LIMIT=256  -D HTTPD_ROOT="/usr/local"  -D SUEXEC_BIN="/usr/local/bin/suexec"  -D DEFAULT_PIDLOG="/var/run/httpd.pid

FreeBSD 14 + Nginx + PHP + MariaDB + Postfixの環境を構築(2024年版)

ConohaでFreeBSDの仮想マシンを設定しているときの覚書。 環境: Conoha VPS 8GBプラン, FreeBSD 14.0 目次 初期設定 Nginxをインストール php8.3をインストール MariaDBをインストール phpMyAdminをインストール SSL設定 Postfix + DKIM(送信ドメイン認証)をインストール 1.初期設定 keymapが日本語になっているので英語キーボードへ変更する。 管理画面のコンソールから設定する(keymap="jp"をコメントアウト)。 # less /etc/rc.conf #keymap="jp" あとはSSHでログイン。 FreeBSDのシステムアップデート。 # freebsd-update fetch # freebsd-update install パッケージマネージャをアップデート。 インストール済みパッケージを確認。 # pkg update # pkg upgrade # pkg info Timezone確認。 # date 時刻があってなければタイムゾーンを設定。 # bsdconfig シェルを確認してBashをインストール。 # echo $SHELL # pkg search bash # pkg install bash bash-completion 画面の指示通りにする。 ログインシェルなので.bashrcでなくて.bash_profileに記述する。 # vi .bash_profile bashに切り替えてデフォルトをBashにする。 # bash # chsh -s /usr/local/bin/bash vimをインストール。 # pkg install vim デフォルトのエディタをviからvimに変更する。 (lessからvで起動するための設定) # less .bash_profile export EDITOR="/usr/local/bin/vim" シェルの再読み込みして環境変数確認。 # source .bash_profile # printenv vimの設定ファイルvimrcの場所を確認。 # vim --version デフォルトで/usr/local/share/vim/vim

FreeBSD + Nginx + PHP + MariaDBの環境を構築

ローカルの仮想マシンにウェブ開発環境を設定しているときの覚書。 初期設定は前の記事を参考に。 参考:  FreeBSD13.1の仮想マシンをインストールして初期設定 環境: FreeBSD 14.0 OSのバージョン確認 # freebsd-version 14.0-RELEASE-p6 インストール済みのパッケージ情報を表示。 # pkg info 自動起動するサービスはbsdconfigが一覧で分かりやすい。 # bsdconfig 1.nginxのインストール 公式リポジトリを検索。 # pkg search nginx インストールしてconfの場所などビルドオプション確認。 # pkg install nginx # nginx -V nginx version: nginx/1.24.0 built with OpenSSL 3.0.12 24 Oct 2023 TLS SNI support enabled configure arguments: --prefix=/usr/local/etc/nginx --with-cc-opt='-I /usr/local/include' --conf-path=/usr/local/etc/nginx/nginx.conf --sbin-path=/usr/local/sbin/nginx --pid-path=/var/run/nginx.pid --error-log-path=/var/log/nginx/error.log --user=www --group=www ... 自動起動ON、起動、確認。 # service nginx enable # service nginx start # service nginx status 設定ファイルを編集。 # cd /usr/local/etc/nginx/ # less nginx.conf worker_processes  auto; events {     worker_connections  1024; } http {     include       mime.types;     default_type  application/octet-stream;     log_format  main  

FreeBSDを13.1から14.0にアップグレード

仮想マシンのFreeBSDをアップグレードしたときの覚書。 環境: VMware Fusion 13.5.1 参考 Chapter 26. Updating and Upgrading FreeBSD | FreeBSD Documentation Portal 今のバージョンを確認。 # freebsd-version 13.1-RELEASE-p9 14.0にアップグレード # freebsd-update upgrade -r 14.0-RELEASE いくつかシステムファイルを手動で更新しないといけない。 インストール実行 # freebsd-update install Kernel updates have been installed.  Please reboot and run "/usr/sbin/freebsd-update install" again to finish installing updates. 再起動しないとダメらしい。再起動して再実行。 # shutdown -r now # freebsd-update install Completing this upgrade requires removing old shared object files. Please rebuild all installed 3rd party software (e.g., programs installed from the ports tree) and then run "/usr/sbin/freebsd-update install" again to finish installing updates. もう一度やれというのでやっておく。 # freebsd-update install バージョン確認。 # freebsd-version 14.0-RELEASE-p6 パッケージマネージャをアップデート。 # pkg update ld-elf.so.1: Shared object "libssl.so.111" not found, required by "pkg" よく分からないので再起動する。 # shutdown -r now

PHPでog:imageの日本語部分だけをencodeURIする

Facebookに記事のURLを張り付けたときに画像が表示されなくなったので調査したときの覚書。 環境: WordPress 6.5.2 おそらくog:imageに日本語が含まれているから。 PHPのurlencodeを使うとスラッシュとかもエンコードしてしまうので、日本語部分だけをURLエンコードしたい。 いろいろ調べた結果、WordPressのformatting.phpにある「utf8_uri_encode」を使うのが簡単そう。 確認はシェアデバッガーを使う(旧名はFacebook linter)。 シェアデバッガー - Meta for Developers 【関連記事】 ホームページにOpen Graphを埋め込んでFacebookにURLを張り付けられたときの見え方をコントロール

KUSANAGIでHTTP/3 QUICを試す

KUSANAGIはHTTP/3に対応したNginxとQuicに対応させたOpenSSLをバンドルしているということで試してみたときの覚書。 参考:  KUSANAGI 9 が対応した HTTP/3 とは - KUSANAGI Tech Column 環境: ConoHa VPS メモリ8G/CPU6コア、KUSANAGI Version 9.4.12-1.el9 Nginxを1.25に切り替え 公式ページを参考にしながらkusanagiコマンドを実行する。 参考:  KUSANAGI 9 バージョンアップ情報 9.3.0-1 - 超高速CMS実行環境 KUSANAGI # kusanagi nginx --use nginx125 # kusanagi nginx --update-conf 確認 # nginx -V # cd /etc/opt/kusanagi/nginx/ # less conf.d/ssl_listen.inc firewalldで443/UDPが登録されている確認。 # systemctl status firewalld # firewall-cmd --list-all public (active)   target: default   icmp-block-inversion: no   interfaces: eth0   sources:   services: cockpit dhcpv6-client http https ssh   ports: 443/udp 60000/tcp 443/udpが登録されていた。 KUSANAGIが登録してくれたんだと思う。 UDPで待ち受けしているポート一覧表示(ssコマンドにuオプションで実行)。 # ss -anu ちなみにTCPでの待ち受けポートはtオプションで実行する。 # ss -ant クライアントから443/UDPの疎通確認 ConoHaのコントロールパネルでセキュリティグループを変更してないから、まだ443/udpで通信できないはず。 ChromeのDevToolsのNetworkタブでProtocolを確認する。 cURLでも確認してみた。 PS:> curl --head -v --http3 https://test.hoge.co.jp/ * using

KUSANAGIのチューニング設定を調査

KUSANAGIを試したときにチューニング設定がとても勉強になるなぁと思って調査したときの覚書。 環境: ConoHa VPS メモリ8G/CPU6コア、KUSANAGI Version 9.4.12-1.el9 設定項目を1つずつ調査して意味を理解していく。 PHPのチューニング設定 PHPの設定確認。 # cd /etc/opt/kusanagi/ # less php.d/php.ini post_max_size = 16M ;POSTメソッドの最大サイズ upload_max_filesize = 16M ;アップロードされるファイルの最大サイズ date.timezone = UTC ;タイムゾーン。"Asia/Tokyo"に変更 php-fpmの設定を確認。 参考:  PHP: 設定 - Manual # less php-fpm.d/www.conf user = httpd group = www listen = 127.0.0.1:9000 ;unix socketに変更 pm.start_servers = 10 ;プロセス開始時のプロセス数 pm.min_spare_servers = 5 ;待ち状態の最小プロセス数 pm.max_spare_servers = 15 ;待ち状態の最大プロセス数 pm.max_requests = 500 ;再起動するまでの実行リクエスト数 slowlog = /var/opt/kusanagi/log/php-fpm/www-slow.log request_slowlog_timeout = 10 request_terminate_timeout = 180 catch_workers_output = yes ;ワーカーの標準出力を本体にリダイレクト decorate_workers_output = no ;ワーカーの標準出力の文字装飾 clear_env = no ;FPM ワーカー内の環境をクリア php_admin_value[error_log] = /var/opt/kusanagi/log/php-fpm/www-error.log php_admin_flag[log_errors] = on php_value[session.save_handler] = f

ConoHa VPSのKUSANAGIを試す

KUSANAGIを試したときの覚書 環境: CentOS Stream 9, KUSANAGI manager 0.5.2, KUSANAGI 9.4.12 KUSANAGIとは KUSANAGIはWordPress実行環境。 サーバーのスペックに合わせて、PHP, Nginx, MariaDBなどをいい感じに設定してくれて、WordPressの表示を高速化できる。 KUSANAGIとは - 超高速CMS実行環境 KUSANAGI Linuxのミドルウェアとの疎結合を保ちつつ、Nginx, OpenSSLなど必要な部分だけKUSANAGIのパッケージで提供している。 サーバーに詳しい人でも、KUSANAGIのチューニング方法は非常に勉強になる。 KUSANAGI環境の確認 kusanagiコマンドで設定状況を確認。 参考:  status - 超高速CMS実行環境 KUSANAGI # kusanagi status KUSANAGI Version 9.4.12-1.el9 conoha *** (active) nginx : nginx124 *** * nginx.service - The NGINX HTTP and reverse proxy server      Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled)      Active: active (running) since Thu 2024-02-22 14:10:48 JST; 3 days ago *** (inactive) httpd : httpd24 *** * httpd.service - The Apache HTTP Server      Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; preset: disabled)      Active: inactive (dead) *** (active) php : php74 *** * php-fpm.service - The PHP FastCGI Process Manager      Loaded: loaded

PHPを8.0から8.2にdnfでアップグレード

PHP8.0の公式サポートが終了したのでPHP8.2にアップグレードしたときの覚書。 環境: CentOS Stream 8 WordPressがサポートしているphpバージョンも確認しておく。 参考:  PHP Compatibility and WordPress Versions – Make WordPress Core 1.PHP8.2をdnfモジュール一覧からアップグレード dnf moduleの中にphp8.2が追加されていた。 前の記事を参考に。 参考:  CentOS Stream 8のPHPを7.4から8.0にアップグレード 現在のモジュールを確認 # dnf module list php CentOS Stream 8 - AppStream Name                   Stream   php                    7.2 [d]  php                    7.3      php                    7.4      php                    8.0 [e]  php                    8.2      php8.0から8.2に切り替える。 phpを初期状態にresetしてphp8.2を有効にする。 # dnf module reset php # dnf module enable php:8.2 # dnf --allowerasing distro-sync 確認 # php --version PHP Warning:  PHP Startup: imagick: Unable to initialize module Module compiled with module API=20200930 PHP    compiled with module API=20220829 These options need to match  in Unknown on line 0 PHP Warning:  PHP Startup: mecab: Unable to initialize module Module compiled with module API=20200930 PHP    compiled wit