Maison >développement back-end >tutoriel php >Hyper détaillé ! Créer un environnement LNMP à l'aide du code source
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.
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 网站的首页面。
后面按说明一步步操作下去即可。
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!