Linux安装配置nginx+php搭建以及在docker中配置

Linux安装配置nginx+php搭建以及在docker中配置

文章目录

    • Linux安装配置nginx+php搭建以及在docker中配置
      • 1.nginx源码包编译环境和安装相应的依赖
        • 1.1 安装编译环境
        • 1.2 安装pcre库、zlib库和openssl库
      • 2.安装nginx
        • 2.1 在[nginx官网](https://nginx.org/en/download.html)上获取源码包并进行下载
        • 2.2 进行解压编译
      • 3.启动nginx服务
        • 3.1 运行nginx
        • 3.2 关闭防火墙
        • 3.3 用本地浏览器服务虚拟机地址
      • 4.修改nginx配置文件创建新的端口页面
      • 5.安装php
        • 5.1 使用yum安装php-fpm
        • 5.2 修改php的配置文件
        • 5.3 修改nginx的配置文件
        • 5.4 创建php页面文件并查看测试
      • 6.安装docker
        • 6.1 查看操作系统发行版本与清空已安装的docker旧版本
        • 6.2 安装docker前配置
        • 6.3 安装docker与启动
      • 7.在docker上拉取nginx镜像以及挂载配置
        • 7.1 拉取nginx镜像
        • 7.2 创建一个nginx服务以及挂载本地的nginx配置文件
        • 7.3 查看对应的9090端口的映射情况
      • 8.docker环境下配置php服务
        • 8.1 拉取php-fpm镜像
        • 8.2 创建容器
        • 8.3 创建conf.d目录并配置.conf文件
        • 8.4 创建nginx容器
        • 8.5 测试

1.nginx源码包编译环境和安装相应的依赖

1.1 安装编译环境

#安装编译环境
[root@localhost /]# yum install -y gcc gcc-c++

1.2 安装pcre库、zlib库和openssl库

  • pcre(Perl Compatible Regular Expressions)是一个Perl库,是一个用C语言编写的正则表达式的函数库,是轻量级的函数库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库

  • zlib是一套通用的解压缩开源库,提供了内存(in-memory)压缩和解压函数,能检测解压出来的数据完整性。nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。

  • openssl,即open secure sockets layer,是一个开源的安全套接字层的密码库。包括常用的密码加解密算法、常用的密钥算法、证书管理和SSL协议。nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。

#安装pcre库
[root@localhost /]# yum install -y pcre pcre-devel

#安装zlib库
[root@localhost /]# yum install -y zlib zlib-devel

#安装openssl库
[root@localhost /]# yum install -y openssl-devel

2.安装nginx

2.1 在nginx官网上获取源码包并进行下载

在这里插入图片描述

[root@localhost /]# mkdir nginxfile
[root@localhost /]# cd nginxfile/

#下载nginx源码包
[root@localhost nginxfile]# wget https://nginx.org/download/nginx-1.24.0.tar.gz

2.2 进行解压编译

#解压源码包
[root@localhost nginxfile]# tar -zxvf nginx-1.24.0.tar.gz

#编译配置
[root@localhost nginxfile]# cd nginx-1.24.0/
[root@localhost nginx-1.24.0]# ./configure --with-http_ssl_module
[root@localhost nginx-1.24.0]# ./configure --with-stream
[root@localhost nginx-1.24.0]# ./configure

#执行安装
[root@localhost nginx-1.24.0]# make && make install

3.启动nginx服务

3.1 运行nginx

进入到/usr/local/sbin的目录下执行./nginx命令

[root@localhost nginx-1.24.0]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ls
nginx

#执行nginx
[root@localhost sbin]# ./nginx 

#查看nginx的进程开启情况
[root@localhost sbin]# ps -aux | grep nginx
root       72876  0.0  0.0  34444   384 ?        Ss   21:27   0:00 nginx: master process ./nginx
nobody     72877  0.0  0.2  66624  3932 ?        S    21:27   0:00 nginx: worker process
root       72887  0.0  0.0  12136  1120 pts/2    R+   21:28   0:00 grep --color=auto nginx

3.2 关闭防火墙

关闭防火墙防止本地主机访问时被拦截

[root@localhost sbin]# systemctl stop firewalld.service
[root@localhost sbin]# systemctl status firewalld.service

3.3 用本地浏览器服务虚拟机地址

出现welcome to nginx页面代表nginx安装启动完成

在这里插入图片描述

4.修改nginx配置文件创建新的端口页面

cd到/usr/local/nginx/html的路径下,创建一个新的后缀为.html的文件

[root@localhost html]# touch web.html

#在文件中编写新的网页
[root@localhost html]# vim web.html
<!DOCTYPE html>
<html>
<head>
<title>Hello World</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Hello world</h1>
</body>
</html>

cd到/usr/local/nginx/conf的目录下,修改配置文件,添加以下配置

[root@localhost conf]# vim nginx.conf
    server {
        listen       8080;  #浏览器访问虚拟机的8080端口时显示该页面
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / { 
            root   html;
            index  web.html index.htm; #访问8080端口时定位到web.html文件
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        
#停止nginx服务
[root@localhost sbin]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx -s stop

#重新启动nginx服务
[root@localhost sbin]# ./nginx

使用本地浏览器访问8080端口查看新建页面

在这里插入图片描述

5.安装php

5.1 使用yum安装php-fpm

#因为源码安装的方式会需要搭载很多的依赖包,安装编译过程也比较的繁琐,所以这里采用yum源安装途径,yum仓库安装的方法比源码包安装更加的简洁快速
[root@localhost /]# yum -y install php-fpm	

#启动php-fpm服务
[root@localhost /]# systemctl start php-fpm
[root@localhost /]# systemctl status php-fpm
● php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset:>   Active: active (running) since Tue 2023-08-08 14:29:59 CST; 22s ago

5.2 修改php的配置文件

#定位到php-fpm的文件下
[root@localhost /]# cd /etc/php-fpm.d/

#修改www.conf文件内容
[root@localhost php-fpm.d]# vim www.conf

在www.conf文件下注释掉listen = /run/php-fpm/www.sock这段内容,添加listen = 127.0.0.1:9000

在这里插入图片描述

5.3 修改nginx的配置文件

#定位到nginx/conf文件下
[root@localhost nginx]# cd /usr/local/nginx/conf/

#修改nginx.conf文件内容
[root@localhost conf]# vim nginx.conf

取消掉serverlocation ~ \.php$内容中的注释

在这里插入图片描述

将刚刚取消注释的location ~ \.php$fastcgi_param SCRIPT_FILENAME内容后面的/scripts$fastcgi_script_name修改为$document_root$fastcgi_script_name

在这里插入图片描述

server的第一段location /内容下的index后面添加web.php文件名(用于定位到后面即将创建的php页面文件)

在这里插入图片描述

5.4 创建php页面文件并查看测试

#定位到nginx/html文件下
[root@localhost nginx]# cd /usr/local/nginx/html/

#创建web.php页面文件
[root@localhost html]# vim web.php
<?php
phpinfo();
?>

所有的文件配置完毕后需要重启php-fpm服务和nginx

#重启php-fpm服务
[root@localhost html]# systemctl restart php-fpm
[root@localhost html]# systemctl status php-fpm
● php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset:>   Active: active (running) since Tue 2023-08-08 15:02:04 CST; 7s ago
 Main PID: 76438 (php-fpm)
 
#重启nginx
#定位到nginx/sbin文件路径下
[root@localhost html]# cd /usr/local/nginx/sbin/
 
#停止nginx
[root@localhost sbin]# ./nginx -s stop
#重新启动nginx
[root@localhost sbin]# ./nginx

#查看开启情况
[root@localhost sbin]# ps -aux | grep nginx 
root       76473  0.0  0.0  34444   440 ?        Ss   15:03   0:00 nginx: master process ./nginx
nobody     76474  0.0  0.2  66564  4172 ?        S    15:03   0:00 nginx: worker process
root       76503  0.0  0.0  12136  1192 pts/1    R+   15:04   0:00 grep --color=auto nginx

在本地浏览器访问web.php页面

在这里插入图片描述

注意:如果访问不成功可以检查一下防火墙是否关闭

6.安装docker

6.1 查看操作系统发行版本与清空已安装的docker旧版本

docker要求centos的内核版本高于3.10

[root@localhost /]# uname -r
4.18.0-348.el8.x86_64

#卸载旧的docker版本
[root@localhost /]# yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

6.2 安装docker前配置

#安装yum-utils
[root@localhost /]# yum install -y yum-utils

#添加阿里云仓库
[root@localhost /]# yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#安装makecache
[root@localhost /]# yum makecache 

6.3 安装docker与启动

[root@localhost /]# yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

一般都会报错

在这里插入图片描述

解决方法:

#运行以下内容
[root@localhost /]# yum erase podman buildah

#重新进行安装
[root@localhost /]# yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

启动docker

[root@localhost /]# systemctl start docker
[root@localhost /]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset>   Active: active (running) since Wed 2023-08-09 00:51:52 CST; 9s ago

运行hello-world进行测试

[root@localhost /]# docker run hello-world

在这里插入图片描述

7.在docker上拉取nginx镜像以及挂载配置

7.1 拉取nginx镜像

[root@localhost /]# docker pull nginx

#查看本地镜像
[root@localhost /]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
nginx         latest    89da1fb6dcb9   11 days ago    187MB
hello-world   latest    9c7a54a9a43c   3 months ago   13.3kB

7.2 创建一个nginx服务以及挂载本地的nginx配置文件

#创建运行一个nginx容器同时挂载本地文件
[root@localhost ~]# docker run --name nginx-test -p 9090:80 -d -v /usr/local/nginx/conf:/usr/share/nginx/conf -v /usr/local/nginx/html:/usr/share/nginx/html -v /etc/nginx/conf.d:/usr/share/nginx/conf.d nginx
38e38f4ea4534594b8b8cdcebee6bee843debbf8a18c82904ea5ac7f63efc283

[root@localhost conf]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                   NAMES
38e38f4ea453   nginx     "/docker-entrypoint.…"   4 minutes ago   Up 4 minutes   0.0.0.0:9090->80/tcp, :::9090->80/tcp   nginx-test

7.3 查看对应的9090端口的映射情况

在这里插入图片描述

8.docker环境下配置php服务

8.1 拉取php-fpm镜像

[root@localhost /]# docker pull php:7.2-fpm

#查看本地镜像
[root@localhost /]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
nginx         latest    89da1fb6dcb9   11 days ago    187MB
hello-world   latest    9c7a54a9a43c   3 months ago   13.3kB
php           7.2-fpm   28f52b60203d   2 years ago    398MB

8.2 创建容器

#创建php文件挂载目录
[root@localhost /]# mkdir -p /docker/nginx/www/myphp

#创建容器
[root@localhost /]# docker run --name myphp -v /docker/nginx/www/myphp:/www/myphp -d php:7.2-fpm
dcfdfe9436d080c87d66305104df09a13e4335f6c3532fcd461982b22bf8c090

[root@localhost /]# docker ps
CONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS          PORTS                                   NAMES
dcfdfe9436d0   php:7.2-fpm   "docker-php-entrypoi…"   37 seconds ago   Up 36 seconds   9000/tcp                                myphp

8.3 创建conf.d目录并配置.conf文件

[root@localhost /]# mkdir -p /docker/nginx/conf/conf.d

[root@localhost conf.d]# vim myphp.conf

在配置文件中写上以下内容

在这里插入图片描述

8.4 创建nginx容器

#创建一个nginx容器
[root@localhost conf.d]# docker run --name nginx1 -p 8088:80 -d \
> -v /docker/nginx/www:/usr/share/nginx/html \
> -v /docker/nginx/conf/conf.d:/etc/nginx/conf.d \
> --link myphp:php nginx
f761985089f1ed5abd61625ac84b90298a7f53f9c1c2013533afce05df135cc4

[root@localhost conf.d]# docker ps
CONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS          PORTS                                   NAMES
f761985089f1   nginx         "/docker-entrypoint.…"   5 minutes ago    Up 5 minutes    0.0.0.0:8088->80/tcp, :::8088->80/tcp   nginx1
dcfdfe9436d0   php:7.2-fpm   "docker-php-entrypoi…"   13 minutes ago   Up 13 minutes   9000/tcp                                myphp

8.5 测试

/docker/nginx/www/myphp/路径下创建.php文件

[root@localhost conf.d]# cd /docker/nginx/www/myphp/
[root@localhost myphp]# vim index.php
<?php
phpinfo();
?>

本地浏览器进行测试8088端口访问php主页

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/70967.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ffmpeg+nginx实现rtsp协议摄像头web端播放

ffmpegnginx实现rtsp协议摄像头web端播放 环境准备准备nginx环境添加rtmp模块添加hls转发 使用ffmpeg&#xff0c;将摄像头rtsp转为rtmp并推送到nginxVLC播放验证 环境准备 nginx&#xff08;需要安装rtmp模块&#xff09;ffmpeg 6.0vlc播放器&#xff08;本地播放验证&#x…

如何让ES低成本、高性能?滴滴落地ZSTD压缩算法的实践分享

前文分别介绍了滴滴自研的ES强一致性多活是如何实现的、以及如何提升ES的性能潜力。由于滴滴ES日志场景每天写入量在5PB-10PB量级&#xff0c;写入压力和业务成本压力大&#xff0c;为了提升ES的写入性能&#xff0c;我们让ES支持ZSTD压缩算法&#xff0c;本篇文章详细展开滴滴…

青大数据结构【2014】

一、单选 二、简答 为了解决顺序队列的假溢出问题&#xff0c;提出了循环队列&#xff0c;即把存储队列的表从逻辑上看成一个环 判别队列空和满有三种方法&#xff1a; 1&#xff09;采用计数器判别&#xff0c;空时&#xff0c;计数器为0&#xff1b;满时&#xff0c;计数器…

智谷星图赵俊:让人才和区块链产业“双向奔赴”丨对话MVP

区块链产业需要什么样的人才&#xff1f;赵俊很有发言权。 赵俊是北京智谷星图科技有限公司的技术总监&#xff0c;也是FISCO BCOS官方认证讲师。他2017年接触区块链&#xff0c;随后选择人才培育领域深耕。“为区块链行业引进更多人才这件事很有价值&#xff0c;跟我的职业理…

shell脚本开发

shell脚本语言属于弱类型的语言&#xff0c;无需声明变量类型&#xff0c;直接定义使用 shell语言定义的变量&#xff0c;数据类型默认都是字符串类型 调用历史记录命令&#xff1a;&#xff01; 历史记录id

【C语言】分支语句(选择结构)详解

✨个人主页&#xff1a; Anmia.&#x1f389;所属专栏&#xff1a; C Language &#x1f383;操作环境&#xff1a; Visual Studio 2019 版本 目录 什么是分支语句&#xff1f; if语句 if if - else单分支 if - else if - else ...多分支 if - if嵌套 switch语句 基本语…

3.6 Spring MVC文件上传

1. 文件上传到本地 实现方式 Spring MVC使用commons-fileupload实现文件上传&#xff0c;注意事项如下&#xff1a; l HTTP请求方法是POST。 l HTTP请求头的Content-Type是multipart/form-data。 SpringMVC配置 配置commons-fileupload插件的文件上传解析器CommonsMultip…

【工程优化问题】基于鲸鱼、萤火虫、灰狼优化算法的张力、压缩弹簧设计问题研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

负载均衡–HAProxy安装及搭建tidb数据库负载服务

作为一名开发人员&#xff0c;随着经验的增加和技术的沉淀&#xff0c;需要提高自己架构方面的知识&#xff0c;同时对于一个企业来说&#xff0c;搭建一套高可用、高性能的技术架构&#xff0c;对于公司的业务开展和提高服务的性能也是大有裨益的。本文重点从软件安装和搭建ti…

1、Java简介+DOS命令+编译运行+一个简单的Java程序

Java类型&#xff1a; JavaSE 标准版&#xff1a;以前称为J2SE JavaEE 企业版&#xff1a;包括技术有&#xff1a;Servlet、Jsp&#xff0c;以前称为J2EE JavaME 微型版&#xff1a;以前称为J2ME Java应用&#xff1a; Android平台应用。 大数据平台开发&#xff1a;Hadoo…

通过MATLAB自动产生Hamming编译码的verilog实现,包含testbench

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 1. 原理 1.1 编码规则 1.2 错误检测和纠正 2. 实现过程 2.1 编码过程 2.2 解码过程 3. 应用领域 3.1 数字通信 3.2 存储系统 3.3 ECC内存 3.4 数据传输 5.算法完整程序工程 1.算法…

【软件测试】Linux环境Ant调用Jmeter脚本并且生成测试报告(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 准备工作 需要在…

【BASH】回顾与知识点梳理(十五)

【BASH】回顾与知识点梳理 十五 十五. 指令与文件的搜寻15.1 脚本文件名的搜寻which (寻找『执行档』) 15.2 文件档名的搜寻whereis (由一些特定的目录中寻找文件文件名)locate / updatedbfind与时间有关的选项与使用者或组名有关的参数与文件权限及名称有关的参数额外可进行的…

【数据结构】二叉树常见题目

文章目录 前言二叉树概念满二叉树完全二叉树二叉搜索树(二叉排序树)平衡⼆叉搜索树存储⽅式 二叉树OJ二叉树创建字符串二叉树的分层遍历1二叉树的分层遍历2给定一个二叉树, 找到该树中两个指定节点的最近公共祖先二叉树搜索树转换成排序双向链表二叉树展开为链表根据一棵树的前…

软件功能测试有什么注意事项?功能测试报告起到什么作用?

软件功能测试是软件开发过程中至关重要的一环&#xff0c;它用于评估软件功能的质量和稳定性&#xff0c;并确保软件能够按照预期进行工作。然而&#xff0c;在进行功能测试时&#xff0c;有一些注意事项需要特别关注&#xff0c;以确保测试的准确性和有效性。 一、软件功能测…

使用Pytest集成Allure生成漂亮的图形测试报告

目录 前言 依赖包安装 Pytest Allure Pytest Adaptor 改造基于Pytest的测试用例 生成测试报告 运行测试 生成测试报告 打开测试报告 资料获取方法 前言 之前写过一篇生成测试报告的博客&#xff0c;但是其实Allure首先是一个可以独立运行的测试报告生成框架&#xff…

音视频技术开发周刊 | 305

每周一期&#xff0c;纵览音视频技术领域的干货。 新闻投稿&#xff1a;contributelivevideostack.com。 大神回归学界&#xff1a;何恺明宣布加入 MIT 「作为一位 FAIR 研究科学家&#xff0c;我将于 2024 年加入麻省理工学院&#xff08;MIT&#xff09;电气工程与计算机科学…

MOCK测试

介绍 mock&#xff1a;就是对于一些难以构造的对象&#xff0c;使用虚拟的技术来实现测试的过程。 mock测试&#xff1a;在测试过程中&#xff0c;对于某些不容易构造或者不容易获取的对象&#xff0c;可以用一个虚拟的对象来代替的测试方 法。 接口Mock测试&#xff1a;在接口…

后端开发8.品牌模块

概述 简介 效果图 数据库设计 DROP TABLE IF EXISTS `goods_brand`;CREATE TABLE `goods_brand` ( `goodsBrandId` int(11) NOT NULL AUTO_IN

上篇文章viewerjs(npm包补丁)的错误更正。(npm补丁本地没问题,流水线打包要没效果,要么报错)

1、上篇文档的包补丁在本地使用没有问题&#xff0c;并且同事拉代码后也会自动同步npm_modules&#xff0c;也没有问题 2、问题出现在打包上&#xff0c;我这边的项目是用teambition上的飞流设置的流水线来进行打包的&#xff0c;里面用到了两个指令 yarn install npm run bu…
最新文章