Nginx的lnmp服务搭建

2024-08-29 07:04
文章标签 服务 nginx 搭建 lnmp

本文主要是介绍Nginx的lnmp服务搭建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:

nginx是一款功能强大的web服务器。和apache一样,有http和https两个服务。nginx功能强大,且库使用第三方模块,正反向代理等。Nginx默认采用多进程工作方式,Nginx启动后,会运行一个master进程和多个worker进程。其中master充当整个进程组与用户的交互接口,同时对进程进行监护,管理worker进程来实现重启服务、平滑升级、更换日志文件、配置文件实时生效等功能。worker用来处理基本的网络事件,worker之间是平等的,他们共同竞争来处理来自客户端的请求。

关掉防火墙和selinux,时间同步

nginx:192.168.121.30

mysql:192.168.121.20

php:192.168.121.50

一、nginx的搭建

1.1编译安装nginx,下载安装包,创建文件、用户、目录

[root@node3 ~]# hostnamectl hostname nginx
[root@node3 ~]# bash

[root@nginx ~]# useradd -r -M -s /sbin/nologin nginx


[root@nginx ~]# yum -y groupinstall "Development Tools"

[root@nginx ~]# yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++ make zlib-devel wget lrzsz 

[root@nginx ~]# mkdir -p /var/log/nginx
[root@nginx ~]# chown -R nginx.nginx /var/log/nginx/

1.2解压,安装

[root@nginx ~]# tar -zxvf nginx-1.24.0.tar.gz -C /usr/local/
[root@nginx ~]# cd /usr/local/nginx-1.24.0/

到该目录下面进行配置功能,指定工作目录,用户和组

[root@nginx nginx-1.24.0]# ./configure \
> --prefix=/usr/local/nginx \
> --user=nginx \
> --group=nginx \
> --with-debug \
> --with-http_ssl_module \
> --with-http_realip_module \
> --with-http_image_filter_module \
> --with-http_gunzip_module \
> --with-http_gzip_static_module \
> --with-http_stub_status_module \
> --http-log-path=/var/log/nginx/access.log \
> --error-log-path=/var/log/nginx/error.log

[root@nginx nginx-1.24.0]# make

[root@nginx nginx-1.24.0]#  make install

[root@nginx ~]# echo 'export PATH=/usr/local/nginx/sbin:$PATH' >> /etc/profile
[root@nginx ~]# source /etc/profile

配置环境变量。可以在任何目录实验nginx命令

服务控制方式,使用nginx命令

1.3nginx基本命令

-t   检查配置文件语法

-v   输出nginx的版本

-c   指定配置文件路径

-s   发送服务控制信号,可选值有stop、quit、reopen、reload

[root@nginx ~]# nginx

启动nginx
[root@nginx ~]# ss -anlt

在浏览器打开访问页面


二、部署mysql

2.1编译安装mysql
[root@node2 ~]# hostnamectl hostname mysql
[root@node2 ~]# bash

[root@mysql ~]# yum -y install libncurses* libaio lrzsz tar

[root@mysql ~]# tar -xzvf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz -C /usr/local/

[root@mysql ~]# cd /usr/local/
[root@mysql local]# ln -sv mysql-5.7.37-linux-glibc2.12-x86_64/ mysql
'mysql' -> 'mysql-5.7.37-linux-glibc2.12-x86_64/'
[root@mysql local]# useradd -r -M -s /sbin/nologin mysql
[root@mysql local]# chown -R mysql.mysql /usr/local/mysql
[root@mysql local]# mkdir /opt/data
[root@mysql local]# chown -R mysql.mysql /opt/data

前面文章解释过,我就不写,怎么了

[root@mysql local]# echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[root@mysql local]# source /etc/profile

[root@mysql local]# mysqld --initialize-insecure --user=mysql --datadir=/opt/data/

[root@mysql local]# ln -sv /usr/local/mysql/include/ /usr/local/include/mysql
[root@mysql local]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
[root@mysql local]# ldconfig

[root@mysql ~]# vim /etc/my.cnf

[mysqld]
basedir = /usr/local/mysql
datadir = /opt/data
socket = /tmp/mysql.sock
port = 3306
pid-file = /opt/data/mysql.pid
user = mysql
skip-name-resolve
[root@mysql ~]# cat /etc/my.cnf 

[root@mysql ~]# sed -ri "s#^(basedir=).*#\1/usr/local/mysql#g"  /usr/local/mysql/support-files/mysql.server
[root@mysql ~]# sed -ri "s#^(datadir=).*#\1/opt/data#g"  /usr/local/mysql/support-files/mysql.server

[root@mysql local]# vim /usr/lib/systemd/system/mysqld.service

[Unit]
Description=mysql server daemon
After=network.targe

[Service]
Type=forking
ExecStart=/usr/local/mysql/support-files/mysql.server start
ExecStop=/usr/local/mysql/support-files/mysql.server stop
ExecReload=/bin/kill -HUP \$MAINPID

[Install]
WantedBy=multi-user.target

[root@mysql ~]# systemctl daemon-reload 
[root@mysql ~]# systemctl restart mysqld
[root@mysql ~]# systemctl enable mysqld

[root@mysql ~]# vim /etc/man_db.conf

改一下命令文件位置

MANDATORY_MANPATH                       /usr/local/mysql/man

[root@mysql ~]# mysql -uroot -p

初始化后是空密码,直接回车

mysql> set password=password('123');

设置密码

三、安装php

3.1安装php依赖包还有连接数据库和nginx的工具等

#yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libicu-devel libjpeg libjpeg-devel libpng libpng-devel openldap-devel pcre-devel freetype freetype-devel gmp gmp-devel  readline readline-devel libxslt libxslt-devel  php-mysqlnd

[root@node5 ~]# hostnamectl hostname php
[root@node5 ~]# bash

[root@node5 ~]#yum -y install php-*

安装php

3.2修改php配置文件,编写apache网页

[root@php ~]# vim /etc/php-fpm.d/www.conf

改两个地方

listen = 0.0.0.0:9000  //自身的9000端口打开,

listen.allowed_clients = 192.168.121.30  //填写nginx的客户端

[root@php ~]# vim /var/www/html/index.php    //为什么是apche用户,前面安装的依赖包的时候创建的
<?php
    phpinfo();
?>
[root@php ~]# chown -R apache.apache /var/www/html/
[root@php ~]# systemctl restart php-fpm.service 
[root@php ~]# systemctl enable php-fpm.service

3.3配置nginx的反向代理

[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf

location / {
            root       html;  #更改目录
            index  index.php index.html index;  #添加一个index.php,添加文件名称
        }
        location ~ \.php$ {     //这里~代表正则表达式,正则表达式就是检查文本匹配,反斜杠是转义后面那个点的,能识别为以点php结尾的任意名字。

            root       /var/www/html;#更改目录
            fastcgi_pass   192.168.100.30:9000;  #这里为PHP服务器的地址
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;  #前面设置目录
            include        fastcgi_params;
        }

 index  index.php index.html index.htm;
        }
                location ~ \.php$ {
                        root    /var/www/html;
                        fastcgi_pass   192.168.121.50:9000;
                        fastcgi_index  index.php;
                        fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;
                        include        fastcgi_params;
                }
 

[root@nginx ~]# nginx -t 检查为ok
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successfu

[root@nginx ~]# nginx -s stop   停止服务
[root@nginx ~]# nginx

四、测试结果与模糊后缀

[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf

 index  index.php index.html index.htm;
        }
                location ~ \.php$ {
                        root    /var/www/html;
                        fastcgi_pass   192.168.121.50:9000;
                        fastcgi_index  index.php;
                        fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;
                        include        fastcgi_params;
                }


[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf

 index  index.php index.html index.htm;
        }
                location ~ 123$ {
                        root    /var/www/html;
                        fastcgi_pass   192.168.121.50:9000;
                        fastcgi_index  index.php;
                        fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;
                        include        fastcgi_params;
                }

必须是123结尾的才能访问,且在index.php文件目录下

扩展与思考:

安装php的页面在192.168.121.50不能访问,但是配置反向代理访问就能访问。而且192.168.121.30ip访问的是192.168.121.50的网站。那么192.168.121.50的网页能不能访问呢,答案是不能,首先没有80端口,其次其他的端口不是网页端口,使用192.168.121.30上的nginx的80将网页显示出来。

这篇关于Nginx的lnmp服务搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1117178

相关文章

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

Java服务实现开启Debug远程调试

《Java服务实现开启Debug远程调试》文章介绍如何通过JVM参数开启Java服务远程调试,便于在线上排查问题,在IDEA中配置客户端连接,实现无需频繁部署的调试,提升效率... 目录一、背景二、相关图示说明三、具体操作步骤1、服务端配置2、客户端配置总结一、背景日常项目中,通常我们的代码都是部署到远程

k8s搭建nfs共享存储实践

《k8s搭建nfs共享存储实践》本文介绍NFS服务端搭建与客户端配置,涵盖安装工具、目录设置及服务启动,随后讲解K8S中NFS动态存储部署,包括创建命名空间、ServiceAccount、RBAC权限... 目录1. NFS搭建1.1 部署NFS服务端1.1.1 下载nfs-utils和rpcbind1.1

Nginx实现端口映射的示例代码

《Nginx实现端口映射的示例代码》本文主要介绍了Nginx实现端口映射的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1. 找到nginx的部署路径2. 备份原来的配置文件3. 编辑nginx.conf文件4. 在

Nginx屏蔽服务器名称与版本信息方式(源码级修改)

《Nginx屏蔽服务器名称与版本信息方式(源码级修改)》本文详解如何通过源码修改Nginx1.25.4,移除Server响应头中的服务类型和版本信息,以增强安全性,需重新配置、编译、安装,升级时需重复... 目录一、背景与目的二、适用版本三、操作步骤修改源码文件四、后续操作提示五、注意事项六、总结一、背景与

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx