Linux運維學習筆記之十三:搭建LAMP經典組合(Linux Apache MySQL PHP)

第二十二章 搭建LAMP經典組合(Linux Apache MySQL PHP)

一、安裝單實例MySQL數據庫

1、安裝前的準備
(1)提前加在虛似機內存,以便在編譯時更快(1-2G)。
(2)提前下載好軟件
(3)重視操作過程中的報錯
(4)一定要進行虛擬機界面去編譯,避免使用SecureCRT操作出現中斷,無法連接的現象,導致前功盡棄。
2、建立MySQL賬號
(1)創建mysql組

groupadd mysql

(2)創建mysql用戶

useradd mysql –g mysql –M –s/sbin/nologin

說明:mysql是一個虛擬用戶,不創建家目錄,不讓登陸

3、安裝mysql-5.1.72
(1)解壓

tar zxf mysql-5.1.72.tar.gz

(2)將配置參數寫入文件(參數過多)

cd mysql-5.1.72

vi configure-mysql.log

./configure \

--prefix=/application/mysql5.1.72 \

--with-unix-socket-path=/application/mysql5.1.72/tmp/mysql.sock \

--localstatedir=/application/mysql5.1.72/data \

--enable-assembler \

--enable-thread-safe-client \

--with-mysqld-user=mysql \

--with-big-tables \

--without-debug \

--with-pthread \

--enable-assembler \

--with-extra-charsets=complex \

--with-readline \

--with-ssl \

--with-embedded-server \

--enable-local-infile \

--with-plugins=partition,innobase \

--with-mysqld-ldflags=-all-static \

--with-client-ldflags=-all-static

(3)刪除原有mysql

a、查看已安裝的mysql包和路徑

rpm -qa | grep -i mysql

find / -name mysql

whereis mysql

b、刪除已安裝包

rpm -ev mysql-devel-5.1.66-2.el6_3.i686

rpm -ev --nodeps mysql-server-5.1.66-2.el6_3.i686

rpm -ev mysql-bench-5.1.66-2.el6_3.i686

rpm -ev --nodeps mysql-5.1.66-2.el6_3.i686

c、刪除已安裝目錄

rm -fr /var/lib/mysql

rm -fr /usr/include/mysql

rm -fr /usr/share/mysql /usr/bin/mysql /usr/lib/mysql

d、查看是否刪除乾淨

rpm -qa | grep -i mysql

whereis mysql

find / -name mysql

(4)configure配置參數

cat configure-mysql.log | bash

(5)安裝(時間較長,2G虛機30分鐘)

make && make install

(6)創建軟連接

ln -s /application/mysql5.1.72/ /application/mysql

4、mysql初始化和啓動
(1)查看mysql自帶的配置文件模版式

ll/wddg/tools/mysql-5.1.72/support-files/my*.cnf

-rw-r--r-- 1 root root  4746 Feb 23 18:10 my-huge.cnf

-rw-r--r-- 1 root root 19779 Feb 2318:10 my-innodb-heavy-4G.cnf

-rw-r--r-- 1 root root  4720 Feb 23 18:10 my-large.cnf

-rw-r--r-- 1 root root  4731 Feb 23 18:10 my-medium.cnf

-rw-r--r-- 1 root root  2499 Feb 23 18:10 my-small.cnf

配置要求:medium <small < large < huge < heavvy

(2)將模版複製到/etc目錄下(虛機配置不高,選擇small)

cp /wddg/tools/mysql-5.1.72/support-files/my-small.cnf/etc/my.cnf

(3)根據配置參數創建存放數據的目錄

mkdir /application/mysql/data –p

(4)授權mysql用戶訪問mysql的安裝目錄

chown -R mysql.mysql /application/mysql

(5)初始化mysql

/application/mysql/bin/mysql_install_db--basedir=/application/mysql --datadir=/application/mysql/data --user=mysql

說明:

mysql_install_db:數據庫初始化腳本,mysql5.5以後不在bin目錄下了

--datadir=/application/mysql/data:數據庫數據文件所在目錄

(6)創建mysql啓動腳本

cp/wddg/tools/mysql-5.1.72/support-files/mysql.server.sh /etc/init.d/mysqld

chkconfig --add mysqld

chkconfig mysqld on

chkconfig --list | grep mysqld

mysqld          0:off   1:off  2:on    3:on    4:on   5:on    6:off

(7)啓動mysql(報錯,原因見第10步)

chmod +x /etc/init.d/mysqld

/etc/init.d/mysqld start   

/etc/init.d/mysqld: line 260:my_print_defaults: command not found

/etc/init.d/mysqld: line 263:my_print_defaults: command not found

/etc/init.d/mysqld: line 270:@HOSTNAME@: command not found

/etc/init.d/mysqld: line 279:@HOSTNAME@: command not found

/etc/init.d/mysqld: line 292: cd:@prefix@: No such file or directory

Starting MySQLCouldn't find MySQLmanager (@bindir@/mysqlma[FAILED]r server (@bindir@/mysqld_safe)

(8)原因是mysqld腳本中的basedir和datadir爲空

vi /etc/init.d/mysqld

basedir=/application/mysql/

datadir=/application/mysql/data

(9)再次啓動mysqld(啓動成功,還是有2個報錯,但不影響使用)

/etc/init.d/mysqld start

/etc/init.d/mysqld: line 270:@HOSTNAME@: command not found

/etc/init.d/mysqld: line 279:@HOSTNAME@: command not found

Starting MySQL..                                          [  OK  ]

(10)導致啓動mysql報錯的真實原因是應拷貝mysql.server,不是mysql.server.sh

cp/wddg/tools/mysql-5.1.72/support-files/mysql.server /etc/init.d/mysqld

/etc/init.d/mysqld start   #成功啓動,無報錯

Starting MySQL.                                           [  OK  ]

(11)將mysql的bin目錄加入系統PATH

vi /etc/profile

PATH=/application/mysql/bin:$PATH

(12)重載系統配置文件/etc/profile

. /etc/profile  或 source /etc/profile

(13)第二種啓動mysql的方法(無報錯)

/application/mysql/bin/mysqld_safe&

重要說明:

2種啓動方法,不要來回切換,容易出現報錯

(14)關閉mysql

a、方法一:pkill mysql

b、方法二:/application/mysql/bin/mysqladminshutdown

c、方法三:/application/mysql/bin/mysqldstop

(15)查看mysql進程

netstat -lntup|grep mysql 

tcp        0     0 0.0.0.0:3306     0.0.0.0:*     LISTEN     25083/mysqld

lsof -i :3306

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

mysqld 25083 mysql   10u  IPv4 70859      0t0  TCP *:mysql (LISTEN)

5、mysql安全設置
(1)設置mysql的root用戶密碼(默認無密碼)

/application/mysql/bin/mysqladmin -uroot password '123456';

(2)客戶端登陸mysql

mysql -uroot -p

Enter password:   #輸入密碼123456

(3)查看mysql的版本

select version();

+-----------+

| version() |

+-----------+

| 5.1.72    |

+-----------+

1 row in set (0.00 sec)

(4)查看mysql的用戶(mysql的用戶格式:用戶名@主機名)

mysql> select user();

+----------------+

| user()         |

+----------------+

| root@localhost |

+----------------+

1 row in set (0.00 sec)

(5)查看mysql的數據庫

show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| test               |

+--------------------+

3 rows in set (0.03 sec)

(6)刪除test數據庫

drop database test;

Query OK, 0 rows affected (0.07 sec)

(7)查詢mysql數據庫下的user表

select user,host from mysql.user;

+------+-----------+

| user | host      |

+------+-----------+

| root | 127.0.0.1 |

|     | localhost |

| root | localhost |

|     | rhel      |

| root | rhel      |

+------+-----------+

5 rows in set (0.00 sec)

(8)刪除user表中user爲空的用戶

drop user ''@rhel;

Query OK, 0 rows affected (0.00 sec)

drop user ''@localhost;

Query OK, 0 rows affected (0.00 sec)

(9)爲保證安全,刪除root@rhel用戶,只保留[email protected]和root@localhost這2個用戶

drop user 'root'@rhel;

Query OK, 0 rows affected (0.01 sec)

(10)修改用戶密碼

update mysql.user setpassword=PASSWORD("abc123") where host='localhost' and user='root';

Query OK, 1 row affected (0.01 sec)

Rows matched: 1  Changed: 1 Warnings: 0

(11)刷新用戶權限(對用戶進行操作後應及時刷新一下)

flush privileges;

(12)找回mysql用戶密碼(忘記root密碼時用,相當於Linux 的單用戶模式)

a、停止mysql所有用戶進程

pkill mysqld

b、以安全方式啓動mysql ,並跳過mysql授權表,直接進入mysql

/application/mysql/bin/mysqld_safe--skip-grant-table &

c、直接修改用戶密碼

update mysql.user setpassword=PASSWORD("abc123") where host='localhost' and user='root';

d、刷新用戶權限(對用戶進行操作後應及時刷新一下)

flush privileges;

e、停止mysql所有用戶進程

killall -9 mysqld

f、以正常方式啓動mysql

/etc/init.d/mysqld start

二、安裝PHP

1、檢查Apache和mysql的安裝情況
(1)檢查Apache 和mysql的安裝路徑

ls -ld /application/apache/

drwxr-xr-x 14 root root 4096 Feb 22 21:39 /application/apache/

ls -ld /application/mysql/

drwxr-xr-x 11 root root 4096 Mar 4 21:13 /application/mysql/

(2)正常啓動Apache和mysql服務

/application/apache/bin/apachectl start

/etc/init.d/mysqld start

(3)檢查端口

lsof –i :80

lsof -i :3306

(4)登陸mysql和打開相關網頁,確保服務正常運行

mysql -uroot –p

http://192.168.158.99

2、檢查系統lib庫的安裝情況
(1)檢查需要的lib庫文件

rpm -qa zlib libxml libjpeg freetypelibpng gd curl libiconv zlib-devel libxml2-devel libjpeg-devel freetype-devellibpng-devel gd-devel curl-devel

libpng-devel-1.2.49-1.el6_2.i686

gd-2.0.35-11.el6.i686

freetype-devel-2.3.11-6.el6_2.9.i686

freetype-2.3.11-6.el6_2.9.i686

libxml2-devel-2.7.6-8.el6_3.4.i686

zlib-1.2.3-29.el6.i686

zlib-devel-1.2.3-29.el6.i686

libpng-1.2.49-1.el6_2.i686

curl-7.19.7-35.el6.i686

(2)比對後,還差以下lib庫文件

libxml libjpeg libjpeg-devel gd-develcurl-devel libiconv(該包非必須)

從安裝ISO中找出相關rpm

libxml libjpeg libjpeg-devel curl-devel(爲libcurl-devel,已安裝)

網上下載:

http://mirrors.163.com/centos/6/os/i386/Packages/gd-devel-2.0.35-11.el6.i686.rpm

https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

(3)下載安裝

rpm -ivh gd-devel-2.0.35-11.el6.i686.rpm

rpm -ivh libj*

rpm -ivhlibxml2-devel-2.7.6-8.el6_3.4.i686.rpm

 

tar xf libiconv-1.14.tar.gz

cd libiconv-1.14

./configure--prefix=/usr/local/libiconv

make

make install

3、安裝PHP5.3.27
(1)下載PHP5.3.27

wget http://cn2.php.net/get/php-5.3.27.tar.gz/from/this/mirror

(2)解壓

cd /tools

tar xf php-5.3.27.tar.gz

(3)configure

./configure \

--prefix=/application/php5.3.27 \

--with-apxs2=/application/apache/bin/apxs \

--with-mysql=/application/mysql \

--with-xmlrpc \

--with-openssl \

--with-zlib \

--with-freetype-dir \

--with-gd \

--with-jpeg-dir \

--with-png-dir \

--with-iconv=/usr/local/libiconv \

--enable-short-tags \

--enable-sockets \

--enable-zend-multibyte \

--enable-soap \

--enable-mbstring \

--enable-static \

--enable-gd-native-ttf \

--with-curl \

--with-xsl \

--enable-ftp \

--with-libxml-dir

(4)configure說明:

--with-apxs2=/application/apache/bin/apxs:爲Apache添加php模塊

--with-mysql=/application/mysql:指定mysql路徑

其它選項相關的包也必須先安裝。如OpenSSL、libxslt等,否則會報錯

(5)安裝

make && make install

(6)創建軟連接

ln -s  /application/php5.3.27//application/php

(7)查看Apache的模塊路徑中是否有libphp5.so

ll /application/apache/modules/

-rw-r--r-- 1 root root    9115 Feb 22 21:37 httpd.exp

-rwxr-xr-x 1 root root 24449841 Mar 5 18:08 libphp5.so

(8)查看Apache的主配置文件httpd.conf中是否嵌入libphp5.so

grep libphp5.so /application/apache/conf/httpd.conf

LoadModule php5_module        modules/libphp5.so

(9)php在配合apache說明

php在配合apache時,不是守護進程,而是以模塊的形式(mod_php5.so),配合nginx和lighttpd時,php是以守護進程模式(FCGI)

4、配置PHP
(1)查看PHP的配置文件模版

cd /wddg/tools/php-5.3.27

ll php.ini-*

-rw-r--r-- 1 101 101 69606 Jul 11 2013 php.ini-development

-rw-r--r-- 1 101 101 69627 Jul 11 2013 php.ini-production

(2)比較2個配置文件模版的差別

php.ini-development:開發測試時使用,打開錯誤輸出

php.ini-production:正式環境中使用,關閉錯誤輸出

diff `ls php.ini-*`

521c521

< error_reporting = E_ALL | E_STRICT

---

> error_reporting = E_ALL & ~E_DEPRECATED

538c538

< display_errors = On   #測試開發時打開錯誤輸出

---

> display_errors = Off  #測試開發時關閉錯誤輸出

549c549

< display_startup_errors = On

---

> display_startup_errors = Off

593c593

< track_errors = On

---

> track_errors = Off

611c611

< html_errors = On

---

> html_errors = Off

...

(3)生成正式PHP配置文件php.ini:將配置模版複製到PHP系統指定路徑下

cp php.ini-production /application/php/lib/php.ini

(4)安裝PHP小結

a、正式配置一般關閉顯示LOG,不輸出LOG

b、如果編譯時沒有指定配置文件路徑,則配置文件的路徑應在PHP安裝目錄的lib下,文件名爲php.ini

三、Apache整合PHP

1、修改Apache的主配置文件httpd.conf

vi /application/apache/conf/httpd.conf

#98-100行左右。98gg可直接跳到98行,下面操作同理

ServerName 127.0.0.1:80   

#在311行的AddType application/x-gzip .gz .tgz下面加2行對PHP的解析支持內容

AddType application/x-httpd-php .php .phtml

AddType application/x-httpd-php-source .phps

#在65行左右,修改daemon用戶,使用自定義的用戶httpduser

User httpduser

Group httpduser

#在166行左右,修改默認的首頁文件,本例中新增一個index.php

DirectoryIndex index.php index.html

2、創建指定的httpduser用戶

useradd httpduser -M -s /sbin/nologin

3、檢查Apache語法

/application/apache/bin/apachectl -t

4、重啓/啓動Apache

/application/apache/bin/apachectl start

/application/apache/bin/apachectl graceful

5、在/var/html/blog目錄下新建index.php文件

vi /var/html/blog/index.php

<?php

    phpinfo();

?>

6、測試,打開http://192.168.158.99,成功打開phpinfo頁面
7、測試連接mysql
(1)在/var/html/blog目錄下新建連接mysql的php文件

vi /var/html/blog/mysql.php

<?php

   $link_id=mysql_connect('localhost','root','123456') or mysql_error();

    if($link_id){

        echo "mysqlsuccessful by aaa";

    }else{

        echo mysql_error();

    }

?>

(2)測試,打開http://192.168.158.99/mysql.php成功

顯示:mysql successful by aaa

發佈了40 篇原創文章 · 獲贊 15 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章