PHP再コンパイル

Apache2.4をWorkerモードで起動したい・・・そんな理由で結局、PHP7.4を再コンパイルしました。

# vi /etc/httpd/conf.modules.d/00-mpm.conf

LoadModule mpm_worker_module modules/mod_mpm_worker.so ←チェックアウト
#LoadModule mpm_event_module modules/mod_mpm_event.so ←コメントアウト

お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。

とでたのでyum install –enablerepo=remi, remi-php74 php-mysqlnd php74-php-mysqlnd

apache停止 PHP再コンパイル apachectl -V でWorker モード起動確認しました。

[root@www conf.modules.d]# apachectl -V
[Sat Jun 27 17:27:57.558701 2020] [so:warn] [pid 3872:tid 140188049873088] AH01574: module php7_module is already loaded, skipping
Server version: Apache/2.4.43 (codeit) Server built: May 7 2020 12:24:30 Server's Module Magic Number: 20120211:92 Server loaded: APR 1.7.0, APR-UTIL 1.6.1 Compiled using: APR 1.7.0, APR-UTIL 1.6.1 Architecture: 64-bit Server MPM: worker threaded: yes (fixed thread count) forked: yes (variable process count)

新たに警告、module php7_module is already loaded, skipping がでましたが起動には問題ないのでこちらは追々、解決していくことにします。

AWSのCentOS7にPHP7.4をソースからインストール – OpenSSL1.1.1 TLS1.3 対応

AWSのCentOS7.8にPHP7.4をyumでインストールしたものの、OpenSSLのバージョンが1.0.2k-fips 26 Jan 2017と古いままだったのでOpenSSL-1.1.1g PHP7.4.7 をソースビルドしてCode-ITリポジトリからApache2.4をインストールした顛末をメモ。

CentOS7にOpenSSL1.1.1をインストール | Qiita

OpenSSLは上記記事を参考に/usr/local/openssl-1.1.1 にインストール済みです。ただパスが通っていないので以下の通りにシンボリックリンクを貼りました。追記)/usr/local/openssl-1.1.1 への環境変数も追加で登録しました。

# mv /usr/bin/openssl /usr/bin/openssl.bak
# ln -s /usr/local/openssl-1.1.1/bin/openssl /usr/bin/openssl

# export PATH=/usr/local/openssl-1.1.1/bin:$PATH

CentOS 6 の環境にPHP7をインストールしてApacheで動かすまで

少々古い記事ですがPHP7.4のコンパイルに必要そうなパッケージはyumで一気に揃えます。

# yum -y install httpd-devel gd-devel libxml2-devel mysql-devel t1lib-devel
# yum -y install bzip2-devel curl-devel gmp-devel aspell-devel recode-devel
# yum -y install libmcrypt-devel

PHP7.4.7は公式から/usr/local/src にwget でダウンロード、解凍します。

# cd /usr/local/src
# wget https://www.php.net/distributions/php-7.4.7.tar.gz
# tar zxvf php-7.4.7.tar.gz
# cd php-7.4.7 # ./configure --with-apxs2=/usr/bin/apxs --bindir=/usr/local/bin --with-openssl=/usr/local/openssl-1.1.1 --with-libxml --with-mysqli --with-zlib --with-curl --with-xsl --with-gettext --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-gmp \ --enable-mysqlnd \ --enable-mbstring \ --enable-bcmath \ --enable-pcntl \ --enable-cgi \ --enable-cli \ --enable-exif \ --enable-ftp \ --enable-sockets \ --enable-sysvsem \ --enable-sysvshm \ --enable-sysvmsg \ --enable-shmop \ --enable-calendar \ --enable-opcache \ --enable-intl \ --disable-debug

途中、make testでopcacheインストールしてないよ!とかいろいろ怒られましたがyumでその都度インストール対応しました。

# yum --enablerepo=epel,remi-php74 install php-opcache

make & make install

# make
# make install

で表題の件。

CentOS7にyumでHTTP/2.0対応Apache/OpenSSLを導入してみる

CodeITリポジトリ導入。Apache2.4本体、秘密鍵のインストールして起動・・・

# cd /etc/yum.repos.d && wget https://repo.codeit.guru/codeit.el`rpm -q --qf "%{VERSION}" $(rpm -q --whatprovides redhat-release)`.repo
# yum install httpd

# cd /etc/pki/tls/certs/
# make localhost.crt
# make localhost.key # cd ../private/ # cp ../certs/localhost.key ./
# cp localhost.key localhost.key.orig ## 秘密鍵のパスフレーズを解除 # openssl rsa -in localhost.key.orig -out localhost.key

## Apache httpd HTTPSとHTTP/2通信用の設定
## ssl.confの # Virtual Host Context 行下に追記

# vi /etc/httpd/conf.d/ssl.conf

Protocols h2 http/1.1 (追記 # systemctl start httpd

起動しようとしたのですが失敗しました。

systemctl status httpd.service -l でエラーメッセージを取得すると、

Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe.  You need to recompile PHP

Google先生に訊いてみるとApache がWorker として起動していてPHPと不整合している旨了解しました。/etc/httpd/conf.modules.d/00-mpm.conf を編集して

#LoadModule mpm_event_module modules/mod_mpm_event.so ←チェック
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so ←チェックを外す

するとApache 起動しました。

PHPインストール時のMPMのエラーを手っ取り早く解消する

AWSのt2.microではPHPのソースビルドでも「aws virtual memory exhausted: メモリを確保できません」エラーが出てスワップを作らないとインストールできなかったほど限界で、マルチスレッドからシングルスレッドになりスピードダウンは否めないのでWorkerモードしてもどの程度負荷軽減できるか課題の残るところです。phpinfo.php で確認すると無事、OpenSSL1.1.1g TLS1.3 対応しました。

スワップ作成は以下のサイトが参考になりました。

[Rails] CapistranoでEC2へデプロイ:EC2仮想メモリ不足トラブルシュート

AWS CentOS7 にPHP最新版をインストールする

PHPのバージョン最新版をAWSのCentOS7にインストールしようとして試行錯誤した顛末。

お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。と表示された対応 | Qiita

そもそもremiリポジトリがなく最初にインストールするところから始めました。

# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

鍵がない!(NOKEY)と怒られたので、wget でとりに行きました。

# wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

# rpm -Uvh remi-release-7.rpm

ここでエラー: 依存性の欠如:
epel-release = 7 は remi-release-7.7-2.el7.remi.noarch に必要とされています

ん・・・epel が必要らしいことがbash のlocale をJPにして気付きました。

# yum -y install epel-release

こんなこともしばらく触れないうちに忘れてしまうものなんですね・・・で表題の件。PHPをモジュールごとまるっとインストールします。

PHP バージョン情報 | OpenStandia™ (オープンスタンディア) 最新版は7.4.7

# yum install --enablerepo=remi,remi-php74 php php-devel php-mbstring php-pdo php-gd php-xml php-mcrypt php-mysql

# php -v
PHP 7.4.7 (cli) (built: Jun 9 2020 10:57:17) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

無事、Wordpress を初期設定できました。ありがとうございました。

AWS SCPオプションでつまづく

AWS にデータベース用のインスタンスをプライベートネットワーク上に作成、ローカルからSCPを使ってキーファイルを転送しようとしたところ、connection refused で弾かれました。コマンドのポート指定オプションを間違えていたようです。

$ scp -P 20022 -i /path/to/identityfile localfilename remoteuser@hostname:~/

大文字の-Pで転送できました。(ホッ

追記) 踏み台サーバーからログインするために.ssh/config のパーミッション設定は必須でした。

# chmod 700 ~/.ssh
# chmod 600 ~/.ssh/config

リムーバブルドライブのBitLockerロック解除

SATA3接続のSSDをデータドライブとしてWindows10 Proのディスク暗号化機能、BitLockerで暗号化して音楽ファイルなどを保存していたのですが、ある日突然、解除できなかったのでPowerShellのコマンドでのアンロック方法をメモ。

manage-bde のロック解除 | Microsoft Docs

PowerShell を管理者として実行プロンプトから

manage-bde -unlock F: -pw

無事、パスワードを訊かれ初期パスワードを入力するとアンロックできました。ロックするには

manage-bde -lock F:

今のところ、GUIからのロック方法は見つかりませんでした。

McAfee Endpoint Security for Linux 無料トライアル版をインストールする

McAfee Endpoint Security for Linux Threat Prevention 10.6.9 無料トライアル版ENSL1069_Eval.zip をダウンロードします。

https://www.mcafee.com/enterprise/ja-jp/downloads/trials.html?pid=endpoint-security

ファイルを解凍、作業ディレクトリ /usr/local/src/ 配下に設置します。

# cd ENSL1069_Eval/ENSL1069_Eval

キーを解凍
# tar xvf MCAFEE_LLC.PUB.TAR

本体を解凍
# tar zxvf McAfeeTP-10.6.9-121-Eval-standalone.tar.gz

解凍された圧縮ファイルを解凍
# tar zxvf McAfeeTP-10.6.9-121-standalone.linux.tar.gz
すべて解凍
# tar zxvf McAfeeESP-Basic-10.6.9-126-Full.linux.tar.gz
# tar zxvf McAfeeESP-KernelModule-10.6.9-126-Full.linux.tar.gz

キーをインポート
# rpm --import MCAFEE_LLC.PUB

署名を確認
# rpm -K McAfeeESP-10.6.9-126.x86_64.rpm
# rpm -K McAfeeRt-10.6.9-126.x86_64.rpm
# rpm -K McAfeeTP-10.6.9-121.x86_64.rpm
# rpm -K McAfeeESPFileAccess-10.6.9-126.x86_64.rpm
# rpm -K McAfeeESPAac-10.6.9-126.x86_64.rpm

# cd MA562LNX/

パッケージをインストール
# rpm -ivh MFEma.x86_64.rpm
# rpm -ivh MFErt.i686.rpm
# cd ..
# ./install-mfetp.sh usefanotify

ライセンス条項をスクロールして accept [Enter] します。

インストールが終わるまでディスプレイを眺めながらお茶でも飲みます。

コマンドから起動確認

# /opt/McAfee/ens/tp/bin/mfetpd restart
# /opt/McAfee/ens/tp/init/mfetpd-control.sh status

mfetpd start/running, process ######
お疲れさまでした。

MySQL データベースのエクスポート

OpenSSH をソースビルド時にうっかりSSLのライブラリーを上書きしてしまいSSHが起動しなくなりました。Web サーバーも起動エラーして再起不能かと思いましたがバックアップHDDが生きていてWordpressのデータを救出することができました。

MySQLのデータベースをまるっとお引越し。 (エクスポート/インポート)

mysqldumpまとめ

user_name, database_name, パスワードはwp-config.php で確認後、USBメモリにエクスポート。

# mysqldump -u user_name -p database_name > export_file_name.sql

HDDを入れ替えてOS起動、インポートも同様に、

# mysql -u user_name -p database_name < export_file_name.sql

AWS セッションマネージャーをインストールしてみた

概要
いつの日か、あなたがSSHキーを吹っ飛ばしても落ち着いて対応できる道しるべ 〜SSMの手順を添えて〜

不測の事態に備えてAWS のCentOS7のインスタンスにセッションマネージャーをインストールする手順をメモ。

まずはAmazon Linux2 などデフォルトで搭載されているSSMエージェントをインストールしてみる。

Linux 用の EC2 インスタンスに手動で SSM エージェント をインストールする

# sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
# sudo systemctl status amazon-ssm-agent 起動確認 # sudo systemctl enable amazon-ssm-agent 自動起動

AWSコンソール→IAMからロールの作成

ユースケース→EC2→次のステップ:アクセス権限でポリシー一覧からAmazonEC2RoleforSSMを選択、タグを付けてロール名を登録、作成。

AWSコンソール→EC2→アクション→インスタンスの設定→IAMロールの割り当て/置換で先ほど作成したロールを適用して関連付けしたら完了。

AWSコンソール→System Manager→セッションマネージャーから[セッションの開始]で関連付けられたインスタンスを選択して[セッションを開始する]

GUIからサーバーに入ることができました。