源碼搭建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,如需轉載請自行聯系原作者