码迷,mamicode.com
首页 > 其他好文 > 详细

8.10 12.1-12.5

时间:2018-08-12 18:49:43      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:本机   能力   区分   sha   share   global   限速   性能   mod   

12.1 LNMP架构介绍

 

Apachenginx的功能类似

LNMP架构中,PHP会作为一个独立的服务存在,这个服务叫php-fpmnginx会将用户请求的php交个php-fpm处理

php-fpm会和mysql进行交互

用户登录网站时需要将用户的身份信息(用户名密码)与mysql中的信息进行比对查找,该工作由php-fpm完成,若查证无误,则php-fpm会返回信息给nginx,再由nginx告诉用户的浏览器

 技术分享图片

静态请求会由nginx直接处理,nginx处理静态请求的性能比apache更好

Nginx可以支持较大的用户并发数

 

12.2 MySQL安装

 

重新安装mysql

删除原来的mysql

1 检查原来安装的mysql是否运行

[root@hyc-01-01 ~]# ps aux|grep mysql

root      1023  0.0  0.0 112720   984 pts/0    R+   20:49   0:00 grep --color=auto mysql 未运行

2 删除mysql相关文件

[root@hyc-01-01 local]# rm -rf /usr/local/mysql 删除mysql包解压后的目录

[root@hyc-01-01 local]# rm -rf /etc/init.d/mysqld 删除mysql启动脚本

3 下载mysql

将所有包下载至统一路径下

[root@hyc-01-01 src]# wget http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz

4 将解压后的包移动位置并改名为mysql

[root@hyc-01-01 src]# mv mysql-5.6.39-linux-glibc2.12-x86_64 /usr/local/mysql

此时/usr/local/路径下一定不能存在mysql目录,否则会将文件移动到这个mysql目录下并且不会修改文件名称

 

5 检查/usr/local路径下的mysql目录并进入该目录,创建/data目录及mysql用户

[root@hyc-01-01 src]# ls /usr/local/mysql/

bin      data  include  man         README   share      support-files

COPYING  docs  lib      mysql-test  scripts  sql-bench

[root@hyc-01-01 src]# cd /usr/local/mysql

[root@hyc-01-01 mysql]# ls /data /data目录已创建

mariadb  mysql  wwwroot

[root@hyc-01-01 mysql]# id mysql mysql用户已创建

uid=1002(mysql) gid=1002(mysql) =1002(mysql)

 

6 清空目录/data/mysql或直接删除/data/mysql目录

[root@hyc-01-01 mysql]# rm -rf /data/mysql/*

仅删除/data/mysql/目录下的文件,不删除mysql目录本身

也可以将整个mysql目录删除

 

7 初始化

生成mysql启动所需的目录的过程

[root@hyc-01-01 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

安装过程中出现2ok则说明正确执行

[root@hyc-01-01 mysql]# echo $? 检查是否正确执行(需要执行完成后立即执行该命令检查)

0 0则执行无误

 

8 配置mysql配置文件(my.cnf

拷贝配置文件到/etc下(若/etc下已有my.cnf则不执行该步)

[root@hyc-01-01 mysql]# cp support-files/my-default.cnf  /etc/my.cnf

mysqld服务查找配置文件时默认会到/etc目录下查找文件名为my.cnf的文件,所以需要将配置文件名改为my.cnf并移动文件到/etc

检查配置:

[root@hyc-01-01 etc]# vim my.cnf

  1 [mysqld]

  2 federated

  3 datadir=/data/mysql datadir路径是否正确

  4 socket=/tmp/mysql.sock socket路径是否正确

 

9 拷贝启动脚本并编辑

拷贝:

[root@hyc-01-01 mysql]# cp support-files/mysql.server  /etc/init.d/mysqld

编辑:

[root@hyc-01-01 mysql]# vim /etc/init.d/mysqld

42

 43 # If you change base dir, you must also change datadir. These may get

 44 # overwritten by settings in the MySQL configuration files.

 45

46 basedir=/usr/local/mysql

 47 datadir=/data/mysql

48

 

10 启动mysqld

[root@hyc-01-01 mysql]# /etc/init.d/mysqld start

Starting MySQL.Logging to '/data/mysql/hyc-01-01.err'.

. SUCCESS! 启动成功

检查:

[root@hyc-01-01 mysql]# ps aux|grep mysqld

root      1327  0.0  0.1 113308  1604 pts/0    S    22:11   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/hyc-01-01.pid

mysql     1477  1.6 44.6 1302724 449788 pts/0  Sl   22:11   0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=hyc-01-01.err --pid-file=/data/mysql/hyc-01-01.pid --socket=/tmp/mysql.sock

root      1503  0.0  0.0 112720   980 pts/0    R+   22:12   0:00 grep --color=auto mysqld

 

mysqld加入服务列表

[root@hyc-01-01 mysql]# chkconfig --add mysqld mysqld加入服务列表

[root@hyc-01-01 mysql]# chkconfig mysqld on 设置开机启动

此时可以使用以下命令:

[root@hyc-01-01 mysql]# service mysqld stop

Shutting down MySQL.. SUCCESS!

[root@hyc-01-01 mysql]# service mysqld start

Starting MySQL. SUCCESS!

 

[root@hyc-01-01 mysql]# ps aux|grep mysqld

root      1584  0.0  0.1  11816  1600 pts/0    S    22:15   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/hyc-01-01.pid

mysql     1735  1.1 44.6 1302724 449776 pts/0  Sl   22:15   0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=hyc-01-01.err --pid-file=/data/mysql/hyc-01-01.pid --socket=/tmp/mysql.sock

root      1759  0.0  0.0 112720   980 pts/0    R+   22:16   0:00 grep --color=auto mysqld

 

12.3 PHP安装(上)

 

LAMPLNMPPHP安装不一样:

安装LAMP时,由于PHPapache的一个模块,所以需要在安装时指定apache的路径,需要使用apxs工具自动配置模块

LNMPPHP在配置时仍需要MySQL

nginx下使用时PHP作为一个独立的服务存在,与nginx无直接关系

 

操作:

1 进入PHP源码包文件

[root@hyc-01-01 src]# cd php-5.6.30

[root@hyc-01-01 php-5.6.30]# pwd

/usr/local/src/php-5.6.30

 

2 删除原先安装LAMP时编译的文件

[root@hyc-01-01 php-5.6.30]# make clean

find . -name \*.gcno -o -name \*.gcda | xargs rm -f

find . -name \*.lo -o -name \*.o | xargs rm -f

find . -name \*.la -o -name \*.a | xargs rm -f

find . -name \*.so | xargs rm -f

find . -name .libs -a -type d|xargs rm -rf

rm -f libphp5.la sapi/cli/php sapi/cgi/php-cgi    libphp5.la modules/* libs/*

执行完成后的/usr/local/src/php-5.6.30就是一个刚被解压时的状态

 

3 生成可编译文件

为了与php5php7区分,指定安装路径为/usr/local/php-fpm

[root@hyc-01-01 php-5.6.30]# ./configure --prefix=/usr/local/php-fpm --with-config-file-path=/usr/local/php-fpm/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --with-pear --with-curl --with-openssl

编译的参数大部分与apache相同

不同:

--prefix=/usr/local/php-fpm

--with-config-file-path=/usr/local/php-fpm/etc

--enable-fpm 必须加,不加则服务无法启动

--with-fpm-user=php-fpm 指定php-fpm的用户

--with-fpm-group=php-fpm 指定php-fpm的组

 

报错:

1

checking for cURL in default path... not found

configure: error: Please reinstall the libcurl distribution -

easy.h should be in <curl-dir>/include/curl/

解决:

[root@hyc-01-01 php-5.6.30]# yum install -y libcurl-devel

 

4 编译

[root@hyc-01-01 php-5.6.30]# make

 

5 安装

[root@hyc-01-01 php-5.6.30]# make install

 

12.4 PHP安装(下)

 

[root@hyc-01-01 php-5.6.30]# ls /usr/local/php-fpm

bin  etc  include  lib  php  sbin  var

[root@hyc-01-01 php-5.6.30]# ls /usr/local/php

bin  etc  include  lib  php

[root@hyc-01-01 php-5.6.30]# ls /usr/local/php-fpm/sbin

php-fpm

[root@hyc-01-01 php-5.6.30]# ls /usr/local/php-fpm/var/

log  run

sbinvarphp-fpm中比php多的两个目录

sbin目录下有php-fpm文件,该文件用于启动php-fpm服务

var目录下有logrun目录,log用于存放日志,run用于存放pid

日志和pid的存放路径均可以单独指定

 

sbin下的php-fpm

查看php-fpm包含的模块:

[root@hyc-01-01 php-5.6.30]#  /usr/local/php-fpm/sbin/php-fpm –m

查看php-fpm服务信息:

[root@hyc-01-01 php-5.6.30]#  /usr/local/php-fpm/sbin/php-fpm –i

检查php-fpm配置文件的错误:

[12-Aug-2018 12:17:58] ERROR: failed to open configuration file '/usr/local/php-fpm/etc/php-fpm.conf': No such file or directory (2)  /usr/local/php-fpm/etc/php-fpm.conf配置文件不存在

[12-Aug-2018 12:17:58] ERROR: failed to load configuration file '/usr/local/php-fpm/etc/php-fpm.conf'

[12-Aug-2018 12:17:58] ERROR: FPM initialization failed

 

配置php-fpm服务

拷贝php的模板配置文件到指定的php-fpm配置文件路径下:

[root@hyc-01-01 php-5.6.30]# cp php.ini-production /usr/local/php-fpm/etc/php.ini

php.ini-production:生产环境下使用,在错误日志等处与development不同

php.ini-development:测试环境下使用

编辑php-fpm的配置文件:

[root@hyc-01-01 etc]# pwd

/usr/local/php-fpm/etc

[root@hyc-01-01 etc]# ls

pear.conf  php-fpm.conf.default  php.ini

新建一个php-fpm.conf文件或直接将php-fpm.conf.default文件改名为php-fpm.conf

[root@hyc-01-01 etc]# vim php-fpm.conf

[global]

pid = /usr/local/php-fpm/var/run/php-fpm.pid 指定pid文件路径

error_log = /usr/local/php-fpm/var/log/php-fpm.log 错误日志路径

[www] 模块名称

listen = /tmp/php-fcgi.sock 监听的socket地址

#listen = 127.0.0.1:9000

监听的ip地址及端口,由于php-fpm通常针对内部使用,在本机器上使用(nginxphp通常在一台机器上)

php-fpm默认监听的端口为9000

以上两个listen为两种不同的监听方法

采用不同的监听方法,在配置nginxphp结合时的配置也会不同,配置结合时需要告诉nginx在×××php,此时配置语句会不一样

listen.mode = 666 当监听的是socket地址时生效,用于定义socket文件的权限

user = php-fpm 以下2个用于定义服务的用户和组

group = php-fpm

pm = dynamic 后面是一些与进程相关的信息

pm.max_children = 50

pm.start_servers = 20

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

rlimit_files = 1024

拷贝启动脚本:

[root@hyc-01-01 php-5.6.30]# cd /usr/local/src/php-5.6.30 进入源码包目录

[root@hyc-01-01 php-5.6.30]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm 拷贝php启动脚本并改名

修改启动脚本权限:

[root@hyc-01-01 php-5.6.30]# chmod 755 /etc/init.d/php-fpm

php-fpm服务加入服务列表:

[root@hyc-01-01 php-5.6.30]# chkconfig --add php-fpm

php-fpm设为开机启动:

[root@hyc-01-01 php-5.6.30]# chkconfig php-fpm on

 

启动php-fpm服务:

[root@hyc-01-01 php-5.6.30]#  /usr/local/php-fpm/sbin/php-fpm –t 检测配置错误

[12-Aug-2018 13:21:30] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful

[root@hyc-01-01 php-5.6.30]# service php-fpm start

报错:

Starting php-fpm [12-Aug-2018 13:20:29] ERROR: [pool www] cannot get uid for user 'php-fpm'

[12-Aug-2018 13:20:29] ERROR: FPM initialization failed

 failed 启动失败

原因:未添加用户php-fpm

[root@hyc-01-01 php-5.6.30]# useradd php-fpm

[root@hyc-01-01 php-5.6.30]# service php-fpm start

starting php-fpm  done 正常启动

 

查看进程:

[root@hyc-01-01 php-5.6.30]# ps aux|grep php-fpm

root     54263  0.0  0.4 123648  4948 ?        Ss   13:24   0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)

php-fpm  54264  0.0  0.4 123648  4700 ?        S    13:24   0:00 php-fpm: pool www

pool www:即定义的池的名称

php-fpm:用户名

php-fpm  54265  0.0  0.4 123648  4700 ?        S    13:24   0:00 php-fpm: pool www

php-fpm  54266  0.0  0.4 123648  4700 ?        S    13:24   0:00 php-fpm: pool www

php-fpm  54267  0.0  0.4 123648  4700 ?        S    13:24   0:00 php-fpm: pool www

php-fpm  54268  0.0  0.4 123648  4704 ?        S    13:24   0:00 php-fpm: pool www

php-fpm  54269  0.0  0.4 123648  4704 ?        S    13:24   0:00 php-fpm: pool www

php-fpm  54270  0.0  0.4 123648  4704 ?        S    13:24   0:00 php-fpm: pool www

php-fpm  54271  0.0  0.4 123648  4704 ?        S    13:24   0:00 php-fpm: pool www

php-fpm  54272  0.0  0.4 123648  4704 ?        S    13:24   0:00 php-fpm: pool www

php-fpm  54273  0.0  0.4 123648  4704 ?        S    13:24   0:00 php-fpm: pool www

php-fpm  54274  0.0  0.4 123648  4704 ?        S    13:24   0:00 php-fpm: pool www

php-fpm  54275  0.0  0.4 123648  4708 ?        S    13:24   0:00 php-fpm: pool www

php-fpm  54276  0.0  0.4 123648  4708 ?        S    13:24   0:00 php-fpm: pool www

php-fpm  54277  0.0  0.4 123648  4708 ?        S    13:24   0:00 php-fpm: pool www

php-fpm  54278  0.0  0.4 123648  4708 ?        S    13:24   0:00 php-fpm: pool www

php-fpm  54279  0.0  0.4 123648  4708 ?        S    13:24   0:00 php-fpm: pool www

php-fpm  54280  0.0  0.4 123648  4708 ?        S    13:24   0:00 php-fpm: pool www

php-fpm  54281  0.0  0.4 123648  4708 ?        S    13:24   0:00 php-fpm: pool www

php-fpm  54282  0.0  0.4 123648  4708 ?        S    13:24   0:00 php-fpm: pool www

php-fpm  54283  0.0  0.4 123648  4708 ?        S    13:24   0:00 php-fpm: pool www

root     54285  0.0  0.0 112720   984 pts/1    R+   13:26   0:00 grep --color=auto php-fpm

[root@hyc-01-01 php-5.6.30]# ls -l /tmp/php-fcgi.sock

srw-rw-rw- 1 root root 0 8  12 13:24 /tmp/php-fcgi.sock

配置文件中定义的socket文件权限为666

 

12.5 Nginx介绍

 

Nginx官网:Nginx.org

由俄国人开发

Nginx的静态文件处理能力比apache强很多

Nginx支持扩展第三方模块(如支持https等)

目前最新的稳定版本为1.121.13已经开发了多个版本但不够稳定

通常nginx的稳定版本在nginx官网会显示stable,非稳定版可能会显示mainline

 

分支版本

阿里巴巴公司基于nginx开发了Tengine,使用上与nginx基本相同

Tengine增加了一些定制化的模块,在安全限速方面性能较好

支持jscss静态文件的合并:

购物网站上包含大量的图片等信息,用户访问一个页面时可能会产生大量请求,当并发量高的时候,大量的请求会影响web server的响应能力

Tengine可以将大量的jscss合并一起处理,减少请求的次数

 

Openresty

使用了nginx的部分功能和lua相关组件、模块组成的一个支持lua的高性能web容器

lua是一个比较流行的开发语言

 

应用场景

Web服务:作为web服务端使用

反向代理:

负载均衡(反向代理多台机器):


8.10 12.1-12.5

标签:本机   能力   区分   sha   share   global   限速   性能   mod   

原文地址:http://blog.51cto.com/12216458/2158493

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!