Linux运维学习笔记之十三:搭建LAMP经典组合(Linux Apache MySQL PHP)

本文详细介绍如何在Linux环境下安装和配置LAMP(Linux、Apache、MySQL、PHP)环境,包括搭建MySQL数据库、安装PHP并整合Apache。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第二十二章 搭建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用户,只保留root@127.0.0.1和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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值