這個腳本現在只通過了centos7測試,最好自己下載好安裝包放到/src目錄下,當然也可以自動下載,但是Php的服務器速度非常慢,而且有斷掉的可能,所以推薦自己下載放入/src文件夾,文件夾內不要放其他的文件,安裝的時候會刪除安裝包以外的文件,lamp.sh文件可以放進去,已經排除
一定注意版本號,因為腳本里內置的都是精確的版本號,不符合將會自動下載
安裝包版本:mariadb-10.3.13.tar.gz ,php-7.3.2.tar.bz2 ,httpd-2.4.38.tar.bz2 , wordpress-5.0.3-zh_CN.tar.gz apr-1.6.5.tar.bz2 apr-util-1.6.1.tar.bz2
httpd 通過service httpd 操作 開機啟動已放入/etc/rc.local
php-fpm 通過service php-fpm 操作 開機啟動項通過chkconfig操作
mysql通過service mysqld操作 開機啟動項通過chkconfig操作
腳本下載地址:http://47.101.41.235/script/lamp.sh
#!/bin/bash #Filename: lamp.sh #Revion: 1.0 #Language: bash shell #Date: 2019-03-06 #Author: Yong #QQ: 691475087 #blog: www.linux123.tech #Description: 一鍵安裝lamp,基於php-fpm的wordpress,所有軟件包為當前最新版 #因為網絡原因,下載php-7.3.2非常的慢,所有腳本中所有的安裝包都是提前准備保存在/src目錄 #mariadb-10.3.13.tar.gz ,php-7.3.2.tar.bz2 ,httpd-2.4.38.tar.bz2 , wordpress-5.0.3-zh_CN.tar.gz apr-1.6.5.tar.bz2 apr-util-1.6.1.tar.bz2 lease=`cat /etc/centos-release |sed 's/.*ease \([0-9]\)..*/\1/'` [ "$lease" == "7" ] || { echo "本腳本,僅適用於centos7" ; exit 9 ; } CPUS=`lscpu|awk -F" " '/^CPU\(s\)/{print $2}'` #安裝編譯所需要的所有組件 fun_yum(){ echo "開始重置Yum源" rm -f /etc/yum.repos.d/C* cat> /etc/yum.repos.d/base.repo <<OK [base] name=CentOS-7 - Base - mirrors.aliyun.com failovermethod=priority baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64/ http://mirrors.aliyuncs.com/centos/7/os/x86_64/ http://mirrors.cloud.aliyuncs.com/centos/7/os/x86_64/ gpgcheck=1 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 [epel] name=Extra Packages for Enterprise Linux 7 - \$basearch baseurl=http://mirrors.aliyun.com/epel/7/\$basearch failovermethod=priority enabled=1 gpgcheck=0 OK yum clean all &> /dev/null yum repolist &> /dev/null [ $? -eq 0 ] && echo "yum配置成功" echo "yum安裝組件中,耗時較長...." yum groupinstall -y "development tools" &> /dev/null yum install -y wget bzip2 gnutls-devel ncurses-devel cmake ibaio-devel openssl-devel libxml2-devel mariadb-devel bison bison-devel zlib-devel openssl-devel libcurl-devel libarchive-devel boost-devel gcc gcc-c++ libevent-devel pcre-devel apr-devel apr-util-devel bzip2-devel libmcrypt-devel &> /dev/null } fun_prepare(){ #環境配置 systemctl stop firewalld &> /dev/null systemctl disable firewalld &> /dev/null systemctl status firewalld &> /dev/null [ $? -eq 3 ] && echo "防火牆關閉成功"||echo "防火牆關閉失敗" setenforce 0 &> /dev/null sed -ri 's/^(SELINUX=).*/\1disabled/' /etc/selinux/config [[ `getenforce` == "Enforcing" ]] &&echo "SELINUX關閉失敗" ||echo "SELINUX關閉成功" [ -d "/src" ] || mkdir /src cd /src lists=("mariadb-10.3.13.tar.gz" "php-7.3.2.tar.bz2" "httpd-2.4.38.tar.bz2" "wordpress-5.0.3-zh_CN.tar.gz" "apr-1.6.5.tar.bz2" "apr-util-1.6.1.tar.bz2") #檢查安裝包 echo "檢查安裝包是否存在.." for i in ${lists[@]};do if [[ -f "$i" ]] ; then echo "$i OK" else echo "$i 不存在,啟動自動下載..." case $i in mariadb-10.3.13.tar.gz) wget -O /src/mariadb-10.3.13.tar.gz http://ftp.osuosl.org/pub/mariadb//mariadb-10.3.13/source/mariadb-10.3.13.tar.gz [ $? -eq 0 ] && echo " mariadb-10.3.13.tar.gz 下載成功" || { echo " mariadb-10.3.13.tar.gz 下載失敗,請手動下 載到/src,注意版本匹配" ; exit 5 ; } ;; php-7.3.2.tar.bz2) wget -O /src/php-7.3.2.tar.bz2 http://jp2.php.net/distributions/php-7.3.2.tar.bz2 [ $? -eq 0 ] && echo " php-7.3.2.tar.bz2 下載成功" || { echo " php-7.3.2.tar.bz2 下載失敗,請手動下載到/src, 注意版本匹配" ; exit 5 ; } ;; httpd-2.4.38.tar.bz2) wget -O /src/httpd-2.4.38.tar.bz2 https://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.38.tar.bz2 [ $? -eq 0 ] && echo " httpd-2.4.38.tar.bz2 下載成功" || { echo " httpd-2.4.38.tar.bz2 下載失敗,請手動下載到 /src,注意版本匹配" ; exit 5 ; } ;; wordpress-5.0.3-zh_CN.tar.gz) wget -O /src/wordpress-5.0.3-zh_CN.tar.gz https://cn.wordpress.org/latest-zh_CN.tar.gz [ $? -eq 0 ] && echo " wordpress-5.0.3-zh_CN.tar.gz 下載成功" || { echo " wordpress-5.0.3-zh_CN.tar.gz 下載失 敗,請手動下載到/src,注意版本匹配" ; exit 5 ; } ;; apr-1.6.5.tar.bz2) wget -O /src/apr-1.6.5.tar.bz2 https://www-eu.apache.org/dist//apr/apr-1.6.5.tar.bz2 [ $? -eq 0 ] && echo " apr-1.6.5.tar.bz2 下載成功" || { echo " apr-1.6.5.tar.bz2 下載失敗,請手動下載到/src>,注意版本 匹配" ; exit 5 ; } ;; apr-util-1.6.1.tar.bz2) wget -O /src/apr-util-1.6.1.tar.bz2 https://www-eu.apache.org/dist//apr/apr-util-1.6.1.tar.bz2 [ $? -eq 0 ] && echo " apr-util-1.6.1.tar.bz2 下載成功" || { echo " apr-util-1.6.1.tar.bz2 下載失敗,請手動下 載到/src>,注意版本匹配" ; exit 5 ; } ;; *) echo "程序變量錯誤,請檢查lists變量" ;; esac fi done echo "校驗安裝包.." cat > shapkg <<EOF 810de74ea3ee59ff3205f2a46436fc1dcce4e4ab httpd-2.4.38.tar.bz2 08467885412184e99b835732913d445fd2c4b1b3 mariadb-10.3.13.tar.gz 32c5c8aeb7b02db89bdb8b2c5bc1012e7ed9a32a wordpress-5.0.3-zh_CN.tar.gz 4cc73bc36ca697419f555476f2fc1c63df6069f4 apr-util-1.6.1.tar.bz2 6fdedcd21de9da806d0a01769b8be7ba0c495145 apr-1.6.5.tar.bz2 cc5a9e43261d2e71bdffca8f150bf08c2ba0f4f2 php-7.3.2.tar.bz2 EOF sha1sum -c shapkg [ $? -eq 0 ] && echo "安裝包校驗通過" || { echo "安裝包校驗失敗,請手動下載安裝包到/src目錄,注意版本號" ; exit ; } echo "解包中...,將自動刪除/src目錄下所有非安裝包文件" rm -rf `ls |grep -v ".gz"|grep -v ".bz2" | grep -v "lamp.sh"` for pkg in `ls *.{gz,bz2}`;do echo "開始解壓$pkg...." tar xf $pkg echo "$pkg解壓完成" done } fun_mysql(){ #創建數據庫系統賬號 cd /src/mariadb-10.3.13 echo "開始編譯MYSQL..." cmake . \ -DCMAKE_INSTALL_PREFIX=/app/mysql \ -DMYSQL_DATADIR=/mysqldb/ \ -DSYSCONFDIR=/etc \ -DMYSQL_USER=mysql \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DWITH_SSL=system \ -DWITH_ZLIB=system \ -DWITH_LIBWRAP=0 \ -DMYSQL_UNIX_ADDR=/app/mysql/mysql.sock \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_DEBUG=0 \ -DWITHOUT_MROONGA_STORAGE_ENGINE=1 &> /dev/null make -j$CPUS &> /dev/null echo "MYSQL編譯安裝開始..." make install &> /dev/null echo "MYSQL編譯完成" id mysql &> /dev/null || useradd -r -s /sbin/nologin mysql #配置變量路徑 echo 'PATH=/app/mysql/bin/:$PATH' > /etc/profile.d/mysql.sh source /etc/profile.d/mysql.sh #安裝數據庫 echo "開始安裝數據庫文件" /app/mysql/scripts/mysql_install_db --datadir=/mysqldb/ --user=mysql &> /dev/null [ -d /mysqldb ] && echo "安裝數據庫成功" || { echo "安裝數據庫失敗..退出,請檢查" ; exit 8 ; } #配置文件 sed -ri 's/^(datadir=).*/\1\/mysqldb/' /etc/my.cnf sed -ri 's/^(socket=).*/\1\/app\/mysql\/mysql.sock/' /etc/my.cnf #mysql權限設置 chown -R mysql.mysql /mysqldb chgrp -R mysql /app/mysql/ chmod 775 /app/mysql/ #准備啟動腳本 cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld chkconfig --add mysqld chkconfig mysqld on service mysqld start ss -ntl |awk -F" " '{print $4}'|grep ^:::3306$ &> /dev/null [ $? -eq 0 ] && echo "MYSQL服務正常啟動" || echo "MYSQL服務啟動失敗.." echo "執行數據庫安全策略.." mysql -u root -e "UPDATE mysql.user SET Password=PASSWORD('123123') WHERE User='root';" mysql -u root -e "DELETE FROM mysql.user WHERE User='';" mysql -u root -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');" mysql -u root -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';" mysql -u root -e "FLUSH PRIVILEGES;" echo "數據庫安全策略執行完畢" echo "創建wordpress數據庫" mysql -h127.0.0.1 -uroot -p123123 -e "CREATE DATABASE wpdb;" mysql -h127.0.0.1 -uroot -p123123 -e "CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'centos';" mysql -h127.0.0.1 -uroot -p123123 -e "GRANT ALL ON wpdb.* TO 'wpuser'@'localhost';" echo "wordpress數據庫創建完成" } fun_httpd(){ cd /src echo "HTTPD准備編譯..." cp -av apr-util-1.6.1 httpd-2.4.38/srclib/apr-util &> /dev/null cp -av apr-1.6.5 httpd-2.4.38/srclib/apr &> /dev/null cd httpd-2.4.38 echo "HTTPD開始編譯..." ./configure --prefix=/app/httpd24 \ --enable-so \ --enable-ssl \ --enable-cgi \ --enable-rewrite \ --with-zlib \ --with-pcre \ --with-included-apr \ --enable-modules=most \ --enable-mpms-shared=all \ --with-mpm=prefork &> /dev/null make -j$CPUS &> /dev/null make install &> /dev/null [ $? -eq 0 ] && echo "HTTPD編譯完成" ||echo "HTTPD編譯故障" id apache &> /dev/null || useradd -r -s /sbin/nologin apache echo '修改配置文件' sed -ri 's/^(User) .*/\1 apache/' /app/httpd24/conf/httpd.conf sed -ri 's/^(Group) .*/\1 apache/' /app/httpd24/conf/httpd.conf sed -ri 's/^\#(Serverame)/\1/' /app/httpd24/conf/httpd.conf sed -ri 's/^#(LoadModule proxy_module modules)/\1/' /app/httpd24/conf/httpd.conf sed -ri 's/^#(LoadModule proxy_fcgi_module modules)/\1/' /app/httpd24/conf/httpd.conf sed -ri 's/(DirectoryIndex )index.html$/\1 index.php index.html/' /app/httpd24/conf/httpd.conf sed -ri 's/#(ServerName)/\1/' /app/httpd24/conf/httpd.conf echo "AddType application/x-httpd-php .php" >> /app/httpd24/conf/httpd.conf echo "AddType application/x-httpd-php-source .phps" >> /app/httpd24/conf/httpd.conf echo "ProxyRequests Off" >> /app/httpd24/conf/httpd.conf echo "ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/httpd24/htdocs/$1" >> /app/httpd24/conf/httpd.conf echo "PATH=/app/httpd24/bin:$PATH" > /etc/profile.d/http24.sh source /etc/profile.d/http24.sh echo "/app/httpd24/apachectl" >> /etc/rc.local echo "配置文件修改完畢,啟動服務..." apachectl cp /app/httpd24/bin/apachectl /etc/rc.d/init.d/httpd ss -ntl |awk -F" " '{print $4}'|grep ^:::80$ &> /dev/null [ $? -eq 0 ] && echo "HTTP服務正常啟動" || echo "HTTP服務啟動失敗.." } fun_php(){ echo "開始編譯Php..." cd /src/php-7.3.2 ./configure --prefix=/app/php \ --enable-mysqlnd \ --with-mysqli=mysqlnd \ --with-openssl \ --with-pdo-mysql=mysqlnd \ --enable-mbstring \ --with-freetype-dir \ --with-jpeg-dir \ --with-png-dir \ --with-zlib \ --with-libxml-dir=/usr \ --enable-xml \ --enable-sockets \ --enable-fpm \ --with-config-file-path=/etc \ --with-config-file-scan-dir=/etc/php.d \ --enable-maintainer-zts \ --disable-fileinfo &> /dev/null make -j$CPUS &> /dev/null make install &> /dev/null echo "PHP編譯完成" echo "開始制作配置文件.." cp /src/php-7.3.2/php.ini-production /etc/php.ini cp /src/php-7.3.2/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chmod +x /etc/init.d/php-fpm cd /app/php/etc cp php-fpm.conf.default php-fpm.conf cp php-fpm.d/www.conf.default php-fpm.d/www.conf sed -ri 's/^(pdo_mysql.default_socket=)/\1\/app\/mysql\/mysql.sock/' /etc/php.ini sed -ri 's/^(mysqli.default_socket =)/\1 \/app\/mysql\/mysql.sock/' /etc/php.ini echo "配置文件制作完成,開始啟動php-fpm服務" chkconfig --add php-fpm chkconfig php-fpm on service php-fpm start ss -ntl |grep "\b127.0.0.1:9000\b" &> /dev/null [ $? -eq 0 ] && echo "PHP啟動成功" || echo "PHP啟動失敗 " } fun_wordpress(){ echo "開始安裝wordpress.." cd /src/wordpress rm -f /app/httpd24/htdocs/index.html mv * /app/httpd24/htdocs/ cd /app/httpd24/htdocs cp wp-config-sample.php wp-config.php sed -ri 's/database_name_here/wpdb/' /app/httpd24/htdocs/wp-config.php sed -ri 's/username_here/wpuser/' /app/httpd24/htdocs/wp-config.php sed -ri 's/password_here/centos/' /app/httpd24/htdocs/wp-config.php echo "wordpress安裝完畢..." } fun_yum fun_prepare fun_mysql fun_httpd fun_php fun_wordpress echo "一鍵lamp腳本運行完畢" echo "數據庫root賬號密碼123123,wordpress使用數據庫wpdb,登陸數據庫名wpuser,密碼centos" echo "謝謝使用" unset CPUS lease