企业级LNMP架构搭建实例(基于Centos6.x)

在当今的互联网时代,企业级应用对于高性能、稳定的服务器架构有着极高的需求。LNMP架构(Linux + Nginx + MySQL + PHP)作为一种经典的组合,凭借其高效、稳定、灵活的特点,被广泛应用于各类企业级网站和应用中。本文将详细介绍在Centos 6.x系统上搭建企业级LNMP架构的具体步骤,帮助读者深入了解并掌握这一重要技术。

目录#

  1. 环境准备
  2. 安装Nginx
  3. 安装MySQL
  4. 安装PHP
  5. 配置Nginx、MySQL和PHP协同工作
  6. 测试LNMP环境
  7. 常见问题及解决方法
  8. 最佳实践和优化建议
  9. 总结
  10. 参考资料

1. 环境准备#

1.1 系统更新#

首先,确保系统的软件包是最新的,执行以下命令:

yum update -y

1.2 安装必要的依赖包#

安装编译和运行所需的基础依赖包:

yum install -y gcc gcc-c++ make autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel

1.3 创建必要的用户和目录#

创建Nginx和MySQL运行所需的用户和目录:

useradd -M -s /sbin/nologin nginx
mkdir -p /data/wwwroot
mkdir -p /data/mysql
chown -R nginx:nginx /data/wwwroot

2. 安装Nginx#

2.1 下载Nginx源码#

从Nginx官方网站下载最新稳定版的源码:

cd /usr/local/src
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar zxvf nginx-1.18.0.tar.gz
cd nginx-1.18.0

2.2 配置编译参数#

配置Nginx的编译参数,开启必要的模块:

./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_flv_module --with-http_mp4_module

2.3 编译和安装#

执行编译和安装命令:

make && make install

2.4 配置Nginx服务#

创建Nginx的启动脚本,并设置为开机自启:

cp /usr/local/src/nginx-1.18.0/contrib/init.d/nginx /etc/init.d/nginx
chmod +x /etc/init.d/nginx
chkconfig --add nginx
chkconfig nginx on

3. 安装MySQL#

3.1 下载MySQL源码#

从MySQL官方网站下载最新稳定版的源码:

cd /usr/local/src
wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.35.tar.gz
tar zxvf mysql-5.7.35.tar.gz
cd mysql-5.7.35

3.2 安装CMake#

MySQL 5.7需要使用CMake进行编译,安装CMake:

yum install -y cmake

3.3 配置编译参数#

配置MySQL的编译参数:

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci

3.4 编译和安装#

执行编译和安装命令:

make && make install

3.5 初始化MySQL数据库#

初始化MySQL数据库,并设置root密码:

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

记录初始化时生成的临时密码,后续登录MySQL时需要使用。

3.6 配置MySQL服务#

创建MySQL的启动脚本,并设置为开机自启:

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on

3.7 启动MySQL服务#

启动MySQL服务,并修改root密码:

service mysqld start
/usr/local/mysql/bin/mysql_secure_installation

4. 安装PHP#

4.1 下载PHP源码#

从PHP官方网站下载最新稳定版的源码:

cd /usr/local/src
wget https://www.php.net/distributions/php-7.4.25.tar.gz
tar zxvf php-7.4.25.tar.gz
cd php-7.4.25

4.2 配置编译参数#

配置PHP的编译参数,开启必要的模块:

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --enable-intl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-gettext --with-openssl --with-fpm-user=nginx --with-fpm-group=nginx --enable-fpm

4.3 编译和安装#

执行编译和安装命令:

make && make install

4.4 配置PHP#

复制PHP的配置文件:

cp php.ini-production /usr/local/php/etc/php.ini
cp /usr/local/src/php-7.4.25/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpm on

5. 配置Nginx、MySQL和PHP协同工作#

5.1 配置Nginx#

修改Nginx的配置文件/usr/local/nginx/conf/nginx.conf,添加PHP支持:

server {
    listen       80;
    server_name  localhost;
    root   /data/wwwroot;
    index  index.php index.html index.htm;
 
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
 
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

5.2 启动服务#

启动Nginx、MySQL和PHP-FPM服务:

service nginx start
service mysqld start
service php-fpm start

6. 测试LNMP环境#

6.1 创建测试文件#

/data/wwwroot目录下创建一个测试文件info.php

<?php
phpinfo();
?>

6.2 访问测试文件#

在浏览器中访问http://服务器IP地址/info.php,如果能看到PHP的信息页面,则说明LNMP环境搭建成功。

7. 常见问题及解决方法#

7.1 Nginx启动失败#

检查Nginx的配置文件是否有语法错误,使用/usr/local/nginx/sbin/nginx -t命令进行检查。

7.2 MySQL无法启动#

检查MySQL的日志文件/data/mysql/error.log,查看具体的错误信息。

7.3 PHP-FPM无法启动#

检查PHP-FPM的配置文件/usr/local/php/etc/php-fpm.conf是否有语法错误。

8. 最佳实践和优化建议#

8.1 Nginx优化#

  • 开启Gzip压缩,减少数据传输量。
  • 配置缓存,提高网站的响应速度。

8.2 MySQL优化#

  • 优化数据库表结构,合理设计索引。
  • 定期清理无用数据,减少数据库负担。

8.3 PHP优化#

  • 开启OPcache,提高PHP的执行效率。
  • 优化PHP的配置参数,根据服务器性能进行调整。

9. 总结#

通过本文的详细介绍,我们成功在Centos 6.x系统上搭建了企业级LNMP架构。在实际应用中,还需要根据具体的业务需求进行进一步的优化和调整,以确保系统的高性能、稳定和安全。

10. 参考资料#