首页高并发案例遇到的问题以及解决办法

要通过openresty,ngin,MySQL和redis来部署一个项目

首先需要安装以上工具

安装openresty

yum intsall yum-utils

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

首先执行这两行代码

然后就可以执行安装命令

yum install openresty -y

在安装完成后会默认存储在/usr/local/oprenresty目录中

安装nginx

下载nginx可以通过nginx的官网进行下载

官网地址:http://nginx.org/en/download.html

通过xftp等软件将nginx上传到linux操作系统中

对nginx进行解压缩

tar zxf nginx-1.8.0.tar.gz

安装nginx需要先将官网下载的源码进行编译,需要安装gcc

yum install gcc-c++

在linux上安装zlib库

yum install -y zlib zlib-devel

在linux上安装openssl库

yum install -y openssl openssl-devel

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

./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

做一个访问测试

在浏览器输入ip

如果不能访问就需要配关闭防火墙

安装mysql

从docker中拉取mysql的镜像,然后创建一个容器即可,端口号要一致,默认为3306

安装redis

先要确认redis的编译环境的命令

yum install gcc-c++

安装时有输入提示,按y即可

安装redis

先将redis存储到/usr/local目录下

解压redis包

tar -zxvf redis-5.0.5.tar.gz

编译redis

进入解压包执行make命令

cd redis-5.0.5

make

安装

make PREFIX=/usr/local/redis install

copy文件,可以通过redis.conf文件修改端口号

cp redis.conf /usr/local/redis

后端启动

设置daemonize yes,然后可以用后端模式启动

vim redis.conf

daemonize yes

启动时,指定配置文件(这里所在的文件夹时redis)

./bin/redis-server ./redis.conf

redis默认的端口号时6379,可以通过当前服务进行查看

高并发案例准备工作

先启动openresty,测试访问,输入ip/,如果显示一下如下界面则表示成功

需求分析

需要在页面上能够显示广告的信息

用lua+nginx配置

数据时事先准备在mysql数据库中的,数据中的ip一定不能出错

思路:

定义请求:用查询数据库中的数据更新到redis中

a.连接mysql,按照广告分类id读取广告,转换为json字符串

b.连接redis,将广告表json存入redis

定义请求:

请求地址是id/update_content?id=1

创建/root/lua目录,在该目录下创建update_content.lua,目的就是连接mysql中的数据并存储到redis中,如下:ip一定要是自己的ip,以及数据库的库名,账户和密码一定要是自己的

并在/usr/local/openresty/nginx/conf/nginx.conf中存入以下代码:

重启nginx,进行测试是否成功

测试地址:ip/update_content?id=1

在这个时候分类id=1的广告就会被查询出来存到redis中

出现如图页面就表示测试成功

从redis中获取数据

请求如下

在/root/local目录下创建一个read_content.lua文件

在文件中写入一下代码:

ip一定要是自己的ip

在/usr/local/openresty/nginx/conf/nginx.conf文件中存入以下代码:

重启nginx,进行测试

输入ip/read_content?id=1

此时会将分类id=1的所有广告查询出来,如图:

此图中就是我在mysql中事先存入的数据

由此可见mysql中的数据已经存进了redis中

将事先准备好的html文件上窜到nginx中,地址是/usr/local/openresty/nginx/html

测试一下是否可以接通,可以通过ip直接访问

因为每个项目都是不一样的,所以只要见到的项目没有问题就表示已经部署成功了

遇到的一些问题

在update_content.lua和read_content.lua中一定要将自己的ip改为自己的ip,同时也要将相关部分修改成自己的,比如端口号,数据库的账号密码以及库名

如果无法访问update的测试页面

可能是因为自己的ip或者数据库的相关部分和自己虚拟机上的部分不一致,或者和主机上的数据库不一致,又或者没有镜像,没有连接数据库等都可能造成无法访问update页面的问题

如果无法访问read的测试页面

如果能够访问update却无法访问read,则很有可能是因为read中的ip部署有误,又或者是nginx.conf中输入的内容有误,如图:

location是和location在一起的,不能分开,路径也不能有误,如果有一个出现错误read都无法运行

还有就是可能在update_content和read_content这两行location中有可能会有一些特殊符号,在部署项目的时候一定要注意

如果两个文件都没有问题但是最终的项目部署发现有问题,那应该就是html文件的问题了,可以先检查HTML中是否存在错误

  • 18
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值