LNMP架构 nginx+mysql+php+memcache+论坛

LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。
Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等。
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
Mysql是一个小型关系型数据库管理系统。
PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。
这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。

一.Mysql源码安装

1.安装依赖

[root@server1 mnt]# yum install cmake-2.8.12.2-4.el6.x86_64.rpm -y

[root@server1 mnt]# yum install gcc gcc-c++ -y

[root@server1 mnt]# yum install ncurses-devel -y

[root@server1 mnt]# yum install bison -y

2.安装mysql

[root@server1 mnt]# tar zxf mysql-boost-5.7.11.tar.gz

[root@server1 ~]# cd /mnt/mysql-5.7.11/

[root@server1 mysql-5.7.11]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data  -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock  -DWITH_INNOBASE_STORAGE_ENGINE=1  -DWITH_MYISAM_STORAGE_ENGINE=1  -DDEFAULT_CHARSET=utf8  -DDEFAULT_COLLATION=utf8_general_ci  -DEXTRA_CHARSETS=all  -DWITH_BOOST=/mnt/mysql-5.7.11/boost/boost_1_59_0/

[root@server1 mysql-5.7.11]# make

[root@server1 mysql-5.7.11]# make install


LNMP架构 nginx+mysql+php+memcache+论坛_第1张图片

3.配置mysql

创建mysql组和用户并指定家目录

[root@server1 lnmp]# groupadd -g 27 mysql
[root@server1 lnmp]# useradd -u 27 -g 27 -M -d /usr/local/lnmp/mysql/ mysql

更改权限

[root@server1 ~]# usermod -s /sbin/nologin mysql

[root@server1 ~]# cd /usr/local/lnmp/mysql/

[root@server1 mysql]# chown mysql.mysql . -R

LNMP架构 nginx+mysql+php+memcache+论坛_第2张图片

添加mysql的路径

[root@server1 ~]# vim .bash_profile

[root@server1 ~]# source .bash_profile


更改mysql脚本位置

[root@server1 support-files]# pwd

/usr/local/lnmp/mysql/support-files
[root@server1 support-files]# cp mysql.server /etc/init.d/mysqld

[root@server1 support-files]# chmod +x /etc/init.d/mysqld


更改mysql数据路径

[root@server1 ~]# vim /etc/my.cnf

LNMP架构 nginx+mysql+php+memcache+论坛_第3张图片

mysql初始化

[root@server1 mysql]# mysqld --initialize --user=mysql

初始化时出错,删除data下的数据再次初始化就行


LNMP架构 nginx+mysql+php+memcache+论坛_第4张图片

启动使用mysql

[root@server1 data]# /etc/init.d/mysqld start

[root@server1 data]# mysql -p

登陆时需要密码,注意初始化完成后会生成一个随机密码


LNMP架构 nginx+mysql+php+memcache+论坛_第5张图片

4.更改mysql的密码

[root@server1 ~]# mysql_secure_installation

LNMP架构 nginx+mysql+php+memcache+论坛_第6张图片

LNMP架构 nginx+mysql+php+memcache+论坛_第7张图片

LNMP架构 nginx+mysql+php+memcache+论坛_第8张图片

测试修改成功

LNMP架构 nginx+mysql+php+memcache+论坛_第9张图片

二.php

1.安装php源码包

解决依赖

[root@server1 ~]#  yum install -y net-snmp-devel -y

[root@server1 ~]# yum install libcurl-devel -y

[root@server1 ~]# yum install libxml2-devel -y

[root@server1 php-5.6.20]# yum install openssl-devel curl-devel bison gmp-devel -y


安装

[root@server1 ~]# tar jxf php-5.6.20.tar.bz2

[root@server1 php-5.6.20]# ./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --enable-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir --with-pear --with-gettext --with-gmp --enable-inline-optimization --enable-ftp --enable-sockets --enable-mbstring --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-mcrypt --with-mhash

LNMP架构 nginx+mysql+php+memcache+论坛_第10张图片

[root@server1 php-5.6.20]# make && make install
LNMP架构 nginx+mysql+php+memcache+论坛_第11张图片

2.配置php文件

[root@server1 php-5.6.20]# cd /usr/local/lnmp/php/etc/
[root@server1 etc]# cp php-fpm.conf.default php-fpm.conf
[root@server1 etc]# cd /root/php-5.6.20
[root@server1 php-5.6.20]# cp php.ini-production /usr/local/lnmp/php/etc/php.ini

LNMP架构 nginx+mysql+php+memcache+论坛_第12张图片

[root@server1 etc]# vim /usr/local/lnmp/php/etc/php.ini


[root@server1 etc]# vim /usr/local/lnmp/php/etc/php-fpm.conf


更改启动脚本位置,加执行权限

[root@server1 ~]# cd /root/php-5.6.20/sapi/fpm/

[root@server1 fpm]# cp init.d.php-fpm /etc/init.d/php-fpm
[root@server1 fpm]# chmod +x /etc/init.d/php-fpm

LNMP架构 nginx+mysql+php+memcache+论坛_第13张图片

增加nginx用户,启动php

[root@server1 ~]# useradd -u 800 -M -d /usr/local/lnmp/nginx nginx
[root@server1 ~]# /etc/init.d/php-fpm start

LNMP架构 nginx+mysql+php+memcache+论坛_第14张图片

三.nginx源码安装

1.安装

解压编译,去掉版本号,关闭gcc编译

[root@server1 mnt]# tar zxf nginx-1.10.1.tar.gz
[root@server1 mnt]# cd nginx-1.10.1

[root@server1 nginx-1.10.1]# vim src/core/nginx.h

LNMP架构 nginx+mysql+php+memcache+论坛_第15张图片

[root@server1 nginx-1.10.1]# vim auto/cc/gcc

LNMP架构 nginx+mysql+php+memcache+论坛_第16张图片


LNMP架构 nginx+mysql+php+memcache+论坛_第17张图片

[root@server1 nginx-1.10.1]# yum install pcre-devel -y

[root@server1 nginx-1.10.1]# ./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-file-aio --with-threads --user=nginx --group=nginx



[root@server1 nginx-1.10.1]# make && make install

LNMP架构 nginx+mysql+php+memcache+论坛_第18张图片

做软链接,启动nginx

[root@server1 ~]# ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/

LNMP架构 nginx+mysql+php+memcache+论坛_第19张图片

2.配置nginx

[root@server1 ~]# cd /usr/local/lnmp/nginx/

[root@server1 nginx]# vim conf/nginx.conf

配置主页面php ,修改include 为 fastcgi.conf

LNMP架构 nginx+mysql+php+memcache+论坛_第20张图片

LNMP架构 nginx+mysql+php+memcache+论坛_第21张图片

LNMP架构 nginx+mysql+php+memcache+论坛_第22张图片

php访问页面

[root@server1 nginx]# vim html/index.php

[root@server1 nginx]# nginx -s reload

LNMP架构 nginx+mysql+php+memcache+论坛_第23张图片

把数据库的数据目录加到php.ini中

[root@server1 lnmp]# vim /usr/local/lnmp/php/etc/php.ini

LNMP架构 nginx+mysql+php+memcache+论坛_第24张图片


LNMP架构 nginx+mysql+php+memcache+论坛_第25张图片

测php访问页面,mysql接口正常

[root@server1 ~]# nginx -s reload

LNMP架构 nginx+mysql+php+memcache+论坛_第26张图片

四.论坛Discuz的搭建

1.解压论坛包

[root@server1 mnt]# yum install unzip -y
[root@server1 mnt]# unzip Discuz_X3.2_SC_UTF8.zip

LNMP架构 nginx+mysql+php+memcache+论坛_第27张图片

把upload移到/bbs 文件

[root@server1 mnt]# mkdir /bbs

[root@server1 mnt]# mv upload/* /bbs



修改nginx的发布目录

[root@server1 upload]# vim /usr/local/lnmp/nginx/conf/nginx.conf
[root@server1 upload]# nginx -s reload

LNMP架构 nginx+mysql+php+memcache+论坛_第28张图片

2.配置论坛

网页进入安装配置界面

LNMP架构 nginx+mysql+php+memcache+论坛_第29张图片

当前状态不能写入,需要增加权限

LNMP架构 nginx+mysql+php+memcache+论坛_第30张图片

[root@server1 bbs]# chmod 777 config/ data/ -R
[root@server1 bbs]# chmod 777 uc_client/ uc_server/ -R

LNMP架构 nginx+mysql+php+memcache+论坛_第31张图片

LNMP架构 nginx+mysql+php+memcache+论坛_第32张图片

LNMP架构 nginx+mysql+php+memcache+论坛_第33张图片

LNMP架构 nginx+mysql+php+memcache+论坛_第34张图片

[root@server1 mysql]# chmod 755 data/ -R

LNMP架构 nginx+mysql+php+memcache+论坛_第35张图片

LNMP架构 nginx+mysql+php+memcache+论坛_第36张图片

[root@server1 bbs]# chmod 777 /usr/local/lnmp/mysql/data/mysql.sock

[root@server1 bbs]# /etc/init.d/php-fpm reload

自己的论坛建好

LNMP架构 nginx+mysql+php+memcache+论坛_第37张图片

LNMP架构 nginx+mysql+php+memcache+论坛_第38张图片

删除index.php,以免冲突

LNMP架构 nginx+mysql+php+memcache+论坛_第39张图片

五.MemCache缓存

缓存体系一:缓存在php

MemCache的工作流程如下:先检查客户端的请求数据是否在memcached中,如有,直接把请求数据返回,不再对数据库进行任何操作;如果请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到memcached中(memcached客户端不负责,需要程序明确实现);每次更新数据库的同时更新memcached中的数据,保证一致性;当分配给memcached内存空间用完之后,会使用LRULeast Recently Used,最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后再替换掉最近未使用的数据。

LNMP架构 nginx+mysql+php+memcache+论坛_第40张图片

布局memcache缓存磁盘设置server2,交叉存储

1.添加php的路径

[root@server1 ~]# vim .bash_profile
[root@server1 ~]# source .bash_profile

2.编译安装memcche

[root@server1 ~]# tar zxf memcache-2.2.5.tgz

[root@server1 memcache-2.2.5]# phpize

[root@server1 memcache-2.2.5]# ./configure --prefix=/usr/local/lnmp/php/memcache

LNMP架构 nginx+mysql+php+memcache+论坛_第41张图片

[root@server1 memcache-2.2.5]# make && make install


3.配置php

[root@server1 ~]# vim /usr/local/lnmp/php/etc/php.ini
[root@server1 ~]# /etc/init.d/php-fpm reload

LNMP架构 nginx+mysql+php+memcache+论坛_第42张图片

4.将memcache测试文件拷贝到nginx的发布目录

[root@server1 ~]# cd /root/memcache-2.2.5

[root@server1 memcache-2.2.5]# cp example.php /usr/local/lnmp/nginx/html/

[root@server1 memcache-2.2.5]# cp memcache.php /usr/local/lnmp/nginx/html/

[root@server1 memcache-2.2.5]# vim /usr/local/lnmp/nginx/html/example.php

LNMP架构 nginx+mysql+php+memcache+论坛_第43张图片

[root@server1 memcache-2.2.5]# vim /usr/local/lnmp/nginx/html/memcache.php

LNMP架构 nginx+mysql+php+memcache+论坛_第44张图片

5.部署server2

[root@server2 ~]# yum install memcached -y

[root@server2 ~]# /etc/init.d/memcached start

6.测试

[root@foundation87 ~]# ab -c 100 -n 100 http://172.25.87.1/example.php

http://172.25.18.1/memcache.php 

密码为memcache.php中设置的密码

LNMP架构 nginx+mysql+php+memcache+论坛_第45张图片

LNMP架构 nginx+mysql+php+memcache+论坛_第46张图片


缓存体系二:缓存在nginx上

可以看到,即使memcache命中,还是要进入PHP的生命周期。我们知道,目前很多互联网应用都使用RESTful规范进行设计,在RESTful应用下,普遍使用uri和查询参数作为缓存的key,因此一种更高效的缓存策略是Nginx直接访问memcache,并用$uri和$args等Nginx内置变量设定缓存key规则,这样,当缓存命中时,Nginx可以跳过通过fastcgi和PHP通信的过程,直接从memcache中获取数据并返回。memc-nginx和srcache-nginx正是利用这种策略提高了缓存的效率。下图是这种高效缓存策略的示意图(当memcache命中时)。

LNMP架构 nginx+mysql+php+memcache+论坛_第47张图片

OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

OpenResty® 的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。

1.安装openresty

[root@server1 mnt]# tar zxf openresty-1.13.6.1.tar.gz

[root@server1 mnt]# cd openresty-1.13.6.1

[root@server1 openresty-1.13.6.1]# ./configure

[root@server1 openresty-1.13.6.1]# gmake && gmake install

LNMP架构 nginx+mysql+php+memcache+论坛_第48张图片

2.关闭原有的nginx,开启openresty自带的nginx

[root@server1 openresty-1.13.6.1]# nginx -s stop

[root@server1 openresty-1.13.6.1]# cd /usr/local/openresty/nginx/sbin/

[root@server1 sbin]# ./nginx

3.更改openresty中nginx的配置,编写发布文件,重加载nginx

[root@server1 ~]# vim /usr/local/openresty/nginx/conf/nginx.conf

LNMP架构 nginx+mysql+php+memcache+论坛_第49张图片

LNMP架构 nginx+mysql+php+memcache+论坛_第50张图片

[root@server1 ~]# cd /usr/local/openresty/nginx/html/
[root@server1 html]# vim index.php


4.在 nginx中设置memcache

[root@server1 sbin]# vim /usr/local/openresty/nginx/conf/nginx.conf

[root@server1 sbin]# ./nginx -s reload

LNMP架构 nginx+mysql+php+memcache+论坛_第51张图片

LNMP架构 nginx+mysql+php+memcache+论坛_第52张图片

5.server3

[root@server3 ~]# yum install memcached -y

[root@server3 ~]# /etc/init.d/memcached start

6.测试

[root@foundation87 ~]# ab -c 100 -n 100 http://172.25.87.1/example.php







你可能感兴趣的:(企业部分)