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.service
systemctl 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.rpm
rpm -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 = www
group = 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.php
fastcgi_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.service
systemctl 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_backup
mv /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.service
systemctl 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 /app
cd /app
ln -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.conf
cp etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.conf
cd /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
<?php
phpinfo();
?>
页面访问测试文件
www.oldboy.com/test_php.php
第九步:查看PHP安装时编译了哪些参数
/application/php/bin/php -i|grep configure
九、PHP优化
(一)、PHP缓存加速器优化
作用
缓存加速器主要用于提升动态解析效率
实现方式
部署前准备
配置环境变量
echo 'export LC_ALL=C'>> /etc/profile
source /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-config
make && 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-config
make && 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-config
make && make install
(二)、PHP缓存功能优化
1、memcache缓存插件
PHP缓存优化原理
mencache插件安装部署
第一步:获取插件源码包
wget https://github.com/websupport-sk/pecl-memcache/archive/NON_BLOCKING_IO_php7.zip
第二步:解压源码包到指定目录
cd /server/tools
unzip 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-config
make && 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