一、环境说明准备
本次使用CentOS5.5、Centos6.5,编译安装Apache2.4.20、Mysql-5.5.48、PHP-5.5.30。
编译PHP以Apache模块方式运行。编译PHP前需要先编译好Apache和Mysql。
1.关闭SELINUX,配置yum源。
setenforce0 sed-i's/SELINUX=enforcing/SELINUX=permissive/g'/etc/selinux/config ##此处使用的是阿里镜像源作为yum源。 mv/etc/yum.repos.d/CentOS-Base.repo/etc/yum.repos.d/CentOS-Base.repo.backup ##下载CentOS5源 wget-O/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-5.repo ##下载CentOS6源 wget-O/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-6.repo ##根据系统下载好对应版本的源后,需要yummakecache yummakecache
2.下载Apache、Mysql、PHP源码包。
下载apr、apr-util、pcre。此三项为Apache2.4安装所需的依赖包。
其中apr、apr-util是Apache可移植运行库。它们为apache提供运行环境,相当于运行JAVA时所需要的JDK/JRE环境。
pcre提供pcre兼容的正则表达式,为apache的rewrite功能提供支持。
wgethttp://apache.fayea.com//apr/apr-1.5.2.tar.gz-O/usr/local/src/apr-1.5.2.tar.gz wgethttp://apache.fayea.com//apr/apr-util-1.5.4.tar.gz-O/usr/local/src/apr-util-1.5.4.tar.gz wget--no-check-certificatehttps://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz-O/usr/local/src/pcre-8.40.tar.gz ##下载Apache-2.4.20 wgethttp://archive.apache.org/dist/httpd/httpd-2.4.20.tar.gz-O/usr/local/src/httpd-2.4.20.tar.gz ##下载Mysql-5.5.48 wget--no-check-certificatehttps://cdn.mysql.com/archives/mysql-5.5/mysql-5.5.48.tar.gz-O/usr/local/src/mysql-5.5.48.tar.gz ##下载PHP-5.5.30 wgethttp://cn2.php.net/distributions/php-5.5.30.tar.gz-O/usr/local/src/php-5.5.30.tar.gz wgetftp://mcrypt.hellug.gr/pub/crypto/mcrypt/attic/libmcrypt/libmcrypt-2.5.7.tar.gz-O/usr/local/src/libmcrypt-2.5.7.tar.gz
二、安装Apache、Mysql、PHP
1.安装依赖包
yuminstall-ygccgcc-c++cmakencurses-develbisonopensslopenssl-devellibxml2libxml2-devellibmcryptlibmcrypt-develzlibzlib-devellibpnglibpng-devellibtooljpeg6libjpeglibjpeg-develfreetypefreetype-develautoconfautomakegdlibXpm-develcurlcurl-devel
2.编译安装apr、apr-util、pcre。
cd/usr/local/src/ tarxfapr-1.5.2.tar.gz tarxfapr-util-1.5.4.tar.gz tarxfpcre-8.40.tar.gz tarxfhttpd-2.4.20.tar.gz tarxfmysql-5.5.48.tar.gz tarxfphp-5.5.30.tar.gz tarxflibmcrypt-2.5.7.tar.gz cd/usr/local/src/apr-1.5.2 ./configure--prefix=/usr/local/apr make&&makeinstall cd/usr/local/src/apr-util-1.5.4 ./configure--prefix=/usr/local/apr-util--with-apr=/usr/local/apr/ make&&makeinstall cd/usr/local/src/pcre-8.40 ./configure--prefix=/usr/local/pcre make&&makeinstall
3.编译安装Apache-2.4.20
cd/usr/local/src/httpd-2.4.20 ./configure--prefix=/usr/local/apache-2.4.20--with-apr=/usr/local/apr/--with-apr-util=/usr/local/apr-util/--with-pcre=/usr/local/pcre/--enable-so--enable-modules=most--enable-mods-shared=most--enable-rewrite--enable-ssl--enable-mpms-shared=all make&&makeinstall ln-s/usr/local/apache-2.4.20/usr/local/apache ##配置apache开机自动启动 echo'/usr/local/apache/bin/apachectlstart'>>/etc/rc.local
4.编译安装Mysql
mkdir-p/mydata/data useradd-rmysql chown-Rmysql:mysql/mydata/data cd/usr/local/src/mysql-5.5.48 cmake\ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.5.48\ -DMYSQL_DATADIR=/mydata/data\ -DSYSCONFDIR=/etc/my.cnf\ -DWITH_MYISAM_STORAGE_ENGINE=1\ -DWITH_INNOBASE_STORAGE_ENGINE=1\ -DWITH_MEMORY_STORAGE_ENGINE=1\ -DWITH_PARTITION_STORAGE_ENGINE=1\ -DWITH_READLINE=1\ -DMYSQL_UNIX_ADDR=/mydata/data/mysqld.sock\ -DENABLED_LOCAL_INFILE=1\ -DEXTRA_CHARSETS=all\ -DDEFAULT_CHARSET=utf8\ -DDEFAULT_COLLATION=utf8_general_ci\ -DMYSQL_TCP_PORT=3306 make&&makeinstall ln-s/usr/local/mysql-5.5.48/usr/local/mysql ln-s/usr/local/mysql/include/*/usr/local/include/ ##创建Mysql配置文件 cat>/etc/my.cnf<<EOF [mysqld] datadir=/mydata/data user=mysql socket=/mydata/data/mysqld.sock #Disablingsymbolic-linksisrecommendedtopreventassortedsecurityrisks symbolic-links=0 [mysqld_safe] log-error=/mydata/data/mysqld.log pid-file=/mydata/data/mysqld.pid EOF ##配置Mysql启动脚本及开机自动启动 cp/usr/local/mysql/support-files/mysql.server/etc/init.d/mysqld chkconfig--addmysqld chkconfigmysqld--level345on ##初始化Mysql /usr/local/mysql/scripts/mysql_install_db--basedir=/usr/local/mysql--datadir=/mydata/data/--user=mysql ln-s/usr/local/mysql/bin/*/usr/bin/ /etc/init.d/mysqldstart /usr/local/mysql/bin/mysql_secure_installation
5.编译安装PHP
cd/usr/local/src/libmcrypt-2.5.7 ./configure--prefix=/usr/local/libmcrypt make&&makeinstall cd/usr/local/src/php-5.5.30 ./configure\ --prefix=/usr/local/php5.5.30\ --with-config-file-path=/usr/local/php/etc\ --with-apxs2=/usr/local/apache/bin/apxs\ --with-mysql=/usr/local/mysql/\ --with-libxml-dir\ --with-png-dir\ --with-jpeg-dir\ --with-freetype-dir\ --with-gd\ --with-zlib-dir\ --with-mysqli\ --with-xpm-dir=/usr/lib64/\ --with-curl\ --enable-soap\ --enable-mbstring=all\ --enable-sockets\ --enable-maintainer-zts\ --with-mcrypt=/usr/local/libmcrypt/ ##注意:当Apache使用event或worker时,编译PHP需要使用--enable-maintainer-zts参数,当Apache以prefork工作时则不需要使用--enable-maintainer-zts参数。 ##上文中编译Apache时使用了--enable-mpms-shared=all参数,默认会将三种模式以动态模块的方式编译,默认使用event模式,所以此处编译PHP需要添加--enable-maintainer-zts参数。 make&&makeinstall ln-s/usr/local/php5.5.30/usr/local/php cp/usr/local/src/php-5.5.30/php.ini-production/usr/local/php/etc/php.ini
三、配置apache站点及防火墙
1.配置Apache
cp/usr/local/apache/conf/httpd.conf/usr/local/apache/conf/httpd.conf.back mkdir-p/usr/local/apache/conf/conf.d/ cat>>/usr/local/apache/conf/httpd.conf<<EOF ####### ServerNamelocalhost:80 AddTypeapplication/x-httpd-php.php TraceEnableoff ServerTokensProd ServerSignatureOff EOF ##配置站点www.a.com,仅需将"web=www.a.com"修改成对应站点名称,运行以下脚本即可创建虚拟主机以及相应的目录。 web=www.a.com mkdir-p/www/$web cat>>/usr/local/apache/conf/httpd.conf<<EOF ######## Includeconf/conf.d/$web.conf ######## EOF cat>/usr/local/apache/conf/conf.d/$web.conf<<EOF <VirtualHost*:80> DocumentRoot"/www/$web/" ServerName$web ErrorLog"|/usr/local/apache/bin/rotatelogs/usr/local/apache/logs/$web-%Y%m%d_error.log86400480" CustomLog"|/usr/local/apache/bin/rotatelogs/usr/local/apache/logs/$web-%Y%m%d_access.log86400480"common </VirtualHost> <Directory"/www/$web/"> OptionsIndexesFollowSymLinks AllowOverrideAll Requireallgranted DirectoryIndexindex.phpindex.Htmlindex.html </Directory> EOF
2.配置防火墙
##配置防火墙规则,外网允许80、22端口通过防火墙,允许内网流量(eth0为内外网卡) ##需要注意检查eth0是否为外网网卡,若是外网网卡,需要去掉iptables-AINPUT-ieth0-jACCEPT规则。 ##此外192.168.175.0/24,需要修改成自己的内网网段。 ##防火墙以脚本形式保存,开机自动读取脚本加载防火墙配置,故对防火墙做的任何修改一定要及时保存到脚本中,以免下次重启后防火墙规则出现错误。 mkdir-p/www/scripts/ cat>/www/scripts/iptables.sh<<EOF iptables-PINPUTACCEPT iptables-F #enabletheportinput iptables-AINPUT-ptcp--dport80-jACCEPT iptables-AINPUT-ptcp--dport22-jACCEPT iptables-AINPUT-s192.168.175.0/24-ptcp--dport3306-jACCEPT #enableping iptables-AINPUT-picmp--icmp-typeecho-reply-jACCEPT iptables-AINPUT-picmp--icmp-typeecho-request-jACCEPT #enabletheinterfaceinput iptables-AINPUT-ieth0-jACCEPT iptables-AINPUT-ilo-jACCEPT iptables-AINPUT-mstate--stateRELATED,ESTABLISHED-jACCEPT iptables-AINPUT-ptcp-mtcp--tcp-flagsFIN,SYN,RST,PSH,ACK,URGNONE-jDROP iptables-AINPUT-ptcp-mtcp--tcp-flagsFIN,SYNFIN,SYN-jDROP iptables-AINPUT-ptcp-mtcp--tcp-flagsSYN,RSTSYN,RST-jDROP iptables-AINPUT-ptcp-mtcp--tcp-flagsFIN,RSTFIN,ACKFIN-jDROP iptables-AINPUT-ptcp-mtcp--tcp-flagsPSH,ACKPSH-jDROP iptables-AINPUT-ptcp-mtcp--tcp-flagsACK,URGURG-jDROP iptables-PINPUTDROP iptables-POUTPUTACCEPT iptables-PFORWARDDROP EOF chmod+x/www/scripts/iptables.sh /www/scripts/iptables.sh ##将防火墙规则加到开机自动启动 echo'/www/scripts/iptables.sh'>>/etc/rc.local
四、编译安装php扩展模块(编译PDO)
wgethttp://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz-O/usr/local/src/PDO_MYSQL-1.0.2.tgz cd/usr/local/src/ tarxfPDO_MYSQL-1.0.2.tgz cdPDO_MYSQL-1.0.2 /usr/local/php/bin/phpize ./configure-with-php-config=/usr/local/php/bin/php-config-with-pdo-mysql=/usr/local/mysql make&&makeinstall echo'extension=pdo_mysql.so'>>/usr/local/php/etc/php.ini /usr/local/apache/bin/apachectlrestart
五、PHP及数据库连接测试页
1.php测试页phpinfo.php
<?php echo'<pre>'; var_dump(get_loaded_extensions()); echophpinfo(); ?>
2.mysql连接测试mysql.php
<?php $link=mysql_connect("127.0.0.1","root","123456"); if(!$link)echo"FAILD"; elseecho"OK!"; ?>
3.mysqli连接测试mysqli.php
<?php $link=newmysqli('localhost','root','123456','mysql'); if(!$link)echo"FAILD"; elseecho"OK!"; ?>
4.pdo连接测试pdo.php
<?php $db=newPDO('mysql:host=localhost;dbname=mysql','123456'); if(!$db)echo"FAILD"; elseecho"OK!"; ?>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。