Linux源码安装LNMP

1. 什么是 LNMP?

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

Nginx优势:

  (1) 作为 Web 服务器:相比 ApacheNginx 使用更少的资源,支持更多的并发连接,体现更高的效率。

  (2) 作为负载均衡服务器:Nginx 既可以在内部直接支持 RailsPHP,也可以支持作为 HTTP 代理服务器对外进行服务。NginxC 编写,不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。

  (3) 作为邮件代理服务器:Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last/fm 描述了成功并且美妙的使用经验。

  (4) Nginx 安装非常的简单,配置文件非常简洁(还能够支持 perl 语法)。Nginx 支持平滑加载新的配置,还能够在不间断服务的情况下进行软件版本的升级。

2. 下载源码包安装 LNMP:

  Linux 的安装就不介绍了,下面介绍 PHP, Mysql, Nginx 的安装 (会用到解压命令, 详见 HP的博客之解压命令详解 ):

(0) 安装一些必需工具或者库
    sudo yum install cmake gcc gcc-c++ libxml2-devel ncurses-devel perl-Data-Dumper boost boost-doc boost-devel

(1) PHP官网下载php源码包
    wget http://hk1.php.net/get/php-7.1.5.tar.gz/from/this/mirror

(2) 解压下载的源码包至指定目录
    sudo tar zxvf mirror -C /opt/

(3) 进入php解压目录,安装php
    cd /opt/php-7.1.5/
    ./configure --prefix=/usr/local/php-7.1.5 --enable-fpm
    sudo make && sudo make install

(4) MySQL官网下载MySQL源码包
    wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18.tar.gz

(5) 解压下载的源码包至指定目录
    sudo tar zxvf mysql-5.7.18.tar.gz -C /opt/

(6) 下载安装MySQL所需工具源码包,并解压
    下载地址: http://download.csdn.net/detail/oscer2016/9854622 
    sudo tar zxvf boost_1_59_0.tar.gz -C /usr/local/boost/

(7) 进入MySQL解压目录,安装MySQL(新版MySQL使用cmake进行编译)
    cmake \
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    -DMYSQL_DATADIR=/mydata/mysql/data \
    -DSYSCONFDIR=/etc \
    -DMYSQL_USER=mysql \
    -DWITH_MYISAM_STORAGE_ENGINE=1 \
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
    -DWITH_MEMORY_STORAGE_ENGINE=1 \
    -DWITH_READLINE=1 \
    -DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock \
    -DMYSQL_TCP_PORT=3306 \
    -DENABLED_LOCAL_INFILE=1 \
    -DENABLE_DOWNLOADS=1 \
    -DWITH_MEMORY_STORAGE_ENGINE=1 \
    -DCHARSETS=all \
    -DDOWNLOAD_BOOST=1 \
    -DWITH_BOOST=/usr/local/boost/ \
    -DDEFAULT_CHARSET=utf8 \
    -DDEFAULT_COLLATION=utf8_general_ci \
    -DWITH_DEBUG=0 \
    -DMYSQL_MAINTAINER_MODE=0 \
    -DWITH_SSL:STRING=bundled \
    -DWITH_ZLIB:STRING=bundled

    # 执行make命令安装MySQL
    sudo make && sudo make install

    如果是在服务器上安装,可能会出现以下错误:

    c++: 编译器内部错误:已杀死(程序 cc1plus)
    Please submit a full bug report,
    with preprocessed source if appropriate.
    See  for instructions.
    make[2]: *** [sql/CMakeFiles/sql.dir/item_geofunc.cc.o] 错误 4
    make[1]: *** [sql/CMakeFiles/sql.dir/all] 错误 2
    make: *** [all] 错误 2

    这是内存不足导致的,不要惊慌,解决方案详见: http://www.justwinit.cn/post/8677/

    出现下面的错误是磁盘空间不足导致的(大约需要2G磁盘空间,删些文件留够空间即可):
    CMake Error at libmysqld/cmake_install.cmake:36 (FILE):
    file INSTALL cannot copy file "/opt/mysql-5.7.18/libmysqld/libmysqld.a" to
    "/usr/local/mysql/lib/libmysqld.a".
    Call Stack (most recent call first):
    cmake_install.cmake:121 (INCLUDE)

    make: *** [install] 错误 1


(7) 下载 Nginx 源码包及其所需工具源码包并解压安装

     pcre安装:
     wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz
     sudo tar zxvf pcre-8.40.tar.gz
     cd pcre-8.40/
     ./configure 
     sudo make && sudo make install

     下载 Nginx 源码包并解压安装:
     wget http://nginx.org/download/nginx-1.12.0.tar.gz
     sudo tar zxvf nginx-1.12.0.tar.gz 
     cd nginx-1.12.0/
     ./configure --prefix=/usr/local/nginx --with-pcre=../pcre-8.40/     # pcre后面的路径是解压后的pcre路径,而不是pcre的安装路径
     sudo make && sudo make install

至此,LNMP安装完成。

3. 使用LNMP:

(1) 启动Nginx:
    cd /usr/local/nginx/sbin
    sudo ./nginx

(2) 开启防火墙
    systemctl status firewalld    # 查看防火墙状态
    systemctl start firewalld    # 开启防火墙状态
    firewall-cmd --zone=public --add-port=80/tcp --permanent  # 开启80端口

Linux源码安装LNMP_第1张图片

(3) 访问自己的IP(例如我的是123.207.157.135),效果如下:

Linux源码安装LNMP_第2张图片

刷新页面显示:

Linux源码安装LNMP_第3张图片

**Note: 网页的默认目录在/usr/local/nginx/html
, 将里面的 index.html 备份(mv index.html index.html.bak), 然后将自己写的网页放入此目录下, 默认访问index.html(可以将自己网站的首页命名为 index.html), 如果注册了域名,直接解析到此IP即可,效果如下:**

Linux源码安装LNMP_第4张图片

刷新页面显示:

Linux源码安装LNMP_第5张图片

Nginx,MySQL配置文件:
  nginx: /usr/local/nginx/conf/nginx.conf
  mysql: /etc/my.cnf

启动php-fpm:

cd /usr/local/php-7.1.5/etc
sudo mv php-fpm.conf.default php-fpm.conf
cd /usr/local/php-7.1.5/etc/php-fpm.d
sudo cp www.conf.default www.conf
cd /usr/local/php-7.1.5/sbin/php-fpm
sudo ./php-fpm

配置nginx:

sudo vim /usr/local/nginx/conf/nginx.conf

Linux源码安装LNMP_第6张图片

65-71行默认是注释的,将其解除注释。
找到worker_processes这一行,将其值修改为5

查看nginx服务是否开启:

这里写图片描述

已开启1个主进程,1个子进程。

重启nginx:

sudo /usr/local/nginx/sbin/nginx -s reload   # 重启
# 查看nginx服务状态
ps aux | grep nginx
# 结果如下图所示(1个主进程,5个子进程),说明配置文件修改已生效

Linux源码安装LNMP_第7张图片

配置php-fpm:

cd /usr/local/php-7.1.5/etc/php-fpm.d
sudo vim www.conf

# 下面这几个值可以按需要修改
pm.max_children = 10
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 10

# 查看php-fpm主进程号(master process)
ps aux | grep php-fpm

# 重启php-fpm
sudo kill -USER2 php-fpm主进程号

# 查看php-fpm进程数
ps aux | grep php-fpm
# 已成功修改,10个php-fpm进程已开启

你可能感兴趣的:(linux基础知识)