LAMP純原始碼編譯安裝日誌
一.LAMP構架的安裝與經驗技巧(原始碼安裝好處。是便於管理,可以選定引數,可以使用新版本)
相關軟體列表:
# ls /soft/ | grep -E “*.gz|*.zip|*.xz|*.bz2”
apr-1.4.5.tar.gz
apr-util-1.3.12.tar.gz
autoconf-2.61.tar.gz
freetype-2.3.12.tar.gz
httpd-2.4.18.tar.bz2
jpegsrc.v6b.tar.gz
libgd-2.1.1.tar.xz
libmcrypt-2.5.8.tar.gz
libpng-1.4.1.tar.gz
libxml2-2.7.6.tar.gz
mysql-5.6.17.tar.gz
pcre-8.10.zip
php-5.6.18.tar.gz
zlib-1.2.5.tar.gz
參考解壓方式: for n in *.tar.gz; do tar zxf $n;done;
其餘用: tar xf filename
-
apache 的安裝與使用經驗
動態編譯與靜態編譯(每次啟動服務的時候都載入)
(apache的擴充套件外掛是通過模組機制擴充套件的。apache支援PHP是通過編譯模組然後載入模組實現的。)
(1) apache 需要的相關庫檔案 apr apr-util pcre(支援rewrite功能)
cd apr-1.4.5
./configure –prefix=/usr/local/apr
make && make instal
cd apr-util-1.3.12
./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr/bin/apr-1-config
make && make install
cd pcre-8.10
./configure –prefix=/usr/local/pcre
make&&make install
下面是功能模組(使apache支援功能起到壯大apache的作用)
(2) 安裝libxml2
cd libxml2-2.7.6
./configure –prefix=/usr/local/libxml2
make && make install
(3)安裝libmcrypt
cd libmcrypt-2.5.8
./configure –prefix=/usr/local/libmcrypt
make && make install
(4)安裝zlib
cd zlib-1.2.5
./configure
make && make install
(5)安裝 libpng
cd libpng-1.4.1
./configure –prefix=/usr/local/libpng
make && make install
(6)安裝jpeg6
此安裝包無法自動建立目錄需要手動新增
mkdir /usr/local/jpeg6
mkdir -p /usr/local/jpeg6/{lib,bin,include}
mkdir -p /usr/local/jpeg6/man/man1
cd jpeg-6b
./configure –prefix=/usr/local/jpeg6/ –enable-shared –enable-static
make && make install
錯誤checking host system type… Invalid configuration `x86_64-unknown-linux-gnu`: machine `x86_64-unknown` not recognized
或者出現make: ./libtool: Command not found
一般原因是 所以來的libtool 庫檔案版本低或缺失。
解決方法:安裝高版本的libtool 然後拷貝2個檔案
cp /usr/share/libtool/config/config.sub .
cp /usr/share/libtool/config/config.guess .
繼續 make && make install
(7)安裝freetype
cd freetype-2.3.12
./configure –prefix=/usr/local/freetype
make && make install
(8)安裝autoconf
cd autoconf-2.61
./configure
make && make install
(9)安裝GD庫
cd libgd-2.1.1
./configure
–prefix=/usr/local/gd2/
–enable-m4_pattern_allow
–with-zlib=/usr/local/zlib/
–with-jpeg=/usr/local/jpeg6/
–with-png=/usr/local/libpng/
–with-freetype=/usr/local/freetype/
make && make install
主題(一)apache原始碼編譯安裝
cd httpd-2.4.18
./configure –prefix=/usr/local/apache2
–enable-mods-shared=all
–enable-so
–enable-proxy-ajp
–enable-rewrite
–with-apr=/usr/local/apr
–with-apr-util=/usr/local/apr-util
–with-pcre=/usr/local/pcre
make && make install
# /usr/local/apache2/bin/apachectl start
# curl 127.0.0.1
<html><body><h1>It works!</h1></body></html>
apache下的的主要目錄;
bin build cgi-bin conf error htdocs icons include logs man manual modules
(1)bin 是一些命令的存放位置。如httpd 提供apache服務管理如啟動關閉。
使用:./bin/httpd -k {start |restart|stop}
apxs是編譯模組相關的命令(PHP模組)
apachectl是呼叫httpd服務的指令碼。
例如檢視靜態編譯的模組
# ./bin/apachectl -l
Compiled in modules:
core.c
mod_so.c
http_core.c
worker.c
# ./bin/httpd -l (進一步證實http和apachectl關係)
Compiled in modules:
core.c
mod_so.c
http_core.c
worker.c)
(2) htdocs 這個目錄是存放程式設計師編寫的程式的目錄
(3) modules 放置apache編譯模組的目錄。 .so(模組的字尾名)
(4) logs 日誌檔案目錄 包含 pid 檔案(包含apache父程式)
*****ps -ef | grep httpd****
檢視子程式如果出現不連續可能是apache出現問題。出現重新啟動。
(5)conf 包含apache的所有配置檔案
(6)cgi-bin 提供一些線上表格的功能。如果不需要需要把這個目錄下檔案清空(減小安全隱患)apache 解析PHP語句http.conf裡面的主要引數
DirectoryIndex index.html index.php
LoadModule php5_module modules/libphp5.so
AddType application/x-httpd-php .php -
主題(二)mysql原始碼編譯安裝
cd mysql-5.6.17
cmake
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_DATADIR=/usr/local/mysql/data
-DSYSCONFDIR=/etc
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_MEMORY_STORAGE_ENGINE=1
-DWITH_READLINE=1
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock
-DMYSQL_TCP_PORT=3306
-DENABLED_LOCAL_INFILE=1
-DWITH_PARTITION_STORAGE_ENGINE=1
-DEXTRA_CHARSETS=all
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
Mysql編譯安裝屬性值解析
#cmake
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
#指定安裝路徑
-DMYSQL_DATADIR=/usr/local/mysql/data
#指定mysql資料(庫)檔案的存放路徑
-DSYSCONFDIR=/etc
#配置檔案
-DWITH_MYISAM_STORAGE_ENGINE=1
#引擎支援myisam
-DWITH_INNOBASE_STORAGE_ENGINE=1
#引擎支援 innodb
-DWITH_MEMORY_STORAGE_ENGINE=1
#引擎支援 memory-storage
-DWITH_READLINE=1
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock
#指定mysql的sock檔案路徑
-DMYSQL_TCP_PORT=3306
#指定mysql埠號
-DENABLED_LOCAL_INFILE=1
-DWITH_PARTITION_STORAGE_ENGINE=1
-DEXTRA_CHARSETS=all
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
#指定字符集
錯誤:
CMake Error at cmake/readline.cmake:85 (MESSAGE):
Curses library not found. Please install appropriate package,
remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev,
on Redhat and derivates it is ncurses-devel.
解決辦法: yum install ncurses-devel -y
mv mv CMakeCache.txt /tmp
然後重新 cmake(上面的指令如果沒有錯誤提示)
make && make install
檢視是否有mysql使用者和組沒有建立。
useradd mysql -s /sbin/nologin -M
修改mysql許可權:
chown -R mysql.mysql /usr/local/mysql
進入mysql安裝目錄下,執行初始化配置指令碼,建立系統自帶的資料庫和表
# ./scripts/mysql_install_db –basedir=/usr/local/mysql/ –datadir=/usr/local/mysql/data –user=mysql
啟動mysql服務:# ./support-files/mysql.server start
錯誤提示:
Starting MySQL…. ERROR! The server quit without updating PID file (/usr/local/mysql/data/swallow.pid)
可能出現的原因和解決方法:
(1).如果是初次安裝。可能是初始化沒有成功。在執行初始化命令的時候。提示裡面包含2個OK (代表成功。這種情況重新初始化
(2)可能原來系統安裝過mysql 。可以用ps -ef | grep msyql 檢視。然後結束程式:pkill mysql
(3)data 目錄許可權可能不對。 chmod 755 data
(4)檢視屬主或屬組 一般 在 建立mysql使用者 的後面就會 chown -R mysql:mysql /usr/local/mysql (這個可能性不大)
啟動mysql程式:
./bin/mysql
可以產看mysql狀態:
mysql> status
————–
./bin/mysql Ver 14.14 Distrib 5.6.17, for Linux (x86_64) using EditLine wrapper
Connection id: 1
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: “
Using delimiter: ;
Server version: 5.6.17 Source distribution
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 7 min 7 sec
Threads: 1 Questions: 5 Slow queries: 0 Opens: 67 Flush tables: 1 Open tables: 60 Queries per second avg: 0.011
————–
主題(三) PHP原始碼編譯安裝
cd php-5.6.18
./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-png-dir=/usr/local/libpng/
–with-jpeg-dir=/usr/local/jpeg6/
–with-freetype-dir=/usr/local/freetype/
–with-gd=/usr/local/gd2/
–with-zlib-dir=/usr/local/zlib/
–with-mcrypt=/usr/local/libmcrypt/
–with-mysqli=/usr/local/mysql/bin/mysql_config
–with-xpm-dir=/usr/lib64/
–enable-soap
–enable-mbstring=all
–enable-sockets
引數詳解;
./configure
–prefix=/usr/local/php
#安裝路徑
–with-config-file-path=/usr/local/php/etc
#PHP的配置檔案路徑
–with-apxs2=/usr/local/apache2/bin/apxs
#與apache連線需要的支援模組(工具)
–with-mysql=/usr/local/mysql/
–with-libxml-dir=/usr/local/libxml2/
–with-png-dir=/usr/local/libpng/
–with-jpeg-dir=/usr/local/jpeg6/
–with-freetype-dir=/usr/local/freetype/
–with-gd=/usr/local/gd2/
–with-zlib-dir=/usr/local/zlib/
–with-mcrypt=/usr/local/libmcrypt/
# PHP需要的所有前面安裝的連線模組
–with-mysqli=/usr/local/mysql/bin/mysql_config
#指定PHP程式去連線mysql的方式
#PHP5.3。3以後開發了mysqlnd。是PHP新的連線mysql的驅動配置方式:
–with-mysql=mysqlnd
–with-mysqli=mysqlnd
–with-pdo-mysql=mysqlnd
如果想把這3種都載入可以把
–with-mysqli=/usr/local/mysql/bin/mysql_config
這句換成上面3句。
#這裡需要注意的是;mysql的連線mysql方式有3種。分別是:mysql,mysqli和pdo
#這裡需要關注2個;mysqli 和pdo。(他們是主流的支援高版本的)
–with-xpm-dir=/usr/lib64/
–enable-soap
–enable-mbstring=all
–enable-sockets
錯誤:configure: error: xpm.h not found.
解決方法:yum install libXpm-devel -y
make && make install
PHP動態載入模組的方法:如果在靜態編譯的時候那個模組沒有編譯進去可以動態載入。
舉例:檢視原始碼下的模組目錄;
cd /soft/php-5.6.18/ext/
下面的模組都可以通過動態載入,編譯進去。以ftp 為例;
cd ftp
/usr/local/php/bin/phpize (藉助這個命令生成所需的configure 等一系列的安裝檔案)
./configure –with-php-config=/usr/local/php/bin/php-config
make && make install
至此,就把ftp這個模組編譯安裝完成了。然後,需要去載入檔案(修改php.ini)
cd /usr/local/php/etc/
vim php.ini (初次安裝沒有這個檔案可以去/soft/php-5.6.18/原始碼目錄去拷貝
php.ini-development php.ini-production 一般這兩個檔案運維常用第二個)
查詢到 extension 相關的註釋地方
新增一下兩句:(模組在PHP程式下的位置{一般編譯動態模組後會提示的}和模組的名稱)
extension_dir = “/usr/local/php/lib/php/extensions/no-debug-zts-20131226/”
extension = ftp.so
如果要載入模組需要重新啟動apache伺服器。
/usr/local/apache2/bin/httpd -k restart
檢視PHP模組載入成功與否;可以用php 命令顯示看是否有新增
/usr/local/php/bin/php -m
測試lamp是否搭建成功:
在apach2的htdocs目錄下新建.php檔案
vim ./htdocs/info.php
<?php
phpinfo();
?>
瀏覽器測試:http://192.168.1.140/info.php
結果顯示空白。
解決思路:檢視 /usr/local/apache2/modules/ 是否含有 libphp5.so這個模組。
(這個模組是apache負責PHP解析的)
修改配置檔案:http.conf
ServerName loacalhost:80
(仿照這行新增AddType application/x-gzip .gz .tgz)
AddType application/x-httpd-php .php
載入pdo-mysql 的錯誤:make 錯誤
/soft/php-5.6.18/ext/pdo_mysql/php_pdo_mysql_int.h:27:34: error: ext/mysqlnd/mysqlnd.h: No such file or directory
解決方法:cp -a /soft/php-5.6.18/ext/pdo_mysql /usr/local/php/include/php/ext/
這裡的思路是 :make 是在安裝目錄下操作。不是在原始碼目錄操作。需要把依賴的檔案放置到安裝路徑下。方便應用。
但是:遺憾的是安裝完成後,不可以載入。用常規方法:
extension_dir = “/usr/local/php/lib/php/extensions/no-debug-zts-20131226/”
extension = pdo_mysql.so
重新啟動了好多httpd 也沒載入成功。用 bin/php -m 一直沒有檢視到。我可以確定修改php.ini檔案生效,把那個ftp模組註釋掉後
就看不到那個模組出現。所以,只好重新編譯的。
將編譯的–with-mysqli=/usr/local/mysql/bin/mysql_config 語句換成了:
–with-mysql=mysqlnd
–with-mysqli=mysqlnd
–with-pdo-mysql=mysqlnd
這幾句。支援3種方式連線mysql。這裡mysqlnd是PHP5.3以上的預設連線mysql的引擎
PHP不在支援擴充套件mysql(mysqli) 編譯的時候可以是:–with-pdo-mysql=mysqlnd
附上PHP連線的3個指令碼
cat mysqli.php mysql-pdo.php mysql.php
<?php
$conn = mysqli_connect(`localhost`, `root`, “, `mysql`);
if(!$conn){
die(“資料庫連線錯誤” . mysqli_connect_error());
}else{
echo”資料庫連線成功”;
}
?>
<?php
try{
$pdo=new pdo(“mysql:host=127.0.0.1;dbname=mysql”,”root”,””);
}catch(PDDException $e){
echo “資料庫連線錯誤”;
}
echo “恭喜!資料庫連線成功”;
?>
<?php
$conn = @ mysql_connect(“localhost”, “root”, “”) or die(“資料庫連線錯誤”);
mysql_select_db(“bbs”, $conn);
mysql_query(“set names `utf8`”);
echo “資料庫連線成功”;
?>
檢視 phpinfo() 資訊來檢視PHP 詳細情況。
上傳檔案關注如下幾個引數:
post_max_size = 128M
upload_max_filesize = 128M
#這兩個設定一樣即可,可以更大但要注意超時
max_execution_time = 30
max_input_time = 600
memory_limit = 32M
my.cnf 的執行順序:
1. /etc
2.”$basedir/my.cnf” (需要把/etc/my.cnf 更改)
php.ini生效路徑問題
PHP將按照如下順序依次查詢該檔案:
1.當前工作目錄;
2.環境變數PHPRC指明的路徑;
3.編譯時指定的路徑。
相關文章
- LAMP原始碼編譯安裝LAMP原始碼編譯
- 詳解LAMP原始碼編譯安裝LAMP原始碼編譯
- LAMP原始碼編譯安裝配置+wordpressLAMP原始碼編譯
- 原始碼安裝lamp原始碼LAMP
- 編譯安裝LAMP環境編譯LAMP
- 原始碼編譯安裝 httpd2.4+MariaDB5.5+php5.4(LAMP)原始碼編譯httpdPHPLAMP
- LAMP原始碼安裝+wordpress安裝LAMP原始碼
- [LAMP]Php-5.3.29編譯安裝LAMPPHP編譯
- [LAMP]Mysql-5.6.28編譯安裝LAMPMySql編譯
- LAMP兩種編譯安裝模式LAMP編譯模式
- LAMP 編譯安裝基本步驟LAMP編譯
- 原始碼編譯安裝Redis原始碼編譯Redis
- [LAMP]Apache-2.2.31編譯安裝LAMPApache編譯
- 原始碼編譯安裝的原理原始碼編譯
- zabbix agent原始碼編譯安裝原始碼編譯
- 原始碼編譯安裝MySQL 5.7.9原始碼編譯MySql
- 【轉】MySQL原始碼編譯安裝MySql原始碼編譯
- 在Centos5.2下編譯安裝LAMPCentOS編譯LAMP
- centos6.0LAMP原始碼安裝CentOSLAMP原始碼
- nginx原始碼編譯安裝(詳解)Nginx原始碼編譯
- php-7.1.0原始碼編譯安裝PHP原始碼編譯
- lnmp環境安裝-原始碼編譯LNMP原始碼編譯
- MySQL 5.6原始碼編譯安裝流程MySql原始碼編譯
- linux中原始碼編譯安裝Linux原始碼編譯
- linux下LAMP原始碼安裝部署LinuxLAMP原始碼
- 阿里雲mysql原始碼編譯安裝阿里MySql原始碼編譯
- 04 原始碼編譯安裝與介紹原始碼編譯
- MySQL5.7.16原始碼編譯安裝MySql原始碼編譯
- Qt4 原始碼編譯安裝指南QT原始碼編譯
- percona-toolkit原始碼編譯安裝原始碼編譯
- CentOS 7 原始碼編譯安裝 Mysql 5.7CentOS原始碼編譯MySql
- MySQL 5.7.9原始碼編譯安裝說明MySql原始碼編譯
- 如何編譯安裝原始碼包軟體編譯原始碼
- PostgreSQL原始碼學習 win10原始碼編譯安裝SQL原始碼Win10編譯
- Greenplum_原始碼編譯安裝和RPM包安裝原始碼編譯
- linux-原始碼的編譯安裝和解除安裝Linux原始碼編譯
- Centos7下原始碼編譯安裝apacheCentOS原始碼編譯Apache
- CentOS 6.5 原始碼編譯安裝 MySQL 5.5 5.6CentOS原始碼編譯MySql