LAMPアーキテクチャ(同じサーバー上に構築) 1.ランプの紹介Lamp は、Linux + apache + mysql/mariadb + php/perl/python で構成される、動的 Web サイトまたはサーバー用のオープン ソース ソフトウェア セットです。Linux 以外の部分はさまざまな独立したプログラムであり、一緒に使用されることが多く、互換性が高く、強力な Web アプリケーション プラットフォームを形成します。 Linux (オペレーティング システム)、Apache (HTTP サーバー)、Mysql (mariadb、データベース ソフトウェア)、PHP (perl または python)、Web アプリケーション プラットフォームの構築 2. WebサービスワークフローWebサーバーのリソースは、静的リソースと動的リソースの2つのカテゴリに分けられます。静的リソース: 静的コンテンツ。クライアントがサーバーから取得するリソースの表現形式はソース ファイルと同じです。ファイルシステムに直接保存されるリソースです (.mp3/.mp4/.jpg/.gif) 動的リソース: 通常はプログラム ファイルであり、サーバー上で実行され、実行された構造がクライアントに返されます (.php/.asp/.py/.net) Web サーバーはクライアントの要求をどのように処理しますか? ステージ 1 では、httpd サーバー (apache) と php サーバーが fastCGI プロトコルを介して通信し、php が別のサービス プロセスとして実行されることが示されています。 ステージ 2 では、PHP サーバーと MySQL サーバーが MySQL プロトコルを介して通信することを示しています。PHP は MySQL 自体とは何の関係もありませんが、PHP で記述されたプログラムは MySQL と対話できます。同様に、Python や Perl で記述されたプログラムも MySQL データベースと対話できます。 2.1cgi と fastcgiCGI (共通ゲートウェイ インターフェース)CGI は、外部アプリケーション (CGI プログラム) と Web サービス間のインターフェース標準であり、CGI プログラムと Web サーバー間で情報を転送するプロセスです。 CGI 仕様により、Web サーバーは外部プログラムを実行し、その出力を Web サーバーに送信して、Web 上の一連の単純な静的ハイパーメディア ドキュメントを完全なインタラクティブ メディアに変換できます。 FastCGI(Fast Common Gateway Interface)はCGIの改良版である。CGI は、インタープリタ プロセスを開始して各タスク要求を処理しますが、これは時間がかかり、リソースを大量に消費します。FastCGI は、各要求をマスター ワーカー形式で処理します。マスター プロセスを開始し、構成に従って複数のワーカー プロセスを開始します。要求が到着すると、マスターはワーカー プロセスから 1 つを選択して要求を処理します。これにより、キラー プロセスによる繰り返し生成や頻繁な CPU 消費を回避できます。 2.2 httpdとphpの組み合わせPHP と httpd の 3 つの方法:
最も一般的に使用されているのは FastCGI であり、動的リソースをロードするために CGI を使用する人はほとんどいません。 2.3 Webワークフロー
3.LAMPプラットフォームの構築環境:
ランプの取り付け順序:
PHPはprefock MPMを使用してhttpdをインストールする必要があり、インストールにはlampが使用されることに注意してください。 3.1 httpdをインストールする#redhat ソース[root@clq ~]# cat /etc/yum.repos.d/CentOS-Stream- CentOS-Stream-AppStream.repo CentOS-Stream-HighAvailability.repo CentOS-Stream-BaseOS.repo CentOS-Stream-Media.repo CentOS-Stream-Debuginfo.repo CentOS-Stream-PowerTools.repo CentOS-Stream-Extras.repo CentOS-Stream-RealTime.repo #epel ソースをインストール [root@clq ~]# yum -y install epel-release #パッケージグループを表示 [root@clq ~]# yum grouplist #パッケージグループをインストール [root@clq ~]# dnf -y groups mark install "開発ツール" # apacheユーザーを作成 [root@clq ~]# useradd -r -M -s /sbin/nologin apache #依存パッケージをインストールします(openssl-devel:暗号化送信モジュール) [root@cb ~]# yum -y インストール openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ make #apr、apr-util、httpdをダウンロードしてインストールします [root@cb ~]# cd /usr/src/ #wget を使用して 3 つのパッケージをダウンロードします#tar でパッケージを解凍します#apr パッケージを入力して変更します [root@cb apr-1.7.0]# vim configure cfgfile="${ofile}T" トラップ "$RM \"$cfgfile\";exit 1" 1 2 15 $RM "$cfgfile" #この行を削除またはコメントアウト #apr コンパイル 3 ステップ。/configure --prefix=/usr/local/apr 作る インストールする #apr-util は 3 つのステップでコンパイルします。/configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr 作る インストールする #httpd コンパイルは 3 つのステップで行います。/configure --prefix=/usr/local/apache \ --sysconfdir=/etc/httpd24 \ --enable-so \ --enable-ssl \ --enable-cgi \ --enable-rewrite \ --with-zlib \ --pcre \ で --with-apr=/usr/local/apr \ --with-apr-util=/usr/local/apr-util/ \ --enable-modules=ほとんど\ --enable-mpms-shared=すべて \ --with-mpm=プリフォーク 作る インストールする #インストール後、環境変数を設定します: echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/apache.sh 読む: source /etc/profile.d/httpd.sh ヘッダーファイルマッピング: ln -s /usr/local/apache/include /usr/include/httpd ヘルプドキュメント: vim /etc/man_db.conf 22 MANDATORY_MANPATH /usr/local/share/man 23 MANDATORY_MANPATH /usr/local/apache/man #ServerName のコメントを解除します (警告メッセージは無関係です) [root@cb src]# vim /etc/httpd24/httpd.conf サーバー名 #Apacheを起動する [root@cb src]# systemctl を停止します。firewalld [root@cb src]# systemctl は、firewalld を無効にします [root@cb src]# /usr/local/apache/bin/apachectl 開始 [root@cb src]# ss -antl 状態 受信Q 送信Q ローカルアドレス:ポート ピアアドレス:ポート プロセス 聞く 0 128 0.0.0.0:22 0.0.0.0:* 聞く 0 128 *:80 *:* 聞く 0 128 [::]:22 [::]:* #システム自身のApacheを削除する際の注意 #自動起動を実現するためのサービスファイルを記述します #httpd.service ファイルを記述します: vim /etc/systemd/system/httpd.service ファイル内の 2 つの特定のパス: 設定ファイルのパス: /etc/httpd24/httpd.conf プログラムファイルパス: /usr/local/apache/bin/httpd #システムロードファイル: systemctl daemon-reload #systemctl start httpdを起動します #自動起動 systemctl enable httpd [root@clq ~]# vim /etc/systemd/system httpd.service [root@clq システム]# cat httpd.service [ユニット] 説明=httpd を起動 [サービス] タイプ=シンプル 環境ファイル=/etc/httpd24/httpd.conf ExecStart=/usr/local/apache/bin/httpd -k start -DFOREGROUND ExecReload=/usr/local/apache/bin/httpd -k 優雅 ExecStop=/bin/kill -WINCH ${MAINPID} [インストール] WantedBy=マルチユーザー.ターゲット 3.2 MySQLをインストールする#依存パッケージをインストールします(cmake:コンパイル自動設定ツール) dnf -y インストール ncurses-devel openssl-devel openssl cmake mariadb-devel # ユーザーを作成 useradd -r -M -s /sbin/nologin mysql #mysql5.7.31 パッケージをダウンロードします #解凍して /usr/local に配置します #操作しやすいように名前を変更します cd /usr/local mysql5.7.31 をアップグレードしてください。 #所有者を変更する chown -R mysql.mysql mysql/ #環境変数 echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh ソース /etc/profile.d/mysql.sh #ヘッダーファイルマッピング ln -s /usr/local/mysql/include /usr/include/mysql #ライブラリファイル vim /etc/ld.so.conf.d/mysql.conf ローカル ldconfig #ヘルプドキュメントを再度読んでください vim /etc/man_db.conf 23 MANDATORY_MANPATH /usr/local/apache/man 24 MANDATORY_MANPATH /usr/local/mysql/man #データディレクトリを作成する mkdir /opt/data chown -R mysql.mysql /opt/data # mysqld を初期化します --initialize --user=mysql --datadir=/opt/data #設定ファイルを書き込む cat >/etc/my.cnf <<EOF [mysqld] basedir = /usr/local/mysql #インストールディレクトリdatadir = /opt/data #データディレクトリsocket = /tmp/mysql.sock #socketuser = mysql #userport = 3306 #ポート番号pid-file = /opt/data/mysql.pid #プロセス番号ファイルskip-name-resolve #ドメイン名解決をスキップEOF exit#スクリプトの書き込みcp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld vim /etc/init.d/mysqld データディレクトリ=/opt/data ベースディレクトリ=/usr/local/mysql #mysqlを起動する サービスmysqldの開始 ss-antl #libncurses.so.5 パッケージをインストールします yum whatprovides libncurses.so.5 yum -y ncurses-compat-libs をインストールします #mysql パスワードを変更する set password=password('Centos8.0!') # 起動時に chkconfig --add mysqld が自動的に起動することを確認します chkconfig mysqld オン chkconfig --list 3.3 PHPをインストールする#centos8 は yum で php をインストールできます。php は言語です。バージョン 7.2 以上をインストールしてください。yum -y install php* 3.4 PHPの設定#php 設定 vim /etc/php-fpm.d/www.conf 38 ;listen = /run/php-fpm/www.sock #コメント解除 39 listen = 127.0.0.1:9000 #この行を追加 65 listen.allowed_clients = 127.0.0.1 mkdir -p /data/php #phpディレクトリを作成 chown -R apache.apache /data/ #所有者を変更 vim /data/php/index.php #index.phpファイルを書き込む phpinfo(); ?> #systemctl restart php-fpm.service を再起動します 3.4.4PHPのコンパイルとインストールCentOS 8 以前のバージョン //yum source [root@localhost ~]# wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm を設定します [root@localhost ~]# rpm -Uvh remi-release-7.rpm [root@localhost ~]# yum makecache --enablerepo=remi-php74 //依存パッケージをインストールします[root@localhost ~]# yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libicu-devel libjpeg libjpeg-devel libpng libpng-devel openldap-devel pcre-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel mhash mhash-devel php72-php-mysqlnd インストールプロセスは簡単です... //phpをダウンロード [root@localhost ~]# cd /usr/src/ [root@localhost src]# wget http://cn.php.net/distributions/php-7.2.8.tar.xz ダウンロードプロセスを簡単に説明します。 //PHPをコンパイルしてインストールする [root@localhost src]# tar xf php-7.2.8.tar.xz [root@localhost src]# cd php-7.2.8 [root@localhost php-7.2.8]# ./configure --prefix=/usr/local/php7 \ --with-config-file-path=/etc \ --enable-fpm \ --enable-inline-optimization \ --disable-debug \ --disable-rpath \ --enable-shared \ --enable-soap \ --openssl \ で --enable-bcmath \ --アイコン付き\ --with-bz2 \ --enable-calendar \ --curl \ で --enable-exif \ --enable-ftp \ --gd \ で --jpegディレクトリ\ --png-dir \ で始まる --with-zlib-dir \ --freetype ディレクトリ \ --gettext \ で --enable-json \ --enable-mbstring \ --enable-pdo \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --readline で読み込みます \ --enable-shmop \ --enable-simplexml \ --enable-sockets \ --enable-zip \ --enable-mysqlnd-compression-support \ --梨付き\ --enable-pcntl \ --enable-posix [root@localhost php-7.2.8]# make -j $(cat /proc/cpuinfo |grep プロセッサ|wc -l) コンパイルプロセスは省略されます [root@localhost php-7.2.8]# make install インストールプロセスは省略 // インストール後の設定 [root@localhost ~]# echo 'export PATH=/usr/local/php7/bin:$PATH' > /etc/profile.d/php7.sh [root@localhost ~]# ソース /etc/profile.d/php7.sh //インストール後の設定 [root@localhost ~]# echo 'export PATH=/usr/local/php7/bin:$PATH' > /etc/profile.d/php7.sh [root@localhost ~]# ソース /etc/profile.d/php7.sh [root@localhost php-7.2.8]# どのphp php7 の bin ディレクトリに、 [root@localhost php-7.2.8]# php -v PHP 7.2.8 (cli) (ビルド: 2018 年 8 月 16 日 13:27:30) ( NTS ) 著作権 (c) 1997-2018 PHPグループ Zend Engine v3.2.0、著作権 (c) 1998-2018 Zend Technologies //php-fpm を設定する [root@localhost php-7.2.8]# cp php.ini-production /etc/php.ini [root@localhost php-7.2.8]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm [root@localhost php-7.2.8]# chmod +x /etc/rc.d/init.d/php-fpm [root@localhost php-7.2.8]# cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf [root@localhost php-7.2.8]# cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf //php-fpm 設定ファイル (/usr/local/php7/etc/php-fpm.conf) を編集します。 // fpm関連のオプションを必要な値に設定します。 [root@localhost ~]# vim /usr/local/php7/etc/php-fpm.conf ..... ..... pm.max_children = 50; 同時に最大 50 個のプロセスを提供し、50 個の同時サービスを提供します pm.start_servers = 5; 起動時に 5 個のプロセスを開始します pm.min_spare_servers = 2; アイドル プロセスの最小数 pm.max_spare_servers = 8; アイドル プロセスの最大数 [root@localhost ~]# tail /usr/local/php7/etc/php-fpm.conf ; ファイル。 ; 相対パスも使用できます。次の接頭辞が付きます: ; - グローバルプレフィックスが設定されている場合(-p 引数) ; - それ以外の場合は /usr/local/php7 インクルード=/usr/local/php7/etc/php-fpm.d/*.conf 午後最大子供数 = 50 pm.start_servers = 5 pm.min_spare_servers = 2 pm.max_spare_servers = 8 //php-fpmを起動する [root@localhost ~]# サービスphp-fpmを開始 php-fpm の起動が完了しました //デフォルトでは、fpm は 127.0.0.1 のポート 9000 を listen します。次のコマンドを使用して、対応するソケット [root@localhost ~] を listen しているかどうかを確認することもできます。# ss -antl 状態 受信Q 送信Q ローカルアドレス:ポート ピアアドレス:ポート 聞く 0 128 *:22 *:* 聞く 0 100 127.0.0.1:25 *:* 聞く 0 128 127.0.0.1:9000 *:* 聞く 0 128 :::80 :::* 聞く 0 128 :::22 :::* 聞く 0 100 ::1:25 :::* 聞く 0 80 :::3306 :::* [root@localhost ~]# ps -ef|grep php root 81070 1 0 14:13 ? 00:00:00 php-fpm: マスタープロセス (/usr/local/php7/etc/php-fpm.conf) 誰も 81071 81070 0 14:13 ? 00:00:00 php-fpm: プール www 誰も 81072 81070 0 14:13 ? 00:00:00 php-fpm: プール www 誰も 81073 81070 0 14:13 ? 00:00:00 php-fpm: プール www 誰も 81074 81070 0 14:13 ? 00:00:00 php-fpm: プール www 誰も 81075 81070 0 14:13 ? 00:00:00 php-fpm: プール www ルート 81079 83354 0 14:15 pts/1 00:00:00 grep --color=auto php 3.5 Apacheの設定Apache 2.4以降にはFastCGIの実装があり、モジュールはmod_proxy_fcgi.soです。これは実際にはmod_proxy.soモジュールの拡張であるため、両方のモジュールをロードする必要があります。httpd.confファイルを編集し、2行のコメントを解除します。 vim /etc/httpd24/httpd.conf LoadModule proxy_module モジュール/mod_proxy.so ロードモジュール proxy_fcgi_module モジュール/mod_proxy_fcgi.so または、sed で変更します: sed -i '/proxy_module/s/#//g' /etc/httpd24/httpd.conf sed -i '/proxy_fcgi_module/s/#//g' /etc/httpd24/httpd.conf Apache yum インストール Web ページ ファイル パス: /var/www/html Apache ソースコードのインストール Web ページ ファイル パス: /usr/local/apache/htdocs 仮想ホストの設定 fcgi を使用する必要がある仮想ホストに 2 行を追加します。 ProxyRequests Off #フォワードプロキシをオフにする ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/网页目录/redhat.com/$1 #上記の設定は、.php で終わるファイルが php-fpm プロセスに送信されることを意味します。php-fpm は、少なくとも実行中のプロセスのディレクトリと URL を知っている必要があります。これらの 2 つのパラメータは、fcgi にちなんで命名されています。その他のパラメータは mod——proxy_fcgi.so によってカプセル化されており、手動で指定する必要はありません。 #redhat はドメイン名です#$1 は .php で終わるすべての httpd リクエストに一致することを意味します /etc/httpd24/httpd.conf #メイン設定ファイル [root@clq ] vim /etc/httpd24/httpd.conf #メイン設定ファイルを入力して仮想ホスト設定ファイルを追加します [root@clq ] vim /etc/httpd24/extra/vhosts.conf #仮想ホスト設定ファイルを編集します <VirtualHost *:80> DocumentRoot "/data/php/" #ファイル保存パス ServerName www.clq.com #ドメイン名 DirectoryIndex index.php プロキシリクエストオフ プロキシパスマッチ ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/php/$1 <ディレクトリ "/data/php/"> オプションなし AllowOverride なし すべて許可が必要 </ディレクトリ> </仮想ホスト> [root@clq] vim /etc/httpd24/httpd.conf 203 ServerName 0.0.0.0.com:80 #261 DirectoryIndex index.php index.html を変更 #途中に index.php を追加 399 AddType application/x-httpd-php .php #この行を追加 400 AddType application/x-httpd-php-source .phps #この行を追加 488 # 489 /etc/httpd24/httpd/extra/vhosts.conf を含める #この行を追加#システムを再起動ctl restart httpd 4. ブログ作成1ダウンロードアドレス: https://wordpress.org/download/#download-install #パッケージを解凍します [root@clq ~]# unzip wordpress-5.7.2.zip #解凍したパッケージをすべて/data/phpに配置します [root@clq ~]# mv wordpress/* /data/php/ 再度アクセス: #データベース権限mysql> 'huawei@123' によって識別される root@'192.168.136.219' に *.* のすべての権限を付与します。 クエリは正常、影響を受けた行は 0 行、警告は 1 件 (0.00 秒) mysql> 権限をフラッシュします。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) #データベースを作成する wordpress mysql> データベース wordpress を作成します。 5. サービス起動構成の選択的使用上記は、企業向け LAMP ソースコードのインストール方法に関するチュートリアルの詳細な内容です。企業向け LAMP ソースコードのインストールの詳細については、123WORDPRESS.COM の他の関連記事にご注目ください。 以下もご興味があるかもしれません:
|
<<: フラッシュプラグインを使用してPCのカメラを呼び出し、TMLページに埋め込む方法
目次現象根本原因分析getLastPacketReceivedTimeMs() メソッドの呼び出し時...
目次1. 動詞-if 2. <template> で v-if を使用する3. キーを使...
1 Tomcatをダウンロードして起動する公式サイト http://tomcat.apache.or...
なぜログを読む必要があるのでしょうか?たとえば、コンテナの起動に失敗したがプロンプトが表示されない場...
今日午後ずっと私を悩ませたバグを記録する半月前から始めましょう。それから.................
ご存知のとおり、コンピューターには 2 種類の画像があり、1 つはビットマップ、もう 1 つはベクタ...
前面に書かれたNginx は単なるリバース プロキシおよび負荷分散サーバーではなく、電流制限、キャッ...
a.htmとb.htmの2つのファイルがあります。同じディレクトリ内のa.htmの内容は次のとおりで...
Keepalived のインストール: cd <keepalived_sourcecode_p...
最近、Yahoo の 34 の黄金律を読み、ウェブサイトのパフォーマンスを最適化する方法を学びました...
オブジェクト上にマウスを移動したときにコンテンツ(タイトル属性の内容)を折り返す方法、HTML タイ...
目次HBuilderX での ESLint プラグインのインストールカスタム eslint-js ル...
簡単な説明エディターはデータベースのエンコードが間違っているために問題に遭遇することが多く、これは頭...
vscode エディタを使用して vue テンプレートを作成すると、新しい vue ファイルを作成す...
絵文字付きの HTML コメント ボックス。絵文字は Json データを通じて読み込まれ、好みに応じ...