一、环境说明准备

本次使用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!";
?>

CentOS5/6编译安装LAMP的更多相关文章

  1. iOS – 友好的NSDate格式

    我需要在我的应用程序中显示帖子的日期给用户,现在我用这种格式:“5月25日星期五”.如何格式化NSDate以阅读“2小时前”的内容?使其更加用户友好.解决方法NSDateFormatter不能做这样的事情;你将需要建立自己的规则.我想像:所以这是打印’x分钟前’或’x小时前’从日期起24小时,通常是一天.

  2. ios – Xcode上传错误:无法打开ssh会话. (16)

    注意:我们终于上传了该应用程序,但是我们并没有真正解决这个问题,所以如果有人可以分享一些有关这个问题的宝贵意见或经验,我将不胜感激.我也检查了以下2个类似的问题,但这些没有帮助:>Erroruploadingiosapplicationtoitunesconnect“failedtoopensshsession(16)”>AppStoresubmission/distributionerror“f

  3. 从iOS应用程序发送帖子到PHP脚本不工作…简单的解决方案就像

    我之前已经做了好几次了但是由于某些原因我无法通过这个帖子…我尝试了设置为_POST且没有的变量的PHP脚本……当它们未设置为发布时它工作精细.这是我的iOS代码:这里是PHP的一大块,POST变量不在正确的位置?我想这对于更有经验的开发人员来说是一个相当简单的答案,感谢您的帮助!解决方法$_POST是一个数组,而不是一个函数.您需要使用方括号来访问数组索引:

  4. IOs Cordova长按显示文本选择放大镜即使禁用文本选择,如何删除?

    是否有任何可能导致此问题的插件?任何帮助深表感谢.Cordova插件:>com.mbppower.camerapreview>cordova-plugin-statusbar>cordova-plugin-whitelist>离子插件键盘>org.apache.cordova.camera>org.apache.cordova.console>org.apache.cordova.device>org.apache.cordova.dialogs>org.apache.cordova.file>org.a

  5. 记一次云计算测试实验-openstack-icehouse-安装swift

    -----------------------controller:---------------------------------sourceadmin-openrc.shkeystoneuser-create--name=swift--pass=000000--email=swift@localhostkeystoneuser-role-add--user=swift--tenant=ser

  6. swift学习2 元组 tuples

    swift中出现了一种新的数据结构,非常牛掰的元组tuples如果懂PHP的猿,会发现这个元组和PHP的数组非常类似,同样是可以默认不指定key,也可以指定key目前的学习疑问是,如何进行元组的遍历?

  7. 尝试使用swift mailer,gmail smtp,php发送邮件

    这里是我的代码:在运行时出现此错误…

  8. 与Swift 2中的防火墙指针

    我正在尝试检查用户是否具有互联网连接,部分过程涉及使用UnsafePointer调用。与Swift2.x中的防火墙指针一起使用的正确方法是什么?

  9. Swift游乐场和模拟器错误(ipc / mig)服务器死机,无法启动iOS模拟器

    您的防火墙阻止调试器,您需要允许它连接:TCP出127.0.0.1:63748或者允许调试服务器进程打开访问.一旦启用它,并重新启动Xcode,所有的应该像一个魅力一样工作.注意/更新:如果您无法找到或允许调试服务器,只需暂时尝试禁用防火墙并重新启动xcode.操场是否奏效?哦,不要忘了确保你的助理视图打开,输出框显示.

  10. android – org.apache.cordova.api不存在. PhoneGap 3.0

    我正在尝试将VideoPlayer插件(https://github.com/macdonst/VideoPlayer)添加到我的phonegapAndroid应用程序中.在编译时遇到问题:第25行:解决方法将您的导入更改为:

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部