精华内容
下载资源
问答
  • lnmp分离部署
    千次阅读
    2022-01-20 17:10:04

    使用Ansible进行分离部署lnmp:nginxphpmysql都通过源码安装

    系统IP主机名角色
    CentOS 7.4192.168.2.10AnsibleAnsible
    192.168.2.8nginxnginx
    192.168.2.11phpphp
    192.168.2.12mysqldbmysqldb

    1、准备工作

    1.1、 生成公私钥

    
    [root@Ansible roles]# ssh-keygen            
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): 
    /root/.ssh/id_rsa already exists.
    Overwrite (y/n)? y
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:qfRxoDOzgmuHxg9WHPGAMcSCrzgJM6uQJaB5kiTlIeI root@Ansible
    The key's randomart image is:
    +---[RSA 2048]----+
    |++*oo            |
    |B+oo +           |
    |=E. . . .        |
    |X +. . . o       |
    |o%  o * S .      |
    |O  o . B o       |
    |oo+.. o .        |
    |..=o..           |
    | o.o.            |
    +----[SHA256]-----+
    
    [root@Ansible ~]# for i in {8,11,12}; do ssh-copy-id -i 192.168.2.$i ; done                      
    .............
    .......

    1.2、 创建管理目录

    
    [root@Ansible ~]# cd /etc/ansible/roles/                     
    [root@Ansible roles]# mkdir -p lnmp/roles/{mysql,nginx,php}/{files,handlers,meta,tasks,templates,vars}                                         
    
    [root@Ansible roles]# vim /etc/ansible/hosts             
    .................
    [mysql]
    192.168.2.12
    
    [php]
    192.168.2.11
    
    [nginx]
    192.168.2.8
    保存
    ——————————————————————————————————————————————————————
    
    [root@Ansible roles]# ansible all -m ping                    
    192.168.2.11 | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    192.168.2.8 | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    192.168.2.12 | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    
    ——————————————————————————————————————————————————————————
    [root@Ansible roles]# vim lnmp/lnmp.yml             #创建lnmp入口文件,用来调用roles      
    ---
     - hosts: mysql
       remote_user: root
       gather_facts: True
       roles:
         - mysql
     - hosts: nginx
       remote_user: root
       gather_facts: True
       roles:
         - nginx
     - hosts: php
       remote_user: root
       gather_facts: True
       roles:
         - php
    
    保存

     1.3、文件树(把相关文件上传到相应位置否则会报错)

    
    [root@Ansible roles]# yum -y install tree                  
    
    [root@Ansible roles]# tree .
    .
    └── lnmp
        ├── lnmp.retry
        ├── lnmp.yml
        ├── nginx.yml
        ├── php.yml
        └── roles
            ├── mysql
            │   ├── files
            │   │   ├── cmake-2.8.6.tar.gz
            │   │   └── mysql-5.6.36.tar.gz
            │   ├── handlers
            │   ├── meta
            │   ├── tasks
            │   │   ├── copy.yml
            │   │   ├── install.yml
            │   │   └── main.yml
            │   ├── templates
            │   │   ├── change_passwd.sh
            │   │   ├── my.cnf
            │   │   └── mysqld.service
            │   └── vars
            │       └── main.yml
            ├── nginx
            │   ├── files
            │   │   └── nginx-1.18.0.tar.gz
            │   ├── handlers
            │   ├── meta
            │   ├── tasks
            │   │   ├── copy.yml
            │   │   ├── install.yml
            │   │   └── main.yml
            │   ├── templates
            │   │   ├── nginx
            │   │   └── nginx.conf
            │   └── vars
            │       └── main.yml
            └── php
                ├── files
                │   ├── php-5.5.38.tar.gz
                │   └── php-fpm.conf
                ├── handlers
                ├── meta
                ├── tasks
                │   ├── copy.yml
                │   ├── install.yml
                │   ├── main.yml
                │   └── prepare.yml
                ├── templates
                │   ├── testa.php
                │   └── testm.php
                └── vars
                    └── main.yml
    
    23 directories, 29 files
    

    注意:上面的文件树是这个实验完成后查询的

    2、mysql角色

    
    [root@Ansible roles]# vim lnmp/roles/mysql/vars/main.yml                       
    MYSQL_VER: 5.6.36
    MYSQL_USER: mysql
    MYSQL_PORT: 3306
    MYSQL_PASSWD: 123.com
    SOURCE_DIR: /usr/src
    BASE_DIR: /usr/local/mysql
    DATA_DIR: /usr/local/mysql/data
    
    保存
    ——————————————————————————————————————————————————————————————————————
    
    [root@Ansible roles]# vim lnmp/roles/mysql/templates/my.cnf                       
    [mysqld]
    basedir = {{ BASE_DIR }}
    datadir = {{ DATA_DIR }}
    port = {{ MYSQL_PORT }}
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    character_set_server=utf8
    init_connect='SET NAMES utf8'
    log-error={{ BASE_DIR }}/logs/mysqld.log
    pid-file={{ BASE_DIR }}/data/{{ ansible_fqdn }}.pid
    skip-name-resolve
    explicit_defaults_for_timestamp=true
    
    保存
    ——————————————————————————————————————————————————————————————————————
    
    [root@Ansible roles]# vim lnmp/roles/mysql/templates/mysqld.service                 
    [Unit]
    Description=mysql server
    After=network.target
    
    [Service]
    User={{ MYSQL_USER }}
    Group={{ MYSQL_USER }}
    
    Type=forking
    ExecStart={{ BASE_DIR }}/bin/mysqld.sh start
    ExecStop={{ BASE_DIR }}/bin/mysqld.sh stop
    PIDFile={{ DATA_DIR }}/{{ ansible_fqdn }}.pid
    
    [Install]
    WantedBy=multi-user.target
    PrivateTmp=false
    
    保存
    ————————————————————————————————————————————————————————————————————————————
    
    [root@Ansible roles]# vim lnmp/roles/mysql/templates/change_passwd.sh           #该脚本用于更改数据库root密码      
    #!/bin/bash
    passwd={{ MYSQL_PASSWD }}
    {{ BASE_DIR }}/bin/mysql -uroot -D mysql -e "UPDATE user SET authentication_string=PASSWORD("$passwd") WHERE user='root';"
    
    {{ BASE_DIR }}/bin/mysql -uroot -e "FLUSH PRIVILEGES;"
    
    {{ BASE_DIR }}/bin/mysql -uroot -p$passwd -e "grant all privileges on *.* to root@'%'  identified by '$passwd';"
    
    保存
    ————————————————————————————————————————————————————————————————————————————
    
    [root@Ansible roles]# vim lnmp/roles/mysql/tasks/copy.yml                    
    - name: "创建mysql用户组"
      group: name={{ MYSQL_USER }}  state=present
    
    - name: "创建mysql用户"
      user: name={{ MYSQL_USER }}  group={{ MYSQL_USER }}  state=present create_home=False shell=/sbin/nologin
    
    - name: "解压cmake源码包"
      unarchive: src=cmake-2.8.6.tar.gz dest={{ SOURCE_DIR }}
    
    - name: "解压mysql源码包"
      unarchive: src=mysql-5.6.36.tar.gz dest={{ SOURCE_DIR }}
    
    - name: "安装cmake"
      shell: "cd /usr/src/cmake-2.8.6 && ./configure && gmake && gmake install"
    
    - name: "安装mysql"
      shell: "cd /usr/src/mysql-5.6.36/ && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all && make && make install && chown -R {{ MYSQL_USER }}:{{ MYSQL_USER }} {{ BASE_DIR }} && rm -rf /etc/my.cnf && cp /usr/src/mysql-5.6.36/support-files/mysql.server /usr/local/mysql/bin/mysqld.sh && chmod +x /usr/local/mysql/bin/mysqld.sh"
    
    - name: "拷贝mysql的配置文件"
      template: src=my.cnf dest=/etc/my.cnf owner=root group=root
    
    - name: "拷贝mysql服务文件"
      template: src=mysqld.service dest=/usr/lib/systemd/system/mysqld.service owner=root group=root
    
    - name: "创建mysql日志存放路径"
      file: dest={{ BASE_DIR }}/logs state=directory owner={{ MYSQL_USER }} group={{ MYSQL_USER }}
    
    保存
    ——————————————————————————————————————————————————————————————————————————————
    
    [root@Ansible roles]# vim lnmp/roles/mysql/tasks/install.yml                   
    - name: "mysql初始化"
      shell: "{{ BASE_DIR }}/scripts/mysql_install_db --user={{ MYSQL_USER }} --basedir={{ BASE_DIR }}  --datadir={{ DATA_DIR }}"
    
    - name: "配置环境变量"
      shell: "ln -snf /usr/local/mysql/bin/* /usr/local/bin/"
    
    - name: "启动mysql并开机启动"
      shell: "systemctl daemon-reload && systemctl enable mysqld && systemctl start mysqld"
    
    - name: "拷贝更改密码脚本"
      template: src=change_passwd.sh dest={{ SOURCE_DIR }}/change_passwd.sh owner=root group=root
    
    保存
    ————————————————————————————————————————————————————————————————————————————————
    
    [root@Ansible roles]# vim lnmp/roles/mysql/tasks/main.yml                                     
    - include: /etc/ansible/roles/lnmp/roles/php/tasks/prepare.yml 
    - include: copy.yml
    - include: install.yml           
    保存

    3、php角色

    
    
    [root@Ansible roles]# vim lnmp/roles/php/templates/testa.php    #php测试页面"
    
    <?php
      phpinfo();
    ?>
    
    保存
    
    ——————————————————————————————————————————————————————
    
    [root@Ansible roles]# vim lnmp/roles/php/templates/testm.php    #mysql测试页面
    
    <?php
    $link=mysql_connect('192.168.2.11','root','123.com');
    if($link) echo "恭喜你,数据库连接成功啦//哈哈哈哈哈!!";
    mysqli_close($link);
    ?>
    
    保存
    
    
    [root@Ansible roles]# vim lnmp/php.yml         
    - hosts: php
      remote_user: root
      gather_facts: True
      roles: 
        - php
    
    保存
    
    ——————————————————————————————————————————————————————————————————————————————
                          修改配置
    [root@Ansible roles]# vim lnmp/roles/php/files/php-fpm.conf           
    ........
    ...
    149 user = php
    150 group = php
    ....
    164 listen = 192.168.2.11:9000
    .....
    230 pm.max_children = 60
    ...
    235 pm.start_servers = 6
    ...
    240 pm.min_spare_servers = 3
    ..
    245 pm.max_spare_servers = 6
    ....
    .....
    
    保存
    
    ——————————————————————————————————————————————————————————————————————————————
    
    [root@Ansible roles]# vim lnmp/roles/php/tasks/prepare.yml                
    - name: "安装依赖软件"
      yum: 
        name:
          - ncurses-devel
          - cmake
          - gd
          - libxml2-devel
          - libjpeg-devel
          - pcre-devel
          - zlib-devel
          - libxml2
          - openssl
          - openssl-devel
          - bzip2
          - bzip2-devel
          - libpng
          - libpng-devel
          - gcc
          - gcc-c++
          - readline
          - readline-devel
          - freetype
          - freetype-devel         
    
    保存
    
    ——————————————————————————————————————————————————————————————————————————————
    
    [root@Ansible roles]# vim lnmp/roles/php/vars/main.yml                           
    PHP_VER: 5.5.38
    PHP_USER: php
    PHP_PORT: 9000
    SOURCE_DIR: /usr/src
    PHP_DIR: /usr/local/php5
    MYSQL_DIR: /usr/local/mysql                  
    
    保存
    
    ——————————————————————————————————————————————————————————————————————————————
    
    [root@Ansible roles]# vim lnmp/roles/php/tasks/copy.yml                       
    - name: "创建php用户组"
      group: name={{ PHP_USER }}  state=present
    
    - name: "创建php用户"
      user: name={{ PHP_USER }}  group={{ PHP_USER }}  state=present create_home=False shell=/sbin/nologin
    
    - name: "解压php包"
      unarchive: src=php-{{ PHP_VER }}.tar.gz dest={{ SOURCE_DIR }}
    
    - name: "创建nginx存放html路径"
      file: path=/usr/local/nginx/html state=directory
    
    - name: "上传php测试页面"
      template: src=testa.php dest=/usr/local/nginx/html
    
    - name: "上传mysql测试页面"
      template: src=testm.php dest=/usr/local/nginx/html
    
    保存
    
    ——————————————————————————————————————————————————————————————————————————————
    
    [root@Ansible roles]# vim lnmp/roles/php/tasks/install.yml
    - name: "编译php"  
      shell: "cd /usr/src/php-5.5.38/ && ./configure --prefix=/usr/local/php5  --enable-fpm --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-zlib --with-config-file-path=/usr/local/php5 --with-jpeg-dir --enable-mbstring --with-gd --with-openssl  --enable-sockets --enable-sysvshm  --with-freetype-dir  --with-png-dir  --with-libxml-dir=/usr --enable-xml --with-mhash --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts && make && make install && cp php.ini-development /usr/local/php5/php.ini && ln -sb /usr/local/php5/bin/* /usr/local/bin/ && ln -sb /usr/local/php5/sbin/* /usr/local/sbin/"
    
    - name: "修改php-fpm配置"
      copy: src=php-fpm.conf dest=/usr/local/php5/etc/php-fpm.conf
    
    - name: "启动php"
      shell: "/usr/local/sbin/php-fpm"             
    
    保存
    ——————————————————————————————————————————————————————————————————————————————
    [root@Ansible roles]# vim lnmp/roles/php/tasks/main.yml                   
    - include: prepare.yml
    - include: copy.yml
    - include: install.yml             
    
    保存

    4、nginx角色

    
    [root@Ansible roles]# vim lnmp/roles/nginx/templates/nginx.conf        nginx配置文件
    
    worker_processes  1;
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        server {
            listen       80;
            server_name  localhost;
            location / {
                root   html;
                index  index.html index.htm;
            }
    		location ~\.php$ {
    		  root html;
    	 fastcgi_pass 192.168.2.11:9000;
    	fastcgi_index index.php;	
    	include fastcgi.conf;
    	}
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    }
    
    保存
    
    [root@Ansible roles]# vim lnmp/nginx.yml         
    ---
     - hosts: nginx
       remote_user: root
       gather_faots: True
       roles:
         - nginx           
    
    保存
    
    ——————————————————————————————————————————————————————————————————————————
    
    [root@Ansible roles]# vim lnmp/roles/nginx/vars/main.yml            
    NGINX_VER: 1.18.0
    NGINX_USER: nginx
    NGINX_PORT: 80
    SOURCE_DIR: /usr/src
    NGINX_DIR: /usr/local/nginx         
    
    保存
    
    ——————————————————————————————————————————————————————————————————————————
    
    [root@Ansible roles]# vim lnmp/roles/nginx/tasks/copy.yml                    
    - name: "创建nginx用户组"
      group: name={{ NGINX_USER }}  state=present
    
    - name: "创建nginx用户"
      user: name={{ NGINX_USER }} group={{ NGINX_USER }} state=present create_home=False shell=/sbin/nologin
    
    - name: "解压nginx包"
      unarchive: src=nginx-{{ NGINX_VER }}.tar.gz dest={{ SOURCE_DIR }}            
    
    保存
    
    ——————————————————————————————————————————————————————————————————————————
    
    [root@Ansible roles]# vim lnmp/roles/nginx/tasks/install.yml                      
    - name: "编译nginx" 
      shell: "cd /usr/src/nginx-1.18.0/ && ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_dav_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-http_ssl_module --with-http_gzip_static_module && make && make install && ln -sb /usr/local/nginx/sbin/nginx /usr/local/sbin/"
    
    - name: "上传nginx启动脚本"
      template: src=nginx dest=/etc/init.d/nginx mode=777
    
    - name: "上传nginx配置文件"
      template: src=nginx.conf dest=/usr/local/nginx/conf/nginx.conf
    
    - name: "启动nginx"
      shell: /usr/local/nginx/sbin/nginx                   
    
    保存
    
    ——————————————————————————————————————————————————————————————————————————
    
    [root@Ansible roles]# vim lnmp/roles/nginx/tasks/main.yml                        
    - include: /etc/ansible/roles/lnmp/roles/php/tasks/prepare.yml
    - include: copy.yml
    - include: install.yml         
    
    保存
    
    ——————————————————————————————————————————————————————————————————————————
    
    [root@Ansible roles]# vim lnmp/roles/nginx/templates/nginx           #启动脚本
    #!/bin/bash
    # chkconfig: - 99 20
    # description: Nginx Server Control Script
    NP="{{ NGINX_DIR }}/sbin/nginx"
    NPF="{{ NGINX_DIR }}/logs/nginx.pid"
    case "$1" in 
      start)
        $NP;
        if [ $? -eq 0 ] 
        then
          echo "nginx is starting!! "
        fi
      ;;
      stop)
        kill -s QUIT $(cat $NPF)
        if [ $? -eq 0 ]
        then
        echo "nginx is stopping!! "
        fi
      ;;
      restart)
        $0 stop
        $0 start
      ;;
      reload)
        kill -s HUP $(cat $NPF)
        if [ $? -eq 0 ]
        then
          echo "nginx config file is reload! "
        fi
      ;;
      *)
        echo "Usage: $0 {start|stop|restart|reload}"
        exit 1
    esac
    exit 0              
    
    保存

    5、验证

    [root@Ansible roles]# ansible-playbook -C lnmp/lnmp.yml
    
    PLAY [mysql] **********************************************************************************************************************************
    
    TASK [Gathering Facts] ************************************************************************************************************************
    ok: [192.168.2.12]
    
    TASK [mysql : 创建mysql用户组] *********************************************************************************************************************
    changed: [192.168.2.12]
    
    TASK [mysql : 创建mysql用户] **********************************************************************************************************************
    changed: [192.168.2.12]
    
    TASK [mysql : 解压cmake源码包] *********************************************************************************************************************
    skipping: [192.168.2.12]
    
    TASK [mysql : 解压mysql源码包] *********************************************************************************************************************
    skipping: [192.168.2.12]
    
    TASK [mysql : 安装cmake] ************************************************************************************************************************
    skipping: [192.168.2.12]
    
    TASK [mysql : 安装mysql] ************************************************************************************************************************
    skipping: [192.168.2.12]
    
    TASK [mysql : 拷贝mysql的配置文件] *******************************************************************************************************************
    changed: [192.168.2.12]
    
    TASK [mysql : 拷贝mysql服务文件] ********************************************************************************************************************
    changed: [192.168.2.12]
    
    TASK [mysql : 创建mysql日志存放路径] ******************************************************************************************************************
    changed: [192.168.2.12]
    
    TASK [mysql : mysql初始化] ***********************************************************************************************************************
    skipping: [192.168.2.12]
    
    TASK [mysql : 配置环境变量] *************************************************************************************************************************
    skipping: [192.168.2.12]
    
    TASK [mysql : 启动mysql并开机启动] *******************************************************************************************************************
    skipping: [192.168.2.12]
    
    TASK [mysql : 拷贝更改密码脚本] ***********************************************************************************************************************
    changed: [192.168.2.12]
    
    PLAY [nginx] **********************************************************************************************************************************
    
    TASK [Gathering Facts] ************************************************************************************************************************
    ok: [192.168.2.8]
    
    TASK [nginx : 安装依赖软件] *************************************************************************************************************************
    changed: [192.168.2.8]
    
    TASK [nginx : 创建nginx用户组] *********************************************************************************************************************
    changed: [192.168.2.8]
    
    TASK [nginx : 创建nginx用户] **********************************************************************************************************************
    changed: [192.168.2.8]
    
    TASK [nginx : 解压nginx包] ***********************************************************************************************************************
    skipping: [192.168.2.8]
    
    TASK [nginx : 编译nginx] ************************************************************************************************************************
    skipping: [192.168.2.8]
    
    TASK [nginx : 上传nginx启动脚本] ********************************************************************************************************************
    changed: [192.168.2.8]
    
    TASK [nginx : 上传nginx配置文件] ********************************************************************************************************************
    changed: [192.168.2.8]
    
    TASK [nginx : 启动nginx] ************************************************************************************************************************
    skipping: [192.168.2.8]
    
    PLAY [php] ************************************************************************************************************************************
    
    TASK [Gathering Facts] ************************************************************************************************************************
    ok: [192.168.2.11]
    
    TASK [php : 安装依赖软件] ***************************************************************************************************************************
    changed: [192.168.2.11]
    
    TASK [php : 创建php用户组] *************************************************************************************************************************
    changed: [192.168.2.11]
    
    TASK [php : 创建php用户] **************************************************************************************************************************
    changed: [192.168.2.11]
    
    TASK [php : 解压php包] ***************************************************************************************************************************
    skipping: [192.168.2.11]
    
    TASK [php : 上传php测试页面] ************************************************************************************************************************
    changed: [192.168.2.11]
    
    TASK [php : 上传mysql测试页面] **********************************************************************************************************************
    changed: [192.168.2.11]
    
    TASK [php : 编译php] ****************************************************************************************************************************
    skipping: [192.168.2.11]
    
    TASK [php : 修改php-fpm配置] **********************************************************************************************************************
    changed: [192.168.2.11]
    
    TASK [php : 启动php] ****************************************************************************************************************************
    skipping: [192.168.2.11]
    
    PLAY RECAP ************************************************************************************************************************************
    192.168.2.11               : ok=7    changed=6    unreachable=0    failed=0   
    192.168.2.12               : ok=7    changed=6    unreachable=0    failed=0   
    192.168.2.8                : ok=6    changed=5    unreachable=0    failed=0   
    
    
    

     执行过程时间太长,这里省略输出内容

    [root@Ansible lnmp]# ansible-playbook lnmp.yml
    ............................
    ...................
    ............
    PLAY RECAP ************************************************************************************************************************************
    192.168.2.11               : ok=11  changed=10    unreachable=0    failed=0   
    192.168.2.12               : ok=15  changed=14    unreachable=0    failed=0   
    192.168.2.8                : ok=9   changed=8     unreachable=0    failed=0   
    
    

    访问测试:   192.168.2.8              192.168.2.8/testa.php               192.168.2.8/testm.php

     在连接mysql数据库上还是有点问题具体是什么原因暂时没有发现

    报错信息:
    Warning: mysql_connect(): Connection refused in /usr/local/nginx/html/testm.php on line 2

     6、总结

    总体来说,在做这个实验的过程中有很多报错但是已经解决了,都是一些简单的问题,主要问题还是不够熟练各方面的命令,只要思路清晰,就不会失败,办法总比困难多

    更多相关内容
  • LNMP分离部署

    2019-06-09 17:48:06
    1)实验准备 服务器分配 主机 ip ...DiscuzX-master.zip # cp -r DiscuzX/upload/ /www # chmod -R 777 /www/upload/ # firefox 127.0.0.1/upload/install/index.php 具体安装页面如下图操作 至此,LNMP分离部署完成

    1)实验准备

    服务器分配

    主机ip角色
    host1192.168.20.113nginx
    host2192.168.20.101php
    host3192.168.20.135mysql

    2)操作部分

    host1源码安装nginx

        1  useradd -M -u 777 -s /sbin/nologin nginx
        2  tar -zxf nginx-1.15.4.tar.gz 
        3  cd nginx-1.15.4/
        5  yum -y install gcc gcc-c++ pcre-devel zlib-devel openssl-devel
        6  ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
        7  make
        8  make install
        9  ln -s /usr/local/nginx/sbin/nginx  /usr/sbin/
    
    

    host2 源码安装php

       10  yum -y install gd libxml2-devel libjpeg-devel libpng-devel
       11  tar -zxf php-7.2.0.tar.gz 
       12  cd php-7.2.0/
       13   ./configure --prefix=/usr/local/php --with-gd --with-zlib --with-pdo-mysql=mysqlnd --with-mysqli=/usr/local/mysql/bin/mysql_config --with-config-file-path=/usr/local/php --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib
       14  make -j8 && make install
       15  cp php.ini-development /usr/local/php/php.ini
       16  vim /usr/local/php.ini 
          修改192行 short_open_tag = On
       18  cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
       19  chmod +x /etc/init.d/php-fpm 
       20  cd /usr/local/php/etc/
       21  cp php-fpm.conf{.default,}
       22  vim php-fpm.conf
          17行取消注释 打开pid文件
          48行取消注释并修改 emergency_restart_threshold = 30 表示子进程故障退出的时候,经过规定的重启时间间隔后,php会启动多少个子程序
          56行取消注释并修改 emergency_restart_interval = 1 子程序故障退出后重启的时间间隔
          62行取消注释并修改 process_control_timeout = 20 表示子进程等待master发送信号的超时时间
          69行取消注释 并修改为50   process.max = 50 表示可以fork出的最多子进程数量
          85行1取消注释并修改 rlimit_files = 65536 表示master程序能打开的文件最大数量 默认值
          90行取消注释并修改 rlimit_core = 65536 表示master能打开的文件数量 最大值
          100行取消注释 events.mechanism = epoll 表示php使用的模型
          #SIGSEGV是当一个进程执行了一个无效的内存引用,或发生段错误时发送给它的信号
          #SIGBUS是指硬件故障或内存不足时发送的信号
       25  cd /usr/local/php/etc/php-fpm.d/
       26  cp www.conf.default www.conf
       27  ln -s /usr/local/php/bin/* /usr/bin/
       28  ln -s /usr/local/php/sbin/* /usr/sbin/
          
    

    host3源码安装mysql

    需要先卸载本机已有的mysql或者mariadb
    
       36  yum -y install bison cmake ncurses-devel
       37  tar -zxf mysql-5.5.22.tar.gz 
       38  cd mysql-5.5.22/
       39  cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all
       40  make && make install
       41  useradd -M -s /sbin/nologin mysql
       42  chown -R mysql:mysql /usr/local/mysql/
       43  ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18
       44  cd support-files/
       45  cp my-large.cnf /etc/my.cnf
       46   cp mysql.server /etc/init.d/mysqld
       47  vim /etc/init.d/mysqld
           basedir=/usr/local/mysql
          datadir=/usr/local/mysql/data
       48  chmod +x /etc/init.d/mysqld 
       49  /usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --user=mysql
       53  ln -s /usr/local/mysql/bin/* /usr/bin/
       54  /etc/init.d/mysqld start
       55  mysqladmin -uroot password 123456
    
    

    配置nfs服务(nfs服务放在php主机上)

    host2和host3都添加nginx用户,且uid和host1相同
    # useradd -M -u 777 -s /sbin/nologin nginx
    
    host1 host2 host3均创建/www作为nfs的输出目录 并设置属主属组
    # mkdir /www
    # chown -R nginx:nginx /www
    
    配置nfs配置文件
    # vim /etc/exports
    /www 192.168.20.0/24(rw,no_root_squash,sync)
    
    启动nfs服务
    # systemctl start nfs
    
    在host1上查看nfs输出目录
    # showmount -e 192.168.20.101
    Export list for 192.168.20.101:
    /www 192.168.20.0/24
    
    host1 和host3都挂载nfs的输出目录
    # mount -t nfs 192.168.20.101:/www /www
    
    

    修改nginx配置文件

    # vim /usr/local/nginx/conf/nginx.conf
      44行,默认location里,网页根目录改为/www
      45行,默认的location里,在index.html前边加上index.php
      65-71行的location取消注释 修改如下
            location ~ \.php$ {
                root           /www; #网页目录改为/www
                fastcgi_pass   192.168.20.101:9000; #改为host2的ip
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
                include        fastcgi.conf; #修改为fastcgi.conf
            }
    
    

    修改php配置文件

    # vim /usr/local/php/etc/php-fpm.d/www.conf
      23-24行,用户和组,改为nginx
      user = nginx
      group = nginx
      36行 监听地址和端口改为自己的ip  listen = 192.168.20.101:9000
      47-49行取消注释并修改
      listen.owner = nginx
      listen.group = nginx
      listen.mode = 0660
      62行取消注释并修改 listen.allowed_clients = 192.168.20.113 如果有多个,用逗号间隔,这里写nginx的ip
      注意96行: pm = dynamic,
      107行 pm.max_children = 50
      112行 pm.start_servers = 20
      117行 pm.min_spare_servers = 5
      122行 pm.max_spare_servers = 35
      127行取消注释 pm.process_idle_timeout = 10s;
    
    
    

    启动nginx和php

    host1 启动nginx
    # nginx -t
        nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
        nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
    # nginx
    
    host2启动php
    # /etc/init.d/php-fpm start
    Starting php-fpm  done
    
    

    测试nginx与php的整合是否OK

    在host1上编辑网页文件
    # vim /www/test1.php
    <?php
    phpinfo();
    ?>
    
    访问测试
    # firefox 127.0.0.1/test1.php
    可以看到php页面,证明nginx与php连接没有问题
    

    在这里插入图片描述

    测试php与mysql连接是否OK

    host3授权php主机进行连接
    # mysql -uroot -p123456
    mysql> grant all on *.* to 'root'@'192.168.20.101' identified by '123456';
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
    
    host1上编辑测试页面
    # vim /www/test2.php
    <?php
    $con = new mysqli('192.168.20.135','root','123456','test');
    if(!$con)
        die("connect error:".mysqli_connect_error());
    else
        echo "success connect mysql\n";
    ?>
    
    如果能看到下面的页面,证明没有问题
    

    在这里插入图片描述

    在LNMP平台上进行应用的安装(这里安装discuz论坛)

    在host1上操作,如下
    # unzip ComsenzDiscuz-DiscuzX-master.zip 
    # cp -r DiscuzX/upload/ /www
    # chmod -R 777 /www/upload/
    # firefox 127.0.0.1/upload/install/index.php
    具体安装页面如下图操作
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    至此,LNMP分离部署完成

    展开全文
  • LNMP分离部署

    2020-09-07 09:51:23
    LNMP数据流向分析 第一步:浏览器发送http request请求到服务器(Nginx),服务器响应并处理web请求,将一些静态资源(CSS,图片,视频等)返回浏览器。 第二步:将php脚本通过接口传输协议(网关协议)PHP-FCGI...

    LNMP数据流向分析
    在这里插入图片描述
    第一步:浏览器发送http request请求到服务器(Nginx),服务器响应并处理web请求,将一些静态资源(CSS,图片,视频等)返回浏览器。
    第二步:将php脚本通过接口传输协议(网关协议)PHP-FCGI(fast-cgi)传输给PHP-FPM(进程管理程序),PHP-FPM不做处理,调用PHP解析器进程,PHP解析器解析php脚本信息。PHP解析器进程可以启动多个,进行并发执行。
    第三步:PHP脚本通过PHP和数据库的连接,完成对数据库进行增删改查的功能,并从数据库中获取数据。
    第四步:将获取到的数据返回到PHP-FPM,PHP-FPM再通过fast-cgi的形式将脚本信息传送给Nginx。
    第五步:服务器再通过Http response的形式传送给浏览器。浏览器再进行解析与渲染然后进行呈现。

    搭建Nginx动静分离和反向代理实验步骤如下:
    实验环境:Centos7.3操作系统,
    实验步骤:
    搭建LAMP分离部署
    (1)首先我们需要准备三台虚拟机,其中一台搭建好Nginx,然后平滑升级,并且配置好系统启动项
    首先开始搭建Nginx服务,这里我是用脚本进行搭建。
    [root@localhost ~]# vim 1.sh
    #!/bin/bash

    yum -y remove httpd
    yum -y install gcc gcc-c++ proc-devel zlib-devel openssl-devel
    useradd -M -s /sbin/nologin nginx
    cd /home/yfr/
    tar zxf nginx-1.11.5.tar.gz -C /usr/src/
    cd /usr/src/nginx-1.11.5/
    ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
    make && make install
    ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
    ls -l /usr/local/sbin/nginx
    nginx -t
    nginx
    netstat -anpt | grep nginx
    ~
    ~
    ~
    :x
    [root@localhost ~]# chmod +x 1.sh 给脚本加执行权限
    [root@localhost ~]# . 1.sh 执行脚本
    [root@localhost ~]# vim 2.sh
    #!/bin/bash

    cd /home/yfr/
    tar zxf nginx-1.13.5.tar.gz -C /usr/src/
    cd /usr/src/nginx-1.13.5/
    ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-stream
    make
    cd objs/
    mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old
    cp nginx /usr/local/nginx/sbin/
    mv /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf_old
    cd …
    cp conf/nginx.conf /usr/local/nginx/conf/
    nginx -v
    fuser -k -n tcp 80
    nginx
    netstat -anpt | grep nginx
    [root@localhost ~]# chmod +x 2.sh 给脚本加执行权限
    [root@localhost ~]# . 2.sh 执行脚本

    (2)启动之后来编写nginx启动脚本,并且添加到系统进程中。
    [root@localhost nginx-1.11.5]# vim /etc/init.d/nginx
    #!/bin/bash
    #####################Welcome to nginx##################
    #chkconfig:2345 99 20
    #descrition:this is a nginx web server
    PROG="/usr/local/nginx/sbin/nginx"
    PIDF="/usr/local/nginx/logs/nginx.pid"

    case “$1” in
    start)
    $PROG
    echo “startting nginx…”
    ;;
    stop)
    kill -s QUIT $(cat $PIDF)
    echo “stopping nginx…”
    ;;
    restart)

        $0 stop
        $0 start
    

    ;;
    reload)

        kill -s HUP $(cat $PIDF)
        echo "reload nginx....."
    

    ;;
    *

        echo "USAGE:$0 { start | stop | restart | reload }"
        exit 1
    

    esac
    exit 0
    :x
    [root@localhost nginx-1.11.5]# chmod +x /etc/init.d/nginx
    然后我们把编写的启动脚本加执行权限
    [root@localhost nginx-1.11.5]# chkconfig --add nginx 添加Nginx启动脚本到系统进程中
    [root@localhost nginx-1.11.5]# chkconfig nginx on 启动Nginx这个进程
    [root@localhost nginx-1.11.5]# chkconfig --list nginx 查看Nginx的启动权限

    Note: This output shows SysV services only and does not include native
    systemd services. SysV configuration data might be overridden by native
    systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.
    

    nginx 0:off 1:off 2:on 3:on 4:on 5:on 6:off
    [root@localhost nginx-1.11.5]# systemctl stop nginx 重启一下服务
    [root@localhost nginx-1.11.5]# netstat -anpt | grep nginx
    tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7302/nginx: master
    [root@localhost nginx-1.13.5]# systemctl stop firewalld 关闭防火墙

    (3)转到第二台虚拟机上,开始搭建PHP服务器
    解压PHP依赖包以及安装包,以及C编译器
    [root@localhost ~]# yum -y install gcc gcc-c++
    [root@localhost yfr]# tar zxf libmcrypt-2.5.8.tar.gz -C /usr/src/
    [root@localhost yfr]# tar xf mhash-0.9.9.9.tar.gz -C /usr/src/
    [root@localhost yfr]# tar xf mcrypt-2.6.8.tar.gz -C /usr/src/
    [root@localhost yfr]# tar xf php-5.3.28.tar.gz -C /usr/src/
    开始给每个依赖包编译安装
    [root@localhost libmcrypt-2.5.8]# cd /usr/src/libmcrypt-2.5.8/
    [root@localhost libmcrypt-2.5.8]# ./configure && make && make install
    [root@localhost libmcrypt-2.5.8]# cd …/mhash-0.9.9.9/
    [root@localhost mhash-0.9.9.9]# ./configure && make && make install
    [root@localhost mhash-0.9.9.9]# cd …/mcrypt-2.6.8/
    [root@localhost mcrypt-2.6.8]# ./configure && make && make install
    [root@localhost php-5.3.28]# ln -s /usr/local/lib/libm* /usr/lib
    编译安装完依赖包之后,开始下载编译安装PHP
    [root@localhost mcrypt-2.6.8]# cd …/php-5.3.28/
    [root@localhost php-5.3.28]# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib
    [root@localhost php-5.3.28]# yum -y install openssl-devel libxml2-devel gd libjpeg-devel libpng-devel
    [root@localhost php-5.3.28]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mhash --with-mcrypt --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-libxml-dir --enable-mbstring --enable-bcmath --with-gd --with-jpeg-dir --with-png-dir --enable-fpm
    上述命令中:
    –prefix=/usr/local/php 指定 php 安装目录
    –with-config-file-path=/usr/local/php/etc 指定php.ini位置
    –with-mysql=/usr/local/mysqlmysql 扩调用MySQL的存储过程、处理MySQL事务,而且还可以使访问数据库工作变得更加稳定
    –with-jpeg-dir 打开对jpeg图片的支持
    –with-png-dir 打开对png图片的支持
    –enable-fpm 打上PHP-fpm 补丁后才有这个参数,CGI方式安装的启动程序
    –with-mcrypt mcrypt算法扩展
    –with-mhash mhash算法扩展
    [root@localhost php-5.3.28]# make && make install
    然后我们把配置文件更改一下。
    [root@localhost php-5.3.28]# cp php.ini-development /usr/local/php/etc/php.ini
    然后把启动项复制到快捷
    [root@localhost php-5.3.28]# ln -s /usr/local/php/sbin/php-fpm /usr/sbin
    [root@localhost php-5.3.28]# cd /usr/local/php/etc/ 进入PHP配置文件中
    把生产环境的生产配置配置文件复制一份
    [root@localhost etc]# cp php-fpm.conf.default php-fpm.conf
    [root@localhost etc]# vim php-fpm.conf
    140 user = nginx
    141 group = nginx
    142
    143 ; The address on which to accept FastCGI requests.
    144 ; Valid syntaxes are:
    145 ; ‘ip.add.re.ss:port’ - to listen on a TCP socket to a specific address on
    146 ; a specific port;
    147 ; ‘port’ - to listen on a TCP socket to all addresses on a
    148 ; specific port;
    149 ; ‘/path/to/unix/socket’ - to listen on a unix socket.
    150 ; Note: This value is mandatory.
    151 listen = 192.168.199.54:9000
    152
    [root@localhost etc]# useradd -M -s /sbin/nologin nginx 创建nginx用户以及组
    [root@localhost etc]# php-fpm 启动PHP
    [root@localhost etc]# netstat -anput | grep php-fpm
    tcp 0 0 192.168.199.54:9000 0.0.0.0:* LISTEN 43799/php-fpm: mast

    (4)回到Nginx服务器上,安装nfs并且配置
    [root@localhost nginx-1.13.5]# yum -y install nfs-utils 安装nfs
    [root@localhost nginx-1.13.5]# mkdir /www 创建共享目录
    [root@localhost nginx-1.13.5]# chmod -R 777 /www/ 给共享目录加权限
    [root@localhost nginx-1.13.5]# vim /etc/exports 编辑nfs配置文件
    /www 192.168.199.0/24(rw,sync)
    ~
    ~
    ~
    :x
    启动nfs
    [root@localhost nginx-1.13.5]# systemctl start rpcbind
    [root@localhost nginx-1.13.5]# systemctl start nfs
    [root@localhost nginx-1.13.5]# showmount -e 127.0.0.1 查看挂载目录
    Export list for 127.0.0.1:
    /www 192.168.199.0/24

    (5)回到PHP服务器,安装nfs并且挂载
    [root@localhost etc]# yum -y install nfs-utils
    [root@localhost etc]# mkdir /www
    [root@localhost etc]# showmount -e 192.168.199.52
    Export list for 192.168.199.52:
    /www 192.168.199.0/24
    [root@localhost etc]# mount -t nfs 192.168.199.52:/www /www
    [root@localhost etc]# df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/mapper/cl-root 17G 4.0G 13G 24% /
    devtmpfs 473M 0 473M 0% /dev
    tmpfs 489M 152K 489M 1% /dev/shm
    tmpfs 489M 7.1M 482M 2% /run
    tmpfs 489M 0 489M 0% /sys/fs/cgroup
    /dev/sda1 1014M 173M 842M 18% /boot
    tmpfs 98M 36K 98M 1% /run/user/1000
    /dev/sr0 4.1G 4.1G 0 100% /media/dvd
    192.168.199.52:/www 17G 3.7G 14G 22% /www
    (6)回到Nginx服务器上配置分离部署的PHP选项
    [root@localhost nginx-1.13.5]# vim /usr/local/nginx/conf/nginx.conf
    43 location / {
    44 root /www;
    45 index index.php index.html index.htm;
    46 }
    65 location ~ .php$ {
    66 root /www;
    67 fastcgi_pass 192.168.199.54:9000;
    68 fastcgi_index index.php;
    69 fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    70 include fastcgi.conf;
    71 }
    72
    [root@localhost nginx-1.13.5]# nginx -t 检测配置文件
    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

    [root@localhost yfr]# unzip Discuz_7.2_FULL_SC_UTF8.zip 解压论坛压缩包
    [root@localhost yfr]# cd upload/ 进入论坛
    [root@localhost upload]# cp -r * /www/ 复制我们的内容到共享目录中

    (6)去第三台虚拟机上安装MySQL
    这边使用脚本即可实现
    [root@localhost ~]# vim 1.sh
    #!/bin/bash

    cd /media/dvd/Packages/
    rpm -ivh ncurses-devel-5.9-13.20130511.el7.x86_64.rpm
    yum -y install gcc gcc-c++
    cd /home/yfr/
    tar zxvf cmake-2.8.6.tar.gz -C /usr/
    cd /usr/cmake-2.8.6/
    ./configure
    gmake && gmake install -j 4
    groupadd mysql
    useradd -M -s /sbin/nologin mysql -g mysql
    cd /home/yfr/
    tar zxvf mysql-5.5.22.tar.gz -C /usr/src/
    cd /usr/src/mysql-5.5.22/
    cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc/ -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSET=all
    make -j 4 && make install -j 4
    chown -R mysql:mysql /usr/local/mysql
    rm -fr /etc/my.cnf
    cd /usr/src/mysql-5.5.22/
    cp support-files/my-medium.cnf /etc/my.cnf
    /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
    echo “PATH”=$PATH:/usr/local/mysql/bin/ >> /etc/profile
    . /etc/profile
    cp -fr support-files/mysql.server /etc/rc.d/init.d/mysqld
    chmod +x /etc/rc.d/init.d/mysqld
    chkconfig --add mysqld
    systemctl restart mysqld
    netstat -pant | grep mysqld
    [root@localhost ~]# chmod +x 1.sh 给脚本加权限
    [root@localhost ~]# . 1.sh 执行脚本
    设置我们的root密码为123
    [root@localhost mysql-5.5.22]# mysqladmin -uroot password 123
    [root@localhost mysql-5.5.22]# mysql -uroot -p123
    创建一个用户discuz密码为123
    mysql> grant all on discuz.* to ‘discuz’@‘192.168.199.%’ identified by ‘123’;
    Query OK, 0 rows affected (0.00 sec)

    mysql> flush privileges; 刷新系统
    Query OK, 0 rows affected (0.00 sec)

    (7)回到Nginx服务器,设置相关参数,验证
    [root@localhost upload]# chmod -R 777 /www/ 给我们的共享目录加权限
    [root@localhost upload]# systemctl stop firewalld
    [root@localhost upload]# firefox 192.168.199.52/install/index.php 访问
    在这里插入图片描述
    然后回到PHP服务器
    [root@localhost etc]# vim /usr/local/php/etc/php.ini
    226 short_open_tag = on
    回到Nginx服务器验证

    这里的数据库服务器是指MySQL的IP地址
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • Centos7.4LNMP分离部署及WordPress部署

    千次阅读 2021-12-02 09:35:54
    Centos7.4LNMP分离部署及WordPress部署 实验环境: 准备三台centos7虚拟机 192.168.10.101 Nginx 192.168.10.102 PHP 192.168.10.103 MySQL 1、安装Mysql (192.168.10.103) 略 (详细安装教程点击查看...

    Centos7.4LNMP分离部署及WordPress部署

    实验环境:
    准备三台centos7虚拟机

    192.168.10.101Nginx
    192.168.10.102PHP
    192.168.10.103MySQL

    1、安装Mysql (192.168.10.103)

    略 (详细安装教程点击查看MySQL安装脚本

    2、安装PHP(192.168.10.102)

    2.1创建nginx用户
    ###上传php源码包和libmcrypt-2.5.8.tar.gz依赖包

    [root@c7-02 ~]# yum -y install epel-release gcc gcc-c++
    [root@c7-02 ~]# groupadd -r -g 955 nginx
    [root@c7-02 ~]# useradd -M -s /sbin/nologin -g 955 -u 955 nginx
    [root@c7-02 ~]# id nginx
    uid=955(nginx) gid=955(nginx) 组=955(nginx)   #PHP和nginx的nginx用户的uid、gid、组id一致
    

    2.2安装php依赖包

    [root@c7-02 ~]# yum -y install epel-release gcc gcc-c++
    [root@c7-02 ~]# yum -y install 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 mhash mhash-devel
    [root@c7-02 ~]# tar zxvf libmcrypt-2.5.8.tar.gz -C /usr/src/
    [root@c7-02 ~]# cd /usr/src/libmcrypt-2.5.8/
    [root@c7-02 ~]# ./configure && make && make install
    

    2.3解压并安装php

    [root@c7-02 ~]# cd /usr/src/
    [root@c7-02 src]# tar zxvf php-5.5.38.tar.gz
    [root@c7-02 src]# cd php-5.5.38/
    [root@c7-02 php-5.5.38]# ./configure --prefix=/usr/local/php --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-fpm --enable-sockets --enable-sysvshm --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --with-mhash --with-mcrypt=/usr/local/libmcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts && make && make install
    

    2.4配置环境变量

    [root@c7-02 php-5.5.38]# echo 'export PATH=/usr/local/php/bin:$PATH' > /etc/profile.d/php.sh
    [root@c7-02 php-5.5.38]# source /etc/profile.d/php.sh 
    [root@c7-02 php-5.5.38]# which php
    /usr/local/php/bin/php
    

    2.5配置php-fpm

    [root@c7-02 php-5.5.38]# cp php.ini-production /etc/php.ini
    [root@c7-02 php-5.5.38]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
    [root@c7-02 php-5.5.38]# chmod +x /etc/rc.d/init.d/php-fpm 
    [root@c7-02 php-5.5.38]# cd /usr/local/php/etc/
    [root@c7-02 etc]# cp php-fpm.conf.default php-fpm.conf
    

    2.6修改php-fpm配置文件

    [root@c7-02 etc]# vim php-fpm.conf
    user = nginx
    group = nginx
    listen = 192.168.10.102:9000       本机ip 
    pm.max_children = 50
    pm.start_servers = 5
    pm.min_spare_servers = 2
    pm.max_spare_servers = 8 
    

    2.7启动php-fpm

    [root@c7-02 etc]# service php-fpm start
    Starting php-fpm  done
    [root@c7-02 etc]# ss -antl
    State      Recv-Q Send-Q             Local Address:Port                            Peer Address:Port              
    LISTEN     0      128                            *:22                                         *:*                  
    LISTEN     0      100                    127.0.0.1:25                                         *:*                  
    LISTEN     0      128               192.168.10.106:9000                                       *:*                  
    LISTEN     0      128                           :::80                                        :::*                  
    LISTEN     0      128                           :::22                                        :::*                  
    LISTEN     0      100                          ::1:25                                        :::*                  
    

    3、nginx安装与配置(192.168.10.101)

    上传nginx源码包

    3.1创建nginx用户

    [root@c7-01 ~]# groupadd -r -g 955 nginx
    [root@c7-01 ~]# useradd -M -s /sbin/nologin -g 955 -u 955 nginx
    [root@c7-01 ~]# id nginx
    uid=955(nginx) gid=955(nginx) 组=955(nginx)  
    

    3.2安装依赖包

    [root@c7-01 ~]# yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel
    

    3.3配置并安装nginx

    [root@c7-01 ~]# tar zxvf nginx-1.12.0.tar.gz -C /usr/src
    [root@c7-01 src]# cd /usr/src/nginx-1.12.0/
    [root@c7-01 nginx-1.12.2]#./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-http_ssl_module --with-http_gzip_static_module --user=nginx --group=nginx && make && make install
    

    3.4创建软连接并启动nginx

    [root@c7-01 nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
    [root@c7-01 nginx-1.12.2]# nginx -t
    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
    [root@c7-01 nginx-1.12.2]# nginx
    [root@c7-01 nginx-1.12.2]# netstat -anput | grep nginx
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      27185/nginx: master 
    

    4、配置nginx支持PHP环境(192.168.10.101)

    4.1配置nginx配置文件支持php

    [root@c7-01 ~]#vim /usr/local/nginx/conf/nginx.conf
    
     
    
    location / {
                root   /www;  更改网页目录
                index  index.php index.html index.htm;  添加index.php
            }
    location ~ \.php$ {
                root           /www;    更改目录
                fastcgi_pass   192.168.10.102:9000;  ###在这里添加PHP主机IP地址
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
                include        fastcgi_params;
            }
    [root@c7-01 ~]# vim /usr/local/nginx/conf/fastcgi_params
    
     
    添加
    fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    

    4.2创建/www目录并创建测试页

    [root@c7-01 ~]# mkdir /www
    [root@c7-01 ~]# chown nginx:nginx /www/
    [root@c7-01 ~]# cd /www/
    [root@c7-01 www]# vim index.php
    <?php
    phpinfo();
    ?>
    

    4.3在php上同样创建/www(192.168.10.102)

    [root@c7-02 ~]# mkdir /www
    [root@c7-02 ~]# chown -R nginx:nginx /www/
    [root@c7-02 ~]# cd /www/
    [root@c7-02 www]# vim index.php
    [root@c7-02 www]# cat index.php 
    <?php
    phpinfo();
    ?>
    

    4.4重启nginx和php

    [root@c7-01 www]# nginx -s reload
    [root@c7-02 www]# service php-fpm restart 
    

    4.5访问nginx测试
    在这里插入图片描述

    5、部署wordpress个人站点

    5.1mysql创建库并授权(192.168.10.103)

    mysql> create database wordpress;
    Query OK, 1 row affected (0.00 sec)
    mysql> grant all on wordpress.* to root@'%' identified by '123.com';
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    

    5.2解压并部署wordpress
    上传wordpress软件包(192.168.10.101)

    [root@c7-01 ~]# unzip  wordpress-4.2.2-zh_CN.zip
    [root@c7-01 ~]# mv wordpress/* /www/
    

    php同上(192.168.10.102)

    [root@c7-02 ~]# unzip  wordpress-4.2.2-zh_CN.zip
    [root@c7-02 ~]# mv wordpress/* /www/
    

    5.3访问测试
    http://192.168.10.101/wp-admin/setup-config.php
    请添加图片描述
    请添加图片描述
    在这里插入图片描述
    出现这种情况时需要在nginx上和php上进行以下操作

    [root@C7-01 ~]# cd /www
    [root@C7-01 www]# vim wp-config.php
    <?php
    /**
     * WordPress基础配置文件。
     *
     * 本文件包含以下配置选项:MySQL设置、数据库表名前缀、密钥、
     * WordPress语言设定以及ABSPATH。如需更多信息,请访问
     * {@link http://codex.wordpress.org/zh-cn:%E7%BC%96%E8%BE%91_wp-config.php
     * 编辑wp-config.php}Codex页面。MySQL设置具体信息请咨询您的空间提供商。
     *
     * 这个文件被安装程序用于自动生成wp-config.php配置文件,
     * 您可以手动复制这个文件,并重命名为“wp-config.php”,然后填入相关信息。
     *
     * @package WordPress
     */
    
    // ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
    /** WordPress数据库的名称 */
    define('DB_NAME', 'wordpress');
    
    /** MySQL数据库用户名 */
    define('DB_USER', 'root');
    
    /** MySQL数据库密码 */
    define('DB_PASSWORD', '123.com');
    
    /** MySQL主机 */
    define('DB_HOST', '192.168.10.107');
    
    /** 创建数据表时默认的文字编码 */
    define('DB_CHARSET', 'utf8mb4');
    
    /** 数据库整理类型。如不确定请勿更改 */
    define('DB_COLLATE', '');
    
    /**#@+
     * 身份认证密钥与盐。
     *
     * 修改为任意独一无二的字串!
     * 或者直接访问{@link https://api.wordpress.org/secret-key/1.1/salt/
     * WordPress.org密钥生成服务}
     * 任何修改都会导致所有cookies失效,所有用户将必须重新登录。
     *
     * @since 2.6.0
     */
    define('AUTH_KEY',         '*|46Cct3~K5 uc`j_)PqAho;$|c*#!(?,yde`/ XYhmqgX]AjvNT|!+uHXi%NnH7');
    define('SECURE_AUTH_KEY',  '|7NA~j<g@^tGMbJ&_%c([tnzs.j^d:(J,HP`beW:i&6yA1[LcqZOO|stmGj0Uq5l');
    define('LOGGED_IN_KEY',    'cnF|dw5|UpgzMs-cDR8:$n1+7_Z-PEd)Al1/l?<wr>se;:JX=FTCpR>E&2/u9o9V');
    define('NONCE_KEY',        '|Gm>urhh!QPXj$^rKOc9=|NX9HFYTAlw3Kws*N^jbX+;T$z!9UmCR{q,)euJCzKV');
    define('AUTH_SALT',        'G};UV:P0<4=RnY7o:bo0/=l!],R+~{JNYg1>d[465U9-&},2cP+m^}{sRz8aoqNY');
    define('SECURE_AUTH_SALT', 'n^mE_E<OhI&_A(/?abA<>7Y~4?cn0dFH%z2IOJSQ{808gwPEgpx#4MSTUr^!9f(&');
    define('LOGGED_IN_SALT',   'u*CdngB[7le})wz@2kKfrw.3+4Z]1maJlMH}7^2KFc.lCNOdRCm$<>sBT<q|OGl0');
    define('NONCE_SALT',       '<L9eo4by7[f26jG*[<X ZMW/S{Q=^%)pTP%#JCmB7SSs@wwhO&]{Ee]M]*[ry D#');
    
    /**#@-*/
    
    /**
     * WordPress数据表前缀。
     *
     * 如果您有在同一数据库内安装多个WordPress的需求,请为每个WordPress设置
     * 不同的数据表前缀。前缀名只能为数字、字母加下划线。
     */
    $table_prefix  = 'wp_';
    
    /**
     * 开发者专用:WordPress调试模式。
     *
     * 将这个值改为true,WordPress将显示所有用于开发的提示。
     * 强烈建议插件开发者在开发环境中启用WP_DEBUG。
     */
    define('WP_DEBUG', false);
    
    /**
     * zh_CN本地化设置:启用ICP备案号显示
     *
     * 可在设置→常规中修改。
     * 如需禁用,请移除或注释掉本行。
     */
    define('WP_ZH_CN_ICP_NUM', true);
    
    /* 好了!请不要再继续编辑。请保存本文件。使用愉快! */
    
    /** WordPress目录的绝对路径。 */
    if ( !defined('ABSPATH') )
    	define('ABSPATH', dirname(__FILE__) . '/');
    
    /** 设置WordPress变量和包含文件。 */
    require_once(ABSPATH . 'wp-settings.php');
    ?>
    

    php也做同样的操作
    完成后点击进行安装
    由于我已近安装过了,这里就不再进行演示了,接下来只需要根据提示进行填写即可

    到这里LNMP分离部署及WordPress部署就做完了

    展开全文
  • lnmp分离部署

    2017-07-12 16:34:43
    lnmp分离部署 目录 目录....1 版权声明:....2 文档信息:....2 1.在192.168.200.101上安装nginx.3 2.在192.168.200.102上安装mysql.5 3.在192.168.200.103上安装php.7 文档信息: 文档作者:amun ...
  • 基于四台服务器实现lnmp分离部署,A服务器部署nginx,B服务器部署php,C/D服务器部署MySQL主从 。 A服务器(nginx):192.168.2.101 B服务器(php): 192.168.2.102 C服务器(master): 192.168.2.103 D服务器(slave)...
  • LNMP原理及分离部署的实现

    千次阅读 多人点赞 2020-05-25 09:14:08
    1. LNMP理论 fastcgi的主要优点: 把动态语言和http服务器分离开来,使nginx可以处理静态请求和向后转发动态请求,而php/php-fpm服务器转移解析PHP动态请求 使用fastcgi的原因: Nginx 不支持对外部动态程序的直 接...
  • LNMP分离部署 环境: node1-nginx : 192.168.10.1 node2-php: 192.168.10.2 node3-mysql: 192.168.10.3 php-7.3.12版本,mysql-5.6版本 思路: 1.客户端请求 nginx服务器,获取 .php的动态页面 2. nginx 服务器通过 ...
  • wordpress #修改nginx配置文件 cp nginx.conf.default nginx.conf vim nginx.conf 2、Mariadb安装 双主模式互为主备,后期增加mycat实现读写分离。 Mariadb1:192.168.0.119 Mariadb1: 192.168.0.122 #在119和122...
  • LNMP分离部署

    2018-11-28 00:42:54
    [root@localhost ~]# echo "192.168.214.168 LNMP" >> /etc/hosts #MySQL服务器IP地址 [root@localhost ~]# ln -s /usr/local/mysql-5.5.32-linux2.6-x86_64/ /usr/local/mysql # 初始化MySQL配置文件my.conf [root@...
  • LNMP分离部署搭建

    2021-01-27 06:41:12
    } } 最终blog虚拟机的完整配置如下: [root@LNMP extra]#cat blog.conf server { listen 80; server_name blog.shidu.com; location /{ root html/blog; index index.html index.htm; } location ~.*\.(php|php5)?$...
  • LNMP建站分离部署

    千次阅读 2018-05-14 22:47:50
    目录 LNMP理论基础 LNMP数据流转分析: Nginx+FastCGi工作流程 Nginx架构 ...注:本篇文章解决的主要问题是将LNMP中的数据也就是MySQL分离到另一台服务器上,达到LNMP分离部署的目的。 LNMP理论基...
  • 1、先安装LNMP(192.168.22+192.168.1.24+122.51.223.193),安装wordpress 2、配置nginx负载均衡 3、添加php均衡 4、配置mariadb主从 三、安装lnmp及wordpress 1、安装nginx(192.168.22) 1)、Nginx安装 Nginx这里...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,574
精华内容 1,029
关键字:

lnmp分离部署