優れたソフトウェアと実用的なチュートリアル
Alibaba Cloud Centos8でDnfを使ってLNMPをインストールする、WordPressインストールチュートリアル
アリババクラウドCentos8LNMP環境を構築してインストールする ワードプレス Alibaba CloudでCentOS 8オペレーティングシステムをセットアップしたら、まずは基本的な設定を行います。Alibaba CloudにWordPressをインストールします。
Alibaba CloudがCentOS8の中国語パッケージをインストール
合格 DNF検索 中国語言語パックを検索するコマンド
dnf検索言語パック
簡体字中国語のインストールパッケージは次の通りです: langpacks-zh_CN.noarch
DNF コマンド経由で直接:
dnf インストール langpacks-zh_CN
言語を変更:
vi /etc/locale.conf
元のコンテンツを次のように変更します。
LANG="zh_CN.UTF-8"
最後に、次のコマンドを渡します。ロケール -a zh_CNが正常にインストールされているか確認する
Alibaba Cloudはcentos8でEPELとREMIソースを設定します
epelリポジトリをインストールする
dnf -y インストール https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
epelライブラリが正常にインストールされているかどうかを確認する
rpm -qa | grep epel
remiリポジトリをインストールする
dnf インストール https://rpms.remirepo.net/enterprise/remi-release-8.rpm
remiライブラリが正常にインストールされているかどうかを確認する
rpm -qa | grep remi
ソフトウェアソースをインストールした後、DNFキャッシュを再構築します。
dnf メイクキャッシュ
Centos9の場合は、次のパスに従ってソフトウェアソースをインストールします。
dnf -y インストール https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm dnf -y インストール https://rpms.remirepo.net/enterprise/remi-release-9.rpm
実行中のすべてのサービスを取得し、ポートの使用状況を表示します。
systemctl list-units --type=service netstat -lntup

Alibaba Cloud は cnetos8 で DNF 経由で php/nginx/mysql をインストールします
Alibaba CloudにPHPをインストールする
EPEL および Remi リポジトリを正常に追加したら、次のコマンドを実行して、利用可能な PHP モジュール ストリームのリストを取得します。
dnfモジュールリストphp
PHPモジュールをリセットします:
dnfモジュールリセットphp
PHPバージョンに対応するストリームモジュールを有効にします。ここではPHP 7.4バージョンをインストールするため、remi-7.4バージョンのストリームを有効にします。
dnf モジュールを有効にする php:remi-7.4
PHPをインストールします。このコマンドは、他の多くのパッケージもインストールします。
dnf インストール php
dnf で php-mysql と php-gd をインストールします
PHP をインストールした後、PHP の権限を変更します。
vi /etc/php-fpm.d/www.conf
ユーザー = nginx
group = nginx WordPress をインストールした際にディレクトリが作成できない場合は、wp ファイル保存ディレクトリ、nginx ユーザーグループ、PHP ユーザーグループが同じユーザーの下にあることを確認してください。
wp ストレージ ディレクトリの権限を変更します。
chown -R nginx:nginx /home/www
php-fpm がどのユーザー グループに属しているかを確認します。
ps -ef | grep php-fpm
PHP 設定ファイルを変更します。
vi /etc/php.ini
cgi.fix_pathinfo を = 0 に変更しました。
upload_max_filesize = 2M ファイルのアップロードサイズ。デフォルト値は小さすぎるため、1024M に変更することをお勧めします。
display_errors = on エラーを印刷する
post_max_size = フォームの最大サイズは 8M、1024M が推奨
max_execution_time=600 PHPスクリプトの最大実行時間 権限設定:
chown -R nginx:nginx /run/php-fpm/www.sock
PHP が正常にインストールされているかどうかを確認します。
php -v
起動および実行中のサービスを設定します。
systemctl で php-fpm を有効にする
systemctl php-fpm を起動する
一般的な操作コマンド:
再起動:
systemctl php-fpm を再起動します。
起動する:
systemctl php-fpm を起動する
閉鎖:
systemctl 停止 php-fpm
州:
systemctl ステータス php-fpm
Alibaba Cloudにnginxをインストールする
EPEL および Remi リポジトリを正常に追加したら、次のコマンドを実行して、利用可能な nginx モジュール ストリームのリストを取得します。
dnfモジュールリストnginx
nginx モジュールをリセットします:
dnfモジュールリセットnginx
nginxのバージョンに対応するストリームモジュールを有効にします。ここではnginx1.18バージョンをインストールするので、nginx1.18バージョンのストリームを有効にします。
dnfモジュールを有効にする nginx:1.18
nginxをインストールします。このコマンドは、他の多くのパッケージもインストールします。
dnf インストール nginx -y
nginx が正常にインストールされているかどうかを確認します。
nginx -v
ポートの使用状況を確認します:
netstat -lntup
起動および実行中のサービスを設定します。
systemctl で nginx を有効にする
systemctl nginx を起動する
nginxをアンインストールする
dnf nginx を削除
一般的なコマンド:
再起動:
systemctl nginx を再起動する
起動する:
systemctl nginx を起動する
閉鎖:
systemctl nginxを停止する
州:
systemctl ステータス nginx
注: インストールされているnginxのバージョンがPHPをサポートしていない場合、PHPページを開いた後にページのダウンロードが発生します。test.phpというテストページを作成してください。ページの内容:
<?php phpinfo(); ?>
PHPがサポートされていない場合は、nginxインストールディレクトリ/etc/nginxにconf.dフォルダとdefault.dフォルダを作成する必要があります。以下の内容を含む/default.d/php.confファイルを作成してください。
# PHP スクリプトを FastCGI サーバーに渡します # # ソケット構成については conf.d/php-fpm.conf を参照してください # index index.php index.html index.htm; location ~ \.php$ { try_files $uri =404; fastcgi_intercept_errors on; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass php-fpm; }
次の内容を含む /conf.d/php-fpm.conf ファイルを作成します。
# PHP-FPM FastCGI サーバー # ネットワークまたは UNIX ドメイン ソケット構成 アップストリーム php-fpm { server unix:/run/php-fpm/www.sock; }
nginx.conf ファイルに、フォルダー挿入参照ステートメントを 2 つ追加します。
nginxはドメイン名証明書sslを生成します
acme.sh スクリプトを使用して SSL 証明書を申請します。 まずsocatをインストールします:
dnf インストール socat
acme.shをインストールする
カール https://get.acme.sh | sh
スクリプトをインストールした後は、必ず再起動してください。
リブート
証明書申請:
nginx でドメイン名を設定したら、次のように証明書を申請します。
acme.sh --issue -d www.uzbox.tk -d uzbox.tk --webroot /home/uzbox/
nginxの設定を読み取るコマンドも使用できます。サイトがnginxで設定されていない場合は、まずサイトを設定してください。
acme.sh --issue -d www.uzbox.tk -d uzbox.tk --nginx
証明書の申請が成功したら、証明書をインストールします。 まず、nginx 構成ファイルのサーバー ブロックに次のコードを追加します。
ssl_certificate /home/ssl/uzbox.tk/fullchain.cer; ssl_certificate_key /home/ssl/uzbox.tk/uzbox.tk.key;
ドメイン名証明書の申請が成功したら、指定された場所に証明書をインストールする必要があります。/home/フォルダ内に新しい/ssl/フォルダを作成し、その下に証明書保存フォルダ/uzbox.tk/を作成します。その後、以下のコマンドを実行して証明書をインストールしてください。注意:証明書保存フォルダを作成していない場合、証明書のインストールは「Unable to touch '/home/ssl/uzbox.tk/uzbox.tk.key': No such file or directory」というエラーメッセージが表示されて失敗します。
acme.sh --installcert -d uzbox.tk --key-file /home/ssl/uzbox.tk/uzbox.tk.key --fullchain-file /home/ssl/uzbox.tk/fullchain.cer --reloadcmd "service nginx force-reload"
より詳細なドメイン名証明書申請チュートリアル:acme.sh ドメイン名SSL/TSL証明書の無料申請
Alibaba Cloud CentOS 8 で dnf 経由で MySQL をインストールする
最新のパッケージマネージャーを使用してインストールするMySQL
dnf インストール @mysql
起動する
systemctl enable --now mysqld
MySQLサーバーが実行中かどうかを確認する
systemctl ステータス mysqld
パスワードとセキュリティ設定を追加する
mysql_secure_installation スクリプトを実行します。このスクリプトは、セキュリティ関連の操作をいくつか実行し、MySQL ルート パスワードを設定します。
sudo mysql_secure_installation
手順は次のとおりです。
VALIDATE PASSWORDコンポーネントを構成するように求められます。yと入力してEnterキーを押すと構成に入ります。
パスワード検証ポリシーのレベルを選択します。0(低)を選択し、Enterキーを押します。
新しいパスワードを2回入力してください
入力したパスワードを引き続き使用してもよろしいですか? y と入力して Enter キーを押します。
匿名ユーザーを削除しますか?yと入力してEnterキーを押します
ルートリモートログインを許可しますか?nと入力してEnterキーを押します
テストデータベースを削除しますか?yと入力してEnterキーを押します
権限テーブルを再読み込みしますか?yと入力してEnterキーを押します
MySQLのリモートログインを設定します。ルートアカウントのリモートログインを設定する必要がある場合は、前の手順「ルートのリモートログインを許可しますか?」を繰り返します。この手順は「y」に設定する必要があります。
次に、MySQL にローカルでログインし、root ユーザーのホスト フィールドを '%' に設定します。これは、root のすべての IP アドレスからのログイン要求を受け入れることを意味します。
設定後、mysqlサービスを再起動します。
systemctl で mysqld を再起動します。
MySQL 8.0がデフォルトで設定されていますutf8mb4文字セットが変更されなくなったため、文字セットは変更されなくなりました
Alibaba CloudにphpMyAdminをインストールする
phpMyAdminWebサイト:https://www.phpmyadmin.net/
phpMyAdmin の最新バージョンをダウンロードしてください。phpMyAdmin は視覚的な MySQL 管理ツールです。
wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
ダウンロード後、ファイルを解凍します
tar -zxvf phpMyAdmin-最新-すべての言語.tar.gz
解凍したファイルの名前を変更する
mv phpMyAdmin-5.2.0-すべての言語 phpMyAdmin
フォルダをウェブサイトディレクトリに移動する
mv phpMyAdmin /home/www
インストール後にPHP拡張機能がインストールされていない場合は、PHP-mysqlnd拡張機能をインストールする必要があります。
dnf で php-mysqlnd をインストールします
最後に、Web ディレクトリを再認証します。
chown -R nginx:nginx /home/www
phpMyAdmin 設定ファイルを変更します。
phpMyAdmin ホームディレクトリで、設定ファイルの名前を変更します。
cd /home/uzbox/phpMyAdmin/
mv config.sample.inc.php config.inc.php
vi config.inc.php
$cfg['Servers'][$i]['host'] = 'localhost'; を $cfg['Servers'][$i]['host'] = '127.0.0.1'; に変更しました。
次に、phpMyAdmin が Cookie に使用する短いパスワードを変更します。
$cfg['blowfish_secret'] = ''; は $cfg['blowfish_secret'] = '123456'; に変更されます (注: '123456' は 32 ビットを超える任意の文字です)。
このパスワードは、複数の PhpMyAdmin または他のプログラムが Cookie を共有するときに混乱を避けるために、Cookie を暗号化するために使用されます。

セッションパス(たとえば、/var/lib/php/session)のユーザーグループと権限を変更し、対応するセッションパスに移動します。
/var/lib/php をコピーする
chown nginx:nginx ./session
chmod -R 777 ./session
phpmyadminディレクトリに新しいtmpフォルダを作成し、権限を777に設定します。
chmod -R 777 /home/uzbox/phpMyAdmin/tmp
phpMyAdmin の高度な機能が完全に構成されておらず、一部の機能が有効化されていない問題を解決しました。
これは、phpMyAdmin で空の phpmyadmin データベースを作成するをクリックすることで解決できます。
最後に、Nginx で phpMyAdmin のアクセスパスを設定すると、正常にアクセスできるようになります。 アクセス時に phpmyadmin が空白の場合はどうすればいいですか? 別のバージョンをお試しください。注:phpMyAdmin 5.2.0はphp7.2以降のみをサポートしています。php7.2はサポートされていません。phpMyAdminに空白ページが表示される場合は、phpバージョンを変更するか、phpMyAdminのバージョンを変更してみてください。phpMyAdminページがエラーで開く場合は、phpバージョンを変更してから再度アクセスしてみてください。 phpMyAdmin 5.2.0
phpMyAdmin 5.2.0のリリースへようこそ。このリリースには、多くの新機能と多数のバグ修正が含まれています。また、下流のパッケージングチームを支援するために、5.1シリーズの最終リリースとなるphpMyAdmin 5.1.4もリリースしました。ほとんどのユーザーは5.2.0に移行することをお勧めします。特に注目すべきは、これらのリリースでは、ファイルのエクスポート時に発生するネットワークエラーが修正されていることです( https://github.com/phpmyadmin/phpmyadmin/issues/17445 )。5.2.0 のその他のハイライトは次のとおりです。
- Microsoft Internet Explorerのサポートを削除しました
- PHP 7.2以降が必要です
- openssl PHP拡張機能が必要です
- システム CA バンドルと cacert.pem の処理が改善され、必要に応じて Mozilla CA にフォールバックできるようになりました。
- 「マスター/スレーブ」という用語を「マスター/レプリカ」に置き換えます
- テーブル検索に「NOT LIKE %...%」演算子を追加します
- Mroongaエンジンのサポートを追加
- アカウントロックアウトのサポートを追加
- SQLパーサーライブラリの修正と改善
もちろん、このリリースに含まれるChangeLogファイルまたはオンラインで見つけることができます。その他の修正と新機能については、https://demo.phpmyadmin.net/master-config/index.php?route=/changelog をご覧ください。 現在入手可能https://phpmyadmin.net/downloads/ダウンロード
Alibaba CloudにWordPressをインストールする
WordPress公式サイト:https://cn.wordpress.org/
まず、WordPress の最新バージョンをダウンロードしてください。
wget https://cn.wordpress.org/latest-zh_CN.tar.gz
ダウンロード後、ファイルを解凍してください。
tar -xzvf 最新-zh_CN.tar.gz
フォルダをウェブサイトディレクトリに移動する
mv wordpress /var/wwwroot
cd /var/wwwroot
wp-config-sample.phpファイルの名前を変更します
cp wp-config-sample.php wp-config.php
ウェブサイトの構成ファイルを変更します。
vim wp-config.php
WordPress データベースの名前: definition( 'DB_NAME', 'WordPress' );
MySQL データベースのユーザー名: Define( 'DB_USER', 'root' );
MySQL データベースのパスワード: definition( 'DB_PASSWORD', 'mysql password' );
MySQLホスト: 定義( 'DB_HOST', '127.0.0.1' );
データテーブルを作成する際のデフォルトのテキストエンコーディング:define('DB_CHARSET', 'UTF8' );
ファイルの末尾に次のコードを追加します。
if(is_admin()) {add_filter('filesystem_method', create_function('$a', 'return "direct";' ));define( 'FS_CHMOD_DIR', 0751 );}
設定ファイルを変更した後、phpMyAdminをWordPressディレクトリに配置します。
mv phpMyAdmin /var/wwwroot/phpMyAdmin
https://ウェブサイトのドメイン名/phpMyAdmin
次にphpMyAdminを開き、新しいWordPressデータベースを作成し、「WordPress」という名前を付けて、空のデータベースを作成します。このデータベース名は、上記のwp-config.phpで設定した名前と同じにする必要があります。
その後、ブラウザでウェブサイトを設定し、インストール手順を順に実行してください。Google Chromeのご利用をお勧めします。
https://ウェブサイトのドメイン名/wp-admin/install.php ウェブサイトプラグイン更新のインストールとテンプレートのインストール権限設定:
このステップでは、ディレクトリのパーミッションを777に設定する人もいますが、これはセキュリティリスクを伴います。正しい設定は、すべてのユーザーグループとユーザー、つまりPHPのユーザーグループ、NGINXのユーザーグループ、そしてWordPressストレージディレクトリのユーザーグループを統一することです。
まずウェブサイトの保存ディレクトリに入り、フォルダのユーザーグループと権限を確認します
cd /var/wwwroot/
ls -l コマンドを使用して、ディレクトリが属するユーザーグループを表示します。デフォルトのユーザーグループとユーザーはどちらも root です。
ls -l
ウェブサイトが保存されているディレクトリのユーザー グループの権限を変更します。
chown -R nginx:nginx /var/wwwroot/
たとえば、nginx は nginx ユーザーを使用して起動されるため、ここでは nginx ユーザー グループと nginx ユーザーに変更する必要があります。
PHP では、起動に nginx ユーザー グループも使用する必要があります。
vi /etc/php-fpm.d/www.conf
ユーザー = Apache
グループ = Apache
nginxユーザーグループとユーザーを変更する
ユーザー = nginx
グループ = nginx
php ユーザーグループ、NGINX ユーザーグループ、および wordpress ストレージディレクトリのユーザーグループを変更したら、サーバーを再起動するだけです。
NGINX nginx.conf 設定(参考のみ): nginx.conf の設定:
user nginx; #ユーザーまたはグループを設定します。デフォルトはnobodyです。 worker_processes auto; #生成を許可するプロセスの数です。デフォルトは1です。 pid /run/nginx.pid; #nginxプロセス実行の保存アドレスを指定します。 file error_log /var/log/nginx/error.log error; #エラーログのパスとレベルを指定します。この設定は、グローバルブロック、httpブロック、サーバーブロックに配置できます。レベルはdebug | info | notice | warn | error | crit | alert | emergで、レベルが高いほどエラーログの記録数が少なくなります。一般的には#動的モジュールをロードします。 include /usr/share/nginx/modules/*.conf; #動作モードと接続数の上限 - eventsグローバル設定 events { accept_mutex on; #パニックを防止するためにネットワーク接続のシリアル化を設定します。デフォルトはオンです。 multi_accept on; #プロセスが同時に複数のネットワーク接続を受け入れるかどうかを設定します。デフォルトはオフです。 #epollを使用します。 #イベント駆動型モデル。select|poll|kqueue|epoll|resig|/dev/poll|eventport worker_connections 1024; #単一のワーカープロセスに許可される最大接続数。デフォルトは512です。 } #httpサーバー構成ファイル block http { log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #ログ形式をカスタマイズします access_log /var/log/nginx/access.log myFormat; #アクセス ログのパスと形式を設定します。combined はログ形式のデフォルト値です。 rewrite_log on; #access_log off; #サービス アクセス ログをキャンセルします sendfile on; #Allow sendfile にファイルを転送します。デフォルトはオフで、http ブロック、サーバー ブロック、ロケーション ブロックで使用できます。 sendfile_max_chunk 0; #プロセスごとの呼び出しあたりの転送数は、設定値より大きくすることはできません。デフォルトは 0 で、上限はありません。 keepalive_timeout 1000; #接続タイムアウト。デフォルトは 75 秒で、http、サーバー、ロケーション ブロックで使用できます。 client_max_body_size 1024m; types_hash_max_size 4096; tcp_nodelay on; tcp_nopush on; default_type application/octet-stream; #デフォルトのファイルタイプ。デフォルトは text/plain です。fastcgi_connect_timeout 3000; #fastcgi 接続タイムアウト。デフォルトは 60 秒です。fastcgi_send_timeout 3000; #nginx プロセスが fastcgi プロセスにリクエストを送信するタイムアウト。デフォルトは 60 秒です。fastcgi_read_timeout 3000; #fastcgi プロセスが nginx プロセスに出力を送信するタイムアウト。デフォルトは 60 秒です。gzip on; #gzip 圧縮スイッチ。on で Gzip 圧縮をオンにします。デフォルトは off でオフになります。gzip_min_length 1k; # gzip 圧縮の最小ファイルを有効にします。設定値より小さいファイルは圧縮されません。gzip_comp_level 8; # gzip 圧縮レベル (1 ~ 9)。数字が大きいほど圧縮率は高くなりますが、CPU 時間も長くなります。gzip_buffers 4 16k; # 圧縮に必要なバッファー サイズを設定します。gzip_http_version 1.1; # gzip 圧縮の HTTP プロトコル バージョンを設定します。ペイロードが使用されていない場合は無視できます。gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/vnd.ms-fontobject font/ttf font/opentype font/x-woff image/svg+xml; # 圧縮するファイルの種類。JavaScript には多くの形式があります。値は mime.types ファイルで確認できます。gzip_vary on; # HTTPヘッダーにVary: Accept-Encodingを追加するかどうか。gzip_disable "MSIE [1-6]\." をオンにすることをお勧めします。# IE 6のgzipを無効にする。gzip_proxied off; include /etc/nginx/mime.types; # ファイル拡張子とファイルタイプのマッピングテーブル。MIMEタイプ(メールサポートタイプ)を設定します。タイプはmime.typesファイルで定義されます。include /etc/nginx/conf.d/*.conf; # /etc/nginx/conf.dディレクトリからモジュール設定ファイルを読み込みます。}
サーバー構成:
server { listen 80; listen [::]:80; server_name www.uzbox.tk uzbox.tk; #ウェブサイトのドメイン名return 301 https://uzbox.tk$request_uri; #301Redirect to https } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name www.uzbox.tk; #ウェブサイトのドメイン名(複数指定可能、スペース区切り)return 301 https://uzbox.tk$request_uri; ssl_certificate /home/ssl/uzbox.tk/fullchain.cer; ssl_certificate_key /home/ssl/uzbox.tk/uzbox.tk.key; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name uzbox.tk; root /home/www; index index.php index.html index.htm; ssl_certificate /home/ssl/uzbox.tk/fullchain.cer; ssl_certificate_key /home/ssl/uzbox.tk/uzbox.tk.key; ssl_session_cache shared:le_nginx_SSL:10m; ssl_session_timeout 1440m; ssl_session_tickets オフ; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers オフ; ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"; include /etc/nginx/default.d/*.conf; # /etc/nginx/default.d からデフォルト サーバー ブロックの構成ファイルをロードします。 # 疑似静的ページの場所 / { if (-f $request_filename/index.html){ rewrite(.*) $1/index.html break; } if (-f $request_filename/index.php){ rewrite(.*) $1/index.php; } if (!-f $request_filename){ rewrite(.*) /index.php; } } }
擬似静的プラグインのインストール:
まず、WordPress の固定リンクを変更し、バックエンドに移動して、固定リンク設定を開く必要があります。
自定义结构后面填入%category%/%post_id%
「No Category Base」プラグインをインストールして、カテゴリディレクトリ /category/ を削除し、最後にサーバー上で実行されているすべてのサービスを確認します。
systemctl list-units --type=service