lnmp+wordpress環境構築


問題の要約
Nginx部
必須ライブラリ
yum install -y wget vim gcc gcc-c++ zlib-devel pcre-devel openssl-devel

コンパイルオプション
./configure --with-http_stub_status_module --prefix=/data/wwwroot/nginx-1.17.1 --user=www --group=www --with-http_ssl_module

注意事項
補足対象
開始
.../sbin/nginx

よくあるエラー
補足対象
考えをまちがえる
1、nginx-t、最も簡単な間違いは、nginxのプロファイル構文をチェックし、問題がなければ、次のようなメッセージを返します.
nginx: the configuration file /data/wwwroot/nginx-1.17.1/conf/nginx.conf syntax is ok
nginx: configuration file /data/wwwroot/nginx-1.17.1/conf/nginx.conf test is successful

2、nginxのログ機能を開く
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

前の「#」を消せばいい
MySQLセクション
初期化パラメータ
bin/mysqld --initialize --user=www --basedir=/data/wwwroot/mysql --datadir=/data/wwwroot/mysql/data

注意事項
初期化されたパスワードはlogファイルの下のmysql_に保存されます.error.log(このファイルはmy.cnfファイルで定義した「log-errorオプション」です)
cat log/mysql_error.log | grep password

MySQLパスワードの変更
bin/mysql_secure_installation

開始
...support-files/mysql.server start  #       

よくあるエラー
問題1:mysqld初期化操作を実行するとき、エラーメッセージは以下の通りです.
bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

解決策:インストールlibaioライブラリの実行
yum install libaio libaio-devel -y

質問2:MySQLが持っている起動スクリプトを使用してMySQLを起動する場合、エラーメッセージは以下の通りです.
Starting MySQL. ERROR! The server quit without updating PID file (/data/wwwroot/mysql/data/blog.blacklinux.cn.pid).

解決方法:権限1、MySQLパス権限を検査する
chown -R www.www /data/wwwroot/mysql  #      MySQL  

2、検査my.cnfファイル
...
[mysqld]
user = www  #   MySQL     
port = 3306
...

PHP部
必須ライブラリ
yum install -y zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel

パラメータのコンパイル
./configure --prefix=/data/wwwroot/php-7.3.7 --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-zlib --with-openssl

注意事項
PHPソースパッケージに付属のプロファイルを使用
mv lib/php.ini-production lib/php.ini

PHPのデフォルトで生成されていないプロファイルのコピー
cp -a etc/php-fpm.conf.default etc/php-fpm.conf
cp -a etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.conf

phpを変更します.iniのmysqli.default_ソケットオプション
mysqli.default_socket = /data/wwwroot/mysql/run/mysql.sock

開始
.../sbin/php-fpm

よくあるエラー
問題1:php-fpmエラーメッセージを起動し、エラーメッセージは以下の通りです.
[root@localhost php-7.3.7]# sbin/php-fpm 
[05-Jul-2019 04:01:01] WARNING: Nothing matches the include pattern '/lnmp/php-7.3.7/etc/php-fpm.d/*.conf' from /lnmp/php-7.3.7/etc/php-fpm.conf at line 143.
[05-Jul-2019 04:01:01] ERROR: No pool defined. at least one pool section must be specified in config file
[05-Jul-2019 04:01:01] ERROR: failed to post process the configuration
[05-Jul-2019 04:01:01] ERROR: FPM initialization failed

解決方法:www.confを生成する
cp -a etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.conf

問題2:Fatal error: Uncaught Error: Call to undefined function gzinflate()解決方法:これはソースコードがphpをコンパイルする時zlibを持っていないため、再コンパイルする時zlibを持っていけばいいです
データベース操作
MySQLデータベースの例
create database wordpress;
grant all on wordpress.* to wordpress@'localhost' identified by '123456';
flush privileges;

ファイアウォール操作
80(http)ポートと443(http)ポートを追加して公開
firewall-cmd --zone=public --add-port=80/tcp --permanent
    :
--zone #   
--add-port=80/tcp  #    ,   :  /    
--permanent   #    ,          

     
systemctl restart firewalld.service

ブートストラップ
に権限を与える
chmod +x /etc/rc.d/rc.local

rc.localに以下の内容を追加
/lnmp/nginx/sbin/nginx
/lnmp/mysql/support-files/mysql.server start
/lnmp/php/sbin/php-fpm