Maison  >  Article  >  développement back-end  >  Hyper détaillé ! Créer un environnement LNMP à l'aide du code source

Hyper détaillé ! Créer un environnement LNMP à l'aide du code source

藏色散人
藏色散人avant
2023-03-29 16:56:282963parcourir

Cet article vous apporte des connaissances pertinentes sur PHP. Il présente principalement comment utiliser le code source pour créer un environnement LNMP. Les amis intéressés peuvent y jeter un œil ci-dessous.

Hyper détaillé ! Créer un environnement LNMP à l'aide du code source

Créez un environnement LNMP à l'aide du code source

1 Installez RedHat8

Centos8, ou toute autre chose. La machine virtuelle est VMware. Il existe des tutoriels d'installation en ligne, je n'entrerai donc pas dans les détails ici.

2. Configurez le référentiel de logiciels local

// 把系统镜像挂载到/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

Testez et installez vim, wget

dnf install vim wget -y

3 Installez les outils requis pour la compilation

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. Téléchargez le package de code source du logiciel requis

. rassemblez-le dans le répertoire /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. Installez rpcsvc-proto

rpcsvc-proto est le nom d'un progiciel qui contient la prise en charge des fichiers de protocole rcpsvc. Le protocole rcpsvc doit être appelé lors du déploiement ultérieur des programmes de service Nginx et MySQL.

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

6. Installez Nginx

Créez un compte pour le fonctionnement de Nginx

Le programme est exécuté par un utilisateur pour des raisons de sécurité, bien sûr, il ne peut pas être root.

Et il ne nécessite pas de répertoire personnel ni de connexion, il est simplement utilisé pour exécuter Nginx.

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

Installez 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 ..

Configurez Nginx

Utilisez le paramètre préfixe pour spécifier le chemin d'installation, puis le fichier de configuration Nginx se trouve sous /usr/local/nginx.

Fournissez le propriétaire de l'utilisateur qui exécute le programme et le propriétaire du groupe

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

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

À la ligne 45, ajoutez index.php à la configuration de l'index (le fichier qui peut être utilisé comme page d'accueil par défaut).

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

Supprimez le caractère de commentaire # devant les lignes 65 à 71 pour activer la fonction d'hôte virtuel, puis modifiez le répertoire racine du site Web correspondant après la ligne 69 en /usr/local/nginx/html, où le paramètre fastcgi_script_name est utilisé pour indiquer Le nom du script est l'URL demandée par l'utilisateur. Ce n'est que lorsque les informations sont correctement renseignées que Nginx peut analyser correctement la demande de l'utilisateur. Sinon, la page visitée affichera une erreur « 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         }

Le logiciel compilé et installé à partir du code source ne peut pas être géré par systemctl par défaut. Nous pouvons directement utiliser son propre /usr/local/nginx/sbin/nginx pour le gérer. Il est recommandé d'ajouter le chemin /usr/local/nginx/sbin à la variable d'environnement PATH, afin que nous puissions entrer directement dans nginx sans ajouter de chemin.

Utilisez ensuite la commande source pour que cette modification prenne effet immédiatement.

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 服务

Ouvrez le navigateur pour accéder au 192.168.89.128 (l'adresse de ma machine virtuelle), l'accès a échoué

Fermez le pare-feu

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

Visitez à nouveau et constatez que cela fonctionne.

7. Installez MySQL

Créez un utilisateur MySQL responsable de l'exécution de la base de données MySQL. Cet utilisateur n'a pas non plus besoin de se connecter.

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

Installation

// 解压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 est le chemin où les fichiers du programme MySQL sont enregistrés, /usr/local/mysql/data est l'endroit où les données sont stockées et chaque base de données est un répertoire en dessous. Nous devons également le créer manuellement.

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

Initialisez MySQL, autorisez le répertoire et assurez-vous que les données sont accessibles par l'utilisateur mysql. Avant l'initialisation, utilisez la commande mysqld pour confirmer le nom d'utilisateur pour gérer le service MySQL, le répertoire de stockage des données et les informations d'encodage. . Une fois les informations correctes, démarrez l'initialisation. Après l'initialisation, le système attribuera un mot de passe temporaire initial à l'utilisateur. N'oubliez pas de le sauvegarder.

Le mot de passe attribué dans l'exemple ci-dessous est 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

Semblable à nginx, certaines commandes exécutables binaires de MySQL sont stockées dans /usr/local/mysql/bin dans son propre répertoire de programme. Nous pouvons également les ajouter à la variable d'environnement PATH pour un accès facile.

[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

Placez le script de démarrage mysql.server dans /etc/init.d afin que la base de données puisse être automatiquement démarrée à chaque redémarrage du serveur. et accordez des autorisations exécutables.

Le fichier libtinfo.so.5 est un fichier de bibliothèque de fonctions important nouvellement ajouté après MySQL 8.0, mais il n'existe pas par défaut. Vous devez copier le fichier libtinfo.so.6.1 ou l'utiliser comme fichier de lien pour démarrer normalement. :

[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

Exécutez le fichier de démarrage du service de base de données MySQL et le travail d'initialisation. Pour des raisons de sécurité, MySQL ne permet plus aux utilisateurs d'utiliser des mots de passe temporaires pour gérer le contenu de la base de données depuis la version 8.0, et il ne peut pas non plus être contrôlé à distance. Les utilisateurs doivent modifier le mot de passe d'initialisation avant de pouvoir utiliser la base de données MySQL. La base de données étant un composant important du système, il est recommandé que le nombre de mots de passe ne soit pas inférieur à 20 caractères. Par exemple, ce qui suit modifie le mot de passe en « 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>

Mais cela ne fonctionne toujours pas. Vous devez toujours basculer vers la base de données mysql et modifier la valeur du mot de passe du formulaire utilisateur. Il s'agit également d'une nouvelle exigence de sécurité à partir de la version 8.0 de la base de données MySQL.

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. Installez PHP

Décompressez le package de code source php, compilez et installez

[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

Copiez le fichier de configuration php.ini généré dans le répertoire d'installation (/usr/local/php/) et laissez-le prendre effet. . Maintenant que le fichier de configuration principal est disponible, le fichier de configuration php-fpm est également nécessaire. Heureusement, il est également fourni dans le répertoire /usr/local/php/etc/. Il vous suffit de copier le modèle :

[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

Add. le service php dans l'élément de démarrage, il prendra toujours effet après le redémarrage

[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

Désactivez certaines fonctions

[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

Démarrez le processus php-fpm

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

Nous créons un fichier index.php sous /usr/local/nginx/html à tester

<?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 网站的首页面。

Hyper détaillé ! Créer un environnement LNMP à laide du code source

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer