一、LNMP的介绍

LNMP就是Linux+Nginx+Mysql+Php这种网站服务架构。Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统,常见版本有:centos、ubuntu、debain、fedora、gentoo等。Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。Mysql是一个小型关系型数据库管理系统。PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。这四种软件均为开源软件,组合在一起成为免费、高校、扩展性强的网站服务系统。

二、mysql的源码编译及配置

(一) 源码编译

1) 安装源码编译工具cmake(cmake在软件包中有,但版本低于2.8,所以需要自己下载一个2.8以上的rpm包)

--->  yum  install  -y  cmake-2.8.12.2-4.e16.x86_64.rpm

2)从官网中下载mysql源码包,并解压

--->  tar  zxf  mysql-boost-5.7.17.tar.gz

--->  cd  mysql-5.7.17

3)创建预编译环境,添加自己所需要的安装条件

---> cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql       # 指定mysql安装路径

-DMYSQL_DATADIR=/usr/local/lnmp/mysql/data             # 数据存储位置

-DWITH_INNOBASE_STORAGE_ENGINE=1                      # 安装inmodb的存储引擎

-DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock     # socket文件存储路径

-DWITH_MYISAM_STORAGE_ENGINE=1                          # 安装myisam存储引擎

-DDEFAULT_CHARSET=utf8                                             # 使用编码格式为utf-8

-DDEFAULT_COLLATION=utf8_general_ci                       # 校验字符

-DEXTRA_CHARSETS=all                                                   # 安装所有扩展字符集

-DWITH_BOOST=boost/boost_1_59_0/                               # boost路径

# 该命令会出现如下错误:(一)没有安装c语言编译器和c++编译器

解决方法:---  >  yum  install  gcc gcc-c++   -y

# 安装编译器之后,再次编译,还会出现如下问题:(二)没有ncurses-devel包

解决方法:--->  yum install -y  ncurses-devel

--->  rm -f CMakeCache.txt

# 此时再次进行预编译,我们可以看到已经顺利通过了。 (在此过程中,缺什么依赖包,我们下什么就行。有时也有可能会使用openssl-devel包)

4)编译汇编

--->  make  &&  make install          # 该过程需要几十分钟

(二)mysql的配置

1)进入mysql安装目录,把默认配置文件放在/etc下

--->  rpm  -qa  | grep mysql         # 查看mysql的版本

--->  cd  /etc

--->  mv  my.cnf  my.cnf.bak         # 先将/etc下的mysql配置文件重命名

   --->  cd  /usr/local/lnmp/mysql      # mysql的安装位置

--->  cd support-files

--->  cp  my-default.cnf   /etc/my.cnf   # 将配置文件拷贝到/etc(系统默认配置文件目录下 )

2)修改/etc下的配置文件

--->  vim  /etc/my.cnf       # 修改如下内容。

basedir = /usr/local/lnmp/mysql            # mysql的安装路径

datadir = /usr/local/lnmp/mysql/data     # 数据存放目录

port = 3306                                         # 端口号

# server_id = .....

socket = /usr/local/lnmp/mysql/data/mysql.sock    # socket文件存放目录

3)将编译完成的mysql执行脚本复制到/etc/init.d/目录

---> cp /usr/local/lnmp/mysql/support-files/mysql.server  /etc/init.d/mysqld    #若mysqld无执行权限,使用:chmod +x /etc/init.d/mysqld

4) 将编译生成的mysql二进制命令放进系统变量中。(方便直接使用mysql使用数据库)

--->  vim  ~/.bash_profile
  

--->  source  ~/.bash_profile         # 加载.bash_profile,是配置生效

5) 对mysql服务进行限制

--->  groupadd -g 27  mysql      # 生成uid和gid均为27的mysql用户

--->  useradd -u 27  -g  27  mysql

--->  id  mysql     # 进行用户信息的查看

# 当前目录在/usr/local/lnmp/mysql下

--->  chown  root.mysql  .  -R      # 为了保证数据的安全性,进行目录执行权限的设定

--->  chown  mysql.mysql  .  -R

(三)mysql的安全初始化

1)mysql密码的设置

--->  bin/mysqld  --initialize   --user=mysql    # 生称随机密码

--->  /etc/init.d/mysqld    start     # 启动mysql服务

--->  mysql_secure_installation       # 自己设置密码,首密码为上面的随机密码(两个回车,四个y)

2)设置完成之后,我们试着登陆以下mysql。

--->  mysql  -p

三、PHP的源码安装

1)首先对php源码包进行解压

--->  tar  jxf  php-5.6.35.tar.bz2

--->  cd  php-5.6.35

2)预编译及所需环境的安装(后面加了什么参数,就需要安装相应的依赖包)

--->  ./configure --prefix=/usr/local/lnmp/php            # php安装目录

--with-config-file-path=/usr/local/lnmp/php/etc     # 配置文件所在位置

--enable-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd

--with-pdo-mysql=mysqldnd                           # 支持与mysql建立连接

--with-openssl                                      # 支持openssl的加密

--with-snmp --with-gd --with-zlib --with-curl

--with-libxml-dir                                   # 支持libxml函数

--with-png-dir --with-jpeg-dir --with-freetype-dir  # 支持php处理图片

--with-pear --with-gettext --with-gmp --enable-inline-optimization --enable-soap

--enable-ftp --enable-sockets --enable-mbstring

--enable-fpm --with-mcrypt --with-mhash              # 开启fpm模式(nginx服务使用);mcrypt提供加密算法;mhash使用hash加密

3) 解决依赖性锁需要的包

   --->  yum install -y gd-devel-2.0.35-11.el6.x86_64.rpm libmcrypt-2.5.8-9.e16.x86_64.rpm re2c-0.13.5-1.el6.x86_64.rpm  libmcrypt-devel-
2.5.8-9.e16.x86_64.rpm            # 这些软件包需要在官网上下载

--->  yum install  libxml2-devel  openssl-devel  curl-devel  gmp-devel  net-snmp-devel  gcc  -y     # 这些包,可以直接安装

# 之后,再次预编译,就可以成功了

4)编译和安装

--->  make && make install

5) 创建nginx用户

--->  useradd nginx

6) 修改php的配置文件

--->  cd  /usr/local/lnmp/php/etc             # 进入配置文件所在目录

--->  cp  php-fpm.conf.default  php-fpm.conf  # 配置文件重命名

--->  vim  php-fpm.conf      # 取消pid的注释,并添加nginx用户

--->  cp /root/php-5.6.35/php.ini-production  /usr/local/lnmp/php/etc/php.ini

--->  vim  php.ini           # 修改数据的时区。

7)把php执行脚本复制到/etc/init.d/目录下

--->  cd /root/php-5.6.35/sapi/fpm

--->  cp  init.d.php-fpm  /etc/init.d/php-fpm

--->  chmod  +x  /etc/init.d/php-fpm

8) 启动php-fpm服务,并查看端口是否开启

--->  /etc/init.d/php-fpm  start     # 启动php服务,默认在9000端口

--->  netstat   -antlp

四、Nginx的源码编译

1)下载源码包,并解压(带有sticky模块的nginx)

--->  tar  zxf  nginx-1.14.0.tar.gz

--->  yum install unzip  -y

--->  unzip  nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip

2)去掉nginx的版本号

--->  cd  /root/nginx-1.14.0

--->  vim  src/core/nginx.h

3) 注释掉debug(可以减少安装内容)

--->  cd  /root/nginx-1.14.0

--->  vim  auto/cc/gcc

4) 预编译

---> ./configure --prefix=/usr/local/lnmp/nginx  --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --add-module=/root/nginx-goodies-nginx-sticky-module-ng-08a395c66e42

5) 依赖包的安装(按照提示,少什么包安装什么包即可)

--->  yum install -y  pcre-devel  -y

6) 编译安装

--->  make && make install

7) 配置nginx服务

--->  cd  /usr/local/lnmp/nginx/conf

   --->  lscpu               # 查看cpu的核数等相关信息 

--->  vim nginx.conf      # 修改用户,最大文件数,cpu,发布首页面,php信息

--->  sysctl  -a | grep file             # 查看系统最大文件数

--->  vim  /etc/security/limits.conf     # 修改nginx用户做限制

8)为了方便使用nginx二进制命令,我们可以做一个软连接

--->  ln -s  /usr/local/lnmp/nginx/sbin/nginx /sbin

9) 编写nginx默认发布文件

--->  cd /usr/local/lnmp/nginx/html

--->  vim index.php

10)启动nginx服务,并在浏览器中进行测试。

--->  nginx   # nginx的其他命令: nginx -s reload|stop  # 重新加载配置文件|关闭服务;

# 在浏览器中结果如下

到此,所有软件的安装就完成了。接下来,我们就可以进行论坛的部署了。

LNMP架构下的nginx、mysql、php的源码安装的更多相关文章

  1. linux下MySQL 5.6源码安装

    linux下MySQL 5.6源码安装 1.下载:当前mysql版本到了5.6.20 http://dev.mysql.com/downloads/mysql 选择Source Code 2.必要软件 ...

  2. nginx使用-1(源码安装nginx)

    Nginx概述 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Ramb ...

  3. nginx + mysql + php相关源码包及安装

    nginx + mysql + php安装 引言 完整的搭建一个nginx+php-fpm+mysql的服务器,一直是我向做的,不过一致没有完成过,这次工作需要,终于安装成功了 我列出了我遇到的一些问 ...

  4. MySQL入门01-MySQL源码安装

    操作系统:CentOS 6.7 MySQL版本:5.6.30 1.前期准备 2.系统配置 3.CMake编译配置 4.make && make install 5.后期配置和测试 Re ...

  5. CentOS 6.3下MySQL 5.6源码安装

    Linux操作系统:CentOS 6.3 1:下载:当前mysql版本到了5.6.10 下载地址:http://dev.mysql.com/downloads/mysql/5.6.html#downl ...

  6. Linux MySQL 5.1源码安装

    安装必备的软件 yum install ncurses-devel -y yum install pcre pcre-devel -y yum install gcc* -y   解压缩 tar -z ...

  7. Ubuntu下Ruby的下载和编译源码安装

    1.Ruby的下载 Ruby可以在Ruby 官网上下载,如果想获取更多的Ruby版本,可以到淘宝镜像网站下载. 2.Ruby的编译源码安装 解压 首先把下载下来的源码压缩包解压到自己指定的目录 编译安 ...

  8. mysql 5.7源码安装

    http://blog.itpub.net/29733787/viewspace-1590891/

  9. 关于nginx的源码安装方式

    Nginx(engine x)是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器, 也是一个 IMAP/POP3/SMTP 代理服务器.在高连接并发的情况下, ...

随机推荐

  1. JavaScript中的作用域以及this变量

    原文:Scope and this in JavaScript 今天我想简单讨论下关于JavaScript的作用域和this变量."作用域"的概念就是说.我们的代码能够从哪里去訪问 ...

  2. gb28181的SPVMN测试环境搭建以及设备端和服务器的具体实现

    1.GB/T28181开发1之SPVMN(1.0.0.1)环境搭建 https://blog.csdn.net/hiwubihe/article/details/82910685 2.SPVMN 视频 ...

  3. [py]python中__new__作用

    元类metaclass 使劲搞,但是没搞清楚__new__的作用 了解Python元类 Python进阶:一步步理解Python中的元类metaclass Python中的__new__和__init ...

  4. grub的安装与配置-------引导redhat grub

    1.安装 有两种方法: a.在联网的情况下,用新立德安装: apt-get install grub b.在没网的时候,特别是linux网卡驱动没有安装: 自己从http://packages.ubu ...

  5. Smarty模板变量调节器

    Smarty模板变量调节器用法 在smarty里面,怎么修饰文本和变量呢?当然,你可以通过php函数处理文本,然后再通过assign()方法分配到模板,其实smarty提供了变量调节器能够很容易的处理 ...

  6. CCPC-Wannafly Winter Camp Day2 (Div2, onsite)

    Class $A_i = a \cdot i \% n$ 有 $A_i = k \cdot gcd(a, n)$ 证明: $A_0 = 0, A_x = x \cdot a - y \cdot n$ ...

  7. 爬虫概要及web微信请求分析

    一.爬虫概要 1.网络爬虫是什么 百度百科:网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常 ...

  8. spring AOP的注解实例

    上一篇写了spring AOP 的两种代理,这里开始AOP的实现了,个人喜欢用注解方式,原因是相对于XML方式注解方式更灵活,更强大,更可扩展.所以XML方式的AOP实现就被我抛弃了. 实现Sprin ...

  9. sudo pm2 提示 找不到命令

    一共有 3 台 staging 环境服务器,5 台生产环境服务器,centos7系统.前阵子刚给所有研发配置了自己的账号,今天有小伙伴说,在其中两台服务器上 sudo pm2 list 提示: sud ...

  10. 20145326 《Java程序设计》第5周学习总结

    20145326 <Java程序设计>第5周学习总结 教材学习内容总结 第八章 一.语法与继承结构 1.使用try .catch 我们编写程序时总有些由意想不到的状况而引发的错误,java ...