php环境搭建的方法:首先通过命令“yum install wget”安装wget;然后安装Nginx,并编译依赖gcc环境;接着编译安装MySQL,并配置环境变量;最后通过install命令编译安装PHP,并启动“PHP-FPM”即可。
php入门到就业线上直播课:进入学习
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API调试工具:点击使用
PHP环境如何搭建?本篇教程给大家带来的内容是PHP环境如何搭建?PHP环境搭建(详解)
按照文章的步骤操作,可以帮助你在CentOS6.*系统上搭建一个LNMP环境或者LAMP环境。这些环境可以作为服务器的线上运行环境。
相关推荐:
作为一名PHP开发者,我们一定要懂得如何搭建PHP开发环境,目前主流的PHP开发环境组合是LAMP和LNMP,本文将介绍如何在CentOS上搭建LNMP开发环境。
目录:
一:准备工作
1.安装wget
wget
是一个从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三个最常见的TCP/IP协议下载,并可以可以使用HTTP代理。
sudo yum install wget
登录后复制
2.安装net-tools
最小化安装CentOS7时如果无法使用ifconfig命令,则需要安装net-tools
,如果是安装的CentOS6版本则无需安装
sudo yum install net-tools
登录后复制
3.更新yum源
yum -y update
登录后复制
4.安装vim
sudo yum install vim
登录后复制
5.配置显示行号
vim ~/.vimrcset nu #输入 set nu 后退出保存
登录后复制
二:安装Nginx
1.安装依赖
(1) 安装 nginx
需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装gcc-c++。
(2) PCRE
是一个Perl库,中文"Perl兼容的正则表达式库"。安装Nginx是为了使Nginx支持具备URI重写功能的rewrite模块,如果不安装pcre库,则Nginx无法使用rewrite模块功能,Nginx的Rewrite模块功能几乎是企业应用必须。
(3) zlib
库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。
(4) OpenSSL
是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。 nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要安装 OpenSSL 库 。
yum -y install gcc gcc-c++ zlib zlib-develyum -y install pcre pcre-devel openssl openssl-devel
登录后复制
说明: yum安装方式安装的pcre版本比较低,不过基本不影响使用
检查基础依赖包
上面的依赖安装完成后可以通过如下命令检查各个依赖安装是否成功
rpm -qa pcre pcre-develrpm -qa zlib zlib-develrpm -qa openssl openssl-develrpm -qa pcre pcre-devel
登录后复制
2.编译安装Nginx
# 这里我们把安装包都放到了/usr/src目录下,便于统一管理cd /usr/src#切换到软件包目录wget https://nginx.org/download/nginx-1.14.1.tar.gz #下载nginx源码包useradd nginx -s /sbin/nologin -M #创建nginx用户用于管理nginx程序tar zxvf nginx-1.14.1.tar.gz#解压nginx源码包cd nginx-1.14.1#预编译./configure \--user=nginx \--group=nginx \--prefix=/usr/local/nginx-1.14.1 \--with-http_v2_module \--with-http_ssl_module \--with-http_stub_status_modulemake && make install #编译 和 安装cd /usr/localln -s nginx-1.14.1 nginx#创建nginx的软链接
登录后复制
安装说明
--prefix=PATH#设置安装路劲--user=USER#进程用户权限--group=GROUP#进程用户组权限--with-http_stub_status_module #激活状态信息--with-http_ssl_module#激活ssl功能
登录后复制
3.配置环境变量
vim /etc/profileexport PATH=/usr/local/nginx/sbin:$PATHsource /etc/profile
登录后复制
4.配置开机自启
vim /etc/rc.local# Nginx开机自启/usr/local/nginx/sbin/nginx &
登录后复制
5.Nginx常用命令
/usr/local/nginx/sbin/nginx -t # 检查Nginx配置语法是否有误/usr/local/nginx/sbin/nginx#启动/usr/local/nginx/sbin/nginx -s stop#立即停止/usr/local/nginx/sbin/nginx -s quit#平滑停止/usr/local/nginx/sbin/nginx -s reload #重载配置/usr/local/nginx/sbin/nginx -s reopen #重开日志
登录后复制
服务启动检查
可以通过该命令查询80端口被谁占用
lsof -i :80
登录后复制
如果无法识别该命令,需要安装lsof
sudo yum install lsof
登录后复制
6.关闭防火墙
CentOS6:service iptables stop 临时关闭chkconfig --level 2345 iptables off 永久关闭CentOS7:systemctl stop firewalld.service#令关闭防火墙systemctl disable firewalld.service#关闭防火墙开机自启动通过浏览器输入IP测试是否成功
登录后复制
三:安装MySQL
1.安装依赖
(1)cmake是新版MySQL的编译工具,必须安装
sudo yum install gcc gcc-c++ cmake ncurses-devel
登录后复制
如果你的系统是CentOS7,你还需要安装如下依赖
sudo yum install perl perl-devel autoconf
登录后复制
2.编译安装MySQL
useradd -s /sbin/nologin -M mysql# 添加MySQL用户wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.42.tar.gztar zxvf mysql-5.6.42.tar.gzcd mysql-5.6.42cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.42 \-DMYSQL_UNIX_ADDR=/usr/local/mysql-5.6.42/tmp/mysql.sock \-DMYSQL_DATADIR=/usr/local/mysql-5.6.42/data \-DDEFAULT_CHARSET=utf8mb4 \-DDEFAULT_COLLATION=utf8mb4_general_ci \-DWITH_EXTRA_CHARSETS=all \-DWITH_MYISAM_STORAGE_ENGINE=1 \-DWITH_INNOBASE_STORAGE_ENGINE=1 \-DWITH_MEMORY_STORAGE_ENGINE=1 \-DWITH_READLINE=1 \-DWITH_INNODB_MEMCACHED=1 \-DWITH_DEBUG=OFF \-DWITH_ZLIB=bundled \-DENABLED_LOCAL_INFILE=1 \-DENABLED_PROFILING=ON \-DMYSQL_MAINTAINER_MODE=OFF \-DMYSQL_TCP_PORT=3306make && make install
登录后复制
3.MySQL配置
cd /usr/local/mysql-5.6.42chown mysql.mysql /usr/local/mysql-5.6.42/datamkdir tmpchown mysql.mysql /usr/local/mysql-5.6.42/tmprm -f /etc/my.cnfcp support-files/my-default.cnf /etc/my.cnfscripts/mysql_install_db --defaults-file=/etc/my.cnf --user=mysql
登录后复制
4.加入守护进程
cd /usr/localln -s mysql-5.6.42 mysqlcd /usr/local/mysqlcp support-files/mysql.server /etc/init.d/mysqldchkconfig --add mysqld
登录后复制
5.配置环境变量
vim /etc/profileexport PATH=/usr/local/mysql/bin:$PATHsource /etc/profile
登录后复制
6.启动MySQL
service mysqld startmysql -u root -p #第一次登陆不需要密码,回车即可set password for root@localhost = password('root');#修改密码
登录后复制
四:安装PHP
1.安装依赖
sudo yum install gcc gcc-c++ zip unzip libxml2 libxml2-devel curl-devel autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-develzlib zlib-devel glibc glibc-devel glib2 glib2-devel gd-devel bzip2 bzip2-devel
登录后复制
2.编译安装PHP
cd /usr/srcwget http://hk1.php.net/get/php-7.2.12.tar.gz/from/this/mirror -O php-7.2.12.tar.gztar zxvf php-7.2.12.tar.gzcdphp-7.2.12./configure \--prefix=/usr/local/php-7.2.12 \--enable-fpm \--with-fpm-user=nginx \--with-fpm-group=nginx \--with-zlib \--enable-mysqlnd \--with-pdo-mysql=mysqlnd \--with-mysqli=mysqlnd \--with-mysql-sock=/usr/local/mysql/tmp/mysql.sock \--with-gd \--with-png-dir \--with-jpeg-dir \--with-freetype-dir \--with-iconv-dir \--with-openssl \--with-curl \--enable-bcmath \--enable-mbstring \--enable-static \--enable-zip \--enable-sockets \--enable-xmlmake && make install
登录后复制
3.PHP配置
cd /usr/localln -s php-7.2.12 phpcp/usr/src/php-7.2.12/php.ini-development /usr/local/php-7.2.12/lib/php.ini vim /usr/local/php/lib/php.inidate.timezone = PRC# 修改时区(大约在932行)expose_php = Off# 避免PHP信息暴露在http头中(大约369行) display_errors = Off# 生产环境设置为off,开发环境就设置为On,便于调试 说明:设置了dispaly_errors为off后,需要在php-fpm.conf中开启错误日志记录路径error_log = log/php-fpm.log cd php cp etc/php-fpm.conf.default etc/php-fpm.confcd /usr/local/php/etc/php-fpm.d/cp www.conf.default www.conf# 管理PHP-FPMvim /usr/local/php/etc/php-fpm.confpid = run/php-fpm.piderror_log = log/php-fpm.log #24行这个在php.ini设置display_errors = Off时启用向进程发送信号,就可以完成进程管理停止: kill -INT `cat /usr/local/php/var/run/php-fpm.pid`平滑停止: kill -QUIT `cat /usr/local/php/var/run/php-fpm.pid`重启:kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`重新打开日志:kill -USR1 `cat /usr/local/php/var/run/php-fpm.pid`如果在编译PHP时指定了--with-mysql=mysqlnd和--with-pdo-mysql=mysqlnd的参数,那么在生产中可能会遇到socket连接问题,解决办法是在php.ini里加入命令: pdo_mysql.default_socket=/usr/local/mysql/tmp/mysql.sock最好是在编译PHP的时候,指定mysql.socket的位置:--with-mysql-sock=/usr/local/mysql/tmp/mysql.sock
登录后复制
4.配置环境变量
vim /etc/profileexport PATH=/usr/local/php/bin:$PATHsource /etc/profile
登录后复制
5.配置开机自启
vim /etc/rc.local# PHP-FPM自动启动/usr/local/php/sbin/php-fpm &
登录后复制
6.启动PHP-FPM
cd /usr/local/phpsbin/php-fpm # 启动PHP-FPMps -e | grep php-fpm
登录后复制
7.配置Nginx和PHP关联
#usernobody;worker_processes1;#error_loglogs/error.log;#error_loglogs/error.lognotice;#error_loglogs/error.loginfo;#pidlogs/nginx.pid;events {use epoll;worker_connections1024;}http {include mime.types;default_typeapplication/octet-stream;#隐藏Nginx软件版本号server_tokens off;#激活tcp_nodelay功能,提高I/O性能tcp_nodelay on;# 设置读取客户端请求头数据的超时时间。此处的数值为15,其单位是秒,为经验参考值client_header_timeout 15;# 设置读取客户端请求体的超时时间client_body_timeout 15;# 指定响应客户端的超时时间send_timeout 25;# 上传文件大小限制client_max_body_size 8m;#压缩配置gzip on;gzip_min_length 1k;gzip_buffers 16 8k;gzip_http_version 1.1;gzip_comp_level 2;gzip_types text/css text/xml text/plain application/javascript;gzip_vary on;#include extra/gzip.config;#log_formatmain'$remote_addr - $remote_user [$time_local] "$request" '#'$status $body_bytes_sent "$http_referer" '#'"$http_user_agent" "$http_x_forwarded_for"';#access_loglogs/access.logmain;sendfileon;#tcp_nopush on;#keepalive_timeout0;keepalive_timeout65;server { listen 80; server_namewww.nginx.com; root html/blog/public; #access_loglogs/host.access.logmain; location / {indexindex.php index.html index.htm;if (!-e $request_filename) {rewrite ^/(.*)$ /index.php/$1 last;} } #error_page404/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; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php {fastcgi_pass 127.0.0.1:9000;fastcgi_indexindex.php;fastcgi_split_path_info ^(.+\.php)(.*)$;fastcgi_param PATH_INFO $fastcgi_path_info;fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;includefastcgi_params; }}}
登录后复制
五:CentOS7开机/etc/rc.local不执行问题
CentOS7中,默认开机不再执行/etc/rc.local,查询/etc/rc.local里的内容可以发现如下描述:
#!/bin/bash# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES## It is highly advisable to create own systemd services or udev rules# to run scripts during boot instead of using this file.## In constrast to previous versions due to parallel execution during boot# this script will NOT be run after all other services.## Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure# that this script will be executed during boot.
登录后复制
翻译过来就是
#这个文件是为了兼容性的问题而添加的。##强烈建议创建自己的systemd服务或udev规则来在开机时运行脚本而不是使用这个文件。##与以前的版本引导时的并行执行相比较,这个脚本将不会在其他所有的服务后执行。##请记住,你必须执行“chmod +x /etc/rc.d/rc.local”来确保确保这个脚本在引导时执行。
登录后复制
所以要解决开机不执行问题,只需要执行下面的命令然后重启服务器。
chmod +x /etc/rc.d/rc.local
登录后复制
完成上面这些步骤,一个LNMP环境就配好啦,重启服务器即可。
以上就是PHP环境如何搭建?PHP环境搭建(详解)的详细内容,更多请关注php中文网其它相关文章!