LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl、PHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,和Java/J2EE架构相比,LAMP具有Web资源丰富、轻量、快速开发等特点,微软的.NET架构相比,LAMP具有通用、跨平台、高性能、低价格的优势,因此LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台。
对于大流量、大并发量的网站系统架构来说,除了硬件上使用高性能的服务器、负载均衡、CDN等之外,在软件架构上需要重点关注下面几个环节:使用高性能的操作系统(OS)、高性能的网页服务器(Web Server)、高性能的数据库(Databse)、高效率的编程语言等。
我选择的包是 httpd-2.2.25.tar.gz mysql-5.1.34.tar.gz php-5.4.19.tar.gz
#!/bin/bash
APACHEDIR=/usr/local/apache
MYSQLDIR=/usr/local/mysql
PHPDIR=/usr/local/php
HTTPD=httpd-2.2.25
MYSQL=mysql-5.1.34
PHP=php-5.4.19
TAR=.tar.gz tar包的压缩类型
APACHEMBER=81 apache配置失败后返回来的值
APACHENU=82 apache启动失败后返回来的值
MYSQLMBER=83 mysql配置失败后返回来的值
MYSQLNU=84 mysql初始化失败后返回来的值
MYSQLNUMBER=85 mysql启动失败后返回的值
PHPMBER=86 php配置失败后返回来的值
HTTPDPORT=$(lsof -i :80 | awk 'NR==2{print $1}' ) 占用apache80端口的进程名
MYSQLPORT=$(lsof -i :3306 | awk 'NR==2{print $1}' ) 占用mysql3306端口的进程名
netstat -nl | grep :80 &> /dev/null 查看80端口是否启用
if [ $? -eq 0 ];then
pkill -9 $HTTPDPORT 杀死占用80端口的进程名
else
echo " 80 port already by release"
fi
netstat -nl | grep :3306 &> /dev/null 查看mysql3306端口是否被占用
if [ $? -eq 0 ];then
pkill -9 $MYSQLPORT 杀死占用3306端口的进程名
else
echo " 3306 port already by release "
fi
for package in {gcc,gcc-c++,openssl-devel,openssl,ncurses-devel,libtermcap-devel,ncurses,libtermcap,libxml2,libxml2-devel} 为安装LAMP源码包搭建依懒环境
do
rpm -q $package &> /dev/null 判断这些包是否安装
if [ $? != 0 ];then
yum -y install $package 如果没有安装进行安装
else
echo " $package already install "
fi
done
echo "----------------------------------------------------------------------"
echo " install apache "
sleep 3
cd /root 进入家目录 (因为我将我的源码包放到了自己的家目录下了)
tar -zxf /root/$HTTPD$TAR 解压apache文件
cd /root/$HTTPD 进入解压目录
./configure --prefix=$APACHEDIR --enable-so --enable-rewrite \进行配置
--enable-ssl --enable-cgi --enable-charset-lite \
--enable-suexec --with-suexec-caller=daemon \
--with-suexec-docroot=$APACHEDIR/htdocs 首页文件位置
if [ $? -eq 0 ];then
make && make install 编译 完成后 安装
else
echo " apache install failed "
exit $APACHEMBER 配置不成功返回值 值的数字前边已经定义
fi
cp $APACHEDIR/bin/apachectl /etc/init.d/apache 将apache启动脚本备考到/etc/init.d/ 下实现开机启动
sed -i '2c # chkconfig: 35 85 15 ' /etc/init.d/apache 给apache启动脚本添加开机启动的用户模式
sed -i '3c # description: Apache is a world web server' /etc/init.d/apache apache描述信息
sed -i '/#ServerName/s/www.examle.com/\*/' $APACHEDIR/conf/httpd.conf 允许所有域名 可以不修改 可以修改为自己的域名
ln -s $APACHEDIR/bin/* /usr/sbin/ 将apache命令做个连接方便以后使用
chkconfig --add apache 将apache添加为开机启动
service apache start 启动apache服务
chkconfig apache on 设置为开机启动
if [ $? -eq 0 ];then
echo "------------------------------------------------------------------------"
echo " install mysql"
sleep 3
id mysql &> /dev/null 判断mysql这个用户是否存在
if [ $? != 0 ];then
useradd mysql
else
echo "user mysql already exist"
fi
cd /root
tar -zxf /root/$MYSQL$TAR
cd /root/$MYSQL
./configure --prefix=$MYSQLDIR --with-charset=utf8 \
--with-collation=utf8_general_ci \
--with-extra-charsets=all \
--exec-prefix=$MYSQLDIR \
--with-client-ldflags=-all-static \
--with-mysqld-ldflags=-all-static \
--with-innodb --with-plugins=partition
if [ $? -eq 0 ];then
make && make install
else
echo " mysql install failed"
exit &MYSQLMBER
fi
test -f /etc/my.cnf
if [ $? -eq 0 ];then
mv /etc/my.cnf /etc/my.conf
cp support-files/my-medium.cnf /etc/my.cnf
else
cp support-files/my-medium.cnf /etc/my.cnf
fi
cp support-files/mysql.server /etc/init.d/mysql && chmod +x /etc/init.d/mysql
cp support-files/mysql.server /etc/rc.d/init.d/mysql && chmod +x /etc/rc.d/init.d/mysql
chkconfig --add mysql
chown -R mysql.mysql $MYSQLDIR/*
ln -s $MYSQLDIR/bin/* /usr/sbin/
ln -s $MYSQLDIR/lib/mysql/* /usr/lib64/
ln -s $MYSQLDIR/include/mysql/* /usr/include/
sed -i 's/^skip-federated$/# skip-federated/' /etc/my.cnf
mysql_install_db --user=mysql
if [ $? -eq 0 ];then
:
else
echo " mysql servier initialize failed "
exit $MYSQLNUMBER
fi
else
echo "apache start failed please check up after the continue "
exit $APACHENU
fi
service mysql restart
chkconfig mysql on
if [ $? -eq 0 ];then
echo "-----------------------------------------------------------------------"
echo "install php"
sleep 3
cd /root
tar -zxf /root/$PHP$TAR
cd /root/$PHP
./configure --prefix=$PHPDIR --with-apxs2=$APACHEDIR/bin/apxs \
--with-mysql=$MYSQLDIR --with-config-file-php=$PHPDIR \
--enable-mbstring --enable-sockets \
if [ $? -eq 0 ];then
make && make install
else
echo "php install failed"
exit $PHPMBER
fi
cp php.ini-development $PHPDIR/php/php.ini
sed -i '311a AddType application/x-httpd-php .php' $APACHEDIR/conf/httpd.conf
sed -i '168c DirectoryIndex index.html index.html index.php' $APACHEDIR/conf/httpd.conf
service apache stop && service apache start && chkconfig apache on
else
echo "mysql start failed please check up after the continue"
exit $MYSQLNU
fi
for delete in { $MYSQL,$PHP,$HTTPD}
do
rm -rf /root/$delete
done
测试
vim /usr/local/apache/htdocs/index.php
<?php
phpinfo();
?>
这是php测试网页
vim /usr/local/apache/htdocs/test.php
<?php
$links=mysql_connect(“localhost”,”root”,””);
if($links){
echo “like db ok!!!”;
}
else{
echo“link db no!!!”;
}
?>
mysql基于php测试网页
推荐阅读: