源码搭建LAMP
CentOS6源码安装LAMP----基于fastcgi方式(2台机器)
官网:http://www.freetds.org/
实验环境:
CentOS6.5-x86_64 单台机器
IP 192.168.9.176 php
IP 192.168.9.225 apache+mysql
版本:
apr-1.5.2
apr-util-1.5.4
httpd-2.4.20
php-5.6.22
mysql-5.6.32
说明,因为php要连接mysql,所以安装顺序为apache,mysql,php
注:httpd2.4版本需要较新的apr和apr-util
注:(生产环境一般包放内网ftp下载比较快,一般前端用nginx反向代理至后端apache,通过fastcgi连接php,mysql独立并做集群)
<code>一、编译安装apache</code>
<code>1、</code><code>#yum安装httpd依赖软件</code>
<code>[root@192-168-9-176 ~]</code><code># yum install -y gcc gcc-c++ libtool libtool-ltdl-devel \</code>
<code>make</code> <code>gd-devel freetype-devel libxml2-devel \</code>
<code>libjpeg-devel libpng-devel openssl-devel patch </code>
<code>[root@192-168-9-176 ~]</code><code># yum install -y curl-devel bzip2 pcre-devel zip2-devel bzip2-devel </code>
<code>[root@192-168-9-176 ~]</code><code># yum install -y mcrypt-devel zlib-devel wget</code>
<code>2、</code><code>#编译安装apr</code>
<code>[root@192-168-9-176 ~]</code><code># cd /usr/local/src/</code>
<code>[root@192-168-9-176 src]</code><code># wget https://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.5.2.tar.bz2</code>
<code>[root@192-168-9-176 src]</code><code># tar xf apr-1.5.2.tar.bz2 </code>
<code>[root@192-168-9-176 src]</code><code># cd apr-1.5.2</code>
<code>[root@192-168-9-176 apr-1.5.2]</code><code># ./configure --prefix=/usr/local/apr</code>
<code>[root@192-168-9-176 apr-1.5.2]</code><code># make && make install</code>
<code>3、编译安装apr-util</code>
<code>[root@192-168-9-176 apr-1.5.2]</code><code># cd /usr/local/src/</code>
<code>[root@192-168-9-176 src]</code><code># wget https://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.5.4.tar.bz2</code>
<code>[root@192-168-9-176 src]</code><code># tar xf apr-util-1.5.4.tar.bz2</code>
<code>[root@192-168-9-176 src]</code><code># cd apr-util-1.5.4</code>
<code>[root@192-168-9-176 apr-util-1.5.4]</code><code># ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr</code>
<code>[root@192-168-9-176 apr-util-1.5.4]</code><code># make && make install</code>
<code>4、编译安装httpd</code>
<code>[root@192-168-9-176 apr-util-1.5.4]</code><code># useradd -s /sbin/nologin www</code>
<code>[root@192-168-9-176 apr-util-1.5.4]</code><code># cd /usr/local/src/</code>
<code>[root@192-168-9-176 src]</code><code># wget http://apache.fayea.com//httpd/httpd-2.4.20.tar.bz2</code>
<code>[root@192-168-9-176 src]</code><code># tar xf httpd-2.4.20.tar.bz2 </code>
<code>[root@192-168-9-176 src]</code><code># cd httpd-2.4.20</code>
<code>[root@192-168-9-176 httpd-2.4.20]</code><code># ./configure --prefix=/usr/local/apache \</code>
<code>--with-apr=</code><code>/usr/local/apr</code> <code>\</code>
<code>--with-apr-util=</code><code>/usr/local/apr-util/</code> <code>\</code>
<code>--</code><code>enable</code><code>-so \</code>
<code>--</code><code>enable</code><code>-ssl \</code>
<code>--</code><code>enable</code><code>-cgi \</code>
<code>--</code><code>enable</code><code>-rewrite \</code>
<code>--with-zlib \</code>
<code>--with-pcre \</code>
<code>--</code><code>enable</code><code>-modules=most \</code>
<code>--</code><code>enable</code><code>-mpms-shared=all \</code>
<code>--with-mpm=prefork</code>
<code>[root@192-168-9-176 httpd-2.4.20]</code><code># make</code>
<code>[root@192-168-9-176 httpd-2.4.20]</code><code># make install</code>
<code>[root@192-168-9-176 httpd-2.4.20]</code><code># sed -i 's/User daemon/User www/g' /usr/local/apache/conf/httpd.conf</code>
<code>[root@192-168-9-176 httpd-2.4.20]</code><code># sed -i 's/Group daemon/Group www/g' /usr/local/apache/conf/httpd.conf</code>
<code>[root@192-168-9-176 httpd-2.4.20]</code><code># sed -i "/ServerName/s/#ServerName.*/ServerName localhost/g" /usr/local/apache/conf/httpd.conf</code>
<code>6、启动方法</code>
<code>#/usr/local/apache/bin/apachectl -k start|reload|restart|stop</code>
<code>7、测试验证</code>
<code>[root@192-168-9-176 httpd-2.4.20]</code><code># curl -I http://192.168.9.176</code>
<code>HTTP</code><code>/1</code><code>.1 200 OK</code>
<code>Date: Fri, 11 Aug 2017 15:22:43 GMT</code>
<code>Server: Apache</code><code>/2</code><code>.4.20 (Unix)</code>
<code>Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT</code>
<code>ETag: </code><code>"2d-432a5e4a73a80"</code>
<code>Accept-Ranges: bytes</code>
<code>Content-Length: 45</code>
<code>Content-Type: text</code><code>/html</code>
二、编译安装MySQL
<code>1、</code><code>#下载安装包</code>
<code>[root@192-168-9-176 httpd-2.4.20]</code><code># cd /usr/local/src/</code>
<code>[root@192-168-9-176 src]</code><code># wget https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.37-linux-glibc2.12-x86_64.tar.gz</code>
<code>2、</code><code>#建立运行mysql用户和组为系统账号 </code>
<code>[root@192-168-9-176 src]</code><code># groupadd -r mysql</code>
<code>[root@192-168-9-176 src]</code><code># useradd -r -g mysql -s /sbin/nologin mysql</code>
<code>3、</code><code>#编译安装</code>
<code>[root@192-168-9-176 src]</code><code># yum install -y libaio libaio-devel numactl numactl-devel cmake ncurses-devel libxml2-devel libtool-ltdl-devel gcc-c++ autoconf automake bison zlib-devel</code>
<code>[root@192-168-9-176 src]</code><code># tar xf mysql-5.6.37-linux-glibc2.12-x86_64.tar.gz</code>
<code>[root@192-168-9-176 src]</code><code># mv mysql-5.6.37-linux-glibc2.12-x86_64 /usr/local/mysql</code>
<code>#建议mysql使用独立设备独立目录,本实验只建立目录,独立设备请参考磁盘分区与挂载</code>
<code>[root@192-168-9-176 src]</code><code># mkdir -p /data0/mysql</code>
<code>#更改属主属组</code>
<code>[root@192-168-9-176 src]</code><code># chown -R mysql.mysql /usr/local/mysql</code>
<code>#初始化数据库</code>
<code>[root@192-168-9-176 src]</code><code># cd /usr/local/mysql</code>
<code>[root@192-168-9-176 mysql]</code><code># ./scripts/mysql_install_db --datadir=/data0/mysql --user=mysql</code>
<code>[root@192-168-9-176 mysql]</code><code># cp ./support-files/my-default.cnf /data0/mysql/my.cnf</code>
<code>[root@192-168-9-176 mysql]</code><code># echo "basedir = /usr/local/mysql</code>
<code>datadir = </code><code>/data0/mysql</code>
<code>port = 3306</code>
<code>server_id = 1000</code>
<code>socket = </code><code>/tmp/mysql</code><code>.sock" >></code><code>/data0/mysql/my</code><code>.cnf</code>
<code>[root@192-168-9-176 mysql]</code><code># chown -R mysql.mysql /data0/mysql/</code>
<code>4,启动:</code>
<code>[root@192-168-9-176 mysql]</code><code># /usr/local/mysql/bin/mysqld_safe --defaults-file=/data0/mysql/my.cnf &</code>
<code>[root@192-168-9-176 mysql]</code><code># echo "/usr/local/mysql/bin/mysqld_safe --defaults-file=/data0/mysql/my.cnf &" >> /etc/rc.d/rc.local</code>
<code>6、</code><code>#安全初始化</code>
<code>#安全验证初始化,设置root用户密码,删除匿名用户,禁止root用户远程连接,删除test库</code>
<code>[root@192-168-9-176 mysql]</code><code># ./bin/mysql_secure_installation</code>
<code>#导出头文件</code>
<code>[root@192-168-9-176 mysql]</code><code># ln -sv /usr/local/mysql/include/ /usr/include/mysql</code>
<code>#加载库文件</code>
<code>[root@192-168-9-176 mysql]</code><code># echo "/usr/local/mysql/lib/mysql/" >>/etc/ld.so.conf</code>
<code>[root@192-168-9-176 mysql]</code><code># ldconfig</code>
<code>[root@192-168-9-176 mysql]</code><code># echo "PATH=$PATH:/usr/local/mysql/bin/" >> /etc/profile</code>
三、编译安装PHP
<code>1、</code><code>#编译安装libmcrypt扩展</code>
<code>[root@192-168-9-176 ~]</code><code># yum install -y mcrypt-devel zlib-devel wget mysql mysql-devel</code>
<code>[root@192-168-9-225 ~]</code><code># cd /usr/local/src/</code>
<code>[root@192-168-9-225 src]</code><code># wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz</code>
<code>[root@192-168-9-225 src]</code><code># tar xf libmcrypt-2.5.7.tar.gz </code>
<code>[root@192-168-9-225 src]</code><code># cd libmcrypt-2.5.7</code>
<code>[root@192-168-9-225 libmcrypt-2.5.7]</code><code># ./configure</code>
<code>[root@192-168-9-225 libmcrypt-2.5.7]</code><code># make && make install</code>
<code>2、</code><code>#编译安装freetds扩展</code>
<code>[root@192-168-9-225 </code><code>local</code><code>]</code><code># cd /usr/local/src/</code>
<code>[root@192-168-9-225 src]</code><code># wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-patched.tar.gz</code>
<code>[root@192-168-9-225 src]</code><code># tar xf freetds-patched.tar.gz </code>
<code>[root@192-168-9-225 src]</code><code># cd freetds-1.00.53/</code>
<code>[root@192-168-9-225 freetds-1.00.53]</code><code># ./configure --prefix=/usr/local/freetds --with-tdsver=7.4 --enable-msdblib </code>
<code>[root@192-168-9-225 freetds-1.00.53]</code><code># make && make install</code>
<code>[root@192-168-9-225 freetds-1.00.53]</code><code># export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/freetds/lib/</code>
<code>[root@192-168-9-225 freetds-1.00.53]</code><code># echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/freetds/lib/" >> /etc/profile</code>
<code>3、</code><code>#下载安装包</code>
<code>[root@192-168-9-225 src]</code><code># cd /usr/local/src/</code>
<code>[root@192-168-9-225 src]</code><code># wget http://cn2.php.net/distributions/php-5.6.22.tar.bz2</code>
<code>[root@192-168-9-225 src]</code><code># tar xf php-5.6.22.tar.bz2 </code>
<code>[root@192-168-9-225 src]</code><code># cd php-5.6.22</code>
<code>[root@192-168-9-225 php-5.6.22]</code><code># ./configure --prefix=/usr/local/php \</code>
<code>--with-mysql=mysqlnd \</code>
<code>--with-pdo-mysql=mysqlnd \</code>
<code>--with-mysqli=mysqlnd \</code>
<code>--with-openssl \</code>
<code>--</code><code>enable</code><code>-mbstring \</code>
<code>--with-freetype-</code><code>dir</code> <code>\</code>
<code>--with-jpeg-</code><code>dir</code> <code>\</code>
<code>--with-png-</code><code>dir</code> <code>\</code>
<code>--with-libxml-</code><code>dir</code><code>=</code><code>/usr/</code> <code>\</code>
<code>--</code><code>enable</code><code>-xml \</code>
<code>--</code><code>enable</code><code>-sockets \</code>
<code>--with-mcrypt \</code>
<code>--with-mssql=</code><code>/usr/local/freetds</code> <code>\</code>
<code>--with-bz2 \</code>
<code>--</code><code>enable</code><code>-maintainer-zts \</code>
<code>--with-curl \</code>
<code>--</code><code>enable</code><code>-</code><code>ftp</code> <code>\</code>
<code>--</code><code>enable</code><code>-bcmath \</code>
<code>--with-gd \</code>
<code>--</code><code>enable</code><code>-gd-native-ttf \</code>
<code>--with-iconv-</code><code>dir</code> <code>\</code>
<code>--</code><code>enable</code><code>-calendar \</code>
<code>--with-gettext \</code>
<code>--</code><code>enable</code><code>-dom \</code>
<code>--</code><code>enable</code><code>-fpm</code>
<code>#说明:如果php5.3以上的版本,为了链接数据库,可以指定mysqlnd,这样本机就可以不用安装mysql和mysql开发包。5.4已经是默认设置。</code>
<code>如: --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd</code>
<code>[root@192-168-9-225 php-5.6.22]</code><code># make</code>
<code>[root@192-168-9-225 php-5.6.22]</code><code># make install</code>
<code>4/</code><code>#为php提供配置文件</code>
<code>[root@192-168-9-225 php-5.6.22]</code><code># cp php.ini-production /etc/php.ini</code>
<code>[root@192-168-9-225 php-5.6.22]</code><code># cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm</code>
<code>[root@192-168-9-225 php-5.6.22]</code><code># chmod +x /etc/rc.d/init.d/php-fpm</code>
<code>[root@192-168-9-225 php-5.6.22]</code><code># chkconfig --add php-fpm</code>
<code>[root@192-168-9-225 php-5.6.22]</code><code># chkconfig php-fpm on</code>
<code>[root@192-168-9-225 php-5.6.22]</code><code># cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf</code>
<code>[root@192-168-9-225 php-5.6.22]</code><code># vim /usr/local/php/etc/php-fpm.conf</code>
<code>#配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行):</code>
<code>listen = 192.168.9.225:9000</code>
<code>pm.max_children = 50</code>
<code>pm.start_servers = 5</code>
<code>pm.min_spare_servers = 2</code>
<code>pm.max_spare_servers = 8</code>
<code>pid = </code><code>/usr/local/php/var/run/php-fpm</code><code>.pid </code>
<code>[root@192-168-9-225 ~]</code><code># mkdir -pv /data0/web_root/domain/www</code>
<code>[root@192-168-9-225 ~]</code><code># echo "<?php</code>
<code> </code><code>phpinfo();</code>
<code>?>" > </code><code>/data0/web_root/domain/www/index</code><code>.php</code>
<code>[root@192-168-9-225 php-5.6.22]</code><code># service php-fpm start</code>
<code>5、编辑apache配置文件httpd.conf,apache支持php</code>
<code>#启用httpd的相关模块</code>
<code>[root@192-168-9-176 ~]</code><code># vim /usr/local/apache/conf/httpd.conf</code>
<code>#在Apache httpd 2.4以后已经专门有一个模块针对FastCGI的实现,此模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩充,因此,这两个模块都要加载</code>
<code>LoadModule proxy_module modules</code><code>/mod_proxy</code><code>.so</code>
<code>LoadModule proxy_fcgi_module modules</code><code>/mod_proxy_fcgi</code><code>.so</code>
<code>#配置虚拟主机支持使用fcgi</code>
<code>#注释根,打开虚拟主机</code>
<code>#DocumentRoot "/usr/local/apache/htdocs"</code>
<code>Include conf</code><code>/extra/vhosts/</code><code>*.conf</code>
<code>#编辑apache配置文件httpd.conf,让apache能识别php格式的页面,并支持php格式的主页</code>
<code>#添加如下二行</code>
<code> </code><code>AddType application</code><code>/x-httpd-php</code> <code>.php</code>
<code> </code><code>AddType application</code><code>/x-httpd-php-source</code> <code>.phps</code>
<code>#定位至DirectoryIndex index.html </code>
<code> </code><code>修改为:</code>
<code> </code><code>DirectoryIndex index.php index.html</code>
<code>[root@192-168-9-176 ~]</code><code># mkdir -p /usr/local/apache/conf/extra/vhosts/</code>
<code>[root@192-168-9-176 ~]</code><code># vim /usr/local/apache/conf/extra/vhosts/domain.conf </code>
<code>#ProxyRequests Off:关闭正向代理</code>
<code>#ProxyPassMatch:把以.php结尾的文件请求发送到php-fpm进程,php-fpm至少需要知道运行的目录和URI,所以这里直接在fcgi://192.168.0.17:9000后指明了这两个参数,其它的参数的传递已经被mod_proxy_fcgi.so进行了封装,不需要手动指定。</code>
<code><VirtualHost *:80></code>
<code> </code><code>ServerAdmin [email protected]</code>
<code> </code><code>DocumentRoot </code><code>"/data0/web_root/domain/www"</code>
<code> </code><code>DirectoryIndex index.php index.html</code>
<code> </code><code>ServerName www.domain.com</code>
<code> </code><code>ServerAlias domain.com</code>
<code> </code><code>ErrorLog </code><code>"logs/www.domain.com-error_log"</code>
<code> </code><code>CustomLog </code><code>"logs/www.domain.com-access_log"</code> <code>common</code>
<code> </code><code><Directory </code><code>"/data0/web_root/domain/www"</code><code>></code>
<code> </code><code>Options None</code>
<code> </code><code>Require all granted</code>
<code> </code><code><</code><code>/Directory</code><code>></code>
<code> </code><code>ProxyRequests Off</code>
<code> </code><code>ProxyPassMatch ^/(.*\.php)$ fcgi:</code><code>//192</code><code>.168.9.225:9000</code><code>/data0/web_root/domain/www/</code><code>$1</code>
<code><</code><code>/VirtualHost</code><code>></code>
<code>#重启httpd</code>
<code>[root@192-168-9-176 ~]</code><code># /usr/local/apache/bin/apachectl -k restart</code>
<code>6、浏览器访问:</code>
<code>http:</code><code>//192</code><code>.168.9.176</code>
<code>7、测试验证php连接数据库</code>
<code>[root@192-168-9-225 php-5.6.22]</code><code># vim index.php </code>
<code><?php</code>
<code> </code><code>$link = mysql_connect(</code><code>'192.168.9.176'</code><code>,</code><code>'root'</code><code>,</code><code>'123456'</code><code>);</code>
<code> </code><code>if</code> <code>($link)</code>
<code> </code><code>echo</code> <code>"Success..."</code><code>;</code>
<code> </code><code>else</code>
<code> </code><code>echo</code> <code>"Failure..."</code><code>;</code>
<code> </code><code>mysql_close()</code>
<code>?></code>
<code>#浏览器访问</code>
<code>6、</code><code>#ab压力测试</code>
<code>[root@192-168-9-276 php-5.6.22]</code><code># ab -c 100 -n 10000</code>
本文转自 wpf926 51CTO博客,原文链接:http://blog.51cto.com/wupengfei/1955728,如需转载请自行联系原作者