编译安装LNMP架构

本文介绍了LNMP(Linux, Nginx, MySQL, PHP)的组成和用途,详细阐述了在CentOS 7.5.1804上编译安装LNMP的流程,包括环境准备、软件版本选择、关闭防火墙、安装Nginx、MySQL和php-fpm,以及配置Nginx支持fastcgi连接PHP。" 53694890,5711885,VC操作Excel:读取数据的两种方法,"['VC开发', '数据读取', 'Excel接口']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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();
?>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值