当前位置: 代码迷 >> 综合 >> linux 下安装 LNMP 最简单的安装方法
  详细解决方案

linux 下安装 LNMP 最简单的安装方法

热度:42   发布时间:2023-10-26 21:39:36.0

最近在安装linux lnmp centos7环境的时候还是有点小问题,从头总结了一下。

安装的版本是 nginx 1.17 mysql 5.8 php 7.2

一,安装nginx

nginx的官方网站:

http://nginx.org/en/download.html

Mainline version 主线版本

Stable version 稳定版本

Legacy versions 遗产版本 /历史版本

1.下载

安装前确认安装扩展 没有的直接 yum install wget gcc gcc-c++ pcre-devel zlib-devel openssl openssl-devel

[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# wget http://nginx.org/download/nginx-1.17.2.tar.gz  

2.解压

 [root@localhost src]# tar zxvf nginx-1.17.2.tar.gz  

/****** 取消Debug编译模式 START*******/

cd nginx-1.17.2

vi auto/cc/gcc #将这句注释掉 取消Debug编译模式 大概在172行
#CFLAGS="$CFLAGS -g"
在这里插入图片描述
3. 预编译

 cd nginx-1.17.2 ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module --with-http_stub_status_module --with-pcre --with-http_gzip_static_module --with-http_dav_module   --with-http_addition_module  --with-http_sub_module --with-http_flv_module  --with-http_mp4_module

解释

–with-http_gzip_static_module :支持压缩

–with-http_stub_status_module :支持nginx状态查询

–with-http_ssl_module :支持https

–with-pcre :为了支持rewrite重写功能,必须制定pcre

–with-http_dav_module #启用支持(增加PUT,DELETE,MKCOL:创建集合,COPY和MOVE方法)
–with-http_addition_module #启用支持(作为一个输出过滤器,支持不完全缓冲,分部分相应请求)
–with-http_sub_module #启用支持(允许一些其他文本替换Nginx相应中的一些文本)
–with-http_flv_module #启用支持(提供支持flv视频文件支持)
–with-http_mp4_module #启用支持(提供支持mp4视频文件支持,提供伪流媒体服务端支持)

make -j 4 && make install 4核编译

[root@localhost src]# make && make install 

5.添加系统变量(方便启停服务)

[root@localhost nginx-1.17.2]# vim /etc/profile

我一般是在56行添加 export PATH=/usr/local/nginx/sbin:$PATH
在这里插入图片描述

重启配置 source /etc/profile

[root@localhost nginx-1.17.2]# nginx -V
在这里插入图片描述
添加软连 ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

生成服务启动脚本

vim /etc/init.d/nginx

#!/bin/bash
# chkconfig: - 99 2
# description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" instart)$PROG;;stop)kill -3 $(cat $PIDF);;restart)$0 stop &> /dev/nullif [ $? -ne 0 ] ; then continue ; fi$0 start;;reload)kill -1 $(cat $PIDF);;*)echo "Userage: $0 { start | stop | restart | reload }"exit 1
esac
exit 0

配置服务开机自动启动
[root@localhost ~]# chmod +x /etc/init.d/nginx
[root@localhost ~]# chkconfig --add nginx
[root@localhost ~]# chkconfig nginx on

首次启动 /usr/local/nginx/sbin/nginx
. 首先利用配置文件启动nginx。

命令: nginx -c /usr/local/nginx/conf/nginx.conf

重启服务: service nginx restart

  1. 快速停止或关闭Nginx:nginx -s stop

  2. 正常停止或关闭Nginx:nginx -s quit

  3. 配置文件修改重装载命令:nginx -s reload

二、安装mysql 5.7

用的是rpm 好处是不用配置那么多东西 。 配置不用管。

   [root@localhost ~]# cd /usr/local/src/[root@localhost src]# wget http://repo.mysql.com/mysql80-community-release-el7.rpm[root@localhost src]# rpm -ivh mysql80-community-release-el7.rpm [root@localhost src]#  yum -y install mysql-server 

(也可以指定安装目录 yum --installroot=/usr/local/mysql --releasever=/ -y install mysql-server 可以自己研究)

根据步骤安装就可以了,

默认配置文件路径:
配置文件:/etc/my.cnf
日志文件:/var/log/var/log/mysqld.log
服务启动脚本:/usr/lib/systemd/system/mysqld.service

socket文件:/var/run/mysqld/mysqld.pid

启动mysql服务

service mysqld restart

1、设置mysql为无密码启动

修改MySQL的登录设置:vi /etc/my.cnf (部分Linux安装了vim,其命令则改为vim /etc/my.cnf)

进入mysql:mysql -u root

[root@localhost ~]# grep "password" /var/log/mysqld.log
在/etc/my.cnf中添加 skip-grant-tables

在这里插入图片描述
2.重新启动mysqld,清空密码

重启mysql:service mysqld restart(这一步不能少,这是让my.cnf的修改生效)

进入mysql

mysql -u root;
use mysql;

4、用sql命令把root密码设置为空

update mysql.user set authentication_string='' where user='root';
flush privileges;

5、重置密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mynewpass1!';
flush privileges;

6、我们可以查看下修改好的密码

select host,user,plugin,authentication_string from mysql.user;

三、安装php

需要的插件 包

yum -y install gcc gcc-c++ libxml2 libxml2-devel bzip2 bzip2-devel libmcrypt libmcrypt-devel openssl openssl-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel readline readline-devel libxslt-devel perl perl-devel psmisc.x86_64 recode recode-devel libtidy libtidy-devel  epel-release libmcrypt-devel  autoconf

1.下载

  [root@localhost ~]# cd /usr/local/src/[root@localhost src]# wget http://cn2.php.net/distributions/php-7.2.21.tar.gz

2.解压

 [root@localhost src]# tar zxvf php-7.2.21.tar.gz
  1. 预编译

进入目录 [root@localhost src]# cd php-7.2.21

创建php-fpm用户,并禁止登录;
[root@localhost php-7.2.21]# useradd -s /sbin/nologin php-fpm

	./configure --prefix=/usr/local/php --exec-prefix=/usr/local/php --bindir=/usr/local/php/bin --sbindir=/usr/local/php/sbin --includedir=/usr/local/php/include --libdir=/usr/local/php/lib/php --mandir=/usr/local/php/php/man --sysconfdir=/usr/local/php/etc --with-config-file-path=/usr/local/php/etc/    --with-fpm-user=php-fpm  --with-fpm-group=php-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-fpm --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash  --with-openssl --with-zlib --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir  --with-png-dir --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-iconv-dir   --enable-zip --with-pcre-dir --with-pear --enable-session  --enable-gd-native-ttf  --enable-xml --with-freetype-dir --enable-gd-jis-conv --enable-inline-optimization --enable-shared  --enable-soap --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm  --enable-mbregex --enable-pcntl --with-xmlrpc --with-gettext --enable-exif --with-readline   --enable-ftp   --enable-redis

提示错误mcrypt.h没有找到,安装libmcrypt-devel包,默认的yum源,没有这个包,需要安装epel扩展源后,才可以安装。

[root@localhost php-7.2.21]# yum install -y epel-release

[root@localhost php-7.2.21]# yum install -y libmcrypt

[root@localhost php-7.2.21]# yum install -y libmcrypt-devel

再次执行./configure,没有错误提示,出现Thank you for using PHP,配置OK。
在这里插入图片描述
完成后使用echo $?查看是否安装正确;
[root@localhost php-7.2.21]# make && make install

[root@localhost php-7.2.21]# echo $?

0 0表示上一步的结果成功。

查看php安装位置 whereis php

关闭php-fpm pkill php-fpm

配置文件

需要将当前目录下的php.ini文件拷贝到 php的安装目录etc下

[root@localhost php-7.2.21]# cp php.ini-production /usr/local/php/etc/php.ini

php.ini 文件是在包目录下的 php.ini-development(开发), php.ini-production(生产)

拷贝php启动脚本,php-fpm配置文件,更改php-fpm权限为755;添加php-fpm开机启动;

[root@ php-7.2.21]# cp /usr/local/src/php-7.2.21/sapi/fpm/init.d.php-fpm   /etc/init.d/php-fpm 
(启动脚本)
[root@ php-7.2.21]# mv /usr/local/php/etc/php-fpm.conf.default   /usr/local/php/etc/php-fpm.conf  (就是去掉了末尾的.default[root@ php-7.2.21]# chmod 755 /etc/init.d/php-fpm 
[root@l php-7.2.21]# chkconfig --add php-fpm 
[root@l php-7.2.21]# service php-fpm start 
Starting php-fpm  done
[root@php-7.2.21]# chkconfig php-fpm on 

将php的安装目录也加入到系统的环境变量 在最后一行加入

vim /etc/profileexport PATH=/usr/local/php/bin:$PATHsource /etc/profile 重新加载

添加软连

ln -s /usr/local/php/sbin/php-fpm   /usr/local/sbin/

生成php-fpm服务启动脚本
vim /etc/init.d/php-fpm

#! /bin/sh### BEGIN INIT INFO
# Provides:          php-fpm
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts php-fpm
# Description:       starts the PHP FastCGI Process Manager daemon
### END INIT INFOprefix=/usr/local/php
exec_prefix=${
    prefix}php_fpm_BIN=${
    exec_prefix}/sbin/php-fpm
php_fpm_CONF=${
    prefix}/etc/php-fpm.conf
php_fpm_PID=${
    prefix}/var/run/php-fpm.pidphp_opts="--fpm-config $php_fpm_CONF --pid $php_fpm_PID"wait_for_pid () {
    try=0while test $try -lt 35 ; docase "$1" in'created')if [ -f "$2" ] ; thentry=''breakfi;;'removed')if [ ! -f "$2" ] ; thentry=''breakfi;;esacecho -n .try=`expr $try + 1`sleep 1done}case "$1" instart)echo -n "Starting php-fpm "$php_fpm_BIN --daemonize $php_optsif [ "$?" != 0 ] ; thenecho " failed"exit 1fiwait_for_pid created $php_fpm_PIDif [ -n "$try" ] ; thenecho " failed"exit 1elseecho " done"fi;;stop)echo -n "Gracefully shutting down php-fpm "if [ ! -r $php_fpm_PID ] ; thenecho "warning, no pid file found - php-fpm is not running ?"exit 1fikill -QUIT `cat $php_fpm_PID`wait_for_pid removed $php_fpm_PIDif [ -n "$try" ] ; thenecho " failed. Use force-quit"exit 1elseecho " done"fi;;status)if [ ! -r $php_fpm_PID ] ; thenecho "php-fpm is stopped"exit 0fiPID=`cat $php_fpm_PID`if ps -p $PID | grep -q $PID; thenecho "php-fpm (pid $PID) is running..."elseecho "php-fpm dead but pid file exists"fi;;force-quit)echo -n "Terminating php-fpm "if [ ! -r $php_fpm_PID ] ; thenecho "warning, no pid file found - php-fpm is not running ?"exit 1fikill -TERM `cat $php_fpm_PID`wait_for_pid removed $php_fpm_PIDif [ -n "$try" ] ; thenecho " failed"exit 1elseecho " done"fi;;restart)$0 stop$0 start;;reload)echo -n "Reload service php-fpm "if [ ! -r $php_fpm_PID ] ; thenecho "warning, no pid file found - php-fpm is not running ?"exit 1fikill -USR2 `cat $php_fpm_PID`echo " done";;*)echo "Usage: $0 {start|stop|force-quit|restart|reload|status}"exit 1;;esac
exit 0

配置服务开机自动启动

root@localhost ~]# chmod +x /etc/init.d/php-fpm
[root@localhost ~]# chkconfig --add php-fpm
[root@localhost ~]# chkconfig php-fpm on

重启服务: service php-fpm restart

[root@localhost ~]# php -v

PHP 7.2.21 (cli) (built: Mar 12 2018 17:43:15)
Copyright ? 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright ? 1998-2016 Zend Technologies完成 接下来就是测试
进入php-fpm.d目录

cd php-fpm.d

修改 www.conf 文件:

如果这个文件不存在,就从default复制一份:

cp www.conf.default www.conf

vim www.conf

将配置文件中的 user 和 group 部分的 nobody 改成 www :

修改

user = www

group = www

如果www 用户不存在,那么先添加nginx 用户
useradd www

groupadd www

usermod -G nginx www

启动php-fpm

sudo /usr/local/php/sbin/php-fpm 或者 service php-fpm start

三、测试 在地址栏输入你的ip。然后测试PHP安装是否成功。确保nginx 和PHP都是运行的
在这里插入图片描述
1.写测试页面 进入nginx的html

cd /usr/local/nginx/html/

编辑 vim index.php