搭建-LNMP-环境

LNMP : linux + nginx1 + mysql5 + php7

依赖文件

我们后边要安装的php、apache、mysql等相关的软件,这些软件都是通过C语言或C++语言编写的,因此需要安装gcc和gcc-c++编译器。

zlib软件是后续其他软件的依赖软件,有其他软件有代码优化压缩的作用。

安装 Nginx

下载 nginx

依赖文件(解压, 安装)

1
2
[root@localhost ~] yum -y install pcre-devel
[root@localhost ~] yum -y install openssl-devel
  • pcre 是线上产品
  • pcre-devel(develop)是开发调试版本产品,里边有一些功能是线上产品不不具备
  • pcre: 包括 perl 兼容的正则表达式库

nginx install

1
2
3
[root@localhost ~] tar zxf nginx-1.12.2.tar.gz
[root@localhost ~] ./configure --prefix=/usr/local/nginx --with-http_ssl_module
[root@localhost ~] make && make install
  • –with-http_ssl_module //配置https安全型协议支持

nginx 目录

  • conf:配置文件目录
  • html:网站默认请求目录,与apache的htdocs目录作用一致
  • logs:记录日志文件目录
  • sbin:执行程序文件目录,里边有一个nginx执行程序文件,负责控制nginx服务

控制服务

在/usr/local/nginx/sbin目录里边进行服务操控

1
2
3
[root@localhost ~] ./nginx     			开启apache服务
[root@localhost ~] ./nginx -s stop 关闭apache服务
[root@localhost ~] ./nginx -s reload 重启apache服务

nginx.conf 配置

防火墙

为了使得外部用户浏览器可以访问到nginx服务效果,还需要把linux系统本身的防火墙给予关闭掉

1
[root@localhost ~] setup

安装 PHP

apache+PHP:php是apache内部的功能模块,它们是包含与被包含的关系

nginx+PHP:php作为独立服务运行,与nginx地位平等

安装 依赖

php install

1
2
3
[root@localhost ~] tar zxf php-7.0.25.tar.gz
[root@localhost ~] ./configure --prefix=/usr/local/php7.0 --with-config-file-path=/usr/local/php7.0/etc --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-jpeg-dir --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pear --with-png-dir --with-xmlrpc --with-xsl --with-zlib --enable-bcmath --enable-libxml --enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml --enable-zip --enable-fpm
[root@localhost ~] make && make install

现在我们给php做configure配置,和 LAMP 不同的是:

  • 去除apache参数
  • 增加enable-fpm,作用是使得php作为独立服务运行
  • 增加–with-config-file-path参数,设置php.ini配置文件存储目录

    php 目录

  • bin: 运行目录,里边有php脚本文件,可以运行php程序文件。
    还有用于添加扩展的phpize和php-config等文件

  • etc: 配置文件目录,马上要把php.ini创建在该目录
  • include: 包含目录,其中include/php/ext是php扩展功能目录,
    例如gd、mysqli、libxml、pcre、pdo等都安装在该目录
  • lib: library资源库目录,
    其中lib/php/extensions/no-debug-non-zts-20151012
    目录是用于存储后期给php增加相关功能模块,
    例如redis.so、memcache.so等都会存储在该目录,
    并且在php.ini文件中可以直接引入
  • sbin: 运行目录,里边的php-fpm是负责管理php服务的
  • var: variable变化目录,该目录中有run和log目录,
    都是存储php运行过程中产生的日志或临时文件的

参数 详解

  • –with-apxs2=/usr/local/apache2/bin/apxs –> 上边的指令会在安装php的时候就自动生成php模块,名称为libphp7so,并且该模块会生成到apache的对应模块目录(/usr/local/apache2/modules/)里边,然后还会自动去修改httpd.conf文件,使得引入该libphp7.so的模块
  • –with-curl –> 打开curl的支持,使得php可以访问其他网站的网址并获得对应的内容,是爬虫技术范畴,file_get_contents(“http://xxx”);
  • –with-freetype-dir –> 字体库支持
  • –with-gd –> 画图技术支持,我们并不需要主动安装gd库,该gd库已经被集成在php内部(如下图)了,随着php安装gd库也会被自动安装好
  • –with-gettext –> 支持开发多语言系统
  • –with-iconv-dir –> iconv函数库能够完成各种字符集间的转换
  • –with-kerberos –> kerberos支持
  • –with-jpeg-dir –> jpeg图片格式支持
  • –with-libxml-dir –> libxml2库的支持
  • –with-mysqli –> Mysqli数据库的支持
  • –with-openssl –> openssl的支持,加密传输时用到的,类似这样的协议https://xx就需要openssl的技术支持
  • –with-pcre-regex –> 正则表达式支持
  • –with-pdo-mysql –> pdo-mysql支持
  • –with-pear –> pear是PHP的扩展和应用程序库,包含了很多有用的类
  • –with-png-dir –> png图片格式支持
  • –with-xmlrpc –> xml相关的扩展库支持
  • –with-xsl –> 打开XSLT 文件支持,扩展了libXML2库 ,需要libxslt软件
  • –with-zlib –> zlib压缩库支持
  • –enable-bcmath –> 图片大小调整技术支持
  • –enable-libxml –> xml支持
  • –enable-inline-optimization –> 优化线程,给php整体做性能优化处理
  • –enable-gd-native-ttf –> 画图字体库支持,支持TrueType字符串函数库
  • –enable-mbregex –> 正则表达式支持
  • –enable-mbstring –> mb宽字节函数库支持
  • –enable-opcache –> 缓存支持
  • –enable-pcntl –> pcntl扩展可以支持php的多线程操作
  • –enable-shmop –> shmop是一个易于使用的功能集,允许PHP读,写,创建和删除UNIX共享内存段
  • –enable-sysvsem –> 作用同上
  • –enable-soap –> SOAP 的全称为简单对象访问协议 (Simple Object Access Protocol)。它是一种基于 XML 的,可扩展的通信协议。SOAP 提供了一种标准,使得运行在不同平台上并使用不同的编程语言编写的应用程序可以互相进行通信
  • –enable-sockets –> sockets 支持
  • –enable-xml –> xml支持
  • –enable-zip –> php支持对zip压缩包处理

(上述有一些配置参数没有设置依赖软件的路径名,其会到系统默认位置找到对应的软件,如果依赖软件没有安装到系统默认位置,则需要通过完整路径名显示设置好。还有一些配置参数本身就是“是或否”的意思,则不需要设置依赖路径名)

制作php.ini文件

在php解压目录里边把php.ini-development 复制到/usr/local/php7.0/etc/php.ini

1
2
[root@localhost ~] cp php.ini-development /usr/local/php7.0/etc/php.ini
date.timezone=PRC

服务配置文件

php是作为独立服务与nginx进行合作工作的,现在需要给“php服务”创建配置文件

创建主配置文件

把php-fpm.conf.default文件复制到当前目录并改名字为php-fpm.conf,这个文件就是“php服务”的主配置文件

1
2
3
[root@localhost ~] pwd
/usr/local/php7.0/etc
[root@localhost ~] cp php-fpm.conf.default php-fpm.conf

辅助配置文件

/usr/local/php7.0/etc/php-fpm.d/www.conf.default 辅助配置文件
在“辅助配置文件”中有“php服务”运行的详细参数(例如服务的端口号码9000等),只有被主配置文件引入后php服务才可以正常运行代表对辅助配置文件进行引入,但是辅助配置文件需要改名字为.conf后缀的

1
2
3
[root@localhost ~] pwd
/usr/local/php7.0/etc/php-fpm.d
[root@localhost ~] cp www.conf.default www.conf

服务控制

  • php-fpm 启动
  • killall php-fpm 关闭

nginx与php结合

安装 MySQL

卸载旧的 MySQL, 同apache

下载mysql组件

MySQL install

1
2
3
4
[root ~] rpm -ivh mysql-community-common-5.7.20-1.el6.i686.rpm
[root ~] rpm -ivh mysql-community-libs-5.7.20-1.el6.i686.rpm
[root ~] rpm -ivh mysql-community-client-5.7.20-1.el6.i686.rpm
[root ~] rpm -ivh mysql-community-server-5.7.20-1.el6.i686.rpm

以上组件的安装是有自上而下的顺序要求,因为它们彼此有依赖关系。

服务控制

1
[root@localhost ~] service mysqld start[/stop/restart]

查看默认的root帐号密码

1
[root@localhost ~] grep "root@localhost" /var/log/mysqld.log

修改root帐号密码

1
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

设置字符集

vim /etc/my.cnf

在配置文件最后添加以下内容:

  • 连接mysql时的字符集设置为utf8mb4
    init-connect=’SET NAMES utf8mb4’
  • 默认存储引擎为INNODB
    default-storage-engine=INNODB
  • 服务器端字符集设置为utf8mb4
    character-set-server=utf8mb4
    [mysql]
  • mysql本身字符集设置为utf8mb4
    default-character-set = utf8mb4
    [client]
  • 客户端操作mysql时字符集设置为utf8mb4
    default-character-set = utf8mb4

工步他始能詩的,裝進分星海演意學值例道……於財型目古香亮自和這乎?化經溫詩。只賽嚴大一主價世哥受的沒有中年即病行金拉麼河。主小路了種就小為廣不?