PHP7是如何搭建LNMP环境的,操作过程是什么
Admin 2022-08-01 群英技术资讯 1309 次浏览
这篇文章主要讲解了“PHP7是如何搭建LNMP环境的,操作过程是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP7是如何搭建LNMP环境的,操作过程是什么”吧!
查看MySQL可用版本信息:
brew info mysql
我这边看到的版本是5.7.10:
mysql: stable 5.7.10 (bottled)
接下来安装MySQL5.7.10:
brew install mysql
安装完成之后按照提示将plist文件放入~/Library/LaunchAgents/中并load,设定MySQL开机启动:
ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
启动MySQL:
mysql.server start
启动之后由于MySQL默认没有设置密码,所以要设置root的密码:
mysql -uroot -p
提示输入密码的时候直接按回车就登录了,登录MySQL后提示如下:
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.10 Homebrew
接下来设置root的密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
设置密码的时候最好设置一个强密码,关于强密码的规则,官方有如下说明:
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.
为了方便使用,我们经常会创建任意连接的root用户:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'MyNewPass4!' WITH GRANT OPTION;
刷新权限使命令生效:
flush privileges;
退出MySQL:exit;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复制mysql配置文件:
sudo cp /usr/local/Cellar/mysql/5.7.10/support-files/my-default.cnf /etc/my.cnf
在/etc/my.cnf 中的[mysqld]后添加lower_case_table_names=1,重启MYSQL服务,这时已设置成功:不区分表名的大小写;
PS.lower_case_table_names参数详解: 0:区分大小写,1:不区分大小写
mkdir ~/php7 && cd ~/php7 git clone https://git.php.net/repository/php-src.git
cd php-src ./buildconf
PS.编译的时候如果内存1G以下请在结尾加上:--disable-fileinfo,
安装php7时需要用安装re2c、bison、ffmpeg、mcrypt、libiconv、gd、openssl:
安装re2c:
brew install re2c
安装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
安装ffmpeg:
brew install ffmpeg
安装openssl:
brew install openssl brew link openssl --force
安装mcrypt:
brew install mcrypt
安装libiconv:
brew install libiconv
如果想要用openssl,刚才已经安装了openssl,但是系统自带了openssl,所以要用安装的openssl替换系统自带的openssl:
sudo ln -sf /usr/local/opt/openssl/bin/openssl /usr/bin/openssl
替换完成之后输入openssl version就可以看到是上面用brew安装的openssl了,因为在编译php过程中需要openssl的header,但是安装的时候都没有
编译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
如果编译过程中提示:Cannot locate header file libintl.h,请执行如下操作:
①、安装gettext:
brew install gettext
②、修改configure文件:
vi configure
找到如下文件:
for i in $PHP_GETTEXT /usr/local /usr ; do
替换为:
for i in $PHP_GETTEXT /usr/local /usr /usr/local/opt/gettext; do
如果提示openssl错误,在编译的时候设定openssl的路径,
--with-openssl=/usr/local/opt/openssl/
make && make install
如果尝试很多办法都提示ssl出错,在编译的时候就不要加上openssl了
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
在安转完成之后会有提示:
You may want to add: /usr/local/php7/lib/php/php to your php.ini include_path
接下来编辑php.ini,
vi /etc/php.ini
找到include_path,在php.ini中加入include_path:
include_path = "/usr/local/php7/lib/php/php"
查看php版本:
php -v
显示结果如下:
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
更改配置,使php7支持opcache,在安装完成时会提示:
Installing shared extensions: /usr/local/php7/lib/php/extensions/debug-zts-20151012/
这个路径是扩展包路径,将路径复制下来,找到extension_dir并将刚才的路径添加到php.ini中,
vi /etc/php.ini
在php.ini中加入extension_dir的配置:
extension_dir = "/usr/local/php7/lib/php/extensions/debug-zts-20151012/"
开启opcache扩展:
在php.ini中找到opcache,加入opcache.so
sudo mkdir -p /var/log/opcache vi /etc/php.ini
引用opcache.so:
zend_extension=opcache.so
并修改opcache的配置:
opcache.enable=1opcache.enable_cli=1opcache.file_cache="/var/log/opcache/"
现在查看php版本信息,显示结果如下:
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现在opcache扩展已经加入了,修改php-fpm的配置:
vi /etc/php-fpm.conf
修改配置:
pid = run/php-fpm.pid error_log = log/php-fpm.log
启动php-fpm:
php-fpm -D
这样会提示两个警告:
[04-Feb-2016 09:45:25] NOTICE: [pool www] 'user' directive is ignored when FPM is not running as root [04-Feb-2016 09:45:25] NOTICE: [pool www] 'group' directive is ignored when FPM is not running as root
停止php-fpm的命令如下:
kill -INT `cat /usr/local/php7/var/run/php-fpm.pid`
重启php-fpm的命令如下:
kill -USR2 `cat /usr/local/php7/var/run/php-fpm.pid`
接下来开始安装nginx:
brew install nginx
安装完成的nginx,默认的root路径如下:
Docroot is: /usr/local/var/www
nginx的配置文件目录如下:
/usr/local/etc/nginx/nginx.conf
nginx虚拟站点目录如下:
nginx will load all files in /usr/local/etc/nginx/servers/.
开机启动nginx:
ln -sfv /usr/local/opt/nginx/*.plist ~/Library/LaunchAgents
启动nginx:
nginx
nginx监听80端口是需要root权限的,现在nginx默认监听的是8080端口:
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
配置nginx,先将nginx的配置文件放至/etc下:
sudo ln -s /usr/local/etc/nginx/nginx.conf /etcsudo ln -s /usr/local/etc/nginx/servers /etc/nginxservers
修改nginx监听端口:
sudo vi /etc/nginx.conf
修改配置文件如下:
#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 '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
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;
}然后在/etc/nginxservers/下创建default.conf,编辑default.conf,加入以下内容:
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's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}此时,LNMP已经搭建完毕,重启php-fpm和nginx。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
协程“协程”就是用户态的线程要理解是什么是“用户态的线程”,必然就要先理解什么是“内核态的线程”。内核态的线程是由操作系统来进行调度的,在切换线程上下文时,要先保存上一个线程的上下文,然后执行下一个线程,当条件满足时,切换回上一个线程,并恢复上下文。协程也是如此,只不过,用户态的线程不是由操作系统来调度的,而是由程序员来调度的,是在用户态的--摘自链接描述关于“用户态线程”,我们
现在很多网站和软件的注册都会让用户填写电话号码,之后系统会向用户手机发送一条短信验证码,用户输入验证码之后就能正常使用了,而且还能使用短信验证码进行快捷登录。很多朋友会注意到,我们获取短信验证码是有时间隔或者或缺次数的,那么这些限制是如何实现的呢?这篇文章就给大家分享一下对使用PHP实现的短信验证发送次数限制。
本文由PHP7教程栏目给大家介绍关于PHP7下的协程如何实现,希望对需要的朋友有所帮助!
今天在做与后台交互的的过程中,发现php对于接收的POST有一个限制,超出1000个字段之后便无法接收,项目要求在不改变PHP配置的情况下通过前端方式解决,通过分析并且网上差一些大牛的资料终于找到了解决方案,下面进行介绍:首先,由于post的数据太多会导致PHP无法接收,那么解决思路就是将form表单中要进行提交的数据封装为一个json字段提交到后台,为了其他表单也会出现这样的问题,则将
大家在调试Hyperf的时候,可能总需要做一些服务的重启,重新点击postman的接口请求按钮,查看调试的结果是否正常,这篇文章就是教大家如何在PhpStorm中完成这一系列的操作。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008