LNMP学习内容总结①

1、安装MySQL

1.1.1下载

# cd /usr/local/src   //将MySQL压缩包下载到/usr/local/src/目录下

# wget + mysql压缩包下载地址  //输入命令wget+mysql压缩包下载地址

1.1.2解压

# tar -zxvf mysql-5.6.43-linux-glibc2.12-x86_64.tar.gz  //在/usr/local/src/目录下解压MySQL压缩包

1.1.3安装和配置

# mv mysql-5.6.43-linux-glibc2.12-x86_64 /usr/local/mysql  //将解压后的目录移动到/usr/local/mysql/目录下

# useradd -s /sbin/nologin mysql  //创建一个mysql用户

# mkdir -p /data/mysql   //创建一个存放数据库文件的目录

# chown -R mysql:mysql /data/mysql   //更改存放数据库文件的目录的所属权限

# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql  //利用/usr/local/mysql里的脚本进行安装

1.1.4安装成功

# cp support-files/my-default.cnf /etc/my.cnf  //安装成功后进行配置,先复制配置文件

# vim /etc/my.cnf  //对配置文件进行以下配置

 

# cp support-files/mysql.server /etc/init.d/mysqld  //复制启动脚本/etc/init.d/mysqld

# chmod 755 /etc/init.d/mysqld   //修改 mysql 启动脚本的权限

# vim /etc/init.d/mysqld  //修改 mysql 启动脚本文件

打开启动脚本文件找到 datadir=

修改为 datadir=/data/mysql

# chkconfig --add mysqld   //把 mysqld 服务添加到系统服务列表中

# chkconfig mysqld on   //设置开机自启

# service mysqld start   //启动 mysqld 服务

# ps aux |grep mysql    //查看MySQL是否启动

1、安装PHP

1.2.1下载

下载方法同1.1.1

1.2.2解压、创建账号

# tar -zxvf php-5.6.39.tar.gz   //解压php

# useradd -s /sbin/nologin php-fpm  //该账号用来运行php-fpm服务。在LNMP环境中,PHP以一个服务php-fpm的形式出现,独立存在于Linux系统中,方便管理。

1.2.3安装和配置

编译配置

#cd php-5.6.30

 # ./configure --prefix=/usr/local/php-fpm --with-config-file-path=/usr/local/php-fpm/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --disable-ipv6 --with-pear --with-curl --with-openssl

可能遇到的错误:

错误 1:configure: error: xml2-config not found. Please check your libxml2 installation.

解决:# yum -y install libxml2 libxml2-devel

错误 2:configure: error: Cannot find OpenSSL's <evp.h>

解决: # yum -y install openssl openssl-devel

错误 3:configure: error: Please reinstall the BZip2 distribution

解决:# yum -y install bzip2 bzip2-devel

错误 4:configure: error: jpeglib.h not found.

解决:# yum -y install libjpeg libjpeg-devel

错误 5:configure: error: png.h not found.

解决:# yum -y install libpng-devel libpng

错误 6:configure: error: freetype-config not found.

解决:# yum -y install freetype freetype-devel

错误 7:configure: error: mcrypt.h not found. Please reinstall libmcrypt.

解决:

# yum -y install epel-release

# yum -y install libmcrypt-devel

错误 8:configure: error: jpeglib.h not found.

解决:

# yum -y install libjpeg-devel

# rpm -ql libjpeg-turbo

 

错误 9:configure: error: Please reinstall the libcurl distribution -

            easy.h should be in <curl-dir>/include/curl/

解决:

# yum install -y libcurl-devel

 

重新编译配置,然后编译 php

# make

 

安装 php

#make install

 

修改配置文件

# cp php.ini-production /usr/local/php-fpm/etc/php.ini

# vim /usr/local/php-fpm/etc/php-fpm.conf

把如下内容写入该文件:

保存配置文件后,检验配置是否正确

# /usr/local/php-fpm/sbin/php-fpm -t

如果显示“test is successful”,则说明配置没有问题,否则就要根据提示检查配置文件。

1.2.4启动pho-fpm

# cp /usr/local/src/php-5.6.30/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

# chmod 755 /etc/init.d/php-fpm

# useradd -s /sbin/nologin php-fpm

# service php-fpm start

 

设置php-fpm开机启动的命令如下:

# chkconfig php-fpm on

 

检测php-fpm是否启动的命令如下:

# ps aux |grep php-fpm

执行这条命令,可以看到启动了很多个进程

3、安装Nginx

1.3.1下载及解压Nginx

# cd /usr/local/src

# wget http://nginx.org/download/nginx-1.10.3.tar.gz

# tar zxvf nginx-1.10.3.tar.gz

1.3.2配置编译选项及编译安装

# cd nginx-1.10.3

# ./configure --prefix=/usr/local/nginx

# make

# make install

1.3.3编写Nginx启动脚本,并加入系统服务

# vim /etc/init.d/nginx   //写入如下内容:

#!/bin/bash

# chkconfig: - 30 21

# description: http service.

# Source Function Library

. /etc/init.d/functions

# Nginx Settings

NGINX_SBIN="/usr/local/nginx/sbin/nginx"

NGINX_CONF="/usr/local/nginx/conf/nginx.conf"

NGINX_PID="/usr/local/nginx/logs/nginx.pid"

RETVAL=0

prog="Nginx"

start()

{

    echo -n $"Starting $prog: "

    mkdir -p /dev/shm/nginx_temp

    daemon $NGINX_SBIN -c $NGINX_CONF

    RETVAL=$?

    echo

    return $RETVAL

}

stop()

{

    echo -n $"Stopping $prog: "

    killproc -p $NGINX_PID $NGINX_SBIN -TERM

    rm -rf /dev/shm/nginx_temp

    RETVAL=$?

    echo

    return $RETVAL

}

reload()

{

    echo -n $"Reloading $prog: "

    killproc -p $NGINX_PID $NGINX_SBIN -HUP

    RETVAL=$?

    echo

    return $RETVAL

}

restart()

{

    stop

    start

}

configtest()

{

    $NGINX_SBIN -c $NGINX_CONF -t

    return 0

}

case "$1" in

  start)

        start

        ;;

  stop)

        stop

        ;;

  reload)

        reload

        ;;

  restart)

        restart

        ;;

  configtest)

        configtest

        ;;

  *)

        echo $"Usage: $0 {start|stop|reload|restart|configtest}"

        RETVAL=1

esac

exit $RETVAL

保存该脚本后更改权限

# chmod 755 /etc/init.d/nginx

# chkconfig --add nginx

如果设置开机启动的话

# chkconfig nginx on

1.3.4更改Nginx的配置文件

首先把原来的配置文件清空

# > /usr/local/nginx/conf/nginx.conf

# vim /usr/local/nginx/conf/nginx.conf    写入如下内容

user nobody nobody;

worker_processes 2;

error_log /usr/local/nginx/logs/nginx_error.log crit;

pid /usr/local/nginx/logs/nginx.pid;

worker_rlimit_nofile 51200;

events

{

    use epoll;

    worker_connections 6000;

}

http

{

    include mime.types;

    default_type application/octet-stream;

    server_names_hash_bucket_size 3526;

    server_names_hash_max_size 4096;

    log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'

    ' $host "$request_uri" $status'

    ' "$http_referer" "$http_user_agent"';

    sendfile on;

    tcp_nopush on;

    keepalive_timeout 30;

    client_header_timeout 3m;

    client_body_timeout 3m;

    send_timeout 3m;

    connection_pool_size 256;

    client_header_buffer_size 1k;

    large_client_header_buffers 8 4k;

    request_pool_size 4k;

    output_buffers 4 32k;

    postpone_output 1460;

    client_max_body_size 10m;

    client_body_buffer_size 256k;

    client_body_temp_path /usr/local/nginx/client_body_temp;

    proxy_temp_path /usr/local/nginx/proxy_temp;

    fastcgi_temp_path /usr/local/nginx/fastcgi_temp;

    fastcgi_intercept_errors on;

    tcp_nodelay on;

    gzip on;

    gzip_min_length 1k;

    gzip_buffers 4 8k;

    gzip_comp_level 5;

    gzip_http_version 1.1;

    gzip_types text/plain application/x-javascript text/css text/htm

    application/xml;

    server

    {

        listen 80;

        server_name localhost;

        index index.html index.htm index.php;

        root /usr/local/nginx/html;

        location ~ .php$

        {

            include fastcgi_params;

            fastcgi_pass unix:/tmp/php-fcgi.sock;

            fastcgi_index index.php;

            fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;

                }

        }

}

检验是否有错误

# /usr/local/nginx/sbin/nginx -t

如果显示如下内容,则说明配置正确,否则需要根据错误提示修改配置文件。

1.3.5启动Nginx并测试是否正确解析PHP

# service nginx start

如果不能启动,请查看/usr/local/nginx/logs/error.log文件。

# ps aux |grep nginx    //检查Nginx是否以启动

# vim /usr/local/nginx/html/2.php

其内容如下:

其内容如下:

<?php

echo “test php scripts.”;

?>

# curl localhost/2.php   //测试解析php文件

二、Nginx配置

1、默认虚拟主机

    在Nginx中也有默认虚拟主机,跟httpd类似,第一个被Nginx加载的虚拟主机就是默认主机。但和httpd不相同的地方是,它还有一个配置用来标记默认虚拟主机。也就是说,如果没有这个标记,第一个虚拟主机为默认虚拟主机。

# vim /usr/local/nginx/conf/nginx.conf

修改主配置文件nginx.conf,在结束符号}上面加入一行配置,改写如下:

     include vhost/*.conf;

}

  意思是,/usr/local/nginx/conf/vhost/下面的所有以.conf结尾的文件都会加载,这样我们就可以把所有虚拟主机配置文件放到vhost目录下面了。

# mkdir /usr/local/nginx/conf/vhost

# cd /usr/local/nginx/conf/vhost

# vim default.conf   //写入如下内容

Server

{

   listen 80 default_server;  //有这个default_server标记的就是默认虚拟主机

   server_name aaa.com;

   index index.html index.htm index.php;

   Root /data/nginx/default;

}

# /usr/local/nginx/sbin/nginx -t

# /usr/local/nginx/sbin/nginx -s reload

# echo “default_server” > /data/nginx/default/index.html  //创建索引页

# curl -x127.0.0.1:80 aaa.com  //访问aaa.com

default_server

#curl -x127.0.0.1:80 1212.com  //访问一个没有定义过的域名,也会访问到aaa.com

default_server

2、用户认证

2.2.1配置

先再创建一个新的虚拟主机:

# cd /usr/local/nginx/conf/vhost

# vim test.com.conf   //加入如下内容

server

{

   listen 80;

   server_name test.com;

   index index.html index.htm index.php;

   root /data/nginx/test.com;

   location /

{

auth_basic                “Auth”;

auth_basic_user_file     /usr/local/nginx/conf/htpasswd;

}

}

# yum install -y httpd   //安装httpd,也可以使用之前编译安装的apache2.4

# htpasswd -c /usr/local/nginx/conf/htpasswd aming  //创建aming用户

# /usr/local/nginx/sbin/nginx -t

 

# /usr/local/nginx/sbin/nginx -s reload

   核心配置语句就两行,auth_basic打开认证,auth_basic_user_file指定用户密码文件,当然前提是这个用户密码文件存在。而生成用户密码文件的工具需要借助httpd的htpasswd,Nginx不自带这个工具。

2.2.2验证

# mkdir /data/nginx/test.com

# echo “test.com” > /data/nginx/test.com/index.html

# curl -I -x127.0.0.1:80 test.com

说明:状态码为401说明,该网站需要验证。

更改Windows的hosts文件,用浏览器访问test.com,出现如下验证对话框

输入用户名aming和其密码,就可以访问了。如果是针对某个目录做用户认证,需要修改location后面的路径:

location /admin/

{

   auth_basic       “Auth”;

   Auth_basic_user_file    /usr/local/nginx/conf/htpasswd;

}

 

原文地址:https://www.cnblogs.com/xqzz/p/12145625.html