zoukankan      html  css  js  c++  java
  • 使用shell脚本一键部署LNMP架构

    此文转载自:https://blog.csdn.net/weixin_51432789/article/details/112548821#commentBox
    #/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 "
    "}
    expect eof
    EOF
    }
    mima "abc123"
    
    ##授权远程登录
    function qwe {
    /usr/bin/expect <<-EOF
    spawn mysql -u root -p
    expect "Enter" {send "abc123
    "}
    expect "mysql" {send "grant all privileges on *.* to 'root'@'%' identified by 'abc123';
    "}
    expect "mysql" {send "flush privileges;
    "}
    expect "mysql" {send "show databases;
    "}
    expect "mysql" {send "quit
    "}
    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
    
       

    更多内容详见微信公众号:Python测试和开发

    Python测试和开发

  • 相关阅读:
    Leetcode 18. 4Sum
    Leetcode 15. 3Sum
    Leetcode 16. 3Sum Closest
    String类型的理解
    求字符串中某个字符出现的次数
    用StringBuilder来实现经典的反转问题
    String/StringBuilder 类 用对象数组实现登录注册功能
    String/StringBuilder 类 统计字符串中字符出现的次数
    String/StringBuilder 类 判断QQ号码
    C++ 面向对象: I/O对象的应用
  • 原文地址:https://www.cnblogs.com/phyger/p/14277507.html
Copyright © 2011-2022 走看看