部署LNMP利用LNMP搭建一个Wordpress网站;

Nginx 详细配置请见  https://blog.csdn.net/sinat_41075146/article/details/82258265

LNMP FastCGI知识说明(绘图说明)
 工作原理讲解说明:
  ①. 用户请求的静态文件,由nginx服务自行处理,根据静态的location配置进行处理 用户请求的动态文件,由php服务进行处理,根据动态的         location配置进行处理
  ②. nginx服务接收到动态请求,会将请求抛送给fastcgi,类似于nginx服务接收动态请求的秘书,秘书会将动态请求送给PHP程序
  ③. PHP如果可以处理,会将处理结果直接通过fastcgi返回给nginx程序;如果不可以处理,还会请求后端数据库,最终再把处理结果返回给nginx

 LNMP架构以及部署:
1.1 、架构软件安装部署
L: Linux
01. 系统安装好
02. 基础优化(关闭防火墙 关闭selinux  /tmp/权限1777)

N:nginx
软件安装部署

M:mysql
安装部署

P:PHP(处理动态请求)
安装部署

二  、nginx软件与PHP软件建立连接关系
     在nginx配置文件添加配置信息

三  、php软件与mysql软件建立连接关系(nginx软件和mysql软件建立连接关系)
        有php程序代码来完成数据库连接建立

注意: 安装顺序 ,  PHP 一定是要最后安装的 ,因为 PHP 依赖 MySQL  

开始配置 LNMP 环境   ;

一  、LNMP MySQL数据库安装(二进制包的安装)
    mysql软件下载地址信息: www.mysql.com   mirrors.sohu.com
 1) 下载并解压mysql二进制软件包
      [[email protected] tools]# tar xf mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz               
      [[email protected] tools]# du -sh mysql-5.6.34-linux-glibc2.5-x86_64                     ---->>  查看软件包大小 
      1.1G    mysql-5.6.34-linux-glibc2.5-x86_64

2) 添加mysql程序运行时的管理用户
       [[email protected] tools]# useradd -s /sbin/nologin -M mysql

3) 将mysql解压后的程序包搬家到程序目录下,并进行重命名
       [[email protected] tools]# mkdir -p /application/
       [[email protected] tools]# mv /server/tools/mysql-5.6.34-*-x86_64 /application/mysql-5.6.34                  ---->>  搬家到我们规划的目录下

4) 为mysql服务程序创建软链接
     [[email protected] tools]# ln -s /application/mysql-5.6.34/ /application/mysql                               ---->>  创建一个软连接,方便后续使用 

5) 让mysql用户管理 /application/mysql/
     [[email protected] tools]# chown -R mysql.mysql /application/mysql/                         ---->>   授权 

[[email protected] tools]# ll /application/mysql/
总用量 68
drwxr-xr-x  2 mysql mysql  4096 8月  25 19:55 bin
-rw-r--r--  1 mysql mysql 17987 9月  30 2016 COPYING
drwxr-xr-x  3 mysql mysql  4096 8月  25 19:56 data
drwxr-xr-x  2 mysql mysql  4096 8月  25 19:56 docs
drwxr-xr-x  3 mysql mysql  4096 8月  25 19:56 include
drwxr-xr-x  3 mysql mysql  4096 8月  25 19:55 lib
drwxr-xr-x  4 mysql mysql  4096 8月  25 19:55 man
drwxr-xr-x 10 mysql mysql  4096 8月  25 19:56 mysql-test
-rw-r--r--  1 mysql mysql  2496 9月  30 2016 README
drwxr-xr-x  2 mysql mysql  4096 8月  25 19:56 scripts
drwxr-xr-x 28 mysql mysql  4096 8月  25 19:55 share
drwxr-xr-x  4 mysql mysql  4096 8月  25 19:56 sql-bench
drwxr-xr-x  2 mysql mysql  4096 8月  25 19:56 support-files
[[email protected] tools]# 
                  

 6)  初始化数据库
        #1. 确认软件安装在哪里
        #2. 确认数据存放在哪里
        #3. 确认MySQL使用的用户谁?

[[email protected] tools]# /application/mysql/scripts/mysql_install_db --basedir=/application/mysql --datadir=/application/mysql/data --user=mysql

问题1 ;

[[email protected] ~]# vim /etc/my.cnf       ---->> 编辑此配置文件,把 skip-locking   先注释掉即可正常初始化了 ;

2018-08-25 21:18:04 2043 [Note] InnoDB: 5.6.34 started; log sequence number 1600737
2018-08-25 21:18:05 2043 [Note] Binlog end
2018-08-25 21:18:05 2043 [Note] InnoDB: FTS optimize thread exiting.
2018-08-25 21:18:05 2043 [Note] InnoDB: Starting shutdown...
2018-08-25 21:18:07 2043 [Note] InnoDB: Shutdown completed; log sequence number 1626133
OK

Filling help tables...2018-08-25 21:18:07 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2018-08-25 21:18:07 0 [Note] Ignoring --secure-file-priv value as server is running with --bootstrap.
2018-08-25 21:18:07 0 [Note] /application/mysql/bin/mysqld (mysqld 5.6.34-log) starting as process 2074 ...
2018-08-25 21:18:07 2074 [Note] InnoDB: Using atomics to ref count buffer pool pages
2018-08-25 21:18:07 2074 [Note] InnoDB: The InnoDB memory heap is disabled
2018-08-25 21:18:07 2074 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2018-08-25 21:18:07 2074 [Note] InnoDB: Memory barrier is not used
2018-08-25 21:18:07 2074 [Note] InnoDB: Compressed tables use zlib 1.2.3
2018-08-25 21:18:07 2074 [Note] InnoDB: Using Linux native AIO
2018-08-25 21:18:07 2074 [Note] InnoDB: Using CPU crc32 instructions
2018-08-25 21:18:07 2074 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2018-08-25 21:18:07 2074 [Note] InnoDB: Completed initialization of buffer pool
2018-08-25 21:18:07 2074 [Note] InnoDB: Highest supported file format is Barracuda.
2018-08-25 21:18:07 2074 [Note] InnoDB: 128 rollback segment(s) are active.
2018-08-25 21:18:07 2074 [Note] InnoDB: Waiting for purge to start
2018-08-25 21:18:07 2074 [Note] InnoDB: 5.6.34 started; log sequence number 1626133
2018-08-25 21:18:08 2074 [Note] Binlog end
2018-08-25 21:18:08 2074 [Note] InnoDB: FTS optimize thread exiting.
2018-08-25 21:18:08 2074 [Note] InnoDB: Starting shutdown...
2018-08-25 21:18:09 2074 [Note] InnoDB: Shutdown completed; log sequence number 1626143
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL

两个 OK  表示数据库已经初始化完成了 

7) 复制启动脚本 授权
   [[email protected] ~]# cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld 
   [[email protected] ~]# chmod +x /etc/init.d/mysqld 

8) 修改启动脚本 和 mysql命令中的路径
      [[email protected] ~]# sed -i 's#/usr/local/mysql#/application/mysql#g' /application/mysql/bin/mysqld_safe /etc/init.d/mysqld
9)  复制默认的配置文件
     [[email protected] ~]#   \cp /application/mysql/support-files/my-default.cnf /etc/my.cnf 
     [[email protected] ~]# /etc/init.d/mysqld start
      Starting MySQL.                                            [确定]
       至此,mysql数据库安装与启动完成;可以检测进程和服务端口,确认mysql服务是否启动正确

[[email protected] ~]# ps -ef |grep mysql
root       1744      1  0 21:13 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
mysql      1873   1744  0 21:13 ?        00:00:02 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/lib/mysql/m01.err --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock --port=3306
root       2207      1  0 21:29 pts/0    00:00:00 /bin/sh /application/mysql/bin/mysqld_safe --datadir=/application/mysql/data --pid-file=/application/mysql/data/m01.pid
mysql      2485   2207  0 21:29 pts/0    00:00:00 /application/mysql/bin/mysqld --basedir=/application/mysql --datadir=/application/mysql/data --plugin-dir=/application/mysql/lib/plugin --user=mysql --log-error=/application/mysql/data/m01.err --pid-file=/application/mysql/data/m01.pid --socket=/var/lib/mysql/mysql.sock --port=3306
root       2548   2022  0 21:33 pts/0    00:00:00 grep mysql
[[email protected] ~]# 
 

二  、 管理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服务开机自启动     
       2.1 、加入开机自启动
        chkconfig --add mysqld 
        chkconfig mysqld on

3) 设置mysql数据库登录用户名与密码
    3.1 、给MySQL root用户设置密码
        /application/mysql/bin/mysqladmin -u root password '123'             --->>  设置密码
        [[email protected] ~]# mysql -uroot -p123                 --->> 重新登陆一下
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 5.6.34-log MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 
        
    

数据库中的基础操作  ; 

   #################################################################################################
        show databases;                         --->>  查询默认的数据库信息
        create database oldboy;             --->>  创建新的数据库
        drop database oldboy;                 --->> 删除存在的数据库
        use mysql;                                   --->> 表示选择使用一个数据库,相当于cd进入一个数据库
        show tables;                              --->> 查看数据库中表信息
        select database();                       --->>  表示查看当前所在数据库,类似于pwd命令的功能
        select user();       查看当前登录数据库的用户,类似于whoami命令并且mysql还可以限制指定用户可以从哪里进行连接登录数据库
        select user,host from user;          --->> 查看user表中指定信息,并且横行显示
        select user,host from mysql.user;      --->>  查看可以登录mysql数据库的目录,以及都可以从哪里进行管理mysql数据库
        grant all on *.* to [email protected]'host' identified by 'oldboy123';           --->>   创建用户 
        grant all on *.* to [email protected]'localhost' identified by 'oldboy123';   --->>  创建用户(大写用户)
        drop user 'user'@'host';
        flush privileges;                     --->>    刷新权限

   添加删除系列
        #创建数据库
        create database wordpress;
        #删除数据库
        drop database wordpress;
        #####################################################################################################

三  、 LNMP PHP软件安装
 安装PHP步骤
    1) 解决PHP软件的依赖关系 
 [[email protected] ~]# yum install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel -y
 [[email protected] ~]#  yum install freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel -y
 [[email protected] ~]# rpm -qa zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel

 libiconv软件安装               ---->> 字符集转换库(默认可以不进行安装了)
[[email protected] tools]#  cd /home/oldboy/tools
[[email protected] tools]#   tar zxf libiconv-1.14.tar.gz
[[email protected] tools]# cd libiconv-1.14
[[email protected] libiconv-1.14]# ./configure --prefix=/usr/local/libiconv

[[email protected] libiconv-1.14]# make

[[email protected] libiconv-1.14]#  make install

#wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo     --->> 没有repo 直接执行一下,有的忽略 
[[email protected] tools]# yum -y install libmcrypt-devel mhash mcrypt
[[email protected] tools]# rpm -qa libmcrypt-devel mhash mcrypt
mhash-0.9.9.9-3.el6.x86_64
mcrypt-2.6.8-10.el6.x86_64
libmcrypt-devel-2.5.8-9.el6.x86_64
[[email protected] tools]# 

 2) 解压编译安装PHP软件
      [[email protected] tools]# tar xf php-5.5.32.tar.gz
      [[email protected] tools]# cd php-5.5.32
       ./configure \
        --prefix=/application/php-5.5.32 \
        --with-mysql=/application/mysql/ \
        --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
     

        出现这个图  表示 PHP 配置成功  

       =================================================
        PHP扩展参数:(配置没有问题可以省略以下配置参数,以下参数和PHP优化有关)
        --with-curlwrappers \
        --enable-zip \
        --enable-zend-multibyte \
        =================================================
        


   [[email protected] php-5.5.32]# ln -s /application/mysql/lib/libmysqlclient.so.18 /usr/lib64/
   [email protected] php-5.5.32]# touch ext/phar/phar.phar
   [[email protected] php-5.5.32]# make && make install
     

3) PHP软件程序创建软链接
     [[email protected] php-5.5.32]# ln -s /application/php-5.5.32/ /application/php

4) 配置php解析文件/配置php-fpm配置文件
     [[email protected] php-5.5.32]# cd /home/oldboy/tools/php-5.5.32
    [[email protected] php-5.5.32]# cp php.ini-production /application/php/lib/php.ini

        (php.ini-developments是开发人员调试用配置文件,    php.ini-production是生产常见所有配置文件)

        # 编译安装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程序
[[email protected] etc]# /application/php/sbin/php-fpm
[[email protected] etc]# lsof -i :9000
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
php-fpm 125679 root    7u  IPv4 117793      0t0  TCP m01:cslistener (LISTEN)
php-fpm 125680  www    0u  IPv4 117793      0t0  TCP m01:cslistener (LISTEN)
php-fpm 125681  www    0u  IPv4 117793      0t0  TCP m01:cslistener (LISTEN)
[[email protected] etc]# ps -ef|grep php-fpm
root     125679      1  0 23:53 ?        00:00:00 php-fpm: master process (/application/php-5.5.32/etc/php-fpm.conf)
www      125680 125679  0 23:53 ?        00:00:00 php-fpm: pool www            
www      125681 125679  0 23:53 ?        00:00:00 php-fpm: pool www            
root     125684   2022  0 23:53 pts/0    00:00:00 grep php-fpm
 

四  、wordpress博客站点部署配置
    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)?$ {              ----->>  说明:利用nginx的location区块实现动态请求与静态请求的分别处理 
                            root html/blog;
                            fastcgi_pass  127.0.0.1:9000;
                            fastcgi_index index.php;
                            include fastcgi.conf;
                }
        }        
      


 

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系统测试完毕后,建议利用浏览器进行最终测试,测试效果更明显些

      http://blog.etiantian.org/test_info.php              ---->> 可以访问到以下页面说明建立连接成功  ;

    3) 编辑php与mysql连通性测试文件,并进行测试
        3.1 . 创建数据库
           mysql -uroot -p123;
           show databases;                      <--- 查看当前数据库信息
           create database wordpress;                       
        3.2 . 添加用户信息        
           grant all on wordpress.* to 'wordpress'@'localhost' indentified by 'oldboy123';               --->> 可以再本地登陆
          mysql> grant all on wordpress.* to [email protected]'172.16.1.0/255.255.255.0' identified by '123456';   --->> 可以再网段登陆
           flush privileges;                                                                                                   ----->>> 刷新
           drop user [email protected]'172.16.1.8';           ---->>  删除用户信息
           select user,host from mysql.user;               ---->>  查看用户信息

          
           mysql -uwordpress -p123456                    ---->> 测试创建的用户连接
           show databases;                                     ---->>  查看当前数据库信息


           # 利用mysql命令进行指定用户登录测试
           /application/mysql/bin/mysql -uwordpress -p123
        

   3.3 . 测试php与数据库连通性
          [[email protected] blog]# pwd
          /application/nginx/html/blog
          [[email protected] blog]# ls
          index.html  test_info.php  test_mysql.php
          [[email protected] blog]#  vim test_mysql.php
           <?php
           //$link_id=mysql_connect('主机名','用户','密码');
           //mysql -u用户 -p密码 -h 主机
           $link_id=mysql_connect('localhost','wordpress','123') or mysql_error();
           if($link_id){
                        echo "mysql successful by oldboy !\n";
                       }else{
                        echo mysql_error();
                       }
           ?>
       

            curl blog.etiantian.org/test_mysql.php              ---->> 测试php与数据库的连通性  

           http://blog.etiantian.org/test_mysql.php            ---->>  浏览器中测试 

 4) 下载部署 wordpress 博客程序(https://cn.wordpress.org/   英文官网:https://www.wordpress.org/ )    
        [[email protected] tools]#  wget -P /home https://cn.wordpress.org/wordpress-4.5.1-zh_CN.tar.gz    --->> -P  表示指定下载路径
        [[email protected] tools]# tar xf wordpress-4.5.1-zh_CN.tar.gz                           ---->>  解压 
        [[email protected] tools]# mv wordpress/* /application/nginx/html/blog/
        [[email protected] tools]# chown -R www.www /application/nginx/html/blog/       

         # 修改配置文件在配置文件中加上 index.php 要不不能直接访问页面需要手动切换 ;     

      
      [[email protected] extra]# nginx -t
      nginx: the configuration file /application/nginx-1.10.3/conf/nginx.conf syntax is ok
      nginx: configuration file /application/nginx-1.10.3/conf/nginx.conf test is successful
     [[email protected] extra]# nginx -s reload

   5) 浏览器页面访问 http://blog.etiantian.org/       # vim wp-config.php  可以修改wordpress上的数据库连接参数信息

       
     第二步 ;

                                           
           
       

五  、 wordpress 博客站点数据库迁移     ;
    # 重复上面创建数据库的步骤

    迁移数据库:利用数据库备份命令
    1) 备份数据库数据库信息
        mysqldump -uroot -p123 --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 [email protected]'172.16.1.0/255.255.255.0' identified by '123';
        flush privileges;
        mysql -uwordpress -poldboy123 -h 172.16.1.51

    3) 数据库迁移完毕,修改网站连接数据库的配置文件
        mysql -uwordpress -p123 -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服务
        
05. 进行数据迁移到NFS共享服务器
    01:先将原有目录中数据移出
        cd /application/nginx/html/blog/wp-content/uploads
        mkdir /tmp/wordpress_backup -p
        mv ./* /tmp/wordpress_backup/
    
    02: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/* ./
 

猜你喜欢

转载自blog.csdn.net/sinat_41075146/article/details/82380251

相关文章