LAMP 指的是Linux Apache mysql php ,安裝到Linux上,搭建一個環境來運行php腳本語言
(1)安裝mysql (3306端口)
cd /usr/local/src/ 進入目錄
wgethttp://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.31-linux-glibc2.5-i686.tar.gz 下載文件
tar zxvf mysql-5.6.31-linux-glibc2.5-i686.tar.gz 解壓文件
mv mysql-5.6.31-linux-glibc2.5-i686 /usr/local/mysql 移動並重命名
cd ../mysql/ 進入到文件夾內
需要先建立mysql用戶
useradd -s /sbin/nologin -M mysql 沒有家目錄,不需要登陸
mkdir -p /data/mysql ; chown -R mysql:mysql /data/mysql 建立文件夾並修改權限
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql/ 初始化.用戶為mysql , 安裝路徑在/data/mysql/
初始化過程中,會提示錯誤,是缺少libaio , 直接安裝
yum install -y libaio*
cp my.cnf /etc/my.cnf cp配置文件
cp support-files/mysql.server /etc/init.d/mysqld ; chmod 755 /etc/init.d/mysqld cp啟動腳本並修改文件屬性
vim /etc/init.d/mysqld 修改啟動腳本 datadir=/data/mysql basedir=/usr/local/mysql
chkconfig --add mysqld 啟動腳本加入系統服務
chkconfig mysqld on 設置為開機啟動
service mysqld start 啟動mysql
netstat -lnp |grep mysql 查看mysql端口.一般為3306
(2)安裝Apache (httpd 80端口)
wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.2.31.tar.gz 下載
tar zxvf httpd-2.2.31.tar.gz 解壓
cd httpd-2.2.31 進入
./configure \
--prefix=/usr/local/apache2 \
--with-included-apr \
--enable-so \
--enable-deflate=shared \
--enable-expires=shared \
--enable-rewrite=shared \
--with-pcre
deflate expires rewrite =shared 已動態共享的方式運作 so 啟用DSO deflate 共享的方式編譯deflate pcre 正則相關的庫
常常會遇到一些錯誤
configure: error: Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.
解決方案: 將APR和APR-util源碼下載,解壓放到httpd-2.4.3/srclib裡面,並去除版本號
wget
tar zxvf apr-1.5.2.tar.gz
cp -r apr-1.5.2 httpd-2.4.20/srclib/apr
wget
tar zxvf apr-util-1.5.4.tar.gz
cp -r apr-util-1.5.4 httpd-2.4.20/srclib/apr-util
錯誤
configure: error: in `/usr/local/src/httpd-2.4.20/srclib/apr':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
configure failed for srclib/apr
這是因為沒有安裝編譯器.一般使用GCC,直接安裝
yum install gcc
可能需要的包
yum install -y zlib-devel pcre pcre-devel apr apr-devel
make && make install
/usr/local/apache2/bin/apachectl start
查看模塊 static 靜態加載 shared 動態共享加載
/usr/local/apache2/bin/apachectl -M (-l 查看靜態模塊) (-t 查看配置文件是否有語法錯誤)
重啟Apache
/usr/local/apache2/bin/apachectl restart
重新加載Apache(配置文件)
/usr/local/apache2/bin/apachectl graceful
關於靜態模塊prefork.c的模式
有worker prefork event
prefork 主進程 子進程
worker 主進程 子進程 子進程下還有線程(高並發時占優勢,線程占內存少)
event 是worker的升級版.保持長連接時,性能比worker好
重啟錯誤
httpd: apr_sockaddr_info_get() failed for bogon
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
沒有在 /etc/httpd/conf/httpd.conf 中設定 ServerName。所以apache會用主機上的名稱來取代,首先會去找 /etc/hosts 中有沒有主機的定義。所以要解決這個問題可以設定httpd.conf文件中的 ServerName,如下: (1) ServerName localhost:80
或者在 /etc/hosts 中填入自己的主機名稱 bogon,如下: (2)127.0.0.1
bogon(3) 安裝PHP
wgethttp://cn2.php.net/distributions/php-5.6.22.tar.gz 下載
tar zxvf php-5.6.22.tar.gz 安裝
cd php-5.6.22 進入
./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-config-file-path=/usr/local/php/etc \
--with-mysql=/usr/local/mysql \
--with-libxml-dir \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-iconv-dir \
--with-zlib-dir \
--with-bz2 \
--with-openssl \
--with-mcrypt \
--enable-soap \
--enable-gd-native-ttf \
--enable-mbstring \
--enable-sockets \
--enable-exif \
--disable-ipv6
可能需要的包
yum install -y libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libpng libpng-devel freetype freetype-devel libmcrypt-devel libjpeg*
make &&make install
cp php.ini-production /usr/local/php/etc/php.ini cp配置文件
編譯的時候遇到的錯誤
make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1
編譯的時候添加 --disable-fileinfo 據說是內存小於1G引起的
--with-apxs2=/usr/local/apache2/bin/apxs 一個自動幫助安裝擴展模塊的工具
(4)測試PHP解析
找到
AddType application/x-gzip .gz .tgz
在其下添加
AddType application/x-httpd-php .php
找到
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
改為
<IfModule dir_module>
DirectoryIndex index.html index.htm index.php
</IfModule>
檢測Apache配置是否有問題
/usr/local/apache2/bin/apachectl -t
沒問題重新加載配置文件
/usr/local/apache2/bin/apachectl graceful
用info.php可以查看曾經是在怎樣編譯php的
<?php
phpinfo();
?>
注: Apache查看 */apache2/build/config.nice
mysql查看 */mysql/bin/mysqlbug