系统(爱旅行)部署架构 安装jdk、nginx、mysql、redis、Tengine+Lua+GM安装

tech2023-01-07  115

标题

架构分析准备工作配置多个5个tomcat 修改其中4个配置文件jdk这一块用的Xshell 不建议 准备好几个服务器(开启两个虚拟机)前端服务器 这块安装nginx总代码如下后端服务器 卸载并安装jdk 安装mysqlmysql对应设置 redis安装实操 安装nginx改后端nginx端口并开放端口 安装Tengine+Lua+GM这块配置文件都放这里吧安装-configure.txtImageResizer.luanginx.conf

架构分析

准备工作

配置多个5个tomcat 修改其中4个配置文件

先在windows下复制五个tomcat 重命名好 到时候直接上传到虚拟机 省的在虚拟机不好 改

第22行处 改关闭Tomcat端口号 (默认8005 ) 8006 8007 8008 8009第69行处 改启动Tomcat端口号 (默认8080 ) 8082 8083 8004 8005第91行处 改连接Jboss等的端口号 (默认8009) 8010 8011 8012 8013

jdk
这一块用的Xshell 不建议
rpm -qa | grep jdk rpm -e --nodeps $(rpm -qa | grep jdk) rpm -qa | grep jdk 在root用户 家目录下创建(cd ~) mkdir software cd software/ rz #(这个可调用文件上传文件啥的,传一次rz一次,这个工具用起来就有点不爽了 还是用mobaXterm吧) #把jdk1.8的tar.ge 包上传 还有那个mysql套餐包 还有上面的5个tomcat #我们上面的tomcat是文件夹形式的它传不上去 压缩成zip包 上传 在解压(unzip a.zip :解压zip(到当前目录)) 实在不行用虚拟机共享文件夹也是很香的(cd /mnt/hgfs/你共享时起得名 ll cp -r apache-tomcat-1 /root/software 依次类推) hostnamectl set-hostname backend hostname # 还需要传redis-6.0.6.tar.gz(版本自己看着办)

上面操作目前效果如下

准备好几个服务器(开启两个虚拟机)

前端服务器

点击这里查看linux下安装Nginx 去nginx官网

点这个可以得到下载地址 复制下来 下面wget虚拟机下载 本机下载上传也可以 地址 下面分开执行好点 配置环境变量

测试

那怎么开启一个端口呢 添加 firewall-cmd --zone=public --add-port=80/tcp --permanent (–permanent永久生效,没有此参数重启后失效) 重新载入 firewall-cmd --reload

数组机访问

这块安装nginx总代码如下

后端服务器

最上面做过了 后来由于后面出现了问题 后端这块重来 把需要的都上传上来 目录如下 我这些包都有现成下载好的

卸载并安装jdk

这块总命令为:

安装mysql

mysql对应设置

最大连接数 max_connections=600

远程访问权限 把上面root 本地的改掉 远程访问 所以需要授权

#这条语句适用于MySQL8.0之前的 #(mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;) grant all privileges on *.* to root@'%' identified by '123'; flush privileges; #而MySQL8.0及之后的,设置远程连接权限要用下面的语句才可以 create user root@'%' identified by '123456'; grant all privileges on *.* to root@'%' with grant option;

Navicat远程连接测试 开放3306端口

redis安装

实操

或者 sudo make install 添加端口6379 是否成功测试 再开个会话

安装nginx

这次不用仿照上面这个下载了 墨迹 用下载好的上传上来 ./configure 外部访问开放80端口

下面这块也不用注释不冲突 去把 nginx下的配置文件的端口 80 改成81 在开放81端口 杀死nginx 重启应该可以了吧

改后端nginx端口并开放端口

检测配置文件语法是否正确 两种方式

安装Tengine+Lua+GM

详细网址 依赖包和类库

# 使用阿里下载源 这个下载就很快 [root@desktop-dm818pf ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo [root@desktop-dm818pf ~]# yum makecache (可能需要执行两次 如果有进程) (rm -rf /var/run/yum.pid) # 安装依赖包和类库(这个是支持各种图片的类库的依赖) [root@desktop-dm818pf ~]# yum install -y libjpeg libjpeg-devel libpng libpng-devel giflib giflib-devel freetype freetype-devel

安装Lua

# 安装依赖 [root@desktop-dm818pf ~]# yum install -y readline readline-devel gcc gcc-c++ pcre-devel openssl-devel zlib-devel

这里跟教程不一样的就是 我们有计划的解压到我们想要解压到的地方

[root@desktop-dm818pf ~]# cd ~/app/lua-5.3.1 [root@desktop-dm818pf lua-5.3.1]# make linux [root@desktop-dm818pf lua-5.3.1]# make install #查看Lua版本

安装LuaJIT(源码编译安装)

[root@desktop-dm818pf ~]# cd ~/app/LuaJIT-2.0.4/ [root@desktop-dm818pf LuaJIT-2.0.4]# make [root@desktop-dm818pf LuaJIT-2.0.4]# make install

安装Tengine 下面注意zip的 不能到指定目录 直接解压到当前目录下即可 不要-C及其后面命令

# 在这个目录下执行 [root@desktop-dm818pf tengine-master]# ./configure --prefix=/usr/local/Tengine --dso-path=/usr/local/Tengine/modules --with-ipv6 --with-http_realip_module --with-http_gzip_static_module --with-http_stub_status_module --with-http_concat_module --with-http_lua_module --http-proxy-temp-path=/var/tmp/Tengine/proxy_temp --http-fastcgi-temp-path=/var/tmp/Tengine/fastcgi_temp --http-uwsgi-temp-path=/var/tmp/Tengine/uwsgi_temp --http-scgi-temp-path=/var/tmp/Tengine/cgi_temp --http-client-body-temp-path=/var/tmp/Tengine/client_body_temp --http-log-path=/var/log/Tengine/access.log --error-log-path=/var/log/Tengine/error.log

安装GraphicsMagick图片裁剪

下面这步前面安装过了 这里不再执行下面内容 [root@desktop-dm818pf ~]# yum install -y libjpeg libjpeg-devel libpng libpng-devel giflib giflib-devel freetype freetype-devel [root@desktop-dm818pf ~]# cd /software/ [root@desktop-dm818pf software]# tar zxvf GraphicsMagick-1.3.18.tar.gz -C ~/app/ [root@desktop-dm818pf ~]# cd ~/app/GraphicsMagick-1.3.18/ [root@desktop-dm818pf GraphicsMagick-1.3.18]# ./configure --prefix=/usr/local/GraphicsMagick --enable-shared [root@desktop-dm818pf GraphicsMagick-1.3.18]# make && make install #下面能出现版本信息成功 [root@desktop-dm818pf GraphicsMagick-1.3.18]# /usr/local/GraphicsMagick/bin/gm version

配置Lua脚本文件 (/usr/local/Tengine/lua/ImageResizer.lua)

local command = "/usr/local/GraphicsMagick/bin/gm convert " .. ngx.var.request_filepath .. " -resize " .. ngx.var.width .. "x" .. ngx.var.height .. " +profile \"*\" " .. ngx.var.request_filepath .. "_" .. ngx.var.width .. "x" .. ngx.var.height .. "." .. ngx.var.ext; os.execute(command); ngx.exec(ngx.var.request_uri); # 列举查看是没有执行权限的 设置执行权限 ll /usr/local/Tengine/lua/ImageResizer.lua chmod 777 /usr/local/Tengine/lua/ImageResizer.lua

Tengine配置 先做个备份 删掉 在新建个直接copy下面内容

user root; # 全复制 或者 新增一个server块user改root server { listen 80; server_name img.itrip.project.bdqn.cn; root /data/itrip/uploadimg; location / { root /data/itrip/uploadimg; # 站点根目录 expires 1h; # 缓存时间 add_header Cache-Control max-age=3600; # 缓存时间 access_log /var/log/Tengine/host_access.log; } #如果 url 格式如:xxxx.gif_数字x数字.gif location ~* ^(.+\.(jpg|jpeg|gif|png))_(\d+)x(\d+)\.(jpg|jpeg|gif|png)$ { # 这里必须设置,否则根目录, # 即 $document_root 会是 Nginx 默认的 Nginx Root/html,在 Lua 中会得不到期望的值 root /data/itrip/uploadimg; # 如果文件不存在时才需要裁剪 if (!-f $request_filename) { # 此HTTP Header无实际意义,用于测试 add_header X-Powered-By 'Lua GraphicsMagick'; # 此 HTTP Header无实际意义,用于测试 add_header file-path $request_filename; # 在编写外部 Lua脚本时,设置为off Nginx不会缓存 Lua,方便调试 lua_code_cache on; # 设置原始图片路径,如:/document_root/1.gif set $request_filepath /data/itrip/uploadimg$1; set $width $3; # 设置裁剪/缩放的宽度 set $height $4; # 设置裁剪/缩放的高度 set $ext $5; # 图片文件格式后缀 # 加载外部 Lua 文件 content_by_lua_file /usr/local/Tengine/lua/ImageResizer.lua; } } }

创建站点目录:配置文件自己写的路径 也是测试图片的上传位置 mkdir -p /data/itrip/uploadimg 重启nginx: 此时访问403 必须上传图片才能对 nginx -s reload

上传图片到站点目录/data/itrip/uploadimg

[root@desktop-dm818pf ~]# yum install tree [root@desktop-dm818pf ~]# tree /data/itrip/uploadimg /data/itrip/uploadimg ├── 111.jpg

下面好像对这里好像影响不大 只要你不用那个域名访问的话

停止 启动 nginx

这块配置文件都放这里吧

安装-configure.txt

./configure --prefix=/usr/local/Tengine --dso-path=/usr/local/Tengine/modules --with-http_realip_module --with-http_gzip_static_module --with-http_stub_status_module --with-http_concat_module --with-http_lua_module --http-proxy-temp-path=/var/tmp/Tengine/proxy_temp --http-fastcgi-temp-path=/var/tmp/Tengine/fastcgi_temp --http-uwsgi-temp-path=/var/tmp/Tengine/uwsgi_temp --http-scgi-temp-path=/var/tmp/Tengine/cgi_temp --http-client-body-temp-path=/var/tmp/Tengine/client_body_temp --http-log-path=/var/log/Tengine/access.log --error-log-path=/var/log/Tengine/error.log ./configure --prefix=/usr/local/GraphicsMagick --enable-shared

ImageResizer.lua

local command = "/usr/local/GraphicsMagick/bin/gm convert " .. ngx.var.request_filepath .. " -resize " .. ngx.var.width .. "x" .. ngx.var.height .. " +profile \"*\" " .. ngx.var.request_filepath .. "_" .. ngx.var.width .. "x" .. ngx.var.height .. "." .. ngx.var.ext; os.execute(command); ngx.exec(ngx.var.request_uri);

nginx.conf

#user nobody; user root; # 裁剪图片需要root权限 worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } # load modules compiled as Dynamic Shared Object (DSO) # #dso { # load ngx_http_fastcgi_module.so; # load ngx_http_rewrite_module.so; #} http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name img.itrip.project.bdqn.cn; root /data/itrip/uploadimg; location / { root /data/itrip/uploadimg; # 站点根目录 expires 1h; # 缓存时间 add_header Cache-Control max-age=3600; # 缓存时间 access_log /var/log/Tengine/host_access.log; } #如果 url 格式如:xxxx.gif_数字x数字.gif location ~* ^(.+\.(jpg|jpeg|gif|png))_(\d+)x(\d+)\.(jpg|jpeg|gif|png)$ { root /data/itrip/uploadimg; #这里必须设置,否则根目录,即 $document_root 会是 Nginx 默认的 Nginx Root/html,在 Lua 中会得不到期望的值 if (!-f $request_filename) { #如果文件不存在时才需要裁剪 add_header X-Powered-By 'Lua GraphicsMagick'; #此HTTP Header无实际意义,用于测试 add_header file-path $request_filename; #此 HTTP Header无实际意义,用于测试 lua_code_cache on; #在编写外部 Lua脚本时,设置为off Nginx不会缓存 Lua,方便调试 set $request_filepath /data/itrip/uploadimg$1; #设置原始图片路径,如:/document_root/1.gif set $width $3; # 设置裁剪/缩放的宽度 set $height $4; # 设置裁剪/缩放的高度 set $ext $5; # 图片文件格式后缀 content_by_lua_file /usr/local/Tengine/lua/ImageResizer.lua; #加载外部 Lua 文件 } } #charset koi8-r; #access_log logs/host.access.log main; #location / { # root html; # index index.html index.htm; #} #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; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} }

最新回复(0)