Maison  >  Article  >  développement back-end  >  Comment utiliser PHP7 pour créer un environnement LNMP sur MAC

Comment utiliser PHP7 pour créer un environnement LNMP sur MAC

醉折花枝作酒筹
醉折花枝作酒筹avant
2021-06-11 09:27:021758parcourir

Cet article vous présentera comment utiliser php7 pour créer un environnement LNMP sur MAC. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Comment utiliser PHP7 pour créer un environnement LNMP sur MAC

1. Installez MySQL :

Affichez les informations sur la version disponible de MySQL :

brew info mysql

La version que je vois ici est 5.7.10 :

mysql: stable 5.7.10 (bottled)

Installation suivante MySQL5.7.10 :

brew install mysql

Une fois l'installation terminée, suivez les instructions pour placer le fichier plist dans ~/Library/LaunchAgents/ et chargez-le, puis configurez MySQL pour qu'il démarre à boot :

ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents

Démarrer MySQL :

mysql.server start

Après le démarrage, puisque MySQL ne définit pas de mot de passe par défaut, vous devez définir le mot de passe root :

mysql -uroot -p

Lorsque vous y êtes invité entrez le mot de passe, appuyez simplement sur Entrée pour vous connecter. , après vous être connecté à MySQL, l'invite est la suivante :

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.10 Homebrew

Ensuite, définissez le mot de passe root :

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

Lors de la définition du mot de passe, il Il est préférable de définir un mot de passe fort. Concernant les règles des mots de passe forts, les instructions officielles sont les suivantes :

Note
MySQL's validate_password plugin is installed by default. This will require that passwords contain at least one upper case letter, one lower case letter, one digit, and one special character, and that the total password length is at least 8 characters.

Pour faciliter l'utilisation, nous créons souvent un utilisateur root pour toute connexion :

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'MyNewPass4!' WITH GRANT OPTION;

Actualiser les autorisations pour que la commande prenne effet :

flush privileges;

Quitter MySQL : exit ; PHP 7.1.0 -dev (cli) (construit : 4 février 2016 09:02:09) ( ZTS DEBUG ) Copyright (c) 1997-2016 Le groupe PHP Zend Engine v3.1.0-dev, Copyright (c) 1998-2016 Zend Technologies avec Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, par Zend Technologies Copiez le fichier de configuration mysql :

sudo cp /usr/local/Cellar/mysql/5.7.10/support-files/my-default.cnf /etc/my.cnf

Ajoutez lower_case_table_names=1 après [mysqld] dans /etc/my.cnf, Redémarrez le service MYSQL, et le paramétrage a réussi : les noms de table ne sont pas sensibles à la casse ;

Détails du paramètre PS.lower_case_table_names : 0 : sensible à la casse, 1 : insensible à la casse

2. Installez php7 :

①, téléchargez php7 :

mkdir ~/php7 && cd ~/php7
git clone https://git.php.net/repository/php-src.git

②, construisez php7 :

cd php-src
./buildconf

③, compilez php :

PS If lors de la compilation de If. la mémoire est inférieure à 1G, veuillez ajouter à la fin : --disable-fileinfo,

Lors de l'installation de php7, vous devez installer re2c, bison, ffmpeg, mcrypt, libiconv, gd, openssl :

Installer re2c :

brew install re2c

Installer bison (3.0.4) :

brew install bison
brew switch bison 3.0.4
brew link bison --force
sudo mv /usr/bin/bison /usr/bin/bison.orig
sudo ln -s /usr/local/bin/bison /usr/bin/bison

Installer ffmpeg :

brew install ffmpeg

Installer openssl :

brew install openssl
brew link openssl --force

Installer mcrypt :

brew install mcrypt

Installez libiconv :

brew install libiconv

Si vous souhaitez utiliser openssl, vous venez d'installer openssl, mais le système est livré avec openssl, vous devez donc remplacer le propre openssl du système par celui installé openssl :

sudo ln -sf /usr/local/opt/openssl/bin/openssl /usr/bin/openssl

Une fois le remplacement terminé, entrez la version openssl et vous pouvez voir qu'il s'agit de l'openssl installé avec Brew ci-dessus, car l'en-tête openssl est nécessaire pendant le processus de compilation de php, mais il n'est pas disponible lors de l'installation

Compilez php7 :

./configure --prefix=/usr/local/php7 --exec-prefix=/usr/local/php7 --bindir=/usr/local/php7/bin --sbindir=/usr/local/php7/sbin --includedir=/usr/local/php7/include --libdir=/usr/local/php7/lib/php --mandir=/usr/local/php7/php/man --with-config-file-path=/usr/local/php7/etc --enable-bcmath --enable-calendar --enable-debug --enable-exif --enable-fileinfo --enable-filter --enable-fpm --enable-ftp --enable-gd-jis-conv --enable-gd-native-ttf --enable-hash --enable-json --enable-libxml --enable-maintainer-zts --enable-mbregex --enable-mbstring --enable-mysqlnd --enable-opcache --enable-opcache-file --enable-pcntl --enable-pdo --enable-session --enable-shared --enable-shmop --enable-simplexml --enable-soap --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --enable-xml --enable-zip --with-bz2 --with-curl --with-fpm-user=www --with-fpm-group=www --with-freetype-dir=/usr --with-gd --with-gettext --with-gmp --with-iconv --with-jpeg-dir=/usr --with-mcrypt=/usr/include --with-mhash --with-mysql-sock=/var/lib/mysql/mysql.sock --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pear --with-png-dir=/usr --with-xmlrpc --with-zlib -with-libxml-dir=/usr

Si lors de la compilation, le message s'affiche : Impossible de localiser le fichier d'en-tête libintl.h, veuillez effectuer les opérations suivantes :

①, installez gettext :

brew install gettext

②, modifiez le fichier de configuration :

vi configure

Recherchez le fichier suivant :

for i in $PHP_GETTEXT /usr/local /usr ; do

Remplacez par :

for i in $PHP_GETTEXT /usr/local /usr /usr/local/opt/gettext; do

Si une erreur openssl s'affiche, définissez le chemin sur openssl lors de la compilation,

--with-openssl=/usr/local/opt/openssl/

④ Après l'exécution, compilez et installez :

make && make install

Si vous essayez plusieurs méthodes et demandez une erreur SSL, ne le faites pas. ajoutez openssl lors de la compilation

⑤. Installation Une fois terminé, configurez php7 :

sudo ln -s /usr/local/php7/bin/php* /usr/bin/
sudo ln -s /usr/local/php7/sbin/php-fpm /usr/bin
cp php.ini-production /usr/local/php7/etc/php.ini
cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf
sudo ln -s /usr/local/php7/etc/php.ini /etc/php.ini
sudo ln -s /usr/local/php7/etc/php-fpm.conf /etc/php-fpm.conf
cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf

Il y aura une invite une fois l'installation terminée :

You may want to add: /usr/local/php7/lib/php/php to your php.ini include_path

Modifiez ensuite le php.ini,

vi /etc/php.ini

Trouver include_path dans php.ini Ajouter include_path :

include_path = "/usr/local/php7/lib/php/php"

Voir la version php :

php -v

Le résultat d'affichage est le suivant :

PHP 7.1.0-dev (cli) (built: Feb  4 2016 09:02:09) ( ZTS DEBUG )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.1.0-dev, Copyright (c) 1998-2016 Zend Technologies

Changer la configuration pour que php7 prenne en charge opcache. Une fois l'installation terminée, il affichera :

Installing shared extensions:     /usr/local/php7/lib/php/extensions/debug-zts-20151012/

Ce chemin est le chemin du package d'extension, recherchez extension_dir et ajoutez le chemin juste à php.ini <.>

vi /etc/php.ini

Ajouter la configuration extension_dir au php.ini :

extension_dir = "/usr/local/php7/lib/php/extensions/debug-zts-20151012/"

Activer l'extension opcache :

Trouver opcache dans php.ini, ajouter opcache.so

sudo mkdir -p /var/log/opcache
vi /etc/php.ini

Référence opcache.so:

zend_extension=opcache.so

et modifiez la configuration d'opcache :

opcache.enable=1opcache.enable_cli=1opcache.file_cache="/var/log/opcache/"

Vérifiez maintenant les informations de version php, les résultats affichés sont les suivants :

PHP 7.1.0-dev (cli) (built: Feb  4 2016 09:02:09) ( ZTS DEBUG )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.1.0-dev, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

Maintenant que l'opcache L'extension a été ajoutée, modifiez la configuration de php-fpm :

vi /etc/php-fpm.conf

Modifiez la configuration :

pid = run/php-fpm.pid
error_log = log/php-fpm.log

Démarrez php-fpm :

php-fpm -D

Cela provoquera deux avertissements :

[04-Feb-2016 09:45:25] NOTICE: [pool www] &#39;user&#39; directive is ignored when FPM is not running as root
[04-Feb-2016 09:45:25] NOTICE: [pool www] &#39;group&#39; directive is ignored when FPM is not running as root

La commande pour arrêter php-fpm est la suivante :

kill -INT `cat /usr/local/php7/var/run/php-fpm.pid`

Redémarrer php- La commande fpm est la suivante :

kill -USR2 `cat /usr/local/php7/var/run/php-fpm.pid`

Ensuite, commencez à installer nginx :

3. Installez nginx :

brew install nginx

Une fois l'installation de nginx terminée, le chemin racine par défaut est le suivant :

Le répertoire du fichier de configuration de

Docroot is: /usr/local/var/www

nginx est le suivant :

/usr/local/etc/nginx/nginx.conf

Le répertoire du site virtuel nginx est le suivant :

nginx will load all files in /usr/local/etc/nginx/servers/.

Démarrez nginx au démarrage :

ln -sfv /usr/local/opt/nginx/*.plist ~/Library/LaunchAgents

Démarrez nginx :

nginx

nginx a besoin de l'autorisation root pour écouter le port 80. . Désormais, nginx écoute le port 8080 par défaut :

sudo chown root:wheel /usr/local/Cellar/nginx/1.8.1/bin/nginx
sudo chmod u+s /usr/local/Cellar/nginx/1.8.1/bin/nginx

Pour configurer nginx, placez d'abord le fichier de configuration nginx sous /etc :

sudo ln -s /usr/local/etc/nginx/nginx.conf /etcsudo ln -s /usr/local/etc/nginx/servers /etc/nginxservers

Modifiez le port d'écoute nginx :

sudo vi /etc/nginx.conf

Modifiez le fichier de configuration comme suit :

#user  nobody;
worker_processes  4;
error_log  /usr/local/var/log/error.log;
error_log  /usr/local/var/log/error.log  notice;
error_log  /usr/local/var/log/error.log  info;
pid        /usr/local/var/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    log_format  main  &#39;$remote_addr - $remote_user [$time_local] "$request" &#39;
                      &#39;$status $body_bytes_sent "$http_referer" &#39;
                      &#39;"$http_user_agent" "$http_x_forwarded_for"&#39;;
    access_log  /usr/local/var/log/access.log  main;
    port_in_redirect off;
    sendfile        on;
    tcp_nopush     on;
    keepalive_timeout  65;
    gzip  on;

    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
    include servers/*.conf;
}

Créez ensuite default.conf sous /etc/nginxservers/, éditez default.conf, et ajoutez le contenu suivant :

server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            root   html;
            index  index.html index.htm;
             # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
            location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_intercept_errors    on;
                include /usr/local/etc/nginx/fastcgi.conf;
            }
        }
        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        # deny access to .htaccess files, if Apache&#39;s document root
        # concurs with nginx&#39;s one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }

À ce stade, LNMP a été configuré. Redémarrez php-fpm et nginx.

Apprentissage recommandé :

Tutoriel vidéo php

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