LNMP架构介绍
-
lamp架构,linux,mysql,apache,php; p- hp是作为apache的一个模块存在,libphp5或者libphp7用来解析php,apache的提供服务的叫httpd,当一个用户登录网站的时候,apache会将请求给php模块,让它去和数据库交互。
-
lnmg架构,linx,mysql,nginx,php
-
php是作为一个独立的服务存在的,这个服务叫做php-fpm,nginx提供的服务叫nginx,当一个用户登录网站的时候,nginx会将请求交给php服务,让它去和数据库交互
-
在静态页面的处理上,nginx会比apache更快一下,主要是底层的一些架构不同,在动态页面的处理上上,nginx并不比apache有优势
-
nginx的用户并发支持会很大,可以达到好几万,这是apache做不到的。
安装mysql
[root@linux-129 ~]# cd /usr/local/src
- 下载:这个是一个二进制免编译包
[root@linux-129 src]# http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
- 解压:
[root@linux-129 src]# tar zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
- 移动并重命名:
[root@linux-129 src]# mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql
[root@linux-129 src]# cd /usr/local/mysql
- 创建mysql用户
[root@linux-129 mysql]# useradd -M mysql -s /sbin/nologin
- 创建数据库目录
[root@linux-129 msyql]# mkdir /data/
- 编译:
首先安装依赖包:perl-Data-Dumper libaio
[root@linux-129 msyql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
- 拷贝启动脚本
[root@linux-129 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
- 编辑启动脚本
[root@linux-129 mysql]# vim /etc/init.d/mysqld
- 修改下面内容
basedir=/usr/local/mysql
datadir=/data/mysql
注意:如果遇到服务器上装了别的mysql,这里在启动脚本里面定义一个默认配置文件路径,因为linux系统默认的mysql配置文件路径是在/etc/my.cnf,所以这里需要指定一下
- 拷贝配置文件
[root@linux-129 mysql]# cp support-files/my-default.cnf /usr/local/mysql/my.cnf
- 编辑配置文件
basedir = /usr/local/mysql
datadir = /data/mysql
- 启动msql
[root@linux-129 mysql]# /etc/init.d/mysqld start
- 添加服务
[root@linux-129 mysql]# chkconfig --add mysqld
- 开机启动
[root@linux-129 mysql]# chkconfig mysqld on
[root@linux-129 mysql]# chkconfig --list
注意:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。
如果您想列出 systemd 服务,请执行 'systemctl list-unit-files'。
欲查看对特定 target 启用的服务请执行
'systemctl list-dependencies [target]'。
mysqld 0:关 1:关 2:开 3:开 4:开 5:开 6:关
netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关
network 0:关 1:关 2:开 3:开 4:开 5:开 6:关
PHP安装
cd /usr/local/src/
- 下载
wget http://cn2.php.net/distributions/php-5.6.30.tar.gz
- 解压
tar zxf php-5.6.30.tar.gz
- 创建用户php-fpm
useradd -s /sbin/nologin php-fpm
[root@linux-129 php-5.6.30]# tail -3 /etc/passwd
chrony:x:997:995::/var/lib/chrony:/sbin/nologin
mysql:x:1000:1000::/home/mysql:/sbin/nologin
php-fpm:x:1001:1001::/home/php-fpm:/sbin/nologin
cd php-5.6.30
4. 安装一个扩展源:
yum install -y epel-release.noarch
如果没有包,安装以下依赖包
yum install -y epel-release.noarch bzip2-devel libjpeg-turbo-devel libpng-devel freetype-devel libtomcrypt-devel openssl-devel php-mcrypt libmcrypt libmcrypt-devel gcc libtool-ltdl-devel expat-devel pcre-devel libxml2-devel libcurl-devel
- 因为之前编译过php,所以这里需要清除之前编译内容
[root@linux-129 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/*
- 编译:
[root@linux-129 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
如果php和mysql不在同一台服务器上
编译
./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-mysqli --with-pdo-mysql --with-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 --enable-pdo --enable-mysqlnd
错误信息:
编译php后发生warning:configure:WARNING:unrecognizedoptions:--with-mysql 只是php不支持mysql模块
./configure --help 查看configure的正确语法,重新编译php支持mysql,改用--with-pdo-mysql
[root@linux-129 php-5.6.30]# yum list |grep libcurl
[root@linux-129 php-5.6.30]# yum install -y libcurl-devel
重新编译后
[root@linux-129 php-fpm]# make
[root@linux-129 php-fpm]# make install
[root@linux-129 php-fpm]# cd /usr/local/php-fpm/
[root@linux-129 php-fpm]# ls
bin etc include lib php sbin va
[root@linux-129 php-fpm]# ls /usr/local/php-fpm/sbin/php-fpm //这个文件是启动文件
/usr/local/php-fpm/sbin/php-fpm 它也可以使用 -m 查看模块,-i 查看phpinfo,-t检查配置文件正确还是错误
这里报错:没有配置文件
[root@linux-129 php-fpm]# /usr/local/php-fpm/sbin/php-fpm -t
[10-Apr-2018 16:07:44] ERROR: failed to open configuration file '/usr/local/php-fpm/etc/php-fpm.conf': No such file or directory (2)
[10-Apr-2018 16:07:44] ERROR: failed to load configuration file '/usr/local/php-fpm/etc/php-fpm.conf'
[10-Apr-2018 16:07:44] ERROR: FPM initialization failed
- 拷贝php的配置文件 : php.ini-production生成环境下用的,php.ini-development开发环境中用
区别:错误日志就不一样
[root@linux-129 php-fpm]# cp /usr/local/src/php-5.6.30/php.ini-production /usr/local/php-fpm/etc/php.ini
- 拷贝php-fpm.conf的配置文件
[root@linux-129 php-fpm]# cd /usr/local/php-fpm/etc
[root@linux-129 etc]# ls
pear.conf php-fpm.conf.default php.ini \\php-fpm.conf.default这个就是模板,这里我们直接编辑
[root@linux-129 etc]# vim php-fpm.conf
加入以下内容:
[global] \\定义一些全局的参数
pid = /usr/local/php-fpm/var/run/php-fpm.pid
error_log = /usr/local/php-fpm/var/log/php-fpm.log
[www] \\模块的名字
listen = /tmp/php-fcgi.sock \\监听的地址 也可以写成ip:端口的形式
#listen = 127.0.0.1:9000 \\因为php和nginx是在同一台机器上,是在本地通信,所以这里可以是127.0.0.1,可以使用别的IP,默认端口是9000 ;这里只能使用一种监听模式,我们注释掉一个。
listen.mode = 666 \\当定义的监听是sock的时候,这个语句才会生效,定义sock的文件权限是666
user = php-fpm \\用户
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
- 拷贝php-fpm的启动脚本
[root@linux-129 etc]# cd /usr/local/src/php-5.6.30
[root@linux-129 php-5.6.30]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@linux-129 php-5.6.30]# ls /etc/init.d/php-fpm
/etc/init.d/php-fpm
- 修改权限
[root@linux-129 php-5.6.30]# chmod 755 /etc/init.d/php-fpm
11 . 添加服务列表
[root@linux-129 php-5.6.30]# chkconfig --add php-fpm
- 开机启动
[root@linux-129 php-5.6.30]#chkconfig php-fpm on
[root@linux-129 php-5.6.30]#
注意:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。
如果您想列出 systemd 服务,请执行 'systemctl list-unit-files'。
欲查看对特定 target 启用的服务请执行
'systemctl list-dependencies [target]'。
mysqld 0:关 1:关 2:开 3:开 4:开 5:开 6:关
netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关
network 0:关 1:关 2:开 3:开 4:开 5:开 6:关
php-fpm 0:关 1:关 2:开 3:开 4:开 5:开 6:关
- 检查配置文件是否正确
[root@linux-129 php-5.6.30]# /usr/local/php-fpm/sbin/php-fpm -t
[10-Apr-2018 16:39:37] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful
- 启动服务
[root@linux-129 php-5.6.30]# service php-fpm start
Starting php-fpm done
- 查看进程
[root@linux-129 php-5.6.30]# ps aux |grep php-fpm
Nginx介绍
• Nginx官网 nginx.org,最新版1.13,最新稳定版1.12 • Nginx应用场景:web服务、反向代理、负载均衡 反向代理一台机器叫反向代理,代理2台机器就叫做负载均衡 • Nginx著名分支,淘宝基于Nginx开发的Tengine,使用上和Nginx一致,服务名,配置文件名都一样,和Nginx的最大区别在于Tenging增加了一些定制化模块,在安全限速方面表现突出,另外它支持对js,css合并 • Nginx核心+lua相关的组件和模块组成了一个支持lua的高性能web容器openresty,参考http://jinnianshilongnian.iteye.com/blog/2280928
- lua是一种开发语言;
- java做的网站一半都是用过的nginx,因为java中tomcat在处理静态文件的时候比较差,nginx在处理静态文件效率比较高;
- nginx本身的功能比较少,但是它可以扩展一些第三方模块进来;比如:支持https等
来源:oschina
链接:https://my.oschina.net/u/3866516/blog/1933189