前言:
記錄一下源碼安裝LAMP服務的過程
準備工作
安裝編譯環境
yum -y install gcc*
關閉防火牆\SELinux
iptables -F
setenforce 0
加載軟體包鏡像
在虛拟機上将這個鏡像換上連接配接即可
複制檔案到
/usr/src/lamp
目錄
cp -rf lamp-php5.4/ /usr/src/lamp
這裡在目錄下寫一個shell腳本,自動解壓一下
#!/bin/bash
/bin/ls *tar.gz > ls.list
/bin/ls *tgz >> ls.list
for a in `cat ls.list`
do
/bin/tar -zxf $a
done
rm -rf ls.list
解壓完成
df -h
确認磁盤空間是否充足
安裝一些必須軟體
注意事項: 目錄名不要更改 順序不要更改
0x01:安裝python-devel
#首先需要python的底層環境
yum -y install python-devel
[root@localhost lamp]# cd lib
libmcrypt-2.5.8/ libpng-1.2.31/ libxml2-2.9.1/
[root@localhost lamp]# cd libxml2-2.9.1/
[root@localhost libxml2-2.9.1]# ./configure --prefix=/usr/local/libxml2/
再輸入
make
再次輸入
make install
即可
0x02:安裝libmcrypt
提供加密算法
[root@localhost lamp]# cd libmcrypt-2.5.8/
[root@localhost libmcrypt-2.5.8]# ./configure --prefix=/usr/local/libmcrypt/
make
make install
0x03:安裝libltdl
[root@localhost lamp]# cd libmcrypt-2.5.8/libltdl/
[root@localhost libltdl]# ./configure --enable-ltdl-install
make
make install
0x04:安裝mhash
提供加密方式的擴充
前提條件:安裝 lib
[root@localhost lamp]# cd mhash-0.9.9.9/
[root@localhost mhash-0.9.9.9]# ./configure
0x05:安裝mcrypt
提供php相關的加密支援拓展庫
[root@localhost mcrypt-2.6.8]# LD_LIBRARY_PATH=/usr/local/libmcrypt/lib:/usr/local/lib \./configure --with-libmcrypt-prefix=/usr/local/libmcrypt
make
make install
0x06:安裝zlib
提供壓縮用途的函數庫
t@localhost lamp]# cd zlib-1.2.3/
[root@localhost zlib-1.2.3]# ./configure
make
make install
0x07:libpng
支援png格式圖檔的庫
[root@localhost zlib-1.2.3]# cd ../
[root@localhost lamp]# cd libpng-1.2.31/
[root@localhost libpng-1.2.31]# ./configure --prefix=/usr/local/libpng
make
make install
0x08:jpeg6
提供jpeg格式的圖檔
先建立目錄
[root@localhost libpng-1.2.31]# mkdir /usr/local/jpeg6
[root@localhost libpng-1.2.31]# mkdir /usr/local/jpeg6/bin
[root@localhost libpng-1.2.31]# mkdir /usr/local/jpeg6/lib
[root@localhost libpng-1.2.31]# mkdir /usr/local/jpeg6/include
[root@localhost libpng-1.2.31]# mkdir -p /usr/local/jpeg6/man/man1
root@localhost lamp]# cd jpeg-6b/
[root@localhost jpeg-6b]# ./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static
發現報錯,報錯原因是因為缺失
libtool
按照下面部落格的方法可以解決
解決linux64位安裝jpeg 出錯make: ./libtool: Command not found
安裝完成
0x09:安裝字型freetype
[root@localhost freetype-2.3.5]# ./configure --prefix=/usr/local/freetype
0x10:安裝GD
提供PHP圖形拓展庫
[root@localhost lamp]# mkdir /usr/local/gd2
[root@localhost lamp]# cd /usr/src/lamp/gd-2.0.35/
[root@localhost gd-2.0.35]# ./configure --prefix=/usr/local/gd2/ --with-jpeg=/usr/local/jpeg6/ --with-freetype=/usr/local/freetype/ --with-png=/usr/local/libpng/
出現錯誤
解決方法:
編輯gd_png.c檔案
[root@localhost gd-2.0.35]# vim gd_png.c
指定一下配置檔案路徑即可,安裝完成
make
make install
安裝Apache
在此之前需要裝兩個工具包
[root@localhost lamp]# cp -r apr-1.4.6 httpd-2.4.7/srclib/apr
[root@localhost lamp]# cp -r apr-util-1.4.1 httpd-2.4.7/srclib/apr-util
#這兩個工具也需要安裝一下,具體查百度吧,百度有很詳細的安裝
cd pcre-8.34/
./configure
make
make install
[root@localhost lamp]# cd httpd-2.4.7/
[root@localhost httpd-2.4.7]# ./configure --prefix=/usr/local/apache2/ --sysconfdir=/usr/local/apache2/etc --with-include-apr --enable-so --enable-deflate=shared --enable-expires=shared --enable-rewrite=shared
但是在make install時報錯(類似這種的)
按照老師發的方法試一下:
./configure \
> --prefix=/usr/local/apache2 \
> --sysconfdir=/etc/httpd \
> --with-z=/usr/local/zlib \
> --with-included-apr \
> --disable-userdir \
> --enable-so \
> --enable-deflate=shared \
> --enable-expires=shared \
> --enable-rewrite=shared \
> --enable-static-support
因為之前編譯過,是以要清除下
make clean
但又遇到一個錯誤,Apache安裝是編譯安裝,安裝路徑不是預設路徑,Apache服務沒有添加到Linux服務中
可以參考下面的方法
注意我這裡
httpd
要換成
Apache2
#存放的位置不同,但功能都一樣
啟動服務發現成功
安裝mysql
首先需要安裝這個工具
oot@localhost lamp]# yum -y install cmake
其次安裝下文法解釋器
[root@localhost lamp]# yum -y install bison
然後建立一個使用者來使資料庫運作
useradd mysql
接下來按照老師的指令
執行發現報錯
解決方法
[root@localhost mysql-5.5.23]# yum -y install ncurses-devel
[root@localhost lamp]# cd ncurses-5.9/
[root@localhost ncurses-5.9]# ./configure --with-shared --without-debug --with-ada --enable-overwrite
make make install
缺失的包我們已經安裝了但如果還是報錯就按照下面的進行操作
#删掉原來的目錄
rm -rf mysql-5.5.23
#再次解壓
tar -zxf mysql-5.5.23.tar.gz
檢視一下包是否安好
[root@localhost lamp]# rpm -q ncurses
ncurses-5.9-14.20130511.el7_4.x86_64
[root@localhost lamp]# rpm -q ncurses-devel
ncurses-devel-5.9-14.20130511.el7_4.x86_64
再進入mysql目錄中,進行編譯
安裝成功,說明這裡的這個軟體包是有先後順序的,必須先安裝
ncurses
和
ncurses-devel
才行
接下來就是
make&&make install
進入mysql目錄更改一些權限
cd /usr/local/mysql/
chown -R mysql:mysql .
#資料庫初始化
[root@localhost mysql]# /usr/local/mysql/scripts/mysql_install_db --user=mysql
資料庫初始化成功,接下來授權一下表和庫的權限
t@localhost mysql]# chown -R root .
[root@localhost mysql]# chown -R mysql data/
#複制一下配置檔案
[root@localhost mysql]# cp support-files/my-medium.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’? y
開啟MySQL
[root@localhost mysql]# /usr/local/mysql/bin/mysqld_safe --user=mysql
如果開啟沒成功,就用上面的初始化的指令再來一次
如果卡到這裡的話,用下面的指令殺死mysql的程序,再初始化一遍資料庫再啟動即可
ps aux | grep mysql
netstat -anpt
發現3306端口已經打開了,資料庫已經啟動了
添加開機自啟
[root@localhost mysql]# vim /etc/rc.d/rc.local
登陸mysql
/usr/local/mysql/bin/mysql
直接登陸會不那麼安全,設定一個密碼
[root@localhost mysql]# /usr/local/mysql/bin/mysqladmin -u root password '123456'
再次登陸就需要密碼了,記住要删除history,因為會記錄設定的密碼
history -c
#清楚所有記錄
安裝PHP
接下來就是最後一步了,安裝PHP
#預先準備好的環境,先要安裝上
yum -y install libtool*
接下來修改一下配置檔案以支援資料庫的内容
[root@localhost /]# vim /usr/local/gd2/include/gd_io.h
(注:這裡的位置是錯的,正确位置往下面看)
添加上這一行代碼,儲存退出
接下來就是安裝php,需要指定之前安裝過的軟體路徑,是以有點長
./configure --prefix=/usr/local/php/ \
--with-config-file-path=/usr/local/php/etc/ \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysql=/usr/local/mysql \
--with-libxml-dir=/usr/local/libxml2 \
--with-jpeg-dir=/usr/local/jpeg6/ \
--with-png-dir=/usr/local/libpng/ \
--with-freetype-dir=/usr/local/freetype/ \
--with-gd=/usr/local/gd2/ \
--with-mcrypt=/usr/local/libmcrypt/ \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--enable-soap --enable-mbstring=all --enable-sockets --with-pdo-mysql=/usr/local/mysql --without-pear
但這裡會報錯
configure: error: png.h not found.
,按道理說上面我們已經安裝過了
libpng
,但是還是不行,查了百度,發現還需要
libpng-devel
,是以也要安裝一下
yum install libpng-devel
安裝成功,接下來
make
的時候又報錯了
老師也出現了這個問題,最後發現是我們在
vim /usr/local/gd2/include/gd_io.h
編輯這個檔案的時候,那一行加錯位置了,應該加在這個地方
修改好之後儲存,再次進入php目錄進行make編譯
出現這個頁面就沒什麼問題了繼續
make insatll
終于不報錯了
建立一個存放配置檔案的目錄
[root@localhost php-5.4.25]# mkdir /usr/local/php/etc
複制一下主配置檔案
[root@localhost php-5.4.25]# cp php.ini-production /usr/local/php/etc/php.ini
#老師的配置檔案存在的目錄
vim /usr/local/apache2/etc
#但我的是在/etc目錄下
vi /etc/httpd/httpd.conf
#隻是目錄不同而已,其他修改都一樣
往下面拉,找了好久才找到,添加指定的那一行即可儲存退出
重新開機apache
/usr/local/apache2/bin/apachectl restart
測試
apache與php
下面就進行測試,在
/usr/local/apache2/htdocs/
目錄下建立一個
index.php
,寫入
<?php
phpinfo();
>
進行通路
OK,說明apache能與php一同工作了
apache與MySQL
下面進行測試apache是否能和MySQL一起工作
在index.php頁面寫入如下代碼即可測試
<?php
$link=mysql_connect('localhost','root','123456');
if($link) echo "hello,lemon";
mysql_close();
?>
說明mysql能與apache一起工作
因為指令式的mysql很難去操作,是以安裝一下phpmyadmin
[root@localhost mysql]# cd /usr/src/lamp/
[root@localhost lamp]# cp -r phpMyAdmin-4.1.4-all-languages /usr/local/apache2/htdocs/phpmyadmin
[root@localhost phpmyadmin]# cp config.sample.inc.php config.inc.php
#修改下通路類型
vim config.inc.php
#将cookie改成http