期中集群架构-第九章-期中架构LNMP章节
======================================================================

01. LNMP架构说明
   1)使前端web服务和后端存储服务进行串联
   2)主要实现处理PHP程序动态请求

02. LNMP架构工作原理
    L--Linux  N--nginx  M--mysql  P--php

03. LNMP架构部署

1)安装LNMP相关软件
   ①. 部署Linux系统
      基础优化操作要完成(防火墙关闭 关闭selinux /tmp权限为1777)

   ②. 部署nginx服务
      暂时忽略 
  ③. 部署mysql服务
yum部署软件

编译安装软件

二进制包方式部署mysql服务
第一个里程:下载并解压mysql软件程序
   mysql官方下载链接地址:ftp://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.6/
   上传mysql软件程序,进行利用xftp软件进行上传
   tar xf mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz
   mv mysql-5.6.34-linux-glibc2.5-x86_64 /application/mysql-5.6.34

第二个里程:创建软件程序软链接
   ln -sf /application/mysql-5.6.34/ /application/mysql
   如果软链接已经存在  -f 强制创建
第三个里程:创建数据库管理用户,并授权数据目录
   useradd mysql -M -s /sbin/nologin
   chown -R mysql.mysql /application/mysql/data/

第四个里程:对数据库服务进行初始化
   /application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/application/mysql/data/ --user=mysql
   basedir对哪一个数据库进行初始化,后期学习一个系统中部署几个数据库所以需要指定

datadir指定数据目录  user指定数据库目录管理账户

第五个里程:启动mysql服务
   cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld

mysql.server 启动脚本文件  把文件复制到 开机启动文件夹中

sed -ri 's#/usr/local#/application#g' /etc/init.d/mysqld /application/mysql/bin/mysqld_safe

vim mysql.server看到默认的basedir不在我们创建的application中,需要修改

vim mysqld_safe控制mysql服务是否能够正常启动的命令看到默认识别的程序目录

也不是/applicastion 需要修改

cp /application/mysql/support-files/my-default.cnf /etc/my.cnf

/etc/my.cnf系统自带的mysql 配置文件 跟我们的版本可能不匹配

  cp  mysql里的配置文件过去

最后启动 mysql
   /etc/init.d/mysqld start

第六个里程:设置数据库root用户登录密码
   设置密码/application/mysql/bin/mysqladmin -uroot password "oldboy123"
   登陆/application/mysql/bin/mysql -uroot -poldboy123
   进入数据库所有的操作都是用的sql语句

show databases;   显示所有的数据库内容

④. PHP软件安装部署过程
第一里程:解决PHP软件的依赖关系
   yum install -y zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel

libiconv软件安装---字符集转换库(默认可以不进行安装了)
   cd /server/tools
   #wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
   tar zxf libiconv-1.14.tar.gz 解压
   cd libiconv-1.14                 进入
   ./configure --prefix=/usr/local/libiconv 配置
   make
   make install
   cd ../

#wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

部署repo源之前已经操作过了
   yum -y install libmcrypt-devel mhash mcrypt  加密相关软件
   rpm -qa libmcrypt-devel mhash mcrypt

第二个里程:下载解压PHP软件
   php官方网站下载:php.net
   cd /server/tools/
   tar xf php-5.5.32.tar.gz
   cd php-5.5.32 进入目录配置php 不需要区了解每个配置的类容

以下配置方法是汇总实际工作的一个配置
   ./configure \
   --prefix=/application/php-5.5.32 \
   --with-mysql=/application/mysql-5.6.34 \
   --with-pdo-mysql=mysqlnd \
   --with-iconv-dir=/usr/local/libiconv \
   --with-freetype-dir \
   --with-jpeg-dir \
   --with-png-dir \
   --with-zlib \
   --with-libxml-dir=/usr \
   --enable-xml \
   --disable-rpath \
   --enable-bcmath \
   --enable-shmop \
   --enable-sysvsem \
   --enable-inline-optimization \
   --with-curl \
   --enable-mbregex \
   --enable-fpm \
   --enable-mbstring \
   --with-mcrypt \
   --with-gd \
   --enable-gd-native-ttf \
   --with-openssl \
   --with-mhash \
   --enable-pcntl \
   --enable-sockets \
   --with-xmlrpc \
   --enable-soap \
   --enable-short-tags \
   --enable-static \
   --with-xsl \
   --with-fpm-user=www \
   --with-fpm-group=www \
   --enable-ftp \
   --enable-opcache=no

配置成功

 ##防错(以下信息可以不进行配置了)
   ln -s /application/mysql/lib/libmysqlclient.so.18 /usr/lib64/

touch ext/phar/phar.phar

/server/tools/php-5.5.32/ext/phar/phar.phar
   make
   make install
   ln -s /application/php-5.5.32/ /application/php

第三个里程:设置PHP程序配置文件
   php.ini   php-fpm.ini两个配置文件

php.ini 放在安装包里面
   cp php.ini-production /application/php-5.5.32/lib/

一下命令是因为创建了软链接

cd /application/php/etc/

里面有个php-fpm.conf.default 备份文件程序不能加载

所以备份重命名
   cp php-fpm.conf.default php-fpm.conf

第四个里程:启动php程序服务
   /application/php/sbin/php-fpm
   netstat -lntup|grep php

添加到、vim /etc/rc.local 开机自动开启
   tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 6251/php-fpm

2)进行软件直接的结合
   nginx与php结合:编写nginx配置文件
   location ~* .*\.(php|php5)?$ {
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      include fastcgi.conf;
   }
以上匹配到php或php5的都给9000端口,默认使用这个配置即可不用过多关注

然后重启

测试

cd /application/nginx/html/blog/ 进入blog站点目录

\rm ./* -fr清空里面的类容

vim test_info.php编写php的测试网页

http://blog.etiantian.org/test_info.php  浏览器打开

动态解析成功!

php与mysql结合:编写php程序代码

编写生成到相应站点目录下如 /application/nginx/html/blog

# vim test_mysql.php
   <?php
      //$link_id=mysql_connect('主机名','用户','密码');
      //mysql -u用户 -p密码 -h 主机
      $link_id=mysql_connect('localhost','root','oldboy123') or mysql_error();
      if($link_id){
                    echo "mysql successful by oldboy !\n";
         }else{
                    echo mysql_error();
      }
   ?>

解释:

$link_id=mysql_connect 设置变量=调用了一个php调用mysql的函数

localhost---mysql服务器在哪 哪儿登陆过去的 这里设置的本地

root---登陆数据库的用户 后面为密码

if判断如果成功 则显示 echo " "

如果失败echo  就调用or后面的mysql_error()函数

==========================================
测试浏览器打开http://blog.etiantian.org/test_mysql.php

显示 

结合成功!

3)部署一个真的网站
第一个里程:下载与上传网站代码

wordpress-4.7.3-zh_CN.tar.gz 一个开源的博客网站代码

第二个里程:解压程序代码,将程序代码保存到站点目录并进行授权
   tar xf wordpress-4.7.3-zh_CN.tar.gz
   mv wordpress/* /application/nginx/html/blog/

移动过去的文件很多都是nobody的权限,需要修改

修改成nginx: worker进程的用户

chown -R www.www /application/nginx/html/blog/
不管客户端是什么身份访问网站都会做一个映射,转换成www用户

第三个里程:直接访问blog网站,进行初始化操作

http://blog.etiantian.org/ 出错

配置文件里默认没有请求指定文件时返回的是index.html

但此时在/application/nginx/html/blog里并没有index.html首页存在

所以报错403

我们现在不是默认访问静态资源 ,现在是动态资源所以加上index.php

重启reload 再次进入网站

创建数据库:

进入mysql

# /application/mysql/bin/mysql -uroot -poldboy123
   create database wordpress; 创建一个数据库
   show databases; 检查 WordPress数据库是否创建好了

grant all on wordpress.* to 'wordpress'@'localhost' identified by 'oldboy123';

创建链接数据库用户 和密码
select user,host from mysql.user;
检查mysql自带的用户表看有没有创建的信息

接着安装

提示"要执行请求的操作,WordPress需要访问您网页服务器的权限。 请输入您的FTP登录凭据以继续。 如果您忘记了您的登录凭据(如用户名、密码),请联系您的网站托管商。"

添加好网站目录权限与nginx进程权限一致
下一个章节:
01. LNMP架构数据库服务的迁移
02. LNMP架构数据资源迁移到NFS服务器存储
03. nginx反向代理与负载均衡功能

九.LNMP网站架构实践部署的更多相关文章

  1. keepalived+nginx+lnmp 网站架构

    <网站架构演变技术研究> 项目实施手册 2019年8月2日 第一章:  实验环境确认 4 1.1-1.系统版本 4 1.1-2.内核参数 4 1.1-3.主机网络参数设置 4 1-1-4 ...

  2. 大型网站系统架构实践(五)深入探讨web应用高可用方案

    从上篇文章到这篇文章,中间用了一段时间准备,主要是想把东西讲透,同时希望大家给与一些批评和建议,这样我才能有所进步,也希望喜欢我文章的朋友,给个赞,这样我才能更有激情,呵呵. 由于本篇要写的内容有点多 ...

  3. 大型网站系统架构实践(六)深入探讨web应用集群Session保持

    原理 在第三,四篇文章中讲到了会话保持的问题,而且还遗留了一个问题,就是会话保持存在单点故障, 当时的方案是cookie插入后缀,即haproxy指负责分发请求,应用服务自行保持用户会话,如果应 用服 ...

  4. 《大型网站系统与JAVA中间件实践》读书笔记-大型网站架构演进

    大型网站架构演进 大型网站是一种很常见的分布式系统,除了海量数据和高并发的访问量,本身业务和系统也复杂. 大型网站的架构演进 我们现在常用的大型网站都是从小网站一步一步发展起来的,这个过程中会 有一些 ...

  5. 网站架构(LNMP)

    说明: 1)LNMP架构的组成(作用) 2)LNMP架构的部署 3)LNMP架构通讯原理 4)LNMP服务之间如何建立管理 nginx+php   运维负责 php+mysql   开发负责 5) 运 ...

  6. ASP.NET MVC5 网站开发实践(二) Member区域 - 咨询管理的架构

    咨询.留言.投诉等功能是网站应具备的基本功能,可以加强管理员与用户的交流,在上次完成文章部分后,这次开始做Member区域的咨询功能(留言.投诉都是咨询).咨询跟文章非常相似,而且内容更少.更简单. ...

  7. ASP.NET MVC5 网站开发实践(二) Member区域 - 文章管理架构

    上次把member的用户部分完成,现在开始做文章管理部分.文章部分根据涉及显示现实文章列表,发布文章,修改文章,删除文章等功能.最终的实现目标是使用权限来控制用户是否能进行相应操作,管理员权限的会显示 ...

  8. ASP.NET Core搭建多层网站架构【14-扩展之部署到IIS】

    2020/02/03, ASP.NET Core 3.1, VS2019, IIS 10, dotnet-hosting-3.1.1-win.exe 摘要:基于ASP.NET Core 3.1 Web ...

  9. 庐山真面目之九微服务架构 NetCore 基于 Docker 基础镜像和挂载文件部署

    庐山真面目之九微服务架构 NetCore 基于 Docker 基础镜像和挂载文件部署 一.简介      我们在上一篇文章<庐山真面目之八微服务架构 NetCore 基于 Dockerfile ...

随机推荐

  1. sql 日常使用记录

    sql 某个字段在哪些表中存在: select sysobjects.name from syscolumns inner join sysobjects on syscolumns.id = sys ...

  2. Lodop打印表格带页头页尾 自动分页每页显示头尾

    Lodop中有两种专门给超文本表格的方式,ADD_PRINT_TABLE和ADD_PRINT_TBURL,该方式只能用于单个表格,表格外的内容不显示,是专门用于打印html超文本表格的.使用这两个语句 ...

  3. 一个很变态的SQL

    select max(s.operat_time) as pzTime from ws_state_record s where s.status = (select p1.node_id from ...

  4. linux下find命令的使用和总结

    背景:find命令十分的好用,特别是在查找文件的时候,这个时候需要和文件通配符一起使用. 1 前言 我们为什么要学会使用find命令? 每一种操作系统都有成千上万的文件组成,对于linux这样“一切皆 ...

  5. P1020 导弹拦截 (贪心+最长不降子序列)

    题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...

  6. Dubbo2.6.5入门——管控台的安装

    首先去下载管控台:GitHub 然后解压到本地,截止到目前2019-01-18,最新管控台基于Dubbo2.7.0-SNAPSHOT版本,但是2.7.0还没有正式发布,不过影响不大. Dubbo Op ...

  7. iOS开发者知识普及,Swift 挑战 Objective-C,谁会笑到最后?

    前言: 目前全球共有超过 7 亿台 iPhone 处于活跃状态,全球约有2000万名 iOS 开发者,这造就了 iOS 作为全球第二大移动设备平台的状态. 虽然安卓系统的全球市场占有率超过 iOS 系 ...

  8. chrome headless 无头浏览器 应用

    1. 根据html生成pdf chrome.exe --headless --disable-gpu --print-to-pdf ...../index.html 2. puppeteer --- ...

  9. 2017-12-19python全栈9期第四天第二节之列表的增删改查之切片

    #!/user/bin/python# -*- coding:utf-8 -*-li = ['zd',[1,3,4,5,6],'ls','ww','zl']l1 = li[0]print(l1)l2 ...

  10. CMDB服务器管理系统【s5day91】:资产采集相关问题

    资产采集唯一标识和允许临时修改主机名 class AgentClient(BaseClient): def exec(self): obj = PluginManager() server_dict ...