编译安装LNMP架构

一、LNMP的介绍
  LNMP指的就是一组通常一起使用来运行动态网站或者服务器的自由软件名称的首字母的缩写而已,L指的就是Linux操作系统,N指的是Nginx这个静态Web服务器,同时Nginx也是一个高性能的反向代理服务器,P指的是PHP它是一种在服务器端执行的嵌入HTML文档的脚本语言。这四种软件都是免费开源的软件,组合搭建在一起就成为了一个免费、高效、扩展性强的网站服务系统。
  在这里插入图片描述

二、基本流程和环境介绍
  基本流程:准备编译环境
       安装Nginx
       安装MySQL
       安装php-fpm
       测试访问
  软件版本:
       Linux系统版本:CentOS 7.5.1804
       Nginx版本:nginx-1.10.3.tar.gz
       MySQL版本:mysql-5.6.41.tar.gz
       PHP版本:php-5.6.33.tar.bz

三、开始编译安装
1)关闭防火墙、Selinux、配置epel和base的yum源

[root@lnmp ~]# systemctl stop firewalld 
[root@lnmp ~]# setenforce 0
[root@lnmp ~]# cat /etc/yum.repos.d/CentOS-Base.repo | grep -v "^#" 
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/os/$basearch/

[root@lnmp ~]# cat /etc/yum.repos.d/epel.repo | grep -v "^#" 
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
enabled=1
gpgcheck=0

2)安装Nginx

[root@lnmp ~]# mkdir /application
[root@lnmp ~]# cd /application/
[root@lnmp ~]# wget http://nginx.org/download/nginx-1.10.2.tar.gz
[root@lnmp application]# groupadd  -r  nginx
[root@lnmp application]# useradd -g nginx nginx 
[root@lnmp application]# yum groupinstall "Development tools"
......安装开发包组
[root@lnmp application]# tar -xf nginx-1.10.2.tar.gz 
[root@lnmp application]# cd nginx-1.10.2/
[root@lnmp nginx-1.10.2]# ls
auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
[root@lnmp nginx-1.10.2]# 
[root@lnmp nginx-1.10.2]# ./configure --prefix=/usr/local/nginx-1.14.2  --user=nginx  --group=nginx --with-http_ssl_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_secure_link_module --with-http_stub_status_module --with-http_perl_module --with-pcre --with-perl_modules_path=/home/webserver/nginx3/perl

checking for PCRE library in /usr/pkg/ ... not found
checking for PCRE library in /opt/local/ ... not found

./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.

#这里提示需要安装pcre-devel包
[root@lnmp nginx-1.10.2]# yum install  pcre-devel
#安装完成后重新开始编译

checking for OpenSSL library in /opt/local/ ... not found

./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source
with nginx by using --with-openssl=<path> option.
#这里提示需要安装openssl-devel包,安装即可

[root@lnmp nginx-1.10.2]# yum install openssl-devel
#安装完成后重新开始编译

 + perl version: This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi
Can't locate ExtUtils/Embed.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .).
BEGIN failed--compilation aborted.

./configure: error: perl module ExtUtils::Embed is required
#这里提示还需要安装perl-devel perl-ExtUtils-Embed包

[root@lnmp nginx-1.10.2]# yum -y install perl-devel perl-ExtUtils-Embed
#安装完成后重新开始编译

```+ using system PCRE library
  + using system OpenSSL library
  + md5: using OpenSSL library
  + sha1: using OpenSSL library
  + using system zlib library

  nginx path prefix: "/usr/local/nginx-1.14.2"
  nginx binary file: "/usr/local/nginx-1.14.2/sbin/nginx"
  nginx modules path: "/usr/local/nginx-1.14.2/modules"
  nginx configuration prefix: "/usr/local/nginx-1.14.2/conf"
  nginx configuration file: "/usr/local/nginx-1.14.2/conf/nginx.conf"
  nginx pid file: "/usr/local/nginx-1.14.2/logs/nginx.pid"
  nginx error log file: "/usr/local/nginx-1.14.2/logs/error.log"
  nginx http access log file: "/usr/local/nginx-1.14.2/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"


#编译成功
[root@lnmp nginx-1.10.2]# make && make install 
[root@lnmp profile.d]# vim /etc/profile.d/nginx.sh 
export PATH=/usr/local/nginx-1.14.2/sbin/:$PATH

[root@lnmp profile.d]# . /etc/profile.d/nginx.sh
[root@lnmp profile.d]# ss -tunlp | grep 80 
tcp    LISTEN     0      128       *:80                    *:*                   users:(("nginx",pid=27110,fd=6),("nginx",pid=27109,fd=6))

测试访问
在这里插入图片描述

3)安装MySQL数据库

[root@lnmp profile.d]# yum install -y gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* cmake
#安装所需要的依赖包
[root@lnmp profile.d]# groupadd -r mysql
[root@lnmp profile.d]# 
[root@lnmp profile.d]# useradd  -g mysql mysql
[root@lnmp application]# ls
mysql-5.6.41.tar.gz  nginx-1.10.2  nginx-1.10.2.tar.gz
[root@lnmp application]# tar -xf mysql-5.6.41.tar.gz 
[root@lnmp application]# cd mysql-5.6.41/
[root@lnmp mysql-5.6.41]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
> -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
> -DDEFAULT_CHARSET=utf8 \
> -DDEFAULT_COLLATION=utf8_general_ci \
> -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
> -DWITH_MYISAM_STORAGE_ENGINE=1 \
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \
> -DWITH_MEMORY_STORAGE_ENGINE=1 \
> -DWITH_READLINE=1 \
> -DENABLED_LOCAL_INFILE=1 \
> -DMYSQL_DATADIR=/var/mysql/data \
> -DMYSQL_USER=mysql


CMake Error at cmake/readline.cmake:85 (MESSAGE):
  Curses library not found.  Please install appropriate package,

      remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.
Call Stack (most recent call first):
  cmake/readline.cmake:128 (FIND_CURSES)
  cmake/readline.cmake:218 (MYSQL_USE_BUNDLED_EDITLINE)
  CMakeLists.txt:448 (MYSQL_CHECK_EDITLINE)


-- Configuring incomplete, errors occurred!
See also "/application/mysql-5.6.41/CMakeFiles/CMakeOutput.log".
See also "/application/mysql-5.6.41/CMakeFiles/CMakeError.log".
#该报错原因是未安装ncurses-devel,安装yum -y install ncurses-devel

[root@lnmp mysql-5.6.41]# yum -y install ncurses-devel
[root@lnmp mysql-5.6.41]# rm CMakeCache.txt 
rm: remove regular file ‘CMakeCache.txt’? y
#删除此缓存文件后重新编译
[root@lnmp mysql-5.6.41]# make 
[root@lnmp mysql-5.6.41]# make install

[root@lnmp mysql-5.6.41]# chmod +w /usr/local/mysql/ 
[root@lnmp mysql-5.6.41]# chown -R mysql mysql /usr/local/mysql/
[root@lnmp mysql-5.6.41]# chown -R mysql:mysql /usr/local/mysql/
[root@lnmp mysql-5.6.41]# ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18
[root@lnmp mysql-5.6.41]# mkdir -p /var/mysql
[root@lnmp mysql-5.6.41]# 
[root@lnmp mysql-5.6.41]# mkdir -p /var/mysql/data/
[root@lnmp mysql-5.6.41]# mkdir -p /var/mysql/log/
[root@lnmp mysql-5.6.41]# chown -R mysql:mysql /var/mysql/
[root@lnmp mysql-5.6.41]# cd support-files/
[root@lnmp support-files]# /usr/local/mysql/scripts/mysql_install_db \
> --defaults-file=/etc/my.cnf \
> --basedir=/usr/local/mysql \
> --datadir=/var/mysql/data \
> --user=mysql



[root@lnmp support-files]#  chmod +x /etc/init.d/mysql 
[root@lnmp support-files]#  vim /etc/init.d/mysql
basedir=/usr/local/mysql
datadir=/var/mysql/data
[root@lnmp support-files]# chkconfig --add mysql
[root@lnmp support-files]# 
[root@lnmp support-files]# chkconfig --level 345 mysql on 
[root@lnmp support-files]# touch /tmp/mysql.sock
[root@lnmp support-files]# touch /var/mysql/mysql.pid
[root@lnmp support-files]# chown mysql:mysql /var/mysql/mysql.pid 
[root@lnmp support-files]# 
[root@lnmp support-files]# chown mysql:mysql /tmp/mysql.sock 
[root@lnmp support-files]# service  mysql  start 
Starting MySQL.190810 20:52:04 mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.
 ERROR! The server quit without updating PID file (/var/mysql/data/lnmp.pid).
[root@lnmp support-files]# mkdir /var/log/mariadb/
[root@lnmp support-files]# touch /var/log/mariadb/mariadb.log 
[root@lnmp support-files]# chown -R mysql:mysql /var/log/mariadb/
[root@lnmp support-files]# 
[root@lnmp support-files]# service  mysql  start 
Starting MySQL... SUCCESS! 
[root@lnmp support-files]# echo "export PATH=/usr/local/mysql/bin:$PATH" > /etc/profile.d/mysql.sh
[root@lnmp support-files]# 
[root@lnmp support-files]# source /etc/profile.d/mysql.sh
[root@lnmp support-files]# mysql_secure_installation
[root@lnmp support-files]# mysql -uroot -p 
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 5.6.41 Source distribution

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

mysql> 


4)安装php

[root@lnmp application]# ls
mysql-5.6.41  mysql-5.6.41.tar.gz  nginx-1.10.2  nginx-1.10.2.tar.gz  php-5.6.33.tar.bz2
[root@lnmp application]# yum install libmcrypt libmcrypt-devel mhash mhash-devel libxml2 libxml2-devel bzip2 bzip2-devel
[root@lnmp application]# tar xf php-5.6.33.tar.bz2
[root@lnmp application]# cd php-5.6.33/
[root@lnmp php-5.6.33]# ./configure --prefix=/usr/local/php \
> --with-config-file-scan-dir=/etc/php.d \
> --with-config-file-path=/etc \
> --with-mysql=/usr/local/mysql \
> --with-mysqli=/usr/local/mysql/bin/mysql_config \
> --enable-mbstring \
> --with-freetype-dir \
> --with-jpeg-dir \
> --with-png-dir \
> --with-zlib \
> --with-libxml-dir=/usr \
> --with-openssl \
> -enable-xml \
> --enable-sockets \
> --enable-fpm \
> --with-mcrypt \
> --with-bz2

[root@lnmp php-5.6.33]# make  && make install
[root@lnmp php-5.6.33]# cp /application/php-5.6.33/php.ini-production /etc/php.ini
[root@lnmp php-5.6.33]# cd /usr/local/php/etc/
[root@lnmp etc]# cp php-fpm.conf.default php-fpm.conf 
[root@lnmp etc]# sed -i 's@;pid = run/php-fpm.pid@pid = /usr/local/php/var/run/php-fpm.pid@' php-fpm.conf
[root@lnmp etc]# 
[root@lnmp etc]# cp /application/php-5.6.33/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm 
[root@lnmp etc]# 
[root@lnmp etc]# chmod +x /etc/init.d/php-fpm
[root@lnmp etc]# 
[root@lnmp etc]# chkconfig --add php-fpm
[root@lnmp etc]# 
[root@lnmp etc]# chkconfig  --level 345 php-fpm on 
[root@lnmp etc]# ss -tunlp | grep "9000"
tcp    LISTEN     0      128    127.0.0.1:9000                  *:*                   users:(("php-fpm",pid=18491,fd=0),("php-fpm",pid=18490,fd=0),("php-fpm",pid=18489,fd=7))
[root@lnmp etc]# 

添加nginx对fastcgi的支持连接php

[root@lnmp etc]# cp /usr/local/nginx-1.14.2/conf/nginx.conf /usr/local/nginx-1.14.2/conf/nginx.conf_bak
[root@lnmp etc]# cp /usr/local/nginx-1.14.2/conf/nginx.conf.default /usr/local/nginx-1.14.2/conf/nginx.conf
cp: overwrite ‘/usr/local/nginx-1.14.2/conf/nginx.conf’? y
[root@lnmp etc]# vim /usr/local/nginx-1.14.2/conf/nginx.conf
        location / {
            root   html;
            index  index.php index.html  index.htm;
        }

取消注释配置文件的以下内容:

        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx-1.14.2/html$fastcgi_script_name; #这里要指明nginx的网页目录!!!
            include        fastcgi_params;
        }


[root@lnmp etc]# nginx -s reload
[root@lnmp etc]# ss -tunlp | grep -E "80|9000|3306"
tcp    LISTEN     0      128    127.0.0.1:9000                  *:*                   users:(("php-fpm",pid=18491,fd=0),("php-fpm",pid=18490,fd=0),("php-fpm",pid=18489,fd=7))
tcp    LISTEN     0      128       *:80                    *:*                   users:(("nginx",pid=27109,fd=6),("nginx",pid=18668,fd=6))
tcp    LISTEN     0      80       :::3306                 :::*                   users:(("mysqld",pid=48800,fd=10))

四、测试连接

[root@lnmp etc]#vim /usr/local/nginx-1.14.2/html/index.php
<?php
$conn=mysql_connect('127.0.0.1','root','redhat');
if ($conn){
  echo "LNMP platform connect to mysql is successful!";
}else{
  echo "LNMP platform connect to mysql is failed!";
}
 phpinfo();
?>

在这里插入图片描述

发布了83 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Micky_Yang/article/details/99094242