Skip to content

Instantly share code, notes, and snippets.

@jk2K
Created July 14, 2019 16:20
Show Gist options
  • Save jk2K/c6dfd87f2eeaa5deb12e48edb0d7af65 to your computer and use it in GitHub Desktop.
Save jk2K/c6dfd87f2eeaa5deb12e48edb0d7af65 to your computer and use it in GitHub Desktop.

Revisions

  1. jk2K created this gist Jul 14, 2019.
    126 changes: 126 additions & 0 deletions ubuntu_install_php.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,126 @@
    #!/bin/bash

    function get_filename_from_url() {
    download_url=$1
    file_with_query_params=$(echo "${download_url##*/}")
    file=$(echo "${file_with_query_params%%\?*}")
    echo ${file}
    }

    php_download_url='http://xx.com/php-7.3.7.tgz'
    php_filename=$(get_filename_from_url ${php_download_url})
    php_filename_no_ext=$(echo "${php_filename%.*}")
    echo ${php_filename}
    echo ${php_filename_no_ext}

    # 依赖 zlib libjpeg freetype curl libiconv zlib-devel libxml2-devel libjpeg-devel freetype-devel gd-devel curl-devel libxslt libxslt-devel libzip rsync

    function download_package()
    {
    software_name=$1
    download_url=$2
    filename=$3
    # 可能不存在的变量得放最后
    local_archive_path=$4

    if [[ -z "${local_archive_path}" ]]; then
    # 非本地安装
    cd /export/servers
    #download
    curl ${download_url} --output ${filename}
    if [[ $? -eq 0 ]]; then
    echo -e "\033[42m ######Download ${software_name} Successful###### \033[0m"
    else
    echo -e "\033[31m ######Download ${software_name} Error,Pls Check!!!###### \033[0m"
    exit
    fi
    else
    # 本地安装
    download_url=${local_archive_path}
    filename=$(get_filename_from_url ${download_url})
    filename_no_ext=$(echo "${filename%.*}")
    cp ${local_archive_path} /export/servers
    fi
    }

    function check_or_extract()
    {
    software_name=$1
    download_url=$2
    filename=$3
    # 可能不存在的变量得放最后
    local_archive_path=$4

    ls /export/servers | grep ${software_name}
    if [[ $? -eq 0 ]]; then
    echo -e "\033[31m ######${software_name} Already Installed,Pls Check!!!###### \033[0m"
    exit
    else
    echo -e "\033[42m ######${software_name} NOT Installed,Begin Install###### \033[0m"
    fi
    echo -e "\033[42m ######Start Download ${software_name}###### \033[0m"
    cd /export/servers

    #download python
    download_package ${software_name} ${download_url} ${filename} ${local_archive_path}

    #untar python
    tar xzf ${filename};
    if [[ $? -eq 0 ]]; then
    echo -e "\033[42m ######unTar ${software_name} Successful###### \033[0m"
    else
    echo -e "\033[31m ######unTar ${software_name} Error,Pls Check!!!###### \033[0m"
    exit
    fi
    }

    install_php() {
    software_name="php-7.3"
    filename=${php_filename}
    filename_no_ext=${php_filename_no_ext}
    download_url=${php_download_url}
    local_archive_path=""
    install_prefix="/export/servers/${software_name}"

    check_or_extract ${software_name} ${download_url} ${filename} ${local_archive_path}

    #configure
    cd "/export/servers/${filename_no_ext}"
    ./configure --prefix=${install_prefix} \
    --with-fpm-user=admin \
    --with-fpm-group=admin \
    --enable-fpm \
    --with-curl \
    --with-gd \
    --with-jpeg-dir \
    --with-png-dir \
    --with-freetype-dir \
    --with-webp-dir \
    --with-zlib \
    --with-pdo-mysql \
    --with-openssl \
    --with-libdir=lib64 \
    --enable-mbstring \
    --enable-simplexml
    #sudo make, 多核加速编译
    sudo make -j nproc
    #sudo make install
    sudo make install

    # copy php.ini
    sudo cp php.ini-production ${install_prefix}/lib/php.ini
    # copy php-fpm.conf
    sudo cp ${install_prefix}/etc/php-fpm.conf.default ${install_prefix}/etc/php-fpm.conf
    # copy php-fpm.d/www.conf
    sudo cp ${install_prefix}/etc/php-fpm.d/www.conf.default ${install_prefix}/etc/php-fpm.d/www.conf
    # change listen to unix socket, set permissions for unix socket
    sed -i 's#listen = 127.0.0.1:9000#listen = /dev/shm/php-fcgi.sock#' ${install_prefix}/etc/php-fpm.d/www.conf
    sed -i 's#;listen.owner = admin#listen.owner = admin#' ${install_prefix}/etc/php-fpm.d/www.conf
    sed -i 's#;listen.group = admin#listen.group = admin#' ${install_prefix}/etc/php-fpm.d/www.conf

    #Check git Version
    sudo /export/servers/${software_name}/sbin/php-fpm
    /export/servers/${software_name}/sbin/php-fpm -v
    }

    install_php