nginx服务与LNMP架构

一、nginx概述

1.1 关于nginx

是一款高性能、轻量级Web服务软件

  • 稳定性高
  • 系统资源消耗低
  • 对HTTP并发连接的处理能力高
    单台物理服务器可支持30000-50000个并发请求

1.2 Nginx 工作原理

1.2.1 location

Nginx 本身做的工作实际很少,当它接到一个 HTTP 请求时, 它仅仅是通过查找配置文件将此次请求映射到一个 location block,而此 location 中所配 置的各个指令则会启动不同的模块去完成工作,因此模块可以看做 Nginx 真正的劳动工作者。

通常一个 location 中的指令会涉及一个 handler 模块和多个 filter 模块(当然,多个 location 可以复用同一个模块)。handler 模块负责处理请求,完成响应内容的生成,而 filter 模块对响应内容进行处理。 用户根据自己的需要所开发的模块都属于第三方模块。正是有了这么多模块的支撑, Nginx 的功能才会如此强大。

1.2.2 Nginx 的模块的结构

Nginx 的模块从结构上分为核心模块、基础模块和第三方模块:

  • 核心模块:HTTP 模块、EVENT 模块和 MAIL 模块; 
  • 基础模块:HTTP Access 模块、HTTP FastCGI 模块、HTTP Proxy 模块和 HTTP Rewrite 模块;
  • 第三方模块:HTTP Upstream Request Hash 模块、Notice 模块和 HTTP Access Key 模 块。

二、nginx的安装

2.1 软件包

在这里插入图片描述

2.2 安装命令

软件包的安装

tar zxvf nginx-1.12.2.tar.gz
yum -y install gcc gcc-c++ make pcre-devel zlib-devel
useradd -M -s /sbin/nologin nginx
cd nginx-1.12.2/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

制作管理脚本,实现systemctl命令来管理服务

vi /etc/init.d/nginx
#!/bin/bash
#chkconfig: 35 99 20
#description: Nginx HTTP Server
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
    start)
    $PROG
    ;;
    stop)
    kill -s QUIT $(cat $PIDF)
    ;;
    reload)
    kill -s HUP $(cat $PIDF)
    ;;
    restart)
    $0 stop
    $0 start
    ;;
    *)
    echo "Usage: $0 {start|stop|reload|restart}"
    exit 1
esac
exit 0

chmod +x /etc/init.d/nginx
chkconfig --add nginx
chkconfig --list

配置文件的修改

ln -s /usr/local/nginx/conf/nginx.conf /etc/
vi /etc/nginx.conf
user  nginx nginx;
worker_processes  4;
error_log  logs/error.log  info;
events {
use epoll;
worker_connections  4096;
}
http {
# 内部的#注释需要全部将#去掉
}
server {
charset utf-8;
access_log  logs/aa.com.access.log  main;

location ~ /status {              # 需要添加的配置内容
        stub_status on;
        access_log off;
}
}
ulimit -n
ulimit -n 65535 >> /etc/rc.local

2.3 nginx网站搭建完成

在这里插入图片描述
通过ip/status 可以看到如下的字样,表示状态。

三、nginx虚拟主机的配置

3.1 基于域名

vi /etc/nginx.conf
在/location 模块改变一下配置
 server_name www.ab.com;
root /var/www/ab;

并在合适的位置添加以下参数 
 server {
            listen 80;
            server_name www.ab.com
            charset utf-8;
            access_log logs/ab.com.access.log;
            location / {
                root /var/www/ab;
                index index.html index.htm;
            }
            error_page 500 502 503 504 /50x.html;
            location = /50x.html {
                root  html;
            }
    }

vi /etc/hosts        添加域名解析
192.168.10.21  www.aa.com  www.ab.com

重启nginx服务即可
在这里插入图片描述

3.2 基于ip地址

ifconfig ens33:1 192.168.20.21/32
vi /etc/nginx.conf
listen     192.168.10.21:80;
listen     192.168.20.21:80;
只需要将监听端口前面加上具体的ip地址即可
nginx -t
systemctl stop nginx.service 
systemctl start nginx.service
curl http://192.168.10.21
curl http://192.168.20.21

重启nginx服务即可

在这里插入图片描述

3.3 基于端口号

在基于ip地址的前提下

vi /etc/nginx.conf
listen     192.168.10.21:80;
listen     192.168.20.21:8080;

将nginx服务重启即可
在这里插入图片描述

四、nginx验证功能

yum -y install httpd-tools
htpasswd -c /usr/local/nginx/passwd.db jack
chown nginx /usr/local/nginx/passwd.db
vi /etc/nginx.conf   		# 在/location 模块添加密文登录的配置命令
auth_basic "secret";
auth_basic_user_file /usr/local/nginx/passwd.db;
重启nginx服务即可正常的账号登录nginx网页

指定ip账号登录权限

vi /etc/nginx.conf   		# 在/location 模块添加密文登录的配置命令
deny 192.168.10.1/32;
allow all;

注意:与apache配置不同的是,nginx网页的接受或者拒绝是严格从上而下的,如果先是接受或者拒绝所有后,将不再执行下面的具体的ip地址的配置操作
重启nginx服务即可正常的账号登录nginx网页

在这里插入图片描述

五、mysql数据库的安装

5.1 数据库的安装

将软件包导入根目录下

yum -y install ncurses ncurses-devel bison cmake
useradd -s /sbin/nologin mysql
tar zxvf mysql-boost-5.7.20.tar.gz
cd mysql-5.7.20/
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1
make && make install

chown -R mysql.mysql /usr/local/mysql/
vi /etc/my.cnf

[client]
port = 3306
default-character-set = utf8
socket = /usr/local/mysql/mysql.sock
[mysql]
port = 3306
default-character-set = utf8
socket = /usr/local/mysql/mysql.sock
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server = utf8
socket = /usr/local/mysql/mysql.sock
pid-file = /usr/local/mysql/mysql.pid
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

chown mysql.mysql /etc/my.cnf
echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile                            # /etc/profile 开机都会调用的初始化的配置文件
source /etc/profile
echo $PATH
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
systemctl daemon-reload			   # 启用守护进程
systemctl start mysqld.service			   # 启用mysql程序 
netstat -anptu | grep mysqld
systemctl enable mysqld.service		   # 开机自启动

mysql免密登录验证结果
在这里插入图片描述

5.2 配置及优化FPM板块

cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf
vi php-fpm.conf
pid = run/php-fpm.pid          			# 将pid行#删除
/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
netstat -anpt | grep 9000
ln -s /usr/local/php/bin/* /usr/bin
vi /usr/local/nginx/conf/nginx.conf	# 进入配置文件进行修改
     location ~ \.php$ {
        root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

5.3 php网页的配置

vi /usr/local/nginx/html/index.php
<?php
phpinfo();
?>

然后通过网页访问192.168.10.21/index.php即可访问到php主页。
在这里插入图片描述

5.4 mysql数据库管理

mysqladmin -uroot -p password '123456'
mysql -uroot -p123456
mysql> create database aaa;
mysql> grant all privileges on aaa.* to 'aaauser'@'%' identified by 'admin123';
mysql> grant all privileges on aaa.* to 'aaauser'@'localhost' identified by 'admin123';
mysql> flush privileges;
mysql> exit

vi /usr/local/nginx/html/index.php
<?php
$link=mysqli_connect('192.168.10.21','aaauser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!";
?>

然后可以通过网页访问192.168.10.21/index.php来访问网页,会出现success的字样

在这里插入图片描述

5.5 论坛的搭建

论坛通过软件Discuz来实现,所以要导入并解压压缩包。

unzip Discuz_X3.4_SC_UTF8.zip
cd dir_SC_UTF8/
cp -r upload/ /usr/local/nginx/html/bbs
cd /usr/local/nginx/html/bbs/
chown -R root.nginx ./config/
chown -R root.nginx ./data/
chown -R root.nginx ./uc_client/
chown -R root.nginx ./uc_server/
chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/

通过网页访问192.168.10.21/bbs/install/index.php 访问安装论坛模块,注意表名与密码的设置要与数据库管理创建时的保持一致。
然后通过root登录即可进入管理论坛。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_50344820/article/details/110360232