500
技術社區[雲棲]
ubuntu 手動編譯lamp
文章來源:https://blog.csdn.net/turkeyzhou/archive/2009/10/06/4635079.aspx
此文基於自己手動編譯apache-2.2.11,mysql-5.1.36和php-5.3.0, 環境是在ubuntu 9.04
一、安裝apache-2.1.11
1、下載
https://httpd.apache.org/download.cgi
2、解壓
tar zxvf httpd-2.2.11.tar.gz
3、建立目標文件夾
mkdir /usr/local/apache
也就是說等下安裝的apache要安裝到這個文件夾裏麵
4、配置
回到原來解壓之後產生的文件夾
./configure --prefix=/usr/local/apache --enable-module=shared
要加上後麵的參數,否則無法使用php
5、編譯
make
6、安裝
sudo make install
7、啟動,重啟和停止
/usr/local/apache/bin/apachectl -k start
/usr/local/apache/bin/apachectl -k restart
/usr/local/apache/bin/apachectl -k stop
8、配置文件
gedit /usr/local/apache/conf/httpd.conf
修改以下配置(當然這些修改是最基本的修改,如果要更高級的,參照其他apache配置手冊)
8.1、
找到:
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
在後麵添加:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
8.2、
找到:
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
添加:
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
8.3、
找到:
#ServerName www.example.com:80
修改為:
ServerName 127.0.0.1:80或者ServerName localhost:80
記得要去掉前麵的“#”
否則會出現以下錯誤提示:
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
9、測試
在瀏覽器裏輸入https://127.0.0.1
如果出現It Works!說明成功。
二、安裝mysql-5.1.36
1、下載
https://dev.mysql.com/downloads/
2、解壓
unzip mysql-5.1.36.zip
3、建立目標文件夾
mkdir /usr/local/mysql
也就是說等下安裝的mysql要安裝到這個文件夾裏麵
4、配置
./configure --prefix=/usr/local/mysql/ --with-extra-charsets=all
第2個參數是說明ubuntu可以使用所有的字符集
5、編譯
make
6、安裝
make install
7、啟動
MySQL服務並不會自動啟動,還需要先初始化MySQL數據庫,操作如下:
cd /usr/local/mysql/bin
sudo ./mysql_install_db --user=<username>
注意,這裏最後的username是指可以操作數據庫的用戶,可以是當前用戶,也可以新建用戶
./mysqld_safe --user=<username>
這裏的username就是剛才的那個
8、為根用戶創建密碼
8.1、用SET PASSWORD命令
./mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
8.2、用mysqladmin
./mysqladmin -u root password "newpass"
如果root已經設置過密碼,采用如下方法
./mysqladmin -u root password oldpass "newpass"
8.3、用UPDATE直接編輯user表
./mysql -u root
mysql> use mysql;
mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';
mysql> FLUSH PRIVILEGES;
在丟失root密碼的時候,可以這樣
./mysqld_safe --skip-grant-tables&
./mysql -u root mysql
mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='root';
mysql> FLUSH PRIVILEGES;
我隻測試了前2種,第三種不知道怎麼樣
9、測試
mysql -u root
會提示輸入密碼,就用剛才設置的密碼
123456
如果出現mysql>,說明成功了
10、創建數據庫
CREATE DATABASE MYTEST;
USE MYTEST;
CREATE TABLE TEST (TEST VARCHAR(10));
INSERT INTO TEST VALUES ('TEST');
SELECT * FROM TEST;
如果能出結果,說明一且都正常了。
11、問題
11.1、
描述:
configure: error: No curses/termcap library found
解決:
apt-get install ncurses-dev
11.2、
描述:
缺少g++
解決:
apt-get install g++
11.3、
描述:
-fno-rtti -c -o my_new.o my_new.cc
../include/my_global.h:988: error: redeclaration of C++ built-in type ‘bool’
make[2]: *** [my_new.o] Error 1
make[2]: Leaving directory `/root/mysql-5.0.67/mysys'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/mysql-5.0.67'
make: *** [all] Error 2
解決:
重新configure 然後再make 和make install
11.4、
描述:
初始化數據庫的時候(步驟6)
FATAL ERROR: Could not find mysqld(或者其他什麼找不到)
解決:
/etc/mysql/my.cnf刪掉或者改個名字
三、安裝php-5.3.0
1、 下載
https://www.php.net/downloads.php
2、解壓
tar xvf php-5.3.0.tar.bz2
3、建立目標文件夾
mkdir /usr/local/php
也就是說等下安裝的php要安裝到這個文件夾裏麵
4、配置
回到原來解壓後的文件夾
./configure --prefix=/usr/local/php/ --with-mysql=/usr/local/mysql/ --with-apxs2=/usr/local/apache/bin/apxs --with-config-file-path=/usr/local/php/etc
5、編譯
make
6、測試編譯
make test
7、安裝
make install
8、配置文件
把原來位於源代碼裏麵的php.ini-production拷貝到/usr/local/php/etc/下,並且重命名為php.ini
9.重啟apache
10、測試
在apache的htdocs下建立一個php文件test.php,裏麵的內容如下:
<?php
phpinfo();
?>
然後在瀏覽器裏輸入https://127.0.0.1/test.php
如果出現php的相關配置,成功,如果什麼都沒有輸入,說明失敗,重新以上步驟或者查找原因
11、問題
11.1
描述:
/usr/bin/ld: cannot find -lltdl
collect2: ld returned 1 exit status
make: *** [libphp5.la] Error 1
解決:
這是因為找不到libltdl庫文件
/software/libmcrypt-2.5.8/libltdl
./configure --enable-ltdl-install
make
make install
11.2、
描述:
reference to `res_nclose'
gmake: *** [sapi/cli/php] Îøèáêà 1
解決:
我換了一個版本就通過了,不知大如何解決。
11.3、
配置時出現:
configure: error: xml2-config not found. Please check your libxml2 installation.
解決:
可以通過apt-get install libxml2-dev來解決
2、解壓
tar zxvf httpd-2.2.11.tar.gz
3、建立目標文件夾
mkdir /usr/local/apache
也就是說等下安裝的apache要安裝到這個文件夾裏麵
4、配置
回到原來解壓之後產生的文件夾
./configure --prefix=/usr/local/apache --enable-module=shared
要加上後麵的參數,否則無法使用php
5、編譯
make
6、安裝
sudo make install
7、啟動,重啟和停止
/usr/local/apache/bin/apachectl -k start
/usr/local/apache/bin/apachectl -k restart
/usr/local/apache/bin/apachectl -k stop
8、配置文件
gedit /usr/local/apache/conf/httpd.conf
修改以下配置(當然這些修改是最基本的修改,如果要更高級的,參照其他apache配置手冊)
8.1、
找到:
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
在後麵添加:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
8.2、
找到:
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
添加:
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
8.3、
找到:
#ServerName www.example.com:80
修改為:
ServerName 127.0.0.1:80或者ServerName localhost:80
記得要去掉前麵的“#”
否則會出現以下錯誤提示:
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
9、測試
在瀏覽器裏輸入https://127.0.0.1
如果出現It Works!說明成功。
二、安裝mysql-5.1.36
1、下載
https://dev.mysql.com/downloads/
2、解壓
unzip mysql-5.1.36.zip
3、建立目標文件夾
mkdir /usr/local/mysql
也就是說等下安裝的mysql要安裝到這個文件夾裏麵
4、配置
./configure --prefix=/usr/local/mysql/ --with-extra-charsets=all
第2個參數是說明ubuntu可以使用所有的字符集
5、編譯
make
6、安裝
make install
7、啟動
MySQL服務並不會自動啟動,還需要先初始化MySQL數據庫,操作如下:
cd /usr/local/mysql/bin
sudo ./mysql_install_db --user=<username>
注意,這裏最後的username是指可以操作數據庫的用戶,可以是當前用戶,也可以新建用戶
./mysqld_safe --user=<username>
這裏的username就是剛才的那個
8、為根用戶創建密碼
8.1、用SET PASSWORD命令
./mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
8.2、用mysqladmin
./mysqladmin -u root password "newpass"
如果root已經設置過密碼,采用如下方法
./mysqladmin -u root password oldpass "newpass"
8.3、用UPDATE直接編輯user表
./mysql -u root
mysql> use mysql;
mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';
mysql> FLUSH PRIVILEGES;
在丟失root密碼的時候,可以這樣
./mysqld_safe --skip-grant-tables&
./mysql -u root mysql
mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='root';
mysql> FLUSH PRIVILEGES;
我隻測試了前2種,第三種不知道怎麼樣
9、測試
mysql -u root
會提示輸入密碼,就用剛才設置的密碼
123456
如果出現mysql>,說明成功了
10、創建數據庫
CREATE DATABASE MYTEST;
USE MYTEST;
CREATE TABLE TEST (TEST VARCHAR(10));
INSERT INTO TEST VALUES ('TEST');
SELECT * FROM TEST;
如果能出結果,說明一且都正常了。
11、問題
11.1、
描述:
configure: error: No curses/termcap library found
解決:
apt-get install ncurses-dev
11.2、
描述:
缺少g++
解決:
apt-get install g++
11.3、
描述:
-fno-rtti -c -o my_new.o my_new.cc
../include/my_global.h:988: error: redeclaration of C++ built-in type ‘bool’
make[2]: *** [my_new.o] Error 1
make[2]: Leaving directory `/root/mysql-5.0.67/mysys'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/mysql-5.0.67'
make: *** [all] Error 2
解決:
重新configure 然後再make 和make install
11.4、
描述:
初始化數據庫的時候(步驟6)
FATAL ERROR: Could not find mysqld(或者其他什麼找不到)
解決:
/etc/mysql/my.cnf刪掉或者改個名字
三、安裝php-5.3.0
1、 下載
https://www.php.net/downloads.php
2、解壓
tar xvf php-5.3.0.tar.bz2
3、建立目標文件夾
mkdir /usr/local/php
也就是說等下安裝的php要安裝到這個文件夾裏麵
4、配置
回到原來解壓後的文件夾
./configure --prefix=/usr/local/php/ --with-mysql=/usr/local/mysql/ --with-apxs2=/usr/local/apache/bin/apxs --with-config-file-path=/usr/local/php/etc
5、編譯
make
6、測試編譯
make test
7、安裝
make install
8、配置文件
把原來位於源代碼裏麵的php.ini-production拷貝到/usr/local/php/etc/下,並且重命名為php.ini
9.重啟apache
10、測試
在apache的htdocs下建立一個php文件test.php,裏麵的內容如下:
<?php
phpinfo();
?>
然後在瀏覽器裏輸入https://127.0.0.1/test.php
如果出現php的相關配置,成功,如果什麼都沒有輸入,說明失敗,重新以上步驟或者查找原因
11、問題
11.1
描述:
/usr/bin/ld: cannot find -lltdl
collect2: ld returned 1 exit status
make: *** [libphp5.la] Error 1
解決:
這是因為找不到libltdl庫文件
/software/libmcrypt-2.5.8/libltdl
./configure --enable-ltdl-install
make
make install
11.2、
描述:
reference to `res_nclose'
gmake: *** [sapi/cli/php] Îøèáêà 1
解決:
我換了一個版本就通過了,不知大如何解決。
11.3、
配置時出現:
configure: error: xml2-config not found. Please check your libxml2 installation.
解決:
可以通過apt-get install libxml2-dev來解決
實際安裝
11.4:最後采用了PHP源碼夾中的INSTALL中的方式,開始一直設置--with-mysql中指定的apt-get
install安裝的文件夾/usr/loca/mysql5.0但通不過,現實無法找到mysql header
file的時候,將mysql的include文件夾內容複製至/usr/include文件夾中,但是仍然顯示mysql配置錯誤和無法找到庫文件,所
幸去掉了--with-mysql參數:
./configure --with-apxs2=/usr/local/httpd/bin/apxs --with-zlib-dir=/usr/include
四、安裝phpMyAdmin
1、下載
https://www.phpmyadmin.net/home_page/index.php
2、解壓
tar xvf phpMyAdmin-3.2.0.1-all-languages.tar.bz2
3、移動位置
把解壓後得到的文件夾移動到/usr/local/apache/htdocs/下,名稱改為phpMyAdmin
4、配置文件
cp config.simple.inc.php config.inc.php
gedit config.inc.php
找到:
$cfg['blowfish_secret'] = ''
改為:
$cfg['blowfish_secret'] = '123456'
其中'123456'這些數字隨便寫
5、測試
https://127.0.0.1/phpMyAdmin
如果能出現登錄框,並且能登錄到數據庫,說明以上安裝全部正確
6、問題
6.1、無法加載 mcrypt 擴展,請檢查您的 PHP 配置。
解決:
安裝 libmcrypt
下載libmcrypt-2.5.8.tar.gz
解壓tar zxvf libmcrypt-2.5.8.tar.gz
配置./configure
編譯 make
安裝 make install
注意,這裏配置的時候不需要指定安裝位置,否則在以後步驟中可能出錯
進入php的安裝源文件,進入php-5.3.0/ext/mcrypt
運行/usr/local/php/bin/phpize
這時可能說沒有autoconf這個軟件,就裝一下apt-get install autoconf,當然自己編譯也可以
再次運行/usr/local/php/bin/phpize
會產生configure等文件
然後配置./configure --with-php-config=/usr/local/php/bin/php-config
編譯make
安裝 make install
會出現提示說在某個文件夾裏麵產生了一個文件mcrypt.so,這時要把這個文件移動到extension_dir裏麵,具體extension_dir是那個,可以參照剛安裝完php之後測試時顯示的信息
然後重新編譯php,回到php安裝的(4)這時的配置參數要加一個--with-mcrypt
重新編譯安裝php,然後成功後,重啟apache進行測試
6.2、找不到mbstring
解決:
進入php的安裝源文件,進入php-5.3.0/ext/mbstring
運行/usr/local/php/bin/phpize
這時可能說沒有autoconf這個軟件,就裝一下apt-get install autoconf,當然自己編譯也可以
再次運行/usr/local/php/bin/phpize
會產生configure等文件
然後配置./configure --with-php-config=/usr/local/php/bin/php-config
編譯make
安裝 make install
會出現提示說在某個文件夾裏麵產生了一個文件mbstring.so,這時要把這個文件移動到extension_dir裏麵,具體extension_dir是那個,可以參照剛安裝完php之後測試時顯示的信息
這次不用編譯了,到php的配置文件,在extension裏麵添加extension=mbstring.so,然後保存後重新啟動apache,如果沒有達到效果,那麼在後麵添加絕對路徑
6.3如果自己用libmcrypt、mhash、mcrypt編譯mcrypt,那麼記得前麵個兩個配置時要用默認配置,不要加參數,配置mcrypt 時安裝到指定位置,這樣方便重新編譯php,如果在編譯前麵2個時用了指定位置,可能在編譯mcrypt時出現以下問題
6.3.1
描述:
libmcrypt cannot be found
解決:
cp /usr/local/lamp_other/libmcrypt/lib/libmcrypt.* /usr/lib/
ln -s /usr/local/lamp_other/mhash/lib/libmhash.so.2 /usr/lib/libmhash.so.2
這裏/usr/local/lamp_other/libmcrypt/就是安裝libmcrypt的指定路徑
6.3.2
描述:
"You need at least libmhash 0.8.15 to compile this program.
這個問題不知道怎麼解決,有的說在編譯mcrypt時用LD_LIBRARY_DIR=<mhash安裝路徑> ./configure --prefix=/usr/local/mcrypt,不過我沒有成功過
最直接的解決辦法就是得前麵個兩個配置時要用默認配置,不要加參數
最後更新:2017-04-02 04:01:44