以前写的过时了,重新发一篇新的。

安装PHP

下载官网:https://www.php.net/downloads.php

为了方便,我存了现成的

百度网盘:https://pan.baidu.com/s/1LlLDsoL6d9Yej0lA5Osqzg  提取码:sxif

还有更省事的:file.fengyumeng.com/php-7.2.20.tar.gz

直接下载

  1. wget file.fengyumeng.com/php-7.2..tar.gz

解压

  1. tar -zxvf php-7.2..tar.gz

移走

  1. mv php-7.2. /usr/local/

安装一些必要依赖

  1. yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel

别急,还有一批

  1. yum -y install gcc
  2. yum -y install gcc-c++
  3. yum -y install libxslt-devel*
  4. yum -y install mod_ssl
  5. yum -y install libtool-ltdl*
  6. yum -y install perl*
    yum -y install autoconf

切目录

  1. cd /usr/local/php-7.2./

配置

  1. ./configure --prefix=/usr/local/php7 --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-jpeg-dir --with-freetype-dir --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-xmlrpc --with-xsl --with-zlib --enable-fpm --enable-bcmath -enable-inline-optimization --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml --enable-zip --enable-pcntl --with-curl --with-fpm-user=nginx --enable-ftp --enable-session --enable-xml --without-pear --disable-phar

编译

  1. make

编译出错请查看这篇博客,一般都找得到答案

http://www.cnblogs.com/sweetXiaoma/p/5855732.html

安装

  1. make install

添加环境变量

  1. vim /etc/profile

在最后一行下面加入

  1. PATH=$PATH:/usr/local/php7/bin
  2. export PATH

立即生效

  1. source /etc/profile

查看PHP版本

  1. php -v

生成必要文件

  1. cp php.ini-production /usr/local/php7/etc/php.ini
  2. cp sapi/fpm/php-fpm /usr/local/php7/etc/php-fpm
  3. cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf
  4. cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf

编辑php.ini

  1. vim /usr/local/php7/etc/php.ini

以下参数仅供参考

  1. date.timezone = PRC //设置时区
  2. file_uploads = On //是否允许上传
  3. upload_tmp_dir = /tmp //上传临时目录
  4. max_file_uploads = //单个请求最多上传数量
  5. upload_max_filesize = 10M //允许上传文件大小
  6. post_max_size = 20M //允许post传输最大值(这个必须比upload_max_filezise大)
  7. memory_limit = 128M //设置脚本最大使用内存
  8. error_reporting=E_ALL //输出错误信息
  9. error_log = /var/log/php.log //错误日志路径

创建日志文件

  1. touch /var/log/php.log
  2. chmod /var/log/php.log

接下来是nginx。

安装Nginx

下载地址

http://nginx.org/en/download.html

Mainline version 开发版
Stable version 稳定版
Legacy versions 历史版

鼠标移动到你要选择的版本超链接上点右键 复制链接地址

切目录

  1. cd /usr/local/

下载

  1. wget https://nginx.org/download/nginx-1.16.0.tar.gz

解压

  1. tar -zxvf nginx-1.16..tar.gz

进去

  1. cd nginx-1.16.

配置

  1. ./configure --with-http_stub_status_module --with-http_ssl_module

安装

  1. make && make install

打开配置文件

  1. vim /usr/local/nginx/conf/nginx.conf

这一段都是包在server{}之中  如要配置多个域名 则复制粘贴多个server{}代码块

#重写url隐藏index.php
#把下面这一段打开注释 并将其中的/scripts 修改为 $document_root

  1. server {
  2. listen 80;
  3. server_name www.abc.com abc.com;
  4. root /var/www/abc;
  5. location / {
  6. if (!-e $request_filename) {
  7. rewrite ^/index.php(.*)$ /index.php?s=$1 last;
  8. rewrite ^(.*)$ /index.php?s=$1 last;
  9. }
  10. index index.html index.htm index.php;
  11. }
  12. location ~ \.php$ {
  13. root /var/www/abc;
  14. fastcgi_pass 127.0.0.1:9000;
  15. fastcgi_index index.php;
  16. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  17. include fastcgi_params;
  18. }
  19. }

保存退出

配置php-fpm

  1. vim /usr/local/php7/etc/php-fpm.d/www.conf

把里面的user group 两行 改为nobody 或者是系统中存在的用户

  1. user = nobody
  2. group = nobody

启动php-fpm,载入php.ini

  1. /usr/local/php7/sbin/php-fpm -c /usr/local/php7/etc/php.ini

注意  如果修改了php.ini则每次需要杀掉php-fpm进程再重新启动php-fpm,PHP的解析执行靠的是这家伙,不靠nginx。

  1. ps -ef | grep php-fpm
  2. kill - 上一条命令查到的PID

编写服务脚本

  1. vim /etc/init.d/nginx

粘贴以下代码

  1. #!/bin/bash
  2. # nginx Startup script for the Nginx HTTP Server
  3. # it is v.0.0. version.
  4. # chkconfig: -
  5. # description: Nginx is a high-performance web and proxy server.
  6. # It has a lot of features, but it's not for everyone.
  7. # processname: nginx
  8. # pidfile: /usr/local/nginx/logs/nginx.pid
  9. # config: /usr/local/nginx/conf/nginx.conf
  10. nginxd=/usr/local/nginx/sbin/nginx
  11. nginx_config=/usr/local/nginx/conf/nginx.conf
  12. nginx_pid=/usr/local/nginx/logs/nginx.pid
  13. RETVAL=
  14. prog="nginx"
  15. # Source function library.
  16. . /etc/rc.d/init.d/functions
  17. # Source networking configuration.
  18. . /etc/sysconfig/network
  19. # Check that networking is up.
  20. [ "${NETWORKING}" = "no" ] && exit
  21. [ -x $nginxd ] || exit
  22. # Start nginx daemons functions.
  23. start() {
  24. if [ -e $nginx_pid ];then
  25. echo "nginx already running...."
  26. exit
  27. fi
  28. echo -n $"Starting $prog: "
  29. daemon $nginxd -c ${nginx_config}
  30. RETVAL=$?
  31. echo
  32. [ $RETVAL = ] && touch /var/lock/subsys/nginx
  33. return $RETVAL
  34. }
  35. # Stop nginx daemons functions.
  36. stop() {
  37. echo -n $"Stopping $prog: "
  38. killproc $nginxd
  39. RETVAL=$?
  40. echo
  41. [ $RETVAL = ] && rm -f /var/lock/subsys/nginx /usr/local/nginx/logs/nginx.pid
  42. }
  43. # reload nginx service functions.
  44. reload() {
  45. echo -n $"Reloading $prog: "
  46. #kill -HUP `cat ${nginx_pid}`
  47. killproc $nginxd -HUP
  48. RETVAL=$?
  49. echo
  50. }
  51. # See how we were called.
  52. case "$1" in
  53. start)
  54. start
  55. ;;
  56. stop)
  57. stop
  58. ;;
  59. reload)
  60. reload
  61. ;;
  62. restart)
  63. stop
  64. start
  65. ;;
  66. status)
  67. status $prog
  68. RETVAL=$?
  69. ;;
  70. *)
  71. echo $"Usage: $prog {start|stop|restart|reload|status|help}"
  72. exit
  73. esac
  74. exit $RETVAL

设置权限

  1. chmod /etc/init.d/nginx

加入开启自启

  1. vi /etc/rc.local

在末尾新增一行

  1. /usr/local/nginx/sbin/nginx

服务命令启动

  1. /etc/init.d/nginx start

加入开机启动

  1. chkconfig nginx on

然后你就可以使用以下服务命令了

  1. systemctl status nginx
  2. systemctl start nginx
  3. systemctl stop nginx
  4. systemctl reload nginx
  5. systemctl restart nginx

安装MySQL

安装mysql源

  1. yum localinstall -y http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

安装mysql

  1. yum install mysql-community-server

启动mysql

  1. systemctl start mysqld

获取初始密码

  1. grep 'temporary password' /var/log/mysqld.log

得到这行A temporary password is generated for root@localhost: Jqqskhz1Wr (root@localhost:后面就是默认密码 只需复制 下一步输入密码的时候粘贴即可)

进入mysql

  1. mysql -uroot -p

第一时间修改密码

  1. SET PASSWORD = PASSWORD('123456//ZZZjjj');

密码必须复杂 需包含大小写特殊符号,否则无法修改成功

开放远程连接

  1. use mysql;
  2. update user set host = '%' where user = 'root';

百分号相当于*号,意思是全部放行,也可改为IP地址则只允许此IP连接,也可以设置为192.168.%.%或者192.168.0.1/9代表允许一个ip段进行连接,也可以多加几条数据设置不同ip允许连接。

MySQL权限分配

  1. create user 'myqiutian'@'%' IDENTIFIED BY '*********';

创建一个用户为myqiutian,因为用的%所以任何IP都可以登录,但登录后却无法看到数据库,新增用户所有权限默认关闭。

懒人专用语句

  1. grant all on *.* to myqiutian;

设置该用户所有数据库所有表拥有所有权限

如果你真的是懒人,下面的就不用看了,直接跳到最后一个命令 刷新权限 ,执行完就可以下班了。

  1. grant select on A数据库.* to myqiutian;

授权myqiutian这个用户可以查看A数据库里的所有表,但是仅限于A数据库,也仅限于查看。

  1. grant insert on A数据库.user to myqiutian;

授权myqiutian这个用户可以对A数据库里的user表进行insert操作,但仅限于user表,也仅限于select和insert操作。

撤销权限

  1. revoke insert on A数据库.user from myqiutian;

注意:撤销权限之前最好用show grants for myqiutian;这条sql查一下该用户有哪些权限,增加的什么权限就撤什么权限,你增加的insert就不能撤销all。

MySQL权限工作流程:
--------->用户连接MySQL
--------->查询user表 核对账号密码 检查host字段 是否允许你的ip进行连接
--------->查询user表 其他权限字段 值若为Y 代表用户对所有数据库所有表所有字段都拥有该权限 若有值为N 则往下走
--------->查询db表 库权限控制表 获取该用户对哪些库拥有哪些权限 这张表里一条记录代表一个库
--------->查询tables_priv表 获取该用户的表控制权限 同样 如果db表中该用户对A数据库拥有insert权限 那么不管tables_priv表中如何设置 都不会影响该用户的isnert权限,如果tables_priv表中的单表权限不为all,则继续往下走
--------->查询columns_priv表 字段控制 可以设置对表字段的控制权限

四张表依次为 user db tables_priv columns_priv

注意:
如果user表中全为Y,那么不会查询下面的表。
user表中的select为N时,可以在db表中指定哪些库可以被用户看到。
但是无论是表控制还是字段控制,上级权限表(user表除外)的select字段必须为Y。
而其他权限如果上级表给出了设置,那么不会采用下级表的设置。

刷新权限,使权限立即生效

  1. flush privileges;

别忘了这里有一个配置文件cat /etc/my.cnf 可以查看存储的数据与log的位置。

好了,我们一起下班吧。

CentOS7搭建LNMP环境的更多相关文章

  1. CentOS7——搭建LNMP环境(WordPress案例)

    CentOS7--搭建LNMP环境(WordPress案例) LNMP组成介绍 LNMP(Linux-Nginx-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统 ...

  2. Centos7 搭建lnmp环境 (centos7+nginx+MySQL5.7.9+PHP7)

    阿里云一台服务器出现问题! 我估计是一键安装包环境的原因,所以打算重新搭建下环境! 首先,当然是先做好快照!安全第一! 对系统盘做更换系统操作,装上纯净版的centos. 装好后,进入系统 一.挂载数 ...

  3. linux中Centos7搭建lnmp环境

    1.安装yum yum update 2.安装nginx源: yum localinstall http://nginx.org/packages/centos/7/noarch/RPMS/nginx ...

  4. Vmware搭建LNMP环境(Centos7+Nginx+Mysql+PHP7.1.8)

    参考:1.Linux学习之CentOS(一)----在VMware虚拟机中安装CentOS 7(图文教程) 2.Centos7搭建LNMP环境 3.MySQL5.7修改默认root密码 4.CentO ...

  5. centos7 yum搭建lnmp环境及配置wordpress超详细教程

    yum安装lnmp环境是最方便,最快捷的一种方法.源码编译安装需要花费大量的人类时间,当然源码编译可以个性化配置一些其它功能.目前来说,yum安装基本满足我们搭建web服务器的需求. 本文是我根据近期 ...

  6. Yum搭建LNMP环境(动、静、库分离)(week4_day5)--技术流ken

    前言 本篇博客使用yum来搭建lnmp环境,将采用动态,静态以及数据库分开安装的方式即nginx,php,mysql.会被分开安装在不同的服务器之上,搭建出来一套lnmp环境,并部署wordpress ...

  7. WIN10 vagrant和virtualbox虚拟机和一键搭建lnmp环境配置thinkphp虚拟主机

    版本:win10系统 virtualbox:5.1.26 vagrant :1.9.7 centos 7.0 xshell/git 首先下载好对应版本的软件 配置vagrant和virtualbox ...

  8. Docker之使用Docker-compose搭建LNMP环境

    之前有随笔介绍使用Docker-compose搭建LNMP环境(centos6 php5.6) https://www.cnblogs.com/minseo/p/10146982.html 本文介绍D ...

  9. CentOS6.6搭建LNMP环境

    CentOS6.6搭建LNMP环境 1.设置yum源,本地安装依赖包 1 yum -y install gcc gcc-c++ automake autoconf libtool make 2.下载依 ...

随机推荐

  1. 【Java】【Flume】Flume-NG阅读源代码AvroSink

    org.apache.flume.sink.AvroSink是用来通过网络来数据传输的.能够将event发送到RPCserver(比方AvroSource),使用AvroSink和AvroSource ...

  2. Ubuntu 14.04 64位字体美化(使用黑文泉驿)

    Ubuntu 14.04安装和升级后,,斜体字体变得很难看,昨天,我得到一个晚上,最终,管理一个线索,这里整洁. 在线调研后,.一致的观点是,,使用开源字体库文泉驿理想的黑色字体效果,效果甚至没有丢失 ...

  3. Qt调用PolarSSL库(一个)

    最近一直在学习SSL相关知识,也明白了理论相关知识,主要SSL基本概念和连接建立.主要依据PolarSSL开源库学习.学习完了之后就希望能给有所运用,就想用Qt写一个简单的程序,添加对SSL相关概念的 ...

  4. RDIFramework.NET框架SOA解(集Windows服务、WinForm形式和IIS发布形式)-分布式应用程序

    RDIFramework.NET框架SOA解决方式(集Windows服务.WinForm形式与IIS形式公布)-分布式应用 RDIFramework.NET,基于.NET的高速信息化系统开发.整合框架 ...

  5. 安德鲁斯Toast它们的定义和防止重复显示器

    Toast安卓系统,当用户错误或功能运行完成,提示,要求用户,它不集中,并且将在一定时间内消失.然而,在用户继续误(如登录,password错)当次,将有多个Toast创建.系统会把这些toast放进 ...

  6. Symbol not found: _lua_objlen

    lua: error loading module 'cjson' from file '/usr/local/lib/lua/5.3/cjson.so': dlopen(/usr/local/lib ...

  7. Invalid default value for 'created_at'

    https://github.com/laravel/framework/issues/15144 https://stackoverflow.com/questions/30555844/larav ...

  8. wpf 触摸屏 button 背景为null的 问题

    原文:wpf 触摸屏 button 背景为null的 问题 <!-- button样式--> <Style x:Key="myBtn" TargetType=&q ...

  9. Java之nio MappedByteBuffer的资源释放问题

    使用nio的MappedByteBuffer映射内存, 在最后执行File.delete()方法的时候, 返回false,  即文件没有被删除. 原因是MappedByteBuffer在内存中也会创建 ...

  10. JAVASCRIPT高程笔记-------第 七章 函数表达式

    7.1递归 经典递归例子 function factorial(num){ if(num <= 1){ return 1; }else{ return num * factorial(num - ...