linux下自动化部署apache + php环境

来源:互联网 发布:面包板是做单片机的吗 编辑:程序博客网 时间:2024/06/02 11:52

       自己写的一个关于apache+php自动化部署的bash shell脚本,可以一键执行。主要实现内容如下:

  • centos 基本工具安装
  • apache依赖包apr,apr-util,par-iconv安装 
  • openssl安装
  • apache安装
  • zlip,zip,freetype, xpm, libjpeg, libpng gd, pcre, pecl等扩展库安装
  • php安装
  • apache 配置
  • apache服务自启动配置
  • ssl证书配置
  • php配置
  • iptables配置

        以下是具体的脚本实现过程;

#!/bin/sh#centos 基本工具安装#apache依赖包apr,apr-util,par-iconv安装 #openssl安装#apache安装#zlip,zip,freetype, xpm, libjpeg, libpng gd, pcre, pecl等扩展库安装#php安装#apache 配置#apache服务自启动配置#ssl证书配置#php配置#iptables配置echo "#####################################################################脚本功能实现所需的软件安装#####################################################################"yum -y install gcc gcc-c++yum -y install pcre-develyum -y install cmakeyum -y install ncurses-develyum -y install libxml2 libxml2-develyum -y install libpng-develyum -y install freetype freetype-develyum -y install libjpeg-turbo libjpeg-turbo-develyum -y install mysql mysql-serveryum -y install curl curl-develyum -y install mlocateyum -y install jpegsrcyum -y install libpngyum -y install libXpm-develyum -y install libtoolyum -y install unzip#删除已有的日志输出文件rm -rf /home/install.logcd softwareecho "#####################################################################安装apache依赖包apr,apr-util,apr-iconv#####################################################################"#安装apr#tar xvzf apr-1.5.2.tar.gzcd apr-1.5.2./configure --prefix=/usr/local/aprmake && make installmake clean && make distcleancd ../#安装apr-util#tar xvzf apr-util-1.5.4.tar.gz cd apr-util-1.5.4./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/make && make installmake clean && make distcleancd ../#安装apr-iconv#tar xvzf apr-iconv-1.2.1.tar.gzcd apr-iconv-1.2.1./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr/make && make installmake clean && make distcleancd ../echo "#####################################################################安装openssl#####################################################################"#安装openssl#tar -xzvf openssl-1.0.2j.tar.gzcd openssl-1.0.2j./config -fPIC  enable-sharedmake dependmake  && make installmake clean && make distcleancd ../#openssl类库做软连接ln -s /usr/local/ssl/lib/*.so.* /usr/lib64ln -s /usr/local/ssl/lib/*.so.* /usr/libecho "#####################################################################安装pcre#####################################################################"#安装pcreunzip -o pcre2-10.22.zipcd pcre2-10.22./configure --prefix=/usr/local/pcre2make && make installmake clean && make distcleancd ../echo "#####################################################################安装apache#####################################################################"#安装apache,同时绑定编译apr, apr-util, apr-iconv, ssl模块,后续加上--with-pcre=/usr/local/bin/pcre-config #tar xvzf httpd-2.4.23.tar.gz cd httpd-2.4.23./configure \    --prefix=/usr/local/httpd \    --with-apr=/usr/local/apr \    --with-apr-util=/usr/local/apr-util \    --with-apr-iconv=/usr/local/apr-iconv \    --with-ssl=/usr/local/ssl \    --with-pcre=/usr/bin/pcre-config \    --enable-so \    --enable-ssl \    --enable-mods-shared=all \    --enable-cache \    --enable-disk-cache \    --enable-file-cache \    --enable-mem-cache     make && make installmake clean && make distcleancd ../    echo "#####################################################################安装gd依赖库#####################################################################"#安装zlibtar -xzvf zlib-1.2.8.tar.gzcd zlib-1.2.8./configure make && make installmake clean && make distcleancd ../#安装libjpegtar -xzvf jpegsrc.v9b.tar.gzcd jpeg-9b./configure \--prefix=/usr/lib64 \--enable-shared \--enable-static make && make instllmake clean && make distcleanlibtool --finish /usr/local/jpeg/libcd ../#安装libpngtar -xzvf libpng-1.6.26.tar.gzcd libpng-1.6.26./configure \--enable-shared \--enable-static make && make installmake clean && make distcleancd ../#安装freetype2tar -xzvf freetype-2.7.tar.gzcd freetype-2.7./configure \--prefix=/usr/lib64 \--enable-shared \--enable-static make && make install make clean && make distcleancd ../echo "#####################################################################安装gd扩展#####################################################################"#安装gdyum install libXpm-develtar -xzvf libgd-2.2.3.tar.gzcd libgd-2.2.3./configure \--prefix=/usr/lib64 \--with-jpeg=/usr/lib64 \--with-png=/usr.lib64 \--with-zlib \--with-freetype=/usr/lib64 \--enable-shared \--enable-static make && make installmake clean && make distcleancd ../echo "#####################################################################安装php#####################################################################"#安装phptar xvzf php-7.0.13.tar.gzcd php-7.0.13./configure \--prefix=/usr/local/php \--with-apxs2=/usr/local/httpd/bin/apxs \--with-mysqli=mysqlnd \--with-pdo-mysql=mysqlnd \--with-png-dir=/usr/lib64 \--with-jpeg-dir=/usr/lib64 \--with-freetype-dir=/usr/lib64 \--with-zlib-dir==/usr/lib64 \--with-xpm-dir=/usr/lib64/ \--with-gd=/usr/lib64 \--with-openssl \--with-curl \--with-config-file-path=/usr/local/php/lib \--enable-calendar \--enable-mbstring \--enable-sockets \--enable-xml \--enable-json \--enable-pdo \--enable-libxml \--enable-simplexml \--enable-xmlreader \--enable-xmlwritermake && make installmake clean && make distclean#拷贝php.ini 到指定路径cp php.ini-production /usr/local/php/lib/php.inicd ../echo "#####################################################################安装php pecl#####################################################################"#安装zip扩展/usr/local/php/bin/pecl install zipecho 'extension=zip.so' >>  /usr/local/php/lib/php.ini#安装v8 js引擎扩展#/usr/local/php/bin/pecl install v8js#echo 'extension=v8js.so' >>  /usr/local/php/lib/php.ini#安装html_parse解析器扩展#/usr/local/php/bin/pecl install html_parse#echo 'extension=html_parse.so' >>  /usr/local/php/lib/php.ini#安装date_time日期扩展#/usr/local/php/bin/pecl install date_time#echo 'extension=date_time.so' >>  /usr/local/php/lib/php.iniecho "##############################################################apache配置############################################################################"#添加php解析文件头echo 'AddType application/x-httpd-php .php' >> /usr/local/httpd/conf/httpd.conf#启用重写模块sed -i 's:#LoadModule rewrite_module modules/mod_rewrite.so:LoadModule rewrite_module modules/mod_rewrite.so:' /usr/local/httpd/conf/httpd.conf#启用压缩模块sed -i 's:#LoadModule deflate_module modules/mod_deflate.so:LoadModule deflate_module modules/mod_deflate.so:' /usr/local/httpd/conf/httpd.conf#启用页面缓存模块sed -i 's:#LoadModule expires_module modules/mod_expires.so:LoadModule expires_module modules/mod_expires.so:' /usr/local/httpd/conf/httpd.conf#启用页面内存缓存模块sed -i 's:#LoadModule cache_module modules/mod_cache.so:LoadModule cache_module modules/mod_cache.so:' /usr/local/httpd/conf/httpd.conf#启用页面文件缓存模块sed -i 's:#LoadModule file_cache_module modules/mod_file_cache.so:LoadModule file_cache_module modules/mod_file_cache.so:' /usr/local/httpd/conf/httpd.conf#启用磁盘缓存模块sed -i 's:#LoadModule cache_disk_module modules/mod_cache_disk.so:LoadModule cache_disk_module modules/mod_cache_disk.so:' /usr/local/httpd/conf/httpd.conf#启用基于内存的缓冲管理器模块sed -i 's:#LoadModule socache_memcache_module modules/mod_socache_memcache.so:LoadModule socache_memcache_module modules/mod_socache_memcache.so:' /usr/local/httpd/conf/httpd.conf#禁用显示apache版本信息sed -i 's:LoadModule version_module modules/mod_version.so:#LoadModule version_module modules/mod_version.so:' /usr/local/httpd/conf/httpd.conf#启用url自动修正模块sed -i 's:#LoadModule speling_module modules/mod_speling.so:LoadModule speling_module modules/mod_speling.so:' /usr/local/httpd/conf/httpd.conf#配置apache压缩规则echo '<ifmodule mod_deflate.c>                                ' >> /usr/local/httpd/conf/httpd.confecho '    #设定压缩率,压缩率1 -9, 6是建议值,不能太高,消耗过多的内存,影响服务器性能  ' >> /usr/local/httpd/conf/httpd.confecho '    DeflateCompressionLevel 6  ' >> /usr/local/httpd/conf/httpd.conf        ' >> /usr/local/httpd/conf/httpd.confecho '                                            ' >> /usr/local/httpd/conf/httpd.confecho '    AddOutputFilterByType DEFLATE text/plain                    ' >> /usr/local/httpd/conf/httpd.confecho '    AddOutputFilterByType DEFLATE text/html                    ' >> /usr/local/httpd/conf/httpd.confecho '    AddOutputFilterByType DEFLATE text/php                    ' >> /usr/local/httpd/conf/httpd.confecho '    AddOutputFilterByType DEFLATE text/xml                    ' >> /usr/local/httpd/conf/httpd.confecho '    AddOutputFilterByType DEFLATE text/css                    ' >> /usr/local/httpd/conf/httpd.confecho '    AddOutputFilterByType DEFLATE text/javascript                    ' >> /usr/local/httpd/conf/httpd.confecho '    AddOutputFilterByType DEFLATE application/xhtml+xml                ' >> /usr/local/httpd/conf/httpd.confecho '    AddOutputFilterByType DEFLATE application/xml                    ' >> /usr/local/httpd/conf/httpd.confecho '    AddOutputFilterByType DEFLATE application/rss+xml                ' >> /usr/local/httpd/conf/httpd.confecho '    AddOutputFilterByType DEFLATE application/atom_xml                ' >> /usr/local/httpd/conf/httpd.confecho '    AddOutputFilterByType DEFLATE application/x-javascript            ' >> /usr/local/httpd/conf/httpd.confecho '    AddOutputFilterByType DEFLATE application/x-httpd-php                ' >> /usr/local/httpd/conf/httpd.confecho '    AddOutputFilterByType DEFLATE application/x-httpd-fastphp            ' >> /usr/local/httpd/conf/httpd.confecho '    AddOutputFilterByType DEFLATE application/x-httpd-eruby            ' >> /usr/local/httpd/conf/httpd.confecho '    AddOutputFilterByType DEFLATE image/svg+xml                    ' >> /usr/local/httpd/conf/httpd.confecho '    AddOutputFilterByType DEFLATE application/javascript                ' >> /usr/local/httpd/conf/httpd.confecho '                                            ' >> /usr/local/httpd/conf/httpd.confecho '    #插入过滤器                                    ' >> /usr/local/httpd/conf/httpd.confecho '    SetOutputFilter DEFLATE                            ' >> /usr/local/httpd/conf/httpd.confecho '                                            ' >> /usr/local/httpd/conf/httpd.confecho '    #排除不需要压缩的文件                                ' >> /usr/local/httpd/conf/httpd.confecho '    SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary    ' >> /usr/local/httpd/conf/httpd.confecho '    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip don’t-vary        ' >> /usr/local/httpd/conf/httpd.conf    echo '    SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary                ' >> /usr/local/httpd/conf/httpd.confecho '    SetEnvIfNoCase Request_URI \.avi$ no-gzip dont-vary                ' >> /usr/local/httpd/conf/httpd.confecho '    SetEnvIfNoCase Request_URI \.mov$ no-gzip dont-vary                ' >> /usr/local/httpd/conf/httpd.conf    echo '    SetEnvIfNoCase Request_URI \.mp3$ no-gzip dont-vary                ' >> /usr/local/httpd/conf/httpd.confecho '    SetEnvIfNoCase Request_URI \.mp4$ no-gzip dont-vary                ' >> /usr/local/httpd/conf/httpd.confecho '    SetEnvIfNoCase Request_URI \.rm$ no-gzip dont-vary                ' >> /usr/local/httpd/conf/httpd.confecho '</ifmodule>                                    ' >> /usr/local/httpd/conf/httpd.conf#创建缓存目录mkdir /usr/local/httpd/cache#给缓存目录授权chmod 777 /usr/local/httpd/cache#配置apache缓存机制echo '<IfModule mod_cache.c>            ' >> /usr/local/httpd/conf/httpd.confecho '    CacheDefaultExpire 3600        ' >> /usr/local/httpd/conf/httpd.confecho '    CacheMaxExpire 86400            ' >> /usr/local/httpd/conf/httpd.confecho '    CacheLastModifiedFactor 0.1        ' >> /usr/local/httpd/conf/httpd.confecho '    CacheIgnoreHeaders Set-Cookie        ' >> /usr/local/httpd/conf/httpd.conf echo '    CacheIgnoreCacheControl Off        ' >> /usr/local/httpd/conf/httpd.confecho '                        ' >> /usr/local/httpd/conf/httpd.confecho '    <IfModule mod_disk_cache.c>        ' >> /usr/local/httpd/conf/httpd.confecho '    CacheEnable disk /            ' >> /usr/local/httpd/conf/httpd.confecho '    CacheRoot   /usr/local/httpd/cache    ' >> /usr/local/httpd/conf/httpd.confecho '    CacheDirLevels 5            ' >> /usr/local/httpd/conf/httpd.confecho '    CacheDirLength 5            ' >> /usr/local/httpd/conf/httpd.confecho '    CacheMaxFileSize 1048576        ' >> /usr/local/httpd/conf/httpd.confecho '    CacheMinFileSize 10            ' >> /usr/local/httpd/conf/httpd.confecho '    </IfModule>                ' >> /usr/local/httpd/conf/httpd.confecho '                        ' >> /usr/local/httpd/conf/httpd.confecho '    <IfModule mod_mem_cache.c>        ' >> /usr/local/httpd/conf/httpd.confecho '    CacheEnable mem /            ' >> /usr/local/httpd/conf/httpd.confecho '    MCacheMaxObjectCount 20000        ' >> /usr/local/httpd/conf/httpd.confecho '    MCacheMaxObjectSize 1048576        ' >> /usr/local/httpd/conf/httpd.confecho '    MCacheMinObjectSize 10        ' >> /usr/local/httpd/conf/httpd.confecho '    MCacheMaxStreamingBuffer 65536    ' >> /usr/local/httpd/conf/httpd.confecho '    MCacheRemovalAlgorithm GDSF        ' >> /usr/local/httpd/conf/httpd.conf  echo '    MCacheSize 131072            ' >> /usr/local/httpd/conf/httpd.confecho '    </IfModule>                ' >> /usr/local/httpd/conf/httpd.confecho '</IfModule>                ' >> /usr/local/httpd/conf/httpd.conf#配置访问权限sed -i 's/AllowOverride None/AllowOverride All/' /usr/local/httpd/conf/httpd.conf#提供默认页面sed -i 's/DirectoryIndex index.html/DirectoryIndex index.php/' /usr/local/httpd/conf/httpd.conf#设定serverNamesed -i 's/#ServerName www.example.com:80/ServerName 127.0.0.1:80/' /usr/local/httpd/conf/httpd.conf#提供默认初始页cp  ../index.php /usr/local/httpd/htdocs/echo "##############################################################ssl模块启用############################################################################"#启用ssl模块sed -i 's:#LoadModule ssl_module modules/mod_ssl.so:LoadModule ssl_module modules/mod_ssl.so:' /usr/local/httpd/conf/httpd.confsed -i 's:#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so:LoadModule socache_shmcb_module modules/mod_socache_shmcb.so:' /usr/local/httpd/conf/httpd.confsed -i 's:#Include conf/extra/httpd-ssl.conf:Include conf/extra/httpd-ssl.conf:' /usr/local/httpd/conf/httpd.confecho "##############################################################ssl证书配置和虚拟主机域名配置###########################################################"#拷贝证书到apache指定目录sed -i 's:#SSLCertificateChainFile "/usr/local/httpd/conf/server-ca.crt":SSLCertificateChainFile "/usr/local/httpd/conf/server-ca.crt":' /usr/local/httpd/conf/extra/httpd-ssl.confcp ../ssl/server.key /usr/local/httpd/conf/server.keycp ../ssl/server.crt /usr/local/httpd/conf/server.crtcp ../ssl/server-ca.crt /usr/local/httpd/conf/server-ca.crt#设定ssl虚拟主机的域名sed -i 's/ServerName www.example.com:443/ServerName ioa.cn:443"/' /usr/local/httpd/conf/extra/httpd-ssl.confecho "##############################################################设置apache环境变量#######################################################################"echo 'APACHE_HOME=/usr/local/httpd' >> /etc/profileecho 'PATH=$PATH:$APACHE_HOME/bin/' >> /etc/profileecho 'CLASSPATH=$CLASSPATH:$APACHE_HOME/lib' >> /etc/profilesource /etc/profileecho "##############################################################apache服务自启动配置#######################################################################"#设置apache 服务自启动cp /usr/local/httpd/bin/apachectl /etc/init.d/httpdcd /etc/init.dchmod 755 httpdsed -i '2 i #chkconfig: 2345 10 90\n#description: chkconfig httpd service' /etc/init.d/httpdchkconfig --add httpdchkconfig httpd on echo "##############################################################配置php.ini参数#######################################################################"#配置响应时间sed -i 's/max_execution_time = 30/max_execution_time = 0/' /usr/local/php/lib/php.ini#配置post大小sed -i 's/post_max_size = 8M/post_max_size = 150M/' /usr/local/php/lib/php.ini#配置上传文件大小sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 100M/' /usr/local/php/lib/php.ini#设定错误输出级别sed -i 's:error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT:error_reporting = E_ALL:' /usr/local/php/lib/php.ini#配置phpize环境变量echo 'PHP_HOME=/usr/local/php' >> /etc/profileecho 'PATH=$PATH:$PHP_HOME/bin/' >> /etc/profileecho 'CLASSPATH=$CLASSPATH:$PHP_HOME/lib' >> /etc/profilesource /etc/profile#重启后才能生效service httpd restart echo "##############################################################iptables配置,启用80端口、443端口#######################################################################"iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPTiptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPTservice iptables saveservice iptables restart

0 0