Linux运维学习笔记之十五:搭建LNMP潮流组合和企业集群架构

本文详细介绍了如何在Linux系统中搭建LNMP(Linux、Nginx、MySQL、PHP)环境,包括源码安装MySQL、配置PHP、设置PHP的FPM服务、Nginx整合PHP以及配置Nginx实现负载均衡。同时,文章讨论了集群架构中的Session会话共享问题和多虚拟主机的代理配置。通过这个教程,读者将能够构建起一套完整的LNMP潮流组合和企业级集群架构。

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

第二十四章 搭建LNMP潮流组合(Linux Nginx MySQL PHP)

一、安装单实例MySQL5.5.32数据库
1、安装MySQL5.5的方式
(1)第一种:源码安装(取消了configure方式,改为cmake-make-make install方式)

具体安装过程见参考博文注9、Heartbeat+DRBD+MySQL高可用架构方案与实施。一般文件名为mysql-5.5.24.tar.gz这种方式。

(2)第二种:yum或rpm
(3)第三种:二进制包方式安装(直接解压,初始化数据库即可,无需编译。DBA最爱)

一般文件名为mysql-5.5.32-linux2.6-x89_64.tar.gz这种方式。

2、web服务器上如何安装MySQL
(1)数据库和web在一台主机

必须在安装完MySQL(make install)后,进行数据库初始化操作。

(2)数据库和web分离

编译原码时,只须到make install结束即可,二进制方式时,解压后就可以了。实际上就是只需装好客户端,供安装PHP时好调用MySQL生成PHP调用MySQL的函数。

3、建立MySQL账号
(1)创建mysql组

groupadd mysql

(2)创建mysql用户

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

说明:mysql是一个虚拟用户,不创建家目录,不让登陆

4、安装mysql-5.5.32
(1)解压

tar zxf tar xfmysql-5.5.32-linux2.6-x86_64.tar.gz

(2)删除原有mysql

a、查看已安装的mysql包和路径

rpm -qa | grep -i mysql

find / -name mysql

whereis mysql

b、删除已安装包

rpm -ev --nodeps mysql-server-5.1.71-1.el6.x86_64

rpm -ev --nodeps mysql-bench-5.1.71-1.el6.x86_64

rpm -ev --nodeps mysql-devel-5.1.71-1.el6.x86_64

rpm -ev --nodeps mysql-5.1.71-1.el6.x86_64

c、删除已安装目录

rm -fr /var/lib/mysql

rm -fr /usr/lib64/mysql

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

 

d、查看是否删除干净

rpm -qa | grep -i mysql

whereis mysql

find / -name mysql

(3)复制到/application下,并重命名为mysql-5.5.32

cp -fr mysql-5.5.32-linux2.6-x86_64 /application/mysql-5.5.32

(4)创建软连接

ln -s  /application/mysql-5.5.32//application/mysql

5、mysql初始化和启动
(1)授权mysql用户访问mysql的data目录

chown -R mysql.mysql /application/mysql/data/

(2)初始化mysql

./scripts/mysql_install_db --user=mysql--basedir=/application/mysql/ --datadir=/application/mysql/data/

(3)创建mysql启动脚本

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

(4)修改mysqld脚本中的basedir和datadir

vi /etc/init.d/mysqld

basedir=/application/mysql/

datadir=/application/mysql/data

(5)创建mysql配置文件:将模版复制到/etc目录下(虚机配置不高,选择small)

cp support-files/my-small.cnf /etc/my.cnf

(6)启动mysqld

/etc/init.d/mysqld start

(7)设置mysql的root用户密码(默认无密码)

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

(8)设置环境变量,添加MySQL启动命令

a、方法一:设置/etc/profile

vi /etc/profile

export PATH=/application/mysql/bin/:/application/nginx/sbin/:$PATH

b、方法二:拷贝相关命令到PATH所在路径下

cp /application/mysql/bin/mysqld/usr/local/bin/

(9)查看错误

错误日志在/application/mysql/data/下的<hostname>.err文件中

cat myLinuxStudy.err

(10)查询mysql数据库下的user表

select user,host from mysql.user;

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

| user | host         |

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

| root | 127.0.0.1    |

| root | ::1          |

|     | localhost    |

| root | localhost    |

|     | myLinuxStudy |

| root | myLinuxStudy |

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

(11)为保证安全,删除其它用户,只保留root@127.0.0.1和root@localhost这2个用户

drop user 'root'@'::1';

drop user ''@myLinuxStudy;

drop user ''@localhost;

(12)drop删除用户时,如查报错无法删除时,可使用delete  mysql.user表来实现

MySQL使用drop删除用户时,实际就是操作mysql.user表,所以可以用delete来删除mysql.user表中的记录来实现。

drop user ''@localhost;

ERROR 1396 (HY000): Operation DROP USERfailed for ''@'mylinuxstudy'

delete from mysql.user where user=''and host='myLinuxStudy';

Query OK, 1 row affected (0.00 sec)

6、mysql安装常见报错
(1)报错一:scripts/mysql_install_db:line 249

a、报错提示

二进制包安装,执行scripts/mysql_install_db --user=mysql --datadir=/data/mysql/出现如下报错:

scripts/mysql_install_db:line 249: ./bin/my_print_defaults: cannot execute binary fileNeither host‘a.com‘ nor ‘localhost‘ could be looked up with./bin/resolveipPlease configurethe ‘hostname‘ command to return a correct hostname.If you want to solve thisat a later stage, restart this script with the --force option

b、原因

是32位的平台使用了64位的二进制包。

c、解决办法:

换版本,或非要安装,则只能使用源码编译安装。

(2)报错二:缺少libaio.so.1文件

a、报错提示

./bin/mysqld:error while loading shared libraries:libaio.so.1: cannot open shared objectfile: No such file or directory

b、原因

缺少libaio库文件

c、解决办法:查找libaio相关rpm安装所需的包

yum install libaio libaio-devel

(3)报错三:启动MySql提示PID file失败

a、报错提示

启动MySql提示:The serverquit without updating PID file()失败

b1、原因1:初始化数据库有问题

c1、解决办法:重新初始化数据库

b2、原因2:启动时用了不同的程序来启启动。(/etc/init.d/mysqldstart和mysqld_safe交叉启动)

c2、解决办法:不要交叉使用相关启动命令

b3、可能是/usr/local/MySQL/data/rekfan.pid文件没有写的权限

c3、解决方法 :

给予权限,执行“chown  -R  mysql:mysql /var/data” “chmod -R 755/usr/local/mysql/data”然后重新启动mysqld!

b4、可能进程里已经存在mysql进程

c4、解决方法:

用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9  进程号”杀死,然后重新启动mysqld!

b5、可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。

c5、解决方法:

去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。

b6、mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件

c6、解决方法:

打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。请在[mysqld]下设置这一行:datadir = /usr/local/mysql/data

b7、skip-federated字段问题

c7、解决方法:

检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。

b8、错误日志目录不存在

c8、解决方法:

使用“chown” “chmod”命令赋予mysql所有者及权限

b9、selinux惹的祸,如果是centos系统,默认会开启selinux

c9、解决方法:

关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试。

(4)报错四:始终无法登入mysql(密码正确)

a、报错提示

ERROR 1045 (28000): Access deniedfor user 'usera'@'localhost' (using password:YES)

无论怎么处理,就是始终无法登入mysql

b、原因

初始化MySQL数据库时不正常,因为初始化MySQL数据库是会生成一系列系统表,如果这步不正常,发生任何报错,都不奇怪。

c、解决方法

清空data目录下所有内容:rm -fr /application/mysql/data/

重新初始化数据库:

./scripts/mysql_install_db --user=mysql--basedir=/application/mysql/ --datadir=/application/mysql/data/

二、安装PHP(与Apache环境下编译是不一样的)
1、LAMP与LNMP环境下PHP工作方式的区别

LAMP:以模块的方式工作,在Apache中生成libphp5.so,

LNMP:以进程的方式工作,以FCGI方式,启进程(php-fpm)和端口(9000)

2、参照第二十二章搭建LAMP经典组合的要求检查Apache 和mysql的安装情况
3、参照第二十二章搭建LAMP经典组合的要求检查系统lib库的安装情况

rpm -qa|grep -E"zlib|libxml|libjpeg|freetype|libpng|gd|curl|libiconv|zlib-devel

|libxml2-devel|libjpeg-devel|freetype-devel|libpng-devel|gd-devel|curl-devel"

4、安装libmcrypt-2.5.8.tar.gz(安全加密)

tar xf libmcrypt-2.5.8.tar.gz

cd libmcrypt-2.5.8

./configure

make

make install

/sbin/ldconfig

cd /wddg/tools/libmcrypt-2.5.8

cd libltdl/

./configure --enable-ltdl-install

make

make install

5、安装mhash-0.9.9.9.tar.gz(不可逆向的<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值