lnmp环境搭建

本文详细介绍了如何搭建LNMP环境,包括Nginx、MySQL和PHP的安装,以及WordPress博客站点的部署配置和数据库迁移。通过实践操作,帮助读者掌握服务器端动态页面与静态页面的处理,以及网站的完整部署流程。
摘要由CSDN通过智能技术生成

LNMP应用环境

1. LNMP介绍

大约在2010年以前,互联网公司最常用的经典web服务环境组合就是LAMP(Linux、Apache、MySQL、PHP),近几年随着nginx web服务的逐渐流行,又出现了新的web服务环境组合---LNMP或者LEMP,其中LNMP全称为Linux、nginx、mysql、PHP等首字母的缩写,二LEMP中的e也表示nginx,它是取自nginx名字发音(enginex)现在LNMP已逐渐成为国内大中型互联网公司网站的主流组合环境,因此,我们必须熟练掌握LNMP的环境的搭建,优化以及维护的方法才行。

2. LNMP组合工作流程

在深入学习LNMP组合之前,有必要先来了解LNMP环境组合的基本原理,也就是它们之间是怎么相互调度的?

动态页面,静态页面

  1. 静态:nginx可以处理(要啥给啥),浏览器解析

    • 如果用户访问的是小图片直接访问nginx就可以了或者访问到服务器nginx处理好了给用户发过去(静态要就给走个流量)
  2. 动态(服务器端解析).php .php5

    • 发布博客,nginx不能做就找PHP,PHP将博文内容写到数据库,要看就从数据库读

在这里插入图片描述

在这里插入图片描述

  • 用户的请求过来,静态的nginx自己处理,动态的通过fastcgi_pass给fastcgi处理动态的软件
  • 判断如果是以.php .php5结尾的就找php5解析
  • 解析完之后根据代码读取数据库内容或者向数据库写内容

在这里插入图片描述

  • nginx区分动静态资源
    • 抓取动态资源,动态资源一般以.php或.php5结尾的,如果是这样结尾的就交给fastcgi
    • 交给fastcgi_pass 127.0.0.1:9000;端口
  • php-fpm.conf管理php-fpm进程(最多最少配置多少)
    • php.ini 配置解析.php .php5文件的内容
    • PHP需要放到最后安装(注意,因为PHP安装要用到mysql)

1. nginx安装

  • 上文已经安装过了,看以前的博客

2. mysql 安装

  1. yum/rmp 安装
    • 特点是安全、速度快、但是没法定制安装,入门新手常用这种方法
  2. 二进制安装(绿色软件 解压即用) ##因为数据库安装时间较长
    • 解压软件简单配置后就可以使用,不用安装,速度较快,专业dba喜欢这种方式,软件名如:mysql-5.5.32-Linux2.6-x86_64.tar.gz
  3. 源码软件结合yum/rpm来安装
    • 把源码软件制作成符合要求的rpm,放到yum仓库中,然后通过yum来安装。结合了上面1和3的优点,即安装快速,可任意定制参数,但是也需要具备更深能力的人员才行,本书结尾有rpm定制包的内容介绍。
  4. 我们选择二进制包下载,解压即用
    • mysql软件下载地址信息: www.mysql.com mirrors.sohu.com
    • mysql软件下载完毕后,查看mysql解压后目录文件大小
1. 讲解安装mysql步骤
  • 步骤

    1) 下载解压mysql二进制软件包
        tar xf mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz
    2) 添加mysql程序运行时的管理用户
        useradd -s /sbin/nologin  -M mysql
    3) 将mysql解压后的程序包搬家到程序目录下,并进行重命名
        mkdir -p /application/
        mv /server/tools/mysql-5.6.34-*-x86_64 /application/mysql-5.6.34
    4) 为mysql服务程序创建软链接
        ln -s /application/mysql-5.6.34/ /application/mysql
    5) 让mysql用户管理 /application/mysql/
        chown -R mysql.mysql /application/mysql/
        ll /application/mysql/ ##查看目录用户
    6)  初始化数据库
        #1. 确认软件安装在哪里 #--basedir
        #2. 确认数据存放在哪里 #--datadir
        #3. 确认MySQL使用的用户谁? #--user
        /application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/application/mysql/data --user=mysql
    7)  两个ok数据库就安装成功
    8)  如果遇到无法在/tmp中写入,就查看/tmp的权限
    	ll -d  /tmp/
    	chmod 1777 /tmp/
    9) 复制启动脚本 授权
        cp /application/mysql/support-files/mysql.server  /etc/init.d/mysqld
        chmod +x /etc/init.d/mysqld 
    10) 修改启动脚本 和 mysql命令中的路径
        sed -i 's#/usr/local/mysql#/application/mysql#g' /application/mysql/bin/mysqld_safe /etc/init.d/mysqld
    11)  复制默认的配置文件
        \cp /application/mysql/support-files/my-default.cnf /etc/my.cnf 
        /etc/init.d/mysqld start
        至此,mysql数据库安装与启动完成;可以检测进程和服务端口,确认mysql服务是否启动正确
    
    
    To start mysqld at boot time you have to copy
    support-files/mysql.server to the right place for your system
    mysql启动脚本 默认放在support-files/mysql.server  
    
    记得给MySQL设置个密码
    PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
    To do so, start the server, then issue the following commands:
    /application/mysql/bin/mysqladmin -u root password 'new-password'
    /application/mysql/bin/mysqladmin -u root -h web01 password 'new-password'
    
    故障
    1. /tmp 权限
    2. 主机名解析 hosts解析 #ping 主机名
    3. 一步一步执行
    
2. 讲解管理mysql数据库
  • 管理

    1) 进入与退出mysql数据库方法:
        /application/mysql/bin/mysql
        =============================================
    	扩展知识:登录数据库命令简化方法
    	echo 'export PATH=/application/mysql/bin:$PATH' >>/etc/profile
        source /etc/profile
        which mysql
        ============================================= 
        退出数据库时,尽量不要用ctrl+c进行退出mysql 用ctrl+d进行退出
    
    2) 设置mysql服务开机自启动     
        ####11.加入开机自启动
        chkconfig --add mysqld 
        chkconfig mysqld on
    
    3) 设置mysql数据库登录用户名与密码
        ####12.给MySQL root用户设置密码
        /application/mysql/bin/mysqladmin -u root password 'oldboy123'
        mysql -uroot -poldboy123
        数据库基础操作(数据库框架)
    
    show databases;                <--- 查询默认的数据库信息
    create database oldboy;        <---创建新的数据库
    drop database oldboy;          <---删除存在的数据库
    use mysql;                     <--- 表示选择使用一个数据库,相当于cd进入一个数据库
    show tables;                  <---查看数据库中表信息
    select database();             <--- 表示查看当前所在数据库,类似于pwd命令的功能
    select user();                 <--- 查看当前登录数据库的用户,类似于whoami命令
                                        并且mysql还可以限制指定用户可以从哪里进行连接登录数据库
    select * from user\G;          <---查看user表中所有信息,并且纵行显示
    select user,host from user;         ---查看user表中指定信息,并且横行显示
    select user,host from mysql.user;   ---查看可以登录mysql数据库的目录,以及都可以从哪里进行管理mysql数据库(重要)
    grant all on *.* to user@'host' identified by 'oldboy123';           ---创建用户,授权所有权限
    grant all on wordpress.* to 'wordpress@172.161.1.0/255.255.255.0' identifiend by '123456';
    授权所有权限,wordpress数据库所有权限 给wordpress用户 可以在172.16.1.0/255.255.255.0 网段登录数据库 这个用户的密码123456;##可以在PHP部署完在做
    grant all on *.* to Old_Boy@'localhost' identified by 'oldboy123';   ---创建用户(大写用户)
    drop user 'user'@'host';
    flush privileges;                  --- 刷新权限
    
    初级 添加删除系列
    #创建数据库
    create database wordpress;
    #删除数据库
    drop database wordpress;
    
    数据库基础框架
    1. 数据库 test mysql
    2. 表格
    
    用户
    1. 查看都有什么数据库
    2. 查看都有什么用户
    3. 添加用户
    

在这里插入图片描述


3. php安装

1. 讲解安装PHP步骤
  • 安装

    1) 解决PHP软件的依赖关系 
        yum install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel -y
        yum install freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel -y
        rpm -qa zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel
    	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软件安装---字符集转换库(默认可以不进行安装了)
    mkdir -p /home/oldboy/tools
    cd /home/oldboy/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 ../
    
    ##php相关扩展库 ***epel(和PHP相关的加密的东西)
    #wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
    yum -y install libmcrypt-devel mhash mcrypt
    rpm -qa libmcrypt-devel mhash mcrypt
    
    
    2) 下载解压PHP软件
        cd /server/tools/
        tar xf php-5.5.32.tar.gz
        cd php-5.5.32
        ./configure \
        --prefix=/application/php-5.5.32 \
        --with-mysql=mysqlnd \
        --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
    	
    	说明:LNMP架构部署时,如果mysql服务和web服务不在一台主机上,php配置参数需要进行调整
    	--with-mysql=/application/mysql/  =>  --with-mysql=mysqlnd
    	==========================================================================
    	PHP扩展参数:(配置没有问题可以省略以下配置参数,以下参数和PHP优化有关)
    	--with-curlwrappers \
    	--enable-zip \
    	--enable-zend-multibyte \
    	=========================================================================
    	#Generating files
    	#configure: creating ./config.status
    	#creating main/internal_functions.c
    	#creating main/internal_functions_cli.c
    	#+--------------------------------------------------------------------+
    	#| License:                                                           |
    	#| This software is subject to the PHP License, available in this     |
    	#| distribution in the file LICENSE.  By continuing this installation |
    	#| process, you are bound by the terms of this license agreement.     |
    	#| If you do not agree with the terms of this license, you must abort |
    	#| the installation process at this point.                            |
    	#+--------------------------------------------------------------------+
    	#
    	#Thank you for using PHP.
    	##防错(以下信息可以不进行配置了,但是不添加一般会报错)
    	ln -s /application/mysql/lib/libmysqlclient.so.18  /usr/lib64/
    	touch ext/phar/phar.phar
    	make
    	make install
    	了解FastCGI
    
    3) PHP软件程序创建软链接
        ln -s /application/php-5.5.32/ /application/php
    
    4) 配置php解析文件/配置php-fpm配置文件
        cd /home/oldboy/tools/php-5.5.32
    	ll php.ini*
        -rw-r--r--. 1 1001 1001 69236 2016-02-02 21:33 php.ini-development
        -rw-r--r--. 1 1001 1001 69266 2016-02-02 21:33 php.ini-production
    	(php.ini-developments是开发人员调试用配置文件,php.ini-production是生产常见所有配置文件)
        cp php.ini-production /application/php/lib/php.ini
    	php.ini-production 与 php.ini-development 文件区别关系对比
    	扩展:文件比较命令 diff zdiff vimdiff windows上的文件比较
        cd /application/php/etc/
        cp php-fpm.conf.default php-fpm.conf
    	# 编译安装PHP时,若配置未正确指定PHP进程用户信息,可以修改PHP文件进行调整
    	sed -i 's#user = www#user = nginx#g;s#group = www#group = nginx#g' /application/php-5.5.32/etc/php-fpm.conf
    
    5) 启动php-fpm程序
        /application/php/sbin/php-fpm 
        lsof -i :9000                    <--- 确认php 9000端口是否正确启动
        ps -ef|grep php-fpm
    
    

4. wordpress博客站点部署配置

  • 直接下载安装包(wget -P /下载目录 url ##指定下载目录)
  1. 修改nginx配置文件,使nginx程序与php程序建立联系

    vim extra/blog.conf
    server {
            listen       80;
            server_name  blog.etiantian.org;
            location / {
                        root   html/blog;
                        index  index.html index.htm;          <-- 需要注意编辑修改默认首页文件  index  index.php index.html index.htm;
            }
            location ~* .*\.(php|php5)?$ {
                        root html/blog;
                        fastcgi_pass  127.0.0.1:9000;
                        fastcgi_index index.php;
                        include fastcgi.conf;
            }
    }		
    说明:利用nginx的location区块实现动态请求与静态请求的分别处理
    
  2. 编辑nginx与php连通性测试文件,并进行测试

    echo '<?php phpinfo(); ?>'	 >/application/nginx/html/blog/test_info.php
    测试站点
    curl  http://blog.etiantian.org/index.html            <-- 静态请求站点文件信息测试 
    curl  http://blog.etiantian.org/test_info.php         <-- 动态请求站点文件信息测试
    说明:当php服务停止时,9000端口信息消失,即停止PHP错误报502错误
    linux系统测试完毕后,建议利用浏览器进行最终测试,测试效果更明显些
    
  3. 编辑php与mysql连通性测试文件,并进行测试

    a. 创建数据库
       mysql -uroot -poldboy123;
       show databases;                      <--- 查看当前数据库信息
       create database wordpress;		       		
    b. 添加用户信息		
       grant all on wordpress.* to 'wordpress'@'localhost' indentified by 'oldboy123';
       grant all on wordpress.* to 'wordpress'@'172.16.1.%' indentified by 'oldboy123';
       flush privileges;
       drop user wordpress@'172.16.1.8';    <--- 删除用户信息
       select user,host from mysql.user;    <--- 查看用户信息
       mysql -uwordpress -p123456           <--- 测试创建的用户连接
       show databases;                      <--- 查看当前数据库信息
       # 利用mysql命令进行指定用户登录测试
       /application/mysql/bin/mysql -uwordpress -poldboy123
    c. 测试php与数据库连通性
       vim test_mysql.php
       <?php
       //$link_id=mysql_connect('主机名','用户','密码');
       //mysql -u用户 -p密码 -h 主机
       $link_id=mysql_connect('localhost','wordpress','oldboy123') or mysql_error();
       if($link_id){
                    echo "mysql successful by oldboy !\n";
                   }else{
                    echo mysql_error();
                   }
       ?>
    curl blog.etiantian.org/test_mysql.php       <-- 测试php与数据库的连通性
    
  4. 下载部署wordpress博客程序(https://cn.wordpress.org/ 英文官网:https://www.wordpress.org/ )

    wget https://cn.wordpress.org/wordpress-4.5.1-zh_CN.tar.gz
    tar xf wordpress-4.5.1-zh_CN.tar.gz 
    mv wordpress/* /application/nginx/html/blog/
    chown -R www.www /application/nginx/html/blog/
    注意:确认hosts文件进行了解析
    浏览器页面进行wordpress部署		
    vim wp-config.php  可以修改wordpress上的数据库连接参数信息
    

5. wordpress博客站点数据库迁移

  1. 重复上面创建数据库的步骤

  2. 迁移数据库:利用数据库备份命令

    1) 备份数据库数据库信息
        mysqldump -uroot -poldboy123 --all-databases >/tmp/bak.sql
        ll /tmp/bak.sql -h
        scp /tmp/bak.sql 172.16.1.51:/tmp/
    
    2) 恢复数据库数据库信息		
        ##db01 
        mysql -uroot -poldboy123 </tmp/bak.sql
        ###db01添加新的用户
        grant all on wordpress.* to wordpress@'172.16.1.0/255.255.255.0' identified by 'oldboy123';
        flush privileges;
        mysql -uwordpress -poldboy123 -h 172.16.1.51
    
    3) 数据库迁移完毕,修改网站连接数据库的配置文件
        mysql -uwordpress -poldboy123 -h 172.16.1.51       <-- 修改配置文件之前,先测试网站web服务器与迁移后的数据库连通性
    	vim wp-config.php                                  <-- 修改wordpress上的数据库连接参数信息
    	/** MySQL主机 */
    	define('DB_HOST','172.16.1.51')                    <-- 修改连接的主机信息,将localhost修改为172.16.1.51
    	说明:web服务器数据库此时可以关闭了
    
    4)停止nginx服务器上MySQL服务
    

6. 进行数据迁移到NFS共享服务器

  1. 先将原有目录中数据移出

    cd /application/nginx/html/blog/wp-content/uploads
    mkdir /tmp/wordpress_backup -p
    mv ./* /tmp/wordpress_backup/
    
  2. NFS服务器上配置创建共享目录

    vim /etc/exports
    /data 172.16.1.0/24(rw,sync,all_squash)
    showmount -e 172.16.1.31
    mount -t nfs 172.16.1.31:/data /mnt/
    
    showmount -e 172.16.1.31
    mount -t nfs 172.16.1.31:/data/ ./uploads/
    mv /tmp/wordpress_backup/* ./
    

7. 博客网站进行部署:

  • 部署

    01:现在博客网站代码信息
        https://cn.wordpress.org/
    02:部署安装wordpress代码信息
    03:初始化wordpress程序
    04:创建wordpress博客
    

8. 搭建网站流程:

  • 流程

    blog bbs www 
    ## 第一个里程碑:要有网站代码(向开发人员要)
    tar xf wordpress-4.7.3-zh_CN.tar.gz
    
    ## 第二个里程碑:进入到代码程序目录中,将代码信息移动到站点目录下
    mv ./* /application/nginx/html/blog/
    
    ## 第三个里程碑:修改站点目录权限
    chown -R www.www /application/nginx/html/blog/
    
    ## 第四个里程碑:进行网站初始化
    create database wordpress;
    grant all on wordpress.* to 'wordpress'@'172.16.1.%' identified by 'oldboy123';
    grant all on wordpress.* to 'wordpress'@'localhost' identified by 'oldboy123';
    flush privileges;
    

9. 练习

  • 练习

    1、数据库迁移到db01上面,web01数据库关闭。
    2、实现WordPress博客程序URL静态化
    3、把wordpress用户上传目录挂载到nfs上面
       find html/blog  -mmin -5 
    
  • 预习

    01: wordpress网站搭建过程
    02:数据库迁移过程
    03:web服务器和nfs服务建立连接过程
    04: nginx反向代理+keepalived
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值