LNMP网站架构(构建动态网站页面)(Linux、nginx、MySQL、PHP)

一、LNMP架构组成部分

需求

处理动态请求,需借助动态服务进行处理

处理动态请求的架构

早期:LNMP架构 (Linux nginx(处理静态请求,实现负载均衡) MySQL(存储数据用户信息) php(处理动态请求 php程序))

普遍:LNMT架构(Linux 、nginx、MySQL、Tomcat(Java程序处理动态请求,多用于移动互联网访问))

新型:LNMP架构(Linux、nginx、MySQL、Python)

二、LNMP架构工作原理过程

1、用户向网站发起访问

动态请求访问

静态请求访问

2、nginx程序接受用户HTTP请求信息

静态请求信息由nginx程序直接作出响应

动态请求信息由nginx借助fastcgi_pass指令将请求通过fastcgi接口发送给php程序进行处理

3、PHP程序接受nginx发送动态请求信息

本身可以直接处理 通过解析器直接处理 转换成html代码信息返回给nginx程序

需要调用数据库处理 通过解析器访问数据库 数据库会进行处理后返回给php结果

4、nginx接受PHP返回的信息

将结果信息返回给用户

三、LNMP架构安装过程

(一)、Linux操作系统

1、确认安全服务需要关闭

2、确认系统/tmp目录权限为1777

(二)、nginx服务软件安装

安装yum官方源nginx程序

(三)、mariadb服务软件安装

下载安装数据库程序软件

yum install mariadb-server mariadb -y

启动数据库程序服务进程

systemctl start mariadb.servicesystemctl enable mariadb.service

PS:无法启动服务解决方法

第一步:rpm -ql mariadb-server

第二步:将默认配置文件覆盖

cp /usr/share/mysql/my-small.cnf /etc/my.cnf

(四)、PHP服务软件安装

1、解决yum安装软件冲突问题

yum remove php-mysql php php-fpm php-common

2、准备yum安装软件扩展源信息

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpmrpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

3、利用yum安装PHP相关软件信息

yum install -y php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb

4、修改php服务进程管理用户信息

(建议修改的用户和nginx worker进程用户一致)

vim /etc/php-fpm.d/www.conf

user = wwwgroup = www

5、启动PHP服务程序

systemctl start php-fpm

四、LNMP架构部署配置过程

(一)、nginx与PHP服务程序进行串联

第一步:编写nginx配置文件

vim /etc/nginx/conf.d/blog.conf

server {listen 80;server_name blog.oldboy.com;root /html/blog;index index.php index.html;location ~ \.php$ {root /www; #让php程序可以知道当哪个路径中获取代码信息fastcgi_index index.php; #默认php程序识别首页文件 index.phpfastcgi_pass 127.0.0.1:9000; #将动态请求发送给本地主机9000端口fastcgi_param SCRIPT_FILENAME(变量信息) $document_root$fastcgi_script_name(调用内置变量);#$document_root --- 识别访问网站uri资源路径信息#$fastcgi_script_name --- 识别访问网站uri资源代码信息include fastcgi_params; --- 让nginx程序可以识别一些内置变量}}

第二步:验证测试:编写测试文件

vim /html/blog/test.php

<?php phpinfo(); ?>

第三步:浏览器访问测试

浏览器访问http://blog.oldboy.com/test.php

(二)、PHP与mariadb服务程序建进行串联

第一步:编写测试文件

vim /html/blog/test_mairadb.php

<?php$servername = "localhost";$username = "root";$password = "oldboy123";//$link_id=mysql_connect(主机名,用户,密码);//mysql -u用户 -p密码 -h 主机$conn = mysqli_connect($servername, $username, $password);if ($conn) {echo "mysql successful by root !\n";}else{die("Connection failed: " . mysqli_connect_error());}?>

第二步:浏览器访问测试

浏览器访问http://blog.oldboy.com/test_mairadb.php

五、LNMP搭建动态网站

(一)、搭建动态博客网站

第一步:下载获取动态网站代码信息

博客网站开源代码:wordpress

代码下载地址

https://cn.wordpress.org/download/

第二步:将代码信息进行上传/修改站点目录权限

chown -R www.www /html/blog/

第三步:进行网站页面初始化/和网站数据库服务建立连接

访问blog网站:http://blog.oldboy.com

创建数据库信息:create database wordpress;

创建管理数据库用户信息:grant all on wordpress.* to wordpress@localhost identified by oldboy123;

查看用户是否创建:select user,host from mysql.user;

第四步:直接访问网站

(二)、搭建官方首页网站

第一步:下载获取动态网站代码信息

官方网站开源代码:dedecms/phpcms

代码下载地址

phpcms

http://www.phpcms.cn/html/download/phpcms/#content

dedecms

产 品 / DedeCMS / 软件下载_织梦CMS

(三)、搭建动态论坛网站

第一步:下载获取动态网站代码信息

论坛网站开源代码:discuz

代码下载地址

附件 · DiscuzX/Discuz X3.4 - 码云 Gitee.com

(四)、搭建动态知乎网站

第一步:下载获取动态网站代码信息

知乎网站开源代码:wecenter

代码下载地址

免费获取 WeCenter | WeCenter创建你的知乎

(五)、搭建动态视频网站

第一步:下载获取动态网站代码信息

视频网站开源代码:movcms

代码下载地址

下载 - 电影程序 - MOVCMS官方 - Powered by movcms

动态网站搭建后上传数据

通过动态网站交互方式

上传数据权限不足

修改php-fpm服务程序进程用户与nginxworker进程用户一致

客户端数据上传大小受限制

限制因素一:由于nginx服务影响

修改nginx配置文件

server {listen 80;server_name blog.oldboy.com;root /html/blog;index index.php index.html;client_max_body_size 10m;}

限制因素二:由于PHP服务影响

修改php配置文件

vim /etc/php.ini

799 upload_max_filesize = 10M -- 调整大小为10M

六、LNMP架构数据库分离

数据库分离原因:可以实现数据共享存储

(一)、数据库服务迁移过程

第一步:备份数据信息

(迁移之前web服务器)

mysqldump -uroot -poldboy123 -A > /tmp/backup.sql

第二步:迁移数据

(迁移之前web服务器)

scp -rp /tmp/backup.sql 172.16.1.51:/tmp/

第三步:恢复数据

(迁移之后mysql服务器)

mysql -uroot -poldboy123 < /tmp/backup.sql

数据库数据迁移完毕后需操作

第一步:关闭迁移前服务器数据库服务

systemctl stop mariadb.servicesystemctl disable mariadb.service

第二步:需要修改连接数据库代码信息

vim /html/blog/wp-config.php

32 define( DB_HOST, 172.16.1.51 );

第三步:需要调整数据库用户配置信息

grant all on wordpress.* to wordpress@172.16.1.% identified by oldboy123;

七、LNMP架构网站串联存储服务

串联原因:实现数据共享存储

(一)、串联过程

第一步:将本地存储好数据进行保存备份

mkdir /tmp/blog_backupmv /html/blog/wp-content/uploads/* /tmp/blog_backup/

第二步:检查确认存储服务是否可以正常使用

showmount -e 172.16.1.31

第三步:进行存储服务挂载操作

mount -t nfs 172.16.1.31:/data/blog/ /html/blog/wp-content/uploads/

第四步:将之前备份的数据进行恢复

cp /tmp/blog_backup/* /html/blog/wp-content/uploads/

八、编译安装PHP

第一步:检查是否安装PHP

systemctl status php-fpm.servicesystemctl stop php-fpm.service

第二步:获取PHP源码包

wget http://php.net/distributions/php-7.1.0.tar.gz

第三步:解决PHP依赖关系

yum install -y libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses curl gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel expat-devel xmlrpc-c xmlrpc-c-devel libicu-devel libmcrypt-devel libmemcached-devel

第四步::解压软件程序

tar -zxvf php-7.1.0.tar.gz

第五步:编译安装

1、将解压后的目录移动到指定目录并创建软链接

mv php-7.1.0 /appcd /appln -s php-7.1.0/ php

2、进入php目录并进行编译

cd php./configure --prefix=/application/php-7.1 --enable-fpm --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-soap --with-libxml-dir --with-xmlrpc --with-openssl --with-mcrypt --with-mhash --with-pcre-regex --with-sqlite3 --with-zlib --enable-bcmath --with-iconv --with-bz2 --enable-calendar --with-curl --with-cdb --enable-dom --enable-exif --enable-fileinfo --enable-filter --with-pcre-dir --enable-ftp --with-gd --with-openssl-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --enable-gd-native-ttf --enable-gd-jis-conv --with-gettext --with-gmp --with-mhash --enable-json --enable-mbstring --enable-mbregex --enable-mbregex-backtrack --with-libmbfl --with-onig --enable-pdo --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-zlib-dir --with-pdo-sqlite --with-readline --enable-session --enable-shmop --enable-simplexml --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --with-libxml-dir --with-xsl --enable-zip --enable-mysqlnd-compression-support --with-pear --enable-opcache

3、安装

make && make install

第六步:调整或创建配置文件

cd /application/php-7.1/ #进入到程序目录cp etc/php-fpm.conf.default etc/php-fpm.confcp etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.confcd /app/php #进入到源码包目录cp php.ini-production /application/php-7.1/lib/php.ini

第七步:启动php服务程序

/application/php/sbin/php-fpm

第八步:测试PHP是否启动成功

编写网站配置文件

vim /etc/nginx/conf.d/www.conf

server {listen 80;server_name www.oldboy.com;root /html/www;index index.html index.php;location ~ \.php$ {root /html/www;fastcgi_index index.php;fastcgi_pass 127.0.0.1:9000;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}}

编写测试页面站点文件

/html/www/test_php.php

<?phpphpinfo();?>

页面访问测试文件

www.oldboy.com/test_php.php

第九步:查看PHP安装时编译了哪些参数

/application/php/bin/php -i|grep configure

九、PHP优化

(一)、PHP缓存加速器优化

作用

缓存加速器主要用于提升动态解析效率

实现方式

部署前准备

配置环境变量

echo export LC_ALL=C>> /etc/profilesource /etc/profile

安装Perl相关软件依赖

yum -y install perl-devel

方式一:利用eAccelerator

1、eAccelerator介绍

安装及配置参数更简单,加速效果也不错。

Ÿ文档资料较多,但官方对软件的更新很慢,社区不活跃。

Ÿ仅适合PHP版本5.4以下的程序

2、eAccelerator安装

进入源码包目录

cd /server/tools

获取源码包

wget https://github.com/downloads/eaccelerator/eaccelerator/eaccelerator-0.9.6.1.tar.bz2

解压源码包

tar xf eaccelerator-0.9.6.1.tar.bz2

编译安装

cd eaccelerator-0.9.6.1/application/php-7.1/bin/phpize #可以让缓存加速软件源码包中生成配置命令文件信息./configure --enable-eaccelerator --with-php-config=/application/php-7.1/bin/php-configmake && make install

方式二:利用xcache

1、xcache介绍

经过测试,XCache效率更高、速度更快。

ŸXCache软件开发社区更活跃,最新版2014年底发布。

Ÿ支持更高版本的PHP,例如PHP 5.5、PHP 5.6。

2、xcache安装

进入源码包目录

cd /server/tools

获取源码包

wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.bz2

解压源码包

tar xf xcache-3.2.0.tar.bz2

编译安装包

cd xcache-3.2.0/application/php-7.1/bin/phpize #可以让缓存加速软件源码包中生成配置命令文件信息./configure --enable-xcache --with-php-config=/application/php/bin/php-configmake && make install

方式三:利用zend opcache

1、 zend opcache介绍

默认已经集成在php程序中, 不用单独安装加速软件

2、 zend opcache安装

进入源码包目录

cd /server/tools

获取源码包

wget -q http://pecl.php.net/get/zendopcache-7.0.5.tgz

解压源码包

tar xf zendopcache-7.0.5.tgz

编译安装

cd zendopcache-7.0.5/application/php-7.1/bin/phpize #可以让缓存加速软件源码包中生成配置命令文件信息./configure --enable-opcache --with-php-config=/application/php/bin/php-configmake && make install

(二)、PHP缓存功能优化

1、memcache缓存插件

PHP缓存优化原理

mencache插件安装部署

第一步:获取插件源码包

wget https://github.com/websupport-sk/pecl-memcache/archive/NON_BLOCKING_IO_php7.zip

第二步:解压源码包到指定目录

cd /server/toolsunzip NON_BLOCKING_IO_php7.zip

第三步:编译安装memcache

cd pecl-memcache-NON_BLOCKING_IO_php7//application/php-7.1/bin/phpize./configure --enable-memcache --with-php-config=/application/php-7.1/bin/php-configmake && make install

memcache插件应用配置

第一步:修改配置文件

PS:添加到最后

vim /application/php-7.1/lib/php.ini

extension = "/application/php-7.1/lib/php/extensions/no-debug-non-zts-20160303/memcache.so"

第二步:重启php-fpm

分类: 源码分享 标签: 暂无标签

评论

暂无评论数据

暂无评论数据

目录