ホームページ  >  記事  >  バックエンド開発  >  超詳しい!ソースコードを使用してLNMP環境を構築する

超詳しい!ソースコードを使用してLNMP環境を構築する

藏色散人
藏色散人転載
2023-03-29 16:56:283013ブラウズ

この記事は、PHP に関する関連知識を提供します。主に、ソース コードを使用して LNMP 環境を構築する方法を紹介します。非常に詳しく説明されています。興味のある友人は、以下を参照してください。すべての人に役立つことを願っています。

超詳しい!ソースコードを使用してLNMP環境を構築する

#ソースコードを使用した LNMP 環境の構築

1. RedHat8

Centos8 のインストール、その他何でも。仮想マシンは VMware ですが、オンラインでインストール チュートリアルがあるため、ここでは詳しく説明しません。

2. ローカル ソフトウェア ウェアハウスの設定

// 把系统镜像挂载到/media/cdrom目录。
mkdir -p /media/cdrom
mount /dev/cdrom /media/cdrom
// mount: /media/cdrom: WARNING: device write-protected, mounted read-only.


// 创建软件仓库的配置文件
 ~]# vi /etc/yum.repos.d/rhel8.repo
[BaseOS]
name=BaseOS
baseurl=file:///media/cdrom/BaseOS
enabled=1
gpgcheck=0
[AppStream]
name=AppStream
baseurl=file:///media/cdrom/AppStream
enabled=1
gpgcheck=0

vim、wget

dnf install vim wget -y

3. コンパイルに必要なツールのインストール

dnf -y install apr* autoconf automake numactl bison bzip2-devel cpp curl-devel fontconfig-devel freetype-devel gcc gcc-c++ gd-devel gettext-devel kernel-headers keyutils-libs-devel krb5-devel libcom_err-devel  libpng-devel  libjpeg* libsepol-devel libselinux-devel libstdc++-devel libtool* libxml2-devel libXpm* libxml* libXaw-devel libXmu-devel libtiff* make openssl-devel patch pcre-devel perl php-common php-gd telnet zlib-devel libtirpc-devel gtk* ntpstat na* bison* lrzsz cmake ncurses-devel libzip-devel libxslt-devel gdbm-devel readline-devel gmp-devel

4. 必要なソフトウェア ソース コード パッケージ

をダウンロードし、/lnmp ディレクトリに保存します。

mkdir /lnmp
cd /lnmp

wget https://www.linuxprobe.com/Software/rpcsvc-proto-1.4.tar.gz

wget https://www.linuxprobe.com/Software/nginx-1.16.0.tar.gz

wget https://www.linuxprobe.com/Software/mysql-8.0.18.tar.xz

wget https://www.linuxprobe.com/Software/php-7.3.5.tar.gz

wget https://www.linuxprobe.com/Software/wordpress.tar.gz

5. rpcsvc-proto のインストール

rpcsvc-proto は、rcpsvc プロトコル ファイル サポートを含むソフトウェア パッケージの名前です。rcpsvc プロトコルは後続のプロトコルで使用されます。 Nginx および MySQL サービス プログラムは、展開プロセス中に呼び出す必要があります。

tar xzvf rpcsvc-proto-1.4.tar.gz
cd rpcsvc-proto-1.4/
./configure
make
make install
cd ..

6. Nginx をインストールします

Nginx を操作するためのアカウントを作成します

プログラムは 1 人のユーザーによって実行されます。セキュリティ上の理由により、もちろんそれはできません。それはrootです。

ホーム ディレクトリやログインは必要なく、Nginx を実行するためにのみ使用されます。

useradd nginx -M -s /sbin/nologin // -M 不创建家目录,-s 指定 shell
id nginx // 查询是否创建成功了
uid=1000(nginx) gid=1000(nginx) 组=1000(nginx)

Nginx のインストール

lnmp]# tar zxvf nginx-1.16.0.tar.gz
lnmp]# cd nginx-1.16.0/
nginx-1.16.0]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module  // --prefix指定安装目录, --with-开启http_ssl_module模块
nginx-1.16.0]# make
nginx-1.16.0]# make install
nginx-1.16.0]# cd ..

Nginx の構成

プレフィックス パラメーターを使用してインストール パスを指定すると、Nginx 構成ファイルは /usr/local/nginx の下にあります。

プログラムを実行するユーザーの所有者とグループの所有者を指定します。

vim /usr/local/nginx/conf/nginx.conf
// 打开文件后,我们在英文模式下,按下 shift + 冒号,输入2,回车,定位到第2行。
// 连按两次 ESC,取消当前使用模式
// 再次 shift + 冒号,输入 set nu,回车,我们可以显示行号

1 
2 user  nginx nginx; // 第二行,修改为这样

45 行目で、index.php をインデックス構成 (使用できるファイル) に追加します。デフォルトのホームページとして)。

 43         location / {
 44             root   html;
 45             index  index.php index.html index.htm;
 46         }

65 行目から 71 行目までのコメント文字 # を削除して仮想ホスト機能を有効にし、69 行目以降の対応する Web サイトのルート ディレクトリを /usr/local/nginx/html に変更します。ここで、fastcgi_script_nameパラメータは、ユーザーが要求した URL であるスクリプト名を参照するために使用されます。情報が正しく入力されている場合にのみ、Nginx はユーザー リクエストを正しく解析できます。そうでない場合は、アクセスしたページで「404 Not Found」エラーが表示されます。

63         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
 64         #
 65         location ~ \.php$ {
 66             root           html;
 67             fastcgi_pass   127.0.0.1:9000;
 68             fastcgi_index  index.php;
 69             fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;
 70             include        fastcgi_params;
 71         }

ソース コードからコンパイルおよびインストールされたソフトウェアは、デフォルトでは systemctl で管理できません。独自の /usr/local/nginx/sbin/nginx を使用して直接管理できます。パスを追加せずに nginx に直接入力できるように、/usr/local/nginx/sbin パスを PATH 環境変数に追加することをお勧めします。

次に、source コマンドを使用して、この変更をすぐに有効にします。

lnmp]# vim ~/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:/usr/local/nginx/sbin // 这里加上 Nginx 的 sbin 路径

export PATH

lnmp]# source ~/.bash_profile // 让修改立即生效
lnmp]# nginx // 启动 nginx 服务

ブラウザを開いて 192.168.89.128 (仮想マシンのアドレス) にアクセスします。アクセスは失敗しました

ファイアウォールを閉じます

systemctl status firewalld.service // 查看是否在运行
systemctl stop firewalld.service // 临时停止
systemctl disable firewalld.service // 永久关闭

もう一度アクセスして、機能していることを確認します。

7. MySQL のインストール

MySQL データベースの実行を担当する mysql ユーザーを作成します。このユーザーもログインする必要はありません。

lnmp]# useradd mysql -M -s /sbin/nologin

インストール

// 解压MySQL安装软件包
lnmp]# tar xvf mysql-8.0.18.tar.xz

// 将解压出的程序目录改名并移动到/usr/local目录下
lnmp]# mv mysql-8.0.18-linux-glibc2.12-x86_64 mysql
lnmp]# mv mysql /usr/local

/usr/local/mysql は MySQL プログラム ファイルを保存するパス、/usr/local/mysql/data はデータが保存される場所、およびそれぞれデータベースはその下にディレクトリがあります。手動で作成する必要もあります。

lnmp]# cd /usr/local/mysql
mysql]# mkdir data

MySQL を初期化し、ディレクトリを認証し、mysql ユーザーがデータにアクセスできることを確認します。初期化の前に、mysqld コマンドを使用して、MySQL サービスを管理するためのユーザー名、データ保存ディレクトリ、エンコード情報が正しくなった後、初期化を開始します。初期化後、システムは最初の一時パスワードをユーザーに割り当てます。忘れずに保存してください。

以下の例で割り当てられたパスワードは qfroRs,Ei4Ls です。

[root@linuxprobe mysql]# chown -R mysql:mysql /usr/local/mysql
[root@linuxprobe mysql]# cd bin
[root@linuxprobe bin]# ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
2021-05-06T07:07:06.243270Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.18) initializing of server in progress as process 7606
2021-05-06T07:07:08.116268Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: qfroRs,Ei4Ls

nginx と同様に、MySQL の一部のバイナリ実行可能コマンドは、独自のプログラム ディレクトリの /usr/local/mysql/bin に保存されており、簡単にアクセスできるように PATH 環境変数に追加することもできます。

[root@linuxprobe bin]# vim ~/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:/usr/local/nginx/sbin:/usr/local/mysql/bin

export PATH
[root@linuxprobe bin]# source ~/.bash_profile

起動スクリプト mysql.server を /etc/init.d に配置して、サーバーが再起動されるたびにデータベースが自動的に起動できるようにします。そして実行可能権限を付与します。

libtinfo.so.5 ファイルは、MySQL 8.0 以降に新たに追加された重要な関数ライブラリ ファイルですが、デフォルトでは存在しないため、libtinfo.so.6.1 ファイルをコピーするか、リンクとして使用する必要があります正常に起動するファイル:

[root@linuxprobe bin]# cd /usr/local/mysql
[root@linuxprobe mysql]# cp -a support-files/mysql.server /etc/init.d/
[root@linuxprobe mysql]# chmod a+x /etc/init.d/mysql.server
[root@linuxprobe mysql]# ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5

MySQL データベース サービス起動ファイルを実行し、初期化作業を行います。セキュリティ上の理由から、MySQL ではバージョン 8.0 以降、ユーザーが一時パスワードを使用してデータベース コンテンツを管理することはできなくなり、また、リモートで制御することもできなくなりました。ユーザーは、MySQL データベースを使用する前に、初期化パスワードを変更する必要があります。データベースはシステムの重要なコンポーネント サービスであるため、パスワードの数は 20 文字以上にすることをお勧めします。たとえば、次の例ではパスワードを「PObejCBeDzTRCncXwgBy」に変更します。

[root@linuxprobe mysql]# /etc/init.d/mysql.server start 
Starting MySQL.Logging to '/usr/local/mysql/data/linuxprobe.com.err'.
. SUCCESS! 
[root@linuxprobe mysql]# mysql -u root -p
Enter password: 输入初始化时给的原始密码
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.18

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> alter user 'root'@'localhost' identified by 'PObejCBeDzTRCncXwgBy'; 
Query OK, 0 rows affected (0.01 sec)

mysql>

しかし、これでもまだ機能しません。mysql データベースに切り替えて、ユーザー フォームのパスワード値を変更する必要があります。これは、MySQL データベース バージョン 8.0 から始まる新しいセキュリティ要件でもあります。

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
| …………省略部分输出信息…………  |
+---------------------------+
33 rows in set (0.00 sec)

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'PObejCBeDzTRCncXwgBy';
Query OK, 0 rows affected (0.01 sec)

// 创建一个数据库
create database linuxcool;

8. PHP をインストールします

php ソース コード パッケージを解凍し、コンパイルしてインストールします

[root@linuxprobe mysql]# cd /lnmp
[root@linuxprobe lnmp]# tar xvf php-7.3.5.tar.gz
[root@linuxprobe lnmp]# cd php-7.3.5/
[root@linuxprobe php-7.3.5]# ./configure --prefix=/usr/local/php --enable-fpm --with-mysqli --with-curl --with-pdo_mysql --with-pdo_sqlite --enable-mysqlnd --enable-mbstring --with-gd
[root@linuxprobe php-7.3.5]# make
[root@linuxprobe php-7.3.5]# make install

生成された php.ini 設定ファイルをインストールディレクトリ (/usr/local/php/) に移動して有効にします。メインの設定ファイルが利用可能になったので、php-fpm 設定ファイルも必要です。幸いなことに、これも /usr/local/php/etc/ ディレクトリにあります。テンプレートをコピーするだけで済みます:

[root@linuxprobe php-7.3.5]# cp php.ini-development /usr/local/php/lib/php.ini
[root@linuxprobe php-7.3.5]# cd /usr/local/php/etc/
[root@linuxprobe etc]# mv php-fpm.conf.default php-fpm.conf

// 复制一个模板文件到php-fpm.d的目录中,用于后续控制网站的连接性能:
[root@linuxprobe etc]# mv php-fpm.d/www.conf.default php-fpm.d/www.conf

php サービスがスタートアップ項目に追加されるため、再起動後も有効になります

[root@linuxprobe etc]# cd /lnmp/php-7.3.5
[root@linuxprobe php-7.3.5]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@linuxprobe php-7.3.5]# chmod 755 /etc/init.d/php-fpm

一部の機能を無効にします

[root@linuxprobe php-7.3.5]# vim /usr/local/php/lib/php.ini
307 ; This directive allows you to disable certain functions for security reasons.
308 ; It receives a comma-delimited list of function names.
309 ; http://php.net/disable-functions
310 disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server

php-fpm プロセスを開始します

[root@linuxprobe php-7.3.5]# /etc/init.d/php-fpm start
Starting php-fpm done

私たちは/usr/local/にいます。nginx/htmlの下にindex.phpファイルを作成してテストします

<?php
phpinfo();

浏览器访问地址即可。

9、搭建一个 WordPress

把 Nginx 服务程序根目录的内容清空后,将 WordPress 解压后的网站文件复制进去:

[root@linuxprobe php-7.3.5]# cd ..
[root@linuxprobe lnmp]# rm -f /usr/local/nginx/html/*
[root@linuxprobe lnmp]# tar xzvf wordpress.tar.gz 
[root@linuxprobe lnmp]# mv wordpress/* /usr/local/nginx/html/

为了能够让网站文件被 Nginx 服务程序顺利读取,应设置目录所有权的身份及可读写的权限:

[root@linuxprobe lnmp]# chown -Rf nginx:nginx /usr/local/nginx/html 
[root@linuxprobe lnmp]# chmod -Rf 777 /usr/local/nginx/html

输入虚拟机 IP 地址访问 WordPress 网站的首页面。

超詳しい!ソースコードを使用してLNMP環境を構築する

后面按说明一步步操作下去即可。

以上が超詳しい!ソースコードを使用してLNMP環境を構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。