Linux学习笔记(二)

案例部署 三

1、项目介绍

        本项目是一个简单医疗系统的部署和实施,因为考虑到保密协议,所以只展示部分内容,主要讲的是怎么在操作系统上部署项目的步骤以及注意事项

        Xshell连接到终端,使用以下命令查看所有的容器,在此项目部署中,我们需要三个镜像来构建三个容器,分别是c_mysql容器(引入相关信息)、app容器(前端)、distapp容器(后端)

docker ps -a

2、准备工作

        a.新建立目录docker_file2 

mkdir docker_file2

        b.进入文件 

cd docker_file2

        c. 连接xftp导入文件到此目录中

 3、Mysql部署

        输入以下指令,创建一个c_mysql容器

docker run -d --name=c_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=hospital_manager  mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

4、前端部署 

        a.在docker_file2文件目录下用vim编辑dockerfile

vim dockerfile

         b.然后在里面编辑输入下面内容,编辑完以后:wq退出

FROM nginx:latest

COPY dist/ /usr/share/nginx/html

COPY nginx/conf.d/app.conf /etc/nginx/conf.d/default.conf

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]

        d. 进入/nginx/conf.d/app.conf编辑输入

server {
    listen 8080;
    access_log off;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    location ^~/api/ {
        proxy_pass http://192.168.187.128:9281/;
    }
}

        e. 创建镜像 

docker build -f ./dockerfile -t distapp .

         f.创建容器

docker run -id -p 9282:8080 distapp

 5、后端部署

        

         a.在docker_file2文件目录下用vim编辑dockerfile2

vim dockerfile2

         b.然后在里面编辑输入下面内容,编辑完以后:wq退出

FROM java:8
MAINTAINER sj <sj@163.com>
ADD HospitalManagerApi-1.0-SNAPSHOT.jar app.jar
CMD ["java","-jar","app.jar"]

          e. 创建镜像 

docker build -f ./dockerfile2 -t app .

         f.创建容器

docker run -id -p 9281:8080 app

6、测试部署完成

  通过Navicat Premium软件完成部署平台与数据库的连接,如图:

然后再浏览器输入电脑ip地址访问网页"ip:9282"   up主的IP如下:http://192.168.187.128:9282/

一、Docker编排服务 

 1、概念

        Docker编排服务是管理和协调多个Docker容器的工具,用于自动化部署、扩展和管理应用程序。

2、安装Docker Compose

 curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

# 设置文件可执行权限 
chmod +x /usr/local/bin/docker-compose

# 查看版本信息 
docker-compose -version

3、编排nginx+springboot 

a.创建文件docker-compose

mkdir ~/docker-compose
cd ~/docker-compose

b.编写docker-compose.yml文件 

vim docker-compose.yml

#里面写入以下内容
version: '3'
services:
  nginx:
   image: nginx
   ports:
    - 80:80
   links:
    - app
   volumes:
    - ./nginx/conf.d:/etc/nginx/conf.d
  app:
    image: app
    expose:
      - "8080"

#保存退出
:wq

 c. 创建./nginx/conf.d目录

mkdir -p ./nginx/conf.d

 d.编写app.conf文件

#在./nginx/conf.d/目录下
vim app.conf


#写入以下内容
server {
    listen 80;
    access_log off;
    location / {
        proxy_pass http://app:8080/;
    }
}

#保存退出
:wq

e.生成app.conf

#删除之前的app镜像和容器

cd docker_file2

docker build -f ./dockerfile2 -t app .

f.使用docker-compose 启动容器

#在~/docker-compose 目录下启动容器
docker-compose up -d 

g.测试 

#此处为自己电脑ip
192.168.187.128/hello

二、Docker日志 

1、概念

Docker日志是记录Docker容器运行时活动和输出信息的文件。

2、作用

监控和故障排除
性能调优
安全审计
运维管理
历史记录

3、相关指令

#查看容器日志:

   docker logs container_id 
   docker logs container_name


#实时跟踪容器日志:
   docker logs -f container_id


#输出最新日志条目:
   docker logs --tail n ontainer_id

三、Docker私有仓库 

1、概念

        Docker私有仓库是一种用于存储和管理Docker镜像的私有存储库或服务器。

2、搭建私有仓库

# 1、拉取私有仓库镜像 
docker pull registry

 # 2、启动私有仓库容器 
docker run -id --name=registry -p 5000:5000 registry

 # 3、打开浏览器 
输入地址http://192.168.187.128:5000/v2/_catalog,看到{"repositories":[]} 表示私有仓库 搭建成功

# 4、修改daemon.json   
vim /etc/docker/daemon.json  
  
# 在上述文件中添加一个key,保存退出。此步用于让 docker 信任私有仓库地址;注意将私有仓库服务器ip修改为自己ip
 {"insecure-registries":["个人IP:5000"]} 

# 5、重启docker 服务 
systemctl restart docker

# 6、启动docker 容器
docker start registry

3、 镜像上传到仓库

# 1、标记镜像为私有仓库的镜像     
docker tag nginx 192.168.174.130:5000/nginx

 # 2、上传标记的镜像     
docker push 192.168.174.130:5000/nginx

4、拉取镜像

docker pull 192.168.174.130:5000/nginx

四、NoSql 

1、概念

        NoSQL(Not Only SQL)是一类非关系型数据库,旨在解决传统关系型数据库在大数据处理和高并发访问下的限制,提供更灵活的数据模型和可扩展性。

2、作用

处理大数据量
高并发访问
灵活的数据模型
水平扩展
高性能和低延迟
适应多样化的应用需求

五、Redis 

1、概念

Redis(Remote Dictionary Server)是一个开源的内存存储数据库,属于键值对(key-value)类型的数据存储系统。

2、特点

内存存储:Redis将数据存储在内存中,因此读写速度非常快,适合需要高速访问的场景。
数据持久化:Redis支持将数据持久化到磁盘,可以定期将内存中的数据写入磁盘文件,以保证数据在重启后不丢失。
数据结构多样性:Redis支持多种复杂的数据结构,如字符串、哈希表、列表、集合和有序集合等,这些数据结构可以帮助开发者更灵活地操作数据。
原子性操作:Redis支持多个命令的原子性操作,能够确保多个命令作为一个不可分割的事务执行。
高级别特性
多语言支持

3、应用场景

缓存(数据查询,短连接,新闻内容,商品内容等)

聊天室在线好友列表 

任务队列(秒杀,抢购,12306等)

应用排行榜 

网站访问统计

数据过期处理(可以精确到毫秒)

分布式集群架构中的session问题

4、安装redis

#安装gcc编译环境,安装时提示输入"y"即可
yum install gcc-c++

#安装Redis 
  #先将Redis放到/usr/local/目录下
  #解压Redis压缩包
tar -zxvf redis-5.0.5.tar.gz

#编译Redis
 #进入解压包执行make进行编译
 cd redis-5.0.5
 make

#安装,安装路径/usr/local/
 make PREFIX=/usr/local/redis install

#copy文件 可以在redis.conf文件中修改端口号
cp redis.conf /usr/local/redis
 
#后端启动
修改redis.conf配置文件,设置:daemonize yes,然后可以使用后端模式启动。
vi redis.conf
 
#启动时,指定配置文件(这里所在文件夹是redis)
 ./bin/redis-server ./redis.conf
 
 
#客户端访问redis 
 ./redis-cli

#启动redis
 ./bin/redis-server
 
#停止redis
 ./bin/redis-cli shutdown


5、键操作

SET key value: 设置指定键的值。
GET key: 获取指定键的值。
DEL key [key …]: 删除一个或多个键。
EXISTS key: 检查键是否存在。
KEYS pattern: 根据模式查找匹配的键。
EXPIRE key seconds: 设置键的过期时间(单位秒)。

6、字符串操作

APPEND key value: 将值追加到指定键的当前值末尾。
STRLEN key: 返回指定键值的长度。
INCR key: 将键的值加1。
DECR key: 将键的值减1。
GETRANGE key start end: 获取字符串指定范围内的子串。

7、哈希操作

HSET key field value: 设置哈希表中指定字段的值。
HGET key field: 获取哈希表中指定字段的值。
HGETALL key: 获取哈希表中所有字段和值。
HDEL key field [field …]: 删除一个或多个哈希表字段。
HINCRBY key field increment: 将哈希表中指定字段的整数值增加增量。

8、列表操作

LPUSH key value [value …]: 将一个或多个值插入列表头部。
RPUSH key value [value …]: 将一个或多个值插入列表尾部。
LPOP key: 移除并返回列表头部元素。
RPOP key: 移除并返回列表尾部元素。
LRANGE key start stop: 获取列表指定范围内的元素。

9、集合操作

SADD key member [member …]: 向集合添加一个或多个成员。
SMEMBERS key: 获取集合中的所有成员。
SISMEMBER key member: 检查成员是否存在于集合中。
SREM key member [member …]: 从集合中移除一个或多个成员。

10、有序集合操作

ZADD key score member [score member …]: 向有序集合添加一个或多个成员,同时指定分数。
ZRANGE key start stop [WITHSCORES]: 按分数范围获取有序集合的成员。
ZSCORE key member: 获取有序集合中成员的分数。
ZINCRBY key increment member: 增加有序集合中成员的分数。

11、事务

MULTI: 标记一个事务块的开始。
EXEC: 执行所有事务块内的命令。
DISCARD: 取消事务,放弃所有已入队的命令。

12、其他

PING: 测试与服务器的连接是否仍然活跃。
SELECT index: 切换到指定的数据库。
FLUSHDB: 删除当前数据库中的所有键。
FLUSHALL: 删除所有数据库的所有键。

六、Nginx

1、概念

        Nginx 是一个高性能的HTTP和反向代理web服务器

2、安装Nginx

下载

nginx 2.2 将下载的nginx-1.8.0.tar.gz上传到linux操作系统/var/temp/nginx文件目录下

mkdir /var/temp/nginx

压缩

对nginx-1.8.0.tar.gz进行解压

tar zxf nginx-1.8.0.tar.gz

安装gcc

yum install gcc-c++

安装pcre库

yum install -y pcre pcre-devel

安装zlib库

 yum install -y zlib zlib-devel

安装openssl库

yum install -y openssl openssl-devel

进入nginx-1.8.0目录,使用configure命令进行安装

cd nginx-1.8.0

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

 使用make命令进行编译

make

使用make install安装

make install

启动

cd /usr/local/nginx/sbin
./nginx

测试 

#浏览器输入IP地址直接进行访问
192.168.187.128

七、Nginx实现负载均衡

1、什么是负载均衡

        NGINX负载均衡是一种技术,用于将传入的网络流量分配给多个后端服务器,以提高性能和可靠性。

2、准备工作

a.启动nginx

cd /usr/local/nginx/sbin
./nginx -s stop
./nginx

b.导入文件

        在/usr/local目录下引入两个安装包,安装包下载链接https://pan.quark.cn/s/e138b32dbcb3

c.对jdk-8u161-linux-x64.tar.gz进行解压缩

tar -zxf jdk-8u161-linux-x64.tar.gz

3、 编辑/etc/profile

vim /etc/profile

#然后在下图位置处插入以下代码

export JAVA_HOME=/usr/local/jdk1.8.0_161

export PATH=$PATH:$JAVA_HOME/bin

 4、重新进profile进行加载

source /etc/profile

 5、tomcat1,tomcat2

#解压apache-tomcat-9.0.21.tar.gz,然后修改名字为tomcat1 
tar -zxf apache-tomcat-9.0.21.tar.gz
 mv apache-tomcat-9.0.21 tomcat1


#再解压apache-tomcat-9.0.21.tar.gz,然后修改名字为tomcat2
tar -zxf apache-tomcat-9.0.21.tar.gz
 mv apache-tomcat-9.0.21 tomcat2

6、 Notepad ++

      我们连接到notepad++,然后进行修改

a.修改<h1>标题

找到/usr/local/tomcat1/webapps/ROOT/index.jsp下修改h1标题为8081,然后保存,如图

 找到/usr/local/tomcat2/webapps/ROOT/index.jsp下修改h1标题为8081,然后保存,如图

b.修改端口 

        找到/usr/local/tomcat2/conf/server.xml下修改三个端口参数,tomatal1三个参数依次加1(8005,8080,8009——>8006,8081,8010),tomcat2三个参数依次加2(8005,8080,8009——>8007,8082,8011),然后保存,如图

 7、配置nginx管理多个tomcat

        找到/usr/local/nginx/nginx.conf在以下位置插入修改代码,保存:

#此处修改为自己虚拟机的IP地址
upstream tomcat{
    server 192.168.174.130:8081;
    server 192.168.174.130:8082;
 }


location / {
    proxy_pass   http://tomcat;
    index  index.html index.htm;
 }

8、发动请求测试负载均衡

cd /usr/local/nginx/sbin
#启动nginx命令:
    ./nginx
#关闭nginx命令:
    ./nginx -s stop
#重启nginx命令:
    ./nginx -s reload

cd /usr/local
tomcat1/bin/startup.sh
tomcat2/bin/startup.sh

9、测试

在浏览器输入,点击刷新就会看到<h1>标签在变化

#此处为自己电脑的IP
http://192.168.187.128/index.jsp

 

10、关闭 

tomcat1/bin/shutdown.sh
tomcat2/bin/shutdown.sh

八、Nginx实现动静分离

1、概念

        动静分离是指在web服务器架构中,将静态页面与动态页面或者静态内容接口和动态内容接口分开不同系统访问 的架构设计方法,进而提升整个服务访问性能和可维护性。   

2、配置动静分离

a.创建show.jsp文件并写入以下内容:

<%@ page language="java" import="java.util.Date,java.text.SimpleDateFormat" contentType="text/html; 
charset=UTF-8"
 pageEncoding="UTF-8"%>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <title></title>
 </head>
 
<body>
  <h1>这是tomcat1主页</h1>
     <%
          Date date=new Date();
          SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          String strDate=sdf.format(date);
          out.println(strDate+"<br>");
     %>
     <img src="images/aaa.jpg">
 </body>
 </html>

b.存入图片

        在local文件夹下新建staticresources文件夹,在staticresources里面新建images文件夹将图片aaa.jpg存放到里面 

c.导入show.jsp

        将show.jsp文件通过xftp复制粘贴到/usr/local/tomcat1/webapps/ROOT/文件目录下,然后保存。

        然后再把show.jsp通过xftp粘贴到/usr/local/tomcat2/webapps/ROOT/文件目录下,然后进行修改(只修改<h1>标签的内容),保存,如图所示:

d.修改配置 

        找到/usr/local/nginx/nginx.conf在以下位置插入修改代码,保存:

#将下面代码插入nginx.conf的servse{}里面
location ~\.(jsp|do|action)$ {
        proxy_pass  http://tomcat;
     }
        
location ~\.(html|css|js|gif|jpg|png|bmp|swf)$ {
         root  /usr/local/staticresources;
     }

e.测试

​cd /usr/local/nginx/sbin
#启动nginx命令:
    ./nginx
#关闭nginx命令:
    ./nginx -s stop
#重启nginx命令:
    ./nginx -s reload

cd /usr/local

tomcat1/bin/startup.sh
tomcat2/bin/startup.sh

在浏览器访问 

#此处为自己虚拟机的ip
http://192.168.187.128/show.jsp

然后点击刷新,就能看到效果(此处我添加了两个不同的图片在里面,能更好地看到效果)

 f.关闭

cd /usr/local

tomcat1/bin/shutdown.sh
tomcat2/bin/shutdown.sh

 九、Lua

1、概念

        Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从 而为应用程序提供灵活的扩展和定制功能。

2、安装Lua

a.添加安装包到/usr/local目录里面

        安装包链接:https://pan.quark.cn/s/eb6c1df1f1b0

b.解压安装包

然后在此目录下解压

tar zxf lua-5.3.5.tar.gz

c.安装 

#进入lua文件夹
cd lua-5.3.5

#安装lua相关依赖库的支持
yum install gcc libtermcap-devel ncurses-devel libevent-devel readline-devel -y

#编译lua
make linux test

#安装lua
make install

3、注释

在Lua中,有两种方式可以进行注释:单行注释和多行注释。
单行注释

-- 这是一个单行注释
print("Hello, world!")  -- 这里也可以加注释

多行注释

--[[
这是一个
多行注释的示例。
可以在这里写多行注释的内容。
--]]
print("Hello, Lua!")

4、Lua的数据类型

nil:表示一个无效值
boolean:true和false
number:用于表示数值
string:表示字符串。
table:Lua中的主要数据结构。
function:用于表示函数。
userdata:表示由应用程序或C/C++库创建的新类型。
thread:表示独立的执行线程。

示例:

vi type.lua

#写入以下内容
print("hello");
print(type("hello"));
print(type(1));
print(type(print));
print(type(type));
print(type(true));
print(type(nill));

#保存退出
:wq

#运行
lua type.lua

 

5、if else语句 

if语句:

if condition then
    -- 当条件为真时执行的代码块
else
    -- 当条件为假时执行的代码块
end


#condition 是一个表达式,可以是任何能够返回布尔值的表达式(如比较、逻辑运算等)。
#如果 condition 的结果为真(即非nil和false),则执行 if 后面的代码块;否则执行 else 后面的代码块(如果有的话)。

if-elseif-else 语句:

if condition1 then
    -- 当条件1为真时执行的代码块
elseif condition2 then
    -- 当条件2为真时执行的代码块
else
    -- 当所有条件都不满足时执行的代码块
end

6、while循环

while condition do
    -- 循环体代码块
end


#condition 是一个表达式,可以是任何能够返回布尔值的表达式(如比较、逻辑运算等)。
#只要 condition 的结果为真(非nil和false),就会重复执行 while 循环中的代码块。

7、for循环

#基本语法
for variable = start_value, end_value, step_value do
    -- 循环体代码块
end


#variable 是循环变量,它在每次循环迭代时会被赋予一个新的值。
#start_value 是循环变量的起始值。
#end_value 是循环变量的结束值。
#step_value 是可选的步长,默认为 1,控制每次循环迭代时 variable 的增加或减少量。

#示例
for i = 1, 5 do
    print("Iteration:", i)
end


#for i = 1, 5 do 表示从 1 开始到 5 结束,步长默认为 1。
#在每次循环迭代时,会执行循环体内的代码块,打印当前迭代的 i 的值。

8、函数

在 Lua 中定义函数使用关键字 function,后跟函数名和参数列表,然后是函数体。

#基本语法
function functionName(parameter1, parameter2, ...)
    -- 函数体
end


#functionName 是函数的名称。
#parameter1, parameter2, ... 是函数的参数列表,可以为空。
#函数体内可以包含一系列的语句,用于执行特定的任务。

#示例
function greet(name)
    print("Hello, " .. name .. "!")
end

greet("Alice")   -- 调用函数,输出:Hello, Alice!
greet("Bob")     -- 调用函数,输出:Hello, Bob!

函数调用

调用函数使用函数名,并且传递适当的参数。
functionName(argument1, argument2, ...)

返回值

Lua 中的函数可以返回一个或多个值。
返回单个值的示例
function add(a, b)
    return a + b
end

local result = add(10, 20)
print("Result:", result)   -- 输出:Result: 30

返回多个值的示例
function multipleReturns(a, b)
    return a + b, a - b, a * b
end

local sum, difference, product = multipleReturns(10, 5)
print("Sum:", sum)           -- 输出:Sum: 15
print("Difference:", difference) -- 输出:Difference: 5
print("Product:", product)   -- 输出:Product: 50

匿名函数

Lua 也支持匿名函数,即没有名字的函数,可以直接赋值给变量或传递给其他函数。
local square = function(x)
    return x * x
end

print(square(5))   -- 输出:25

变长参数

Lua 函数可以使用 ... 语法来接收变长参数。
function printArgs(...)
    for i, v in ipairs({...}) do
        print("Argument", i, ":", v)
    end
end

printArgs("apple", "banana", "cherry")

递归函数

Lua 支持递归函数,即函数可以调用自身。
function factorial(n)
    if n &lt;= 1 then
        return 1
    else
        return n * factorial(n - 1)
    end
end

print(factorial(5))   -- 输出:120

十、OpenResty

1、概念

        OpenResty是一个基于Nginx的可扩展的Web平台,它集成了大量的Nginx模块和第三方模块,并且整合了Lua脚本引擎。这使得开发者可以通过编写Lua脚本来扩展和定制Nginx的功能,适用于构建高性能的Web应用、API服务、反向代理等多种网络应用场景。

2、安装OpenResty

2.1 添加仓库执行命令

yum install yum-utils

yum-con g-manager --add-repo https://openresty.org/package/centos/openresty.repo

2.2 执行安装

yum install openresty -y

2.3 安装成功后默认目录

/usr/local/openresty/nginx 

2.4修改/usr/local/openresty/nginx/conf/nginx.conf

将配置文件使用的根设置为root,目的就是将来要使用lua脚本的 时候 ,直接可以加载在root下的lua脚本。 修改代码如下:

cd /usr/local/openresty/nginx/conf
vi nginx.conf

 修改位置如下图所示

2.5启动openresty

cd /usr/local/openresty/nginx/sbin 
./nginx

2.6停止openresty

 ./nginx -s stop

2.7重启openresty

 ./nginx -s reload

2.8 测试访问

然后访问测试Nginx 访问地址: http://192.168.174.130/ 

十一、广告缓存的载入与读取

在此之前,先启动docker,redis

systemctl start docker
docker start redis

1、新建文件夹

mkdir connect_lua

2、创建两个lua文件

注意:要修改两个文件的IP地址

创建update_content.lua

cd connect_lua

#创建update_content.lua
vi update_content.lua

#输入以下内容
-- 响应类型
ngx.header.content_type="application/json;charset=utf8"
-- json转换模块
local cjson = require("cjson")
-- mysql连接模块
local mysql = require("resty.mysql")
-- 获取所有请求参数
local uri_args = ngx.req.get_uri_args()
-- 获取请求参数中的id
local categoryid = uri_args["id"]

-- 创建数据库对象
local db = mysql:new()
-- 超时时间 1000毫秒
db:set_timeout(1000)
-- 连接数据库属性
local props = {
    host = "192.168.187.128",
    port = 3306,
    database = "dn",
    user = "root",
    password = "123456"
}
-- 连接数据库
local res = db:connect(props)
-- 定义查询语句
local select_sql = "select url,pic from tb_content where status ='1' and category_id='"..categoryid.."'"
res = db:query(select_sql)
db:close()

ngx.say("{\"res\":cjson.encode(res)}")

local redis = require("resty.redis")
local red = redis:new()
red:set_timeout(2000)

local ip = "192.168.187.128"
local port = 6379
red:connect(ip,port)
red:set("content_"..categoryid,cjson.encode(res))
red:close()
ngx.say("{\"flag\":true}")	


#保存退出
:wq

 创建read_content.lua

​
cd connect_lua

#创建read_content.lua
vi read_content.lua

-- 设置响应头类型
ngx.header.content_type = "application/json; charset=utf-8"

-- 获取请求中的参数ID
local uri_args = ngx.req.get_uri_args()
local id = uri_args["id"]

-- 检查ID是否存在
if not id then
    ngx.status = ngx.HTTP_BAD_REQUEST  -- 设置HTTP状态码为400
    ngx.say("Missing parameter: id")
    return
end

-- 引入redis库
local redis = require("resty.redis")

-- 创建redis对象
local red = redis:new()
red:set_timeout(2000)  -- 设置超时时间为2秒

-- 连接Redis
local ok, err = red:connect("192.168.187.128", 6379)
if not ok then
    ngx.status = ngx.HTTP_INTERNAL_SERVER_ERROR  -- 设置HTTP状态码为500
    ngx.say("Failed to connect to Redis: ", err)
    return
end

-- 获取key的值
local rescontent = red:get("content_" .. id)

-- 检查结果是否为nil
if rescontent == ngx.null then
    ngx.status = ngx.HTTP_NOT_FOUND  -- 设置HTTP状态码为404
    ngx.say("Content not found")
else
    ngx.say(rescontent)
end

-- 关闭连接
red:close()




#保存退出
:wq

​

 3、配置nginx.conf文件

在/usr/local/openresty/nginx/conf/nginx.conf添加信息

location /update_content{
			content_by_lua_file /root/content_lua/update_content.lua;
		}

location /read_content{
			content_by_lua_file /root/content_lua/read_content.lua;
		}

4、重启nginx

cd /usr/local/openresty/nginx/sbin
./nginx -s stop
./nginx

5、测试 

分别在浏览器输入:

http://192.168.187.128/read_content?id=1
http://192.168.187.128/update_content?id=1

 

十二、网站首页前台工程广告轮播图展示 

1、NaviCat导入数据,修改

#新建一个容器,放入“dn”数据库
docker run -d --name=c_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=dn  mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

NaviCat连接到虚拟机,然后打开数据库dn,在表中插入数据,修改表中的IP,如图:

2、部署页面 

        找到目录:/usr/local/openresty/nginx把原来的html删了,然后通过xftp把新的html放入到目录里面。

3、测试

cd /usr/local/openresty/nginx/sbin
./nginx -s stop
./nginx

#浏览器直接访问IP
192.168.187.128

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值