LNMP架构下的nginx、mysql、php的源码安装

2023-07-11,,

一、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的源码安装的相关教程结束。

《LNMP架构下的nginx、mysql、php的源码安装.doc》

下载本文的Word格式文档,以方便收藏与打印。