Blog.049 LNMP 架构与源码编译安装

本章目录

 

 

 

 

1. LNMP 架构
  1.1 LNMP 架构的优点
2. 编译安装 Nginx 服务
  2.1 操作步骤
  2.2 操作流程
3. 编译安装 MySQL 服务
  3.1 操作步骤
  3.2 操作流程
4. 编译安装 PHP 解析环境
  4.1 操作步骤
  4.2 操作流程

 

 

 

 

1. LNMP 架构

 

    LNMP 代表的就是:Linux 系统下 Nginx+MySQL+PHP 这种网站服务器架构。

  • Linux 是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等。
  • Nginx 是一个高性能的HTTP和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。
  • MySQL 是一个小型关系型数据库管理系统。
  • PHP 是一种在服务器端执行的嵌入 HTML 文档的脚本语言。

 

    这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。


  1.1 LNMP 架构的优点

 

  • 作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率。
  • 作为负载均衡服务器:Nginx 既可以在内部直接支持Rails和PHP,也可以支持作为 HTTP 代理服务器对外进行服务。Nginx 用C编写,不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。
  • 作为邮件代理服务器:Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last/fm 描述了成功并且美妙的使用经验。
  • Nginx 安装非常的简单,配置文件非常简洁(还能够支持 perl 语法)。Nginx 支持平滑加载新的配置,还能够在不间断服务的情况下进行软件版本的升级。


2. 编译安装 Nginx 服务
  2.1 操作步骤

 

    (1)安装依赖包

1 systemctl stop firewalld
2 systemctl disable firewalld
3 setenforce 0

 

1 yum -y install pcre-devel zlib-devel gcc gcc-c++ make

 

    (2)创建运行用户

1 useradd -M -s /sbin/nologin nginx

 

    (3)编译安装

 1 cd /opt
 2 tar zxvf nginx-1.12.0.tar.gz -C /opt/
 3 
 4 cd nginx-1.12.0/
 5 
 6 ./configure \
 7 --prefix=/usr/local/nginx \
 8 --user=nginx \
 9 --group=nginx \
10 --with-http_stub_status_module
11 
12 make && make install

 

    (4)优化路径

1 ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

 

    (5)添加 Nginx 系统服务

 1 vim /lib/systemd/system/nginx.service
 2 
 3 [Unit]
 4 Description=nginx
 5 After=network.target
 6 [Service]
 7 Type=forking
 8 PIDFile=/usr/local/nginx/logs/nginx.pid
 9 ExecStart=/usr/local/nginx/sbin/nginx
10 ExecReload=/bin/kill -s HUP $MAINPID
11 ExecStop=/bin/kill -s QUIT $MAINPID
12 PrivateTmp=true
13 [Install]
14 WantedBy=multi-user.target
15 
16 chmod 754 /lib/systemd/system/nginx.service
17 systemctl start nginx.service
18 systemctl enable nginx.service

 

  2.2 操作流程

 

    (1)安装依赖包

 


    (2)创建运行用户


    (3)编译安装


    (4)优化路径


    (5)添加 Nginx 系统服务


3. 编译安装 MySQL 服务
  3.1 操作步骤

 

    (1)安装 MySQL 环境依赖包

1 yum -y install \
2 ncurses \
3 ncurses-devel \
4 bison \
5 cmake

 

    (2)创建运行用户

1 useradd -M -s /sbin/nologin  mysql

 

    (3)编译安装

 1 cd /opt
 2 tar xzvf mysql-boost-5.7.20.tar.gz
 3 
 4 cd /opt/mysql-5.7.20/
 5 
 6 cmake \
 7 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
 8 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
 9 -DSYSCONFDIR=/etc \
10 -DSYSTEMD_PID_DIR=/usr/local/mysql \
11 -DDEFAULT_CHARSET=utf8  \
12 -DDEFAULT_COLLATION=utf8_general_ci \
13 -DWITH_EXTRA_CHARSETS=all \
14 -DWITH_INNOBASE_STORAGE_ENGINE=1 \
15 -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
16 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
17 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
18 -DMYSQL_DATADIR=/usr/local/mysql/data \
19 -DWITH_BOOST=boost \
20 -DWITH_SYSTEMD=1
21 
22 make && make install

 

    (4)修改 MySQL 配置文件

 1 vim /etc/my.cnf
 2 
 3 [client]
 4 port = 3306
 5 socket=/usr/local/mysql/mysql.sock
 6 
 7 [mysqld]
 8 user = mysql
 9 basedir=/usr/local/mysql
10 datadir=/usr/local/mysql/data
11 port = 3306
12 character-set-server=utf8
13 pid-file = /usr/local/mysql/mysqld.pid
14 socket=/usr/local/mysql/mysql.sock
15 bind-address = 0.0.0.0
16 skip-name-resolve
17 max_connections=2048
18 default-storage-engine=INNODB
19 max_allowed_packet=16M
20 server-id = 1
21 
22 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

 

    (5)更改 MySQL 安装目录和配置文件的属主属组

1 chown -R mysql:mysql /usr/local/mysql/
2 chown mysql:mysql /etc/my.cnf

 

    (6)设置路径环境变量

1 echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile    
2 source /etc/profile

 

    (7)初始化数据库

1 cd /usr/local/mysql/bin/
2 
3 mysqld \
4 --initialize-insecure \
5 --user=mysql \
6 --basedir=/usr/local/mysql \
7 --datadir=/usr/local/mysql/data

 

    (8)添加 MySQL 系统服务

1 cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
2 systemctl daemon-reload
3 systemctl start mysqld.service
4 systemctl enable mysqld

 

    (9)修改 MySQL 的登录密码

1 mysqladmin -u root -p password "abc123"

 

    (10)授权远程登录

1 mysql -u root -p

 

  3.2 操作流程

 

    (1)安装 MySQL 环境依赖包

 


    (2)创建运行用户


    (3)编译安装

 


    (4)修改 MySQL 配置文件


    (5)更改 MySQL 安装目录和配置文件的属主属组


    (6)设置路径环境变量


    (7)初始化数据库


    (8)添加 MySQL 系统服务

    (9)授权远程登录


4. 编译安装 PHP 解析环境
  4.1 操作步骤

 

    (1)安装环境依赖包

1 yum -y install gd \
2 libjpeg libjpeg-devel \
3 libpng libpng-devel \
4 freetype freetype-devel \
5 libxml2 libxml2-devel \
6 zlib zlib-devel \
7 curl curl-devel \
8 openssl openssl-devel

 

    (2)编译安装

 1 cd /opt
 2 tar xjvf php-7.1.10.tar.bz2
 3 
 4 cd php-7.1.10
 5 
 6 ./configure \
 7 --prefix=/usr/local/php \
 8 --with-mysql-sock=/usr/local/mysql/mysql.sock \
 9 --with-mysqli \
10 --with-zlib \
11 --with-curl \
12 --with-gd \
13 --with-jpeg-dir \
14 --with-png-dir \
15 --with-freetype-dir \
16 --with-openssl \
17 --enable-fpm \
18 --enable-mbstring \
19 --enable-xml \
20 --enable-session \
21 --enable-ftp \
22 --enable-pdo \
23 --enable-tokenizer \
24 --enable-zip
25 
26 make && make install

 

    (3)路径优化

1 ln -s /usr/local/php/bin/* /usr/local/bin/

 

    (4)调整 PHP 配置文件

    php 有三个配置文件:

  • php.ini 主配置文件
  • php-fpm.conf 进程服务配置文件
  • www.conf 扩展配置文件
 1 调整主配置文件:
 2 
 3 cp /opt/php-7.1.10/php.ini-development /usr/local/php/php.ini    
 4 vim /usr/local/php/php.ini
 5 --1170行--修改
 6 mysqli.default_socket = /usr/local/mysql/mysql.sock
 7 --939行--取消注释,修改
 8 date.timezone = Asia/Shanghai
 9 
10 php -m                     #验证安装的模块

 

1 调整进程服务配置文件:
2 
3 cd /usr/local/php/etc/
4 cp  php-fpm.conf.default php-fpm.conf
5 vim php-fpm.conf
6 --17行--去掉";"注释
7 pid = run/php-fpm.pid

 

1 调整扩展配置文件:
2 
3 cd /usr/local/php/etc/php-fpm.d/
4 cp www.conf.default www.conf

 

    (5)启动 php-fpm

1 /usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
2 netstat -anpt | grep 9000

 

    PHP-FPM (FastCGI Process Manager:FastCGI 进程管理器) 是一个 PHPFastCGI 管理器, 由于Nginx服务器不能处理动态页面,需要由 Nginx 把动态请求交给 php-fpm 进程进行解析。


    (6)配置 Nginx 支持 PHP 解析

 1 vi /usr/local/nginx/conf/nginx.conf
 2 
 3 --65行--取消注释,修改
 4 location ~ \.php$ {
 5     root           html;
 6     fastcgi_pass   127.0.0.1:9000;
 7     fastcgi_index  index.php;
 8     fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;    #将/scripts修改为nginx的工作目录
 9     include        fastcgi_params;
10 }
11 
12 systemctl restart nginx.service

 

    (7)验证 PHP 测试页

1 vim /usr/local/nginx/html/index.php
2 
3 <?php
4 phpinfo();
5 ?>

 

    (8)验证数据库工作是否正常

 1 mysql -u root -p
 2 CREATE DATABASE bbs;
 3 GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
 4 GRANT all ON bbs.* TO 'bbsuser'@'localhost' IDENTIFIED BY 'admin123';
 5 flush privileges;
 6 
 7 vim /usr/local/nginx/html/index.php              #替换原来的测试页内容
 8 
 9 <?php
10 $link=mysqli_connect('192.168.195.128','bbsuser','admin123');
11 if($link) echo "<h1>Success!!</h1>";
12 else echo "Fail!!";
13 ?>

 

  4.2 操作流程

 

    (1)安装环境依赖包

 

 


    (2)编译安装


    (3)路径优化


    (4)调整 PHP 配置文件


    (5)启动 php-fpm


    (6)配置 Nginx 支持 PHP 解析
    (7)验证 PHP 测试页
    (8)验证数据库工作是否正常

 

 

 

 

-

 

posted @ 2021-08-12 17:17  洛洛你好  阅读(49)  评论(0)    收藏  举报