• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    使用shell脚本一键部署LNMP架构的方法

    LNMP架构介绍

    LNMP:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。Mysql是一个小型关系型数据库管理系统。PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。

    原理:浏览器发送http request请求到服务器(Nginx),服务器响应并处理web请求,将一些静态资源(CSS,图片,视频等)保存服务器上,然后将php脚本通过接口传输协议(网关协议)PHP-FCGI(fast-cgi)传输给PHP-FPM(进程管理程序),PHP-FPM不做处理,然后PHP-FPM调用PHP解析器进程,PHP解析器解析php脚本信息。PHP解析器进程可以启动多个,进行并发执行。然后将解析后的脚本返回到PHP-FPM,PHP-FPM再通过fast-cgi的形式将脚本信息传送给Nginx.服务器再通过Http response的形式传送给浏览器。浏览器再进行解析与渲染然后进行呈现。

    下面给大家介绍下使用shell脚本一键部署LNMP架构的方法,脚本如下所示:

    #/bin/bash
    
    ##将需要的安装包传到/opt目录下,并关闭防火墙
    systemctl stop firewalld
    systemctl disable firewalld >/dev/null
    setenforce 0
    
    ###############Nginx###############
    
    ##先挂载,再安装依赖包
    df -h | grep /mnt
    if [ $? -ne 0 ];then
    mount /dev/cdrom /mnt >/dev/null
    fi
    yum -y install pcre-devel zlib-devel gcc gcc-c++ make
    
    ##创建运行用户、组(Nginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确的控制其访问权限)
    useradd -M -s /sbin/nologin nginx
    
    ##编译安装
    cd /opt
    tar zxvf nginx-1.12.0.tar.gz
    cd nginx-1.12.0/
    ./configure \
    
    --prefix=/usr/local/nginx \
    
    --user=nginx \
    
    --group=nginx \
    
    --with-http_stub_status_module
    
    make -j 2  make install
    
    ##优化配置文件路径,并把nginx服务的可执行程序文件放入路径环境变量的目录中便于系统识别
    ln -s /usr/local/nginx/sbin/* /usr/local/sbin
    
    ##添加Nginx系统服务
    cat > /lib/systemd/system/nginx.service EOF
    [Unit]
    Description=nginx
    After=network.target
    [Service]
    Type=forking
    PIDFile=/usr/local/nginx/logs/nginx.pid
    ExecStart=/usr/local/nginx/sbin/nginx
    ExecReload=/bin/kill -1 $MAINPID
    ExecStop=/bin/kill -3 $MAINPID
    PrivateTmp=true
    [Install]
    WantedBy=multi-user.target
    EOF
    
    ##修改文件权限
    chmod 754 /lib/systemd/system/nginx.service
    systemctl start nginx.service
    systemctl enable nginx.service >/dev/null
    
    ###############MySQL###############
    ##安装MySQL环境依赖包
    yum -y install ncurses ncurses-devel bison cmake
    
    ##创建运行用户
    useradd -M -s /sbin/nologin mysql
    
    ##编译安装
    cd /opt
    tar zxvf mysql-boost-5.7.20.tar.gz
    cd /opt/mysql-5.7.20
    cmake \
    
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    
    -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
    
    -DSYSCONFDIR=/etc \
    
    -DSYSTEMD_PID_DIR=/usr/local/mysql \
    
    -DDEFAULT_CHARSET=utf8 \
    
    -DDEFAULT_COLLATION=utf8_general_ci \
    
    -DWITH_EXTRA_CHARSETS=all \
    
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    
    -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
    
    -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
    
    -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
    
    -DMYSQL_DATADIR=/usr/local/mysql/data \
    
    -DWITH_BOOST=boost \
    
    -DWITH_SYSTEMD=1
    
    make -j 2  make install
    
    ##修改mysql配置文件
    cat > /etc/my.cnf EOF
    [client]
    port = 3306
    socket=/usr/local/mysql/mysql.sock			
    [mysqld]
    user = mysql
    basedir=/usr/local/mysql
    datadir=/usr/local/mysql/data
    port = 3306
    character-set-server=utf8
    pid-file = /usr/local/mysql/mysqld.pid
    socket=/usr/local/mysql/mysql.sock
    bind-address = 0.0.0.0
    skip-name-resolve
    max_connections=2048
    default-storage-engine=INNODB
    max_allowed_packet=16M
    server-id = 1
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
    EOF
    
    ##更改mysql安装目录和配置文件的属主属组
    chown -R mysql:mysql /usr/local/mysql/
    chown mysql:mysql /etc/my.cnf
    
    ##设置路径环境变量
    echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile	
    source /etc/profile
    
    ##初始化数据化
    cd /usr/local/mysql/bin/
    ./mysqld \
    
    --initialize-insecure \
    
    --user=mysql \
    
    --basedir=/usr/local/mysql \
    
    --datadir=/usr/local/mysql/data
    
    ##添加mysqld系统服务
    cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
    systemctl daemon-reload
    systemctl start mysqld.service
    systemctl enable mysqld >/dev/null
    
    ##添加mysql的登录密码
    function mima {
    passwd=$1
    /usr/bin/expect -EOF
    spawn mysqladmin -u root -p password $passwd
    expect "Enter" {send "\n"}
    expect eof
    EOF
    }
    mima "abc123"
    
    ##授权远程登录
    function qwe {
    /usr/bin/expect -EOF
    spawn mysql -u root -p
    expect "Enter" {send "abc123\n"}
    expect "mysql" {send "grant all privileges on *.* to 'root'@'%' identified by 'abc123';\n"}
    expect "mysql" {send "flush privileges;\n"}
    expect "mysql" {send "show databases;\n"}
    expect "mysql" {send "quit\n"}
    expect eof
    EOF
    }
    qwe
    ###############PHP###############
    ##安装环境依赖包
    yum -y install gd \
    
    libjpeg libjpeg-devel \
    
    libpng libpng-devel \
    
    freetype freetype-devel \
    
    libxml2 libxml2-devel \
    
    zlib zlib-devel \
    
    curl curl-devel \
    
    openssl openssl-devel
    
    ##编译安装
    cd /opt
    tar jxvf php-7.1.10.tar.bz2
    cd ./php-7.1.10/
    ./configure \
    
    --prefix=/usr/local/php \
    
    --with-mysql-sock=/usr/local/mysql/mysql.sock \
    
    --with-mysqli \
    
    --with-zlib \
    
    --with-curl \
    
    --with-gd \
    
    --with-jpeg-dir \
    
    --with-png-dir \
    
    --with-freetype-dir \
    
    --with-openssl \
    
    --enable-fpm \
    
    --enable-mbstring \
    
    --enable-xml \
    
    --enable-session \
    
    --enable-ftp \
    
    --enable-pdo \
    
    --enable-tokenizer \
    
    --enable-zip
    
    make -j 2  make install
    
    ##路径优化
    ln -s /usr/local/php/bin/* /usr/local/bin/
    ln -s /usr/local/php/sbin/* /usr/local/sbin/
    
    ##调整PHP配置文件
    ##PHP有三个配置文件
    ##php.ini(主配置文件)
    cp /opt/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini
    sed -i '1170c mysqli.default_socket = /usr/local/mysql/mysql.sock' /usr/local/php/lib/php.ini
    sed -i '939c date.timezone = Asia/Shanghai' /usr/local/php/lib/php.ini
    
    php -m
    ##php-fpm.conf(进程服务配置文件)
    cd /usr/local/php/etc
    cp php-fpm.conf.default php-fpm.conf
    sed -i '17c pid = run/php-fpm.pid' /usr/local/php/etc/php-fpm.conf
    ##www.conf(扩展配置文件)
    cd /usr/local/php/etc/php-fpm.d
    cp www.conf.default www.conf
    
    ##启动php-fpm
    cd /usr/local/php/sbin/
    php-fpm -c /usr/local/php/lib/php.ini
    
    ##配置Nginx支持PHP解析
    sed -i '65c location ~ \.php$ {' /usr/local/nginx/conf/nginx.conf
    sed -i '66c root html;' /usr/local/nginx/conf/nginx.conf
    sed -i '67c fastcgi_pass 127.0.0.1:9000;' /usr/local/nginx/conf/nginx.conf
    sed -i '68c fastcgi_index index.php;' /usr/local/nginx/conf/nginx.conf
    sed -i '69c fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;' /usr/local/nginx/conf/nginx.conf
    sed -i '70c include fastcgi_params;' /usr/local/nginx/conf/nginx.conf
    sed -i '71c }' /usr/local/nginx/conf/nginx.conf
    
    ##验证PHP测试页和验证数据库工作是否正常
    
    cat > /usr/local/nginx/html/index.php EOF
    ?php
    phpinfo();
    ?>
    EOF

    到此这篇关于使用shell脚本一键部署LNMP架构的方法的文章就介绍到这了,更多相关shell脚本部署LNMP架构内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • 使用shell脚本安装lnmp的方法步骤
    • 一个简洁的全自动安装LNMP服务器环境的Shell脚本分享
    • 阿里云主机一键安装lamp、lnmp环境的shell脚本分享
    上一篇:Shell $?获取函数返回值或者上一个命令的退出状态
    下一篇:Linux中自定义shell脚本启动jar包的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    使用shell脚本一键部署LNMP架构的方法 使用,shell,脚本,一键,部署,