首页
关于
Search
1
给你10个市场数据调研报告的免费下载网站!以后竞品数据就从这里找!
182 阅读
2
php接口优化 使用curl_multi_init批量请求
144 阅读
3
《从菜鸟到大师之路 ElasticSearch 篇》
107 阅读
4
2024年备考系统架构设计师
104 阅读
5
PHP 文件I/O
92 阅读
php
thinkphp
laravel
工具
开源
mysql
数据结构
总结
思维逻辑
令人感动的创富故事
读书笔记
前端
vue
js
css
书籍
开源之旅
架构
消息队列
docker
教程
代码片段
redis
服务器
nginx
linux
科普
java
c
ElasticSearch
测试
php进阶
php基础
登录
Search
标签搜索
php函数
php语法
性能优化
安全
错误和异常处理
问题
vue
Composer
Session
缓存
框架
Swoole
api
并发
异步
正则表达式
php-fpm
mysql 索引
开发规范
协程
dafenqi
累计撰写
786
篇文章
累计收到
28
条评论
首页
栏目
php
thinkphp
laravel
工具
开源
mysql
数据结构
总结
思维逻辑
令人感动的创富故事
读书笔记
前端
vue
js
css
书籍
开源之旅
架构
消息队列
docker
教程
代码片段
副业
redis
服务器
nginx
linux
科普
java
c
ElasticSearch
测试
php进阶
php基础
页面
关于
搜索到
45
篇与
的结果
2023-09-18
Nginx几款负载均衡第三方插件的安装与使用
Nginx几款负载均衡第三方插件的安装与使用0x01:插件说明nginx_upstream_hash :url_hash是nginx的第三方模块,nginx本身不支持,需要第三方模块。nginx在做负载均衡的时, 把转发的URL以hash的形式保存。这样可以保证同一个URL始终分给同一个real server,来提高访问速度。 ** 官网:https://github.com/evanmiller/nginx_upstream_hashnginx-upstream-fair :upstream-fair是比内建的负载均衡更加智能的负载均衡模块, 它采用的不是内建负载均衡使用的轮换的均衡算法,而是可以根据页面大小、加载时间长短智能的进行负载均衡。 官网:https://github.com/gnosek/nginx-upstream-fairngx_http_consistent_hash : 通过一致性哈希算法来选择合适的后端节点 官网:https://github.com/replay/ngx_http_consistent_hashhttps://www.nginx.com/resources/wiki/modules/consistent_hash/0x02:安装说明先分别下载这三款插件wget https://github.com/gnosek/nginx-upstream-fair/archive/master.zip -O nginx-upstream-fair.zip wget https://github.com/evanmiller/nginx_upstream_hash/archive/master.zip -O nginx_upstream_hash.zip wget https://github.com/replay/ngx_http_consistent_hash/archive/master.zip -O ngx_http_consistent_hash.zip解压对应的压缩包unzip nginx-upstream-fair-master.zip unzip nginx_upstream_hash-master.zip unzip ngx_http_consistent_hash-master.zip 查看旧Nginx的安装配置参数 /usr/local/nginx/sbin/nginx -V重新编译添加负载均衡模块./configure --prefix=/usr/local/nginx \ --user=nginx --group=nginx \ --with-http_secure_link_module \ --with-http_stub_status_module \ --with-stream_ssl_preread_module \ --with-http_ssl_module --with-http_image_filter_module \ --add-module=/home/huangjinjin/桌面/fastfds/nginx_upstream_hash-master \ --add-module=/home/huangjinjin/桌面/fastfds/nginx-upstream-fair-master \ --add-module=/home/huangjinjin/桌面/fastfds/ngx_http_consistent_hash-master关键编译参数如--add-module=nginx_upstream_hash-master文件夹安装nginxmake(1) 对于nginx_upstream_hash会出现以下错误ngx_http_upstream_hash_module 的多重定义 说明Nginx内部包含了一个同名的模块。需要对nginx_upstream_hash进行一定的代码修改,ngx_http_upstream_hash_module定义到nginx_upstream_hash-master目录修改ngx_http_upstream_hash_modulengx_module_t ngx_http_upstream_hash_module = { NGX_MODULE_V1, &ngx_http_upstream_hash_module_ctx, /* module context */ ngx_http_upstream_hash_commands, /* module directives */ NGX_HTTP_MODULE, /* module type */ NULL, /* init master */ NULL, /* init module */ NULL, /* init process */ NULL, /* init thread */ NULL, /* exit thread */ NULL, /* exit process */ NULL, /* exit master */ NGX_MODULE_V1_PADDING };修改成ngx_module_t ngx_http_upstream_hash_module_ext = { NGX_MODULE_V1, &ngx_http_upstream_hash_module_ctx, /* module context */ ngx_http_upstream_hash_commands, /* module directives */ NGX_HTTP_MODULE, /* module type */ NULL, /* init master */ NULL, /* init module */ NULL, /* init process */ NULL, /* init thread */ NULL, /* exit thread */ NULL, /* exit process */ NULL, /* exit master */ NGX_MODULE_V1_PADDING };应用这个结构体的代码一并修改。搜索ngx_http_upstream_hash_module改成ngx_http_upstream_hash_module_ext修改config配置文件ngx_addon_name=ngx_http_upstream_hash_module_ext HTTP_MODULES="$HTTP_MODULES ngx_http_upstream_hash_module_ext" NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_upstream_hash_module_ext.c" have=NGX_HTTP_UPSTREAM_HASH . auto/have ~ c文件名字也改下ngx_http_upstream_hash_module.c 改成 ngx_http_upstream_hash_module_ext.c 这样 重新configure和make 才能成功(2)对于nginx-upstream-fair会出现以下错误nginx-upstream-fair/ngx_http_upstream_fair_module.c:543:28: error: ‘ngx_http_upstream_srv_conf_t’ has no member named ‘default_port’到nginx源码目录找到src/http/ngx_http_upstream.h文件 ngx_http_upstream_srv_conf_s结构添加in_port_t default_port;经过错误修复,编译成功后,把objs目录下的nginx文件拷贝到/usr/local/nginx目录即可:cp ./objs/nginx /usr/local/nginx0x03: 基本语法nginx_upstream_hashupstream backend_server { server 127.0.0.1:5000; server 127.0.0.1:5001; server 127.0.0.1:5002; hash $request_uri; hash_again 10; # default 0 }nginx-upstream-fairupstream mongrel { fair; server 127.0.0.1:5000; server 127.0.0.1:5001; server 127.0.0.1:5002; }ngx_http_consistent_hashupstream somestream { consistent_hash $request_uri; server 127.0.0.1:5000; server 127.0.0.1:5001; server 127.0.0.1:5002; }以下三种任君选择,不过nginx_upstream_hash与nginx-upstream-fair已经很久没更新了。
2023年09月18日
61 阅读
0 评论
0 点赞
2023-09-18
yum安装nginx没有某一模块,该如何添加第三方模块?
yum安装nginx没有某一模块,该如何添加第三方模块?本文将以添加--with-stream模块为例,演示如何去添加新的模块进去。需求:生产有个接口是通过socket通信。nginx1.9开始支持tcp层的转发,通过stream实现的,而socket也是基于tcp通信。实现方法:Centos7.5下yum直接安装的nginx,添加新模块支持tcp转发; 重新编译Nginx并添加--with-stream参数。 实现过程:1.查看nginx版本模块nginx -Vnginx version: nginx/1.20.1 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) built with OpenSSL 1.1.1g FIPS 21 Apr 2020 TLS SNI support enabled configure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-compat --with-debug --with-file-aio --with-google_perftools_module --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_degradation_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_mp4_module --with-http_perl_module=dynamic --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-http_xslt_module=dynamic --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-stream_ssl_preread_module --with-threads --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic' --with-ld-opt='-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-E'2.下载一个同版本可编译的nginxcd /opt wget http://nginx.org/download/nginx-1.20.1.tar.gz tar xf nginx-1.20.1.tar.gz && cd nginx-1.20.13.备份原nginx文件mv /usr/sbin/nginx /usr/sbin/nginx.bak cp -r /etc/nginx{,.bak}4.重新编译nginx检查模块是否支持,比如这次添加 limit 限流模块 和 stream 模块:./configure --help | grep limit --without-http_limit_conn_module disable ngx_http_limit_conn_module --without-http_limit_req_module disable ngx_http_limit_req_module --without-stream_limit_conn_module disable ngx_stream_limit_conn_moduleps:-without-http_limit_conn_module disable 表示已有该模块 ,编译时,不需要添加./configure –help | grep stream --without-http_upstream_hash_module disable ngx_http_upstream_hash_module --without-http_upstream_ip_hash_module disable ngx_http_upstream_ip_hash_module --without-http_upstream_least_conn_module disable ngx_http_upstream_least_conn_module --without-http_upstream_random_module disable ngx_http_upstream_random_module --without-http_upstream_keepalive_module disable ngx_http_upstream_keepalive_module --without-http_upstream_zone_module disable ngx_http_upstream_zone_module --with-stream enable TCP/UDP proxy module --with-stream=dynamic enable dynamic TCP/UDP proxy module --with-stream_ssl_module enable ngx_stream_ssl_module --with-stream_realip_module enable ngx_stream_realip_module --with-stream_geoip_module enable ngx_stream_geoip_module --with-stream_geoip_module=dynamic enable dynamic ngx_stream_geoip_module --with-stream_ssl_preread_module enable ngx_stream_ssl_preread_module --without-stream_limit_conn_module disable ngx_stream_limit_conn_module --without-stream_access_module disable ngx_stream_access_module --without-stream_geo_module disable ngx_stream_geo_module --without-stream_map_module disable ngx_stream_map_module --without-stream_split_clients_module disable ngx_stream_split_clients_module --without-stream_return_module disable ngx_stream_return_module --without-stream_set_module disable ngx_stream_set_module --without-stream_upstream_hash_module disable ngx_stream_upstream_hash_module --without-stream_upstream_least_conn_module disable ngx_stream_upstream_least_conn_module --without-stream_upstream_random_module disable ngx_stream_upstream_random_module --without-stream_upstream_zone_module disable ngx_stream_upstream_zone_moduleps:–with-stream enable 表示不支持 ,编译时要自己添加该模块根据第1步查到已有的模块,加上本次需新增的模块:--with-streamcd /opt/nginx-1.20.1 ./configure --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-file-aio --with-ipv6 --with-http_auth_request_module --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-http_perl_module=dynamic --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-debug --with-stream以上编译时,如出现缺少依赖,一般需要安装以下模块,安装完再次编译:yum -y install libxml2 libxml2-dev libxslt-devel yum -y install gd-devel yum -y install perl-devel perl-ExtUtils-Embed yum -y install GeoIP GeoIP-devel GeoIP-data yum -y install pcre-devel yum -y install openssl openssl-devel yum -y install gcc 5.编译通过,继续验证继续输入:makemake完成后不要继续输入make install,以免现在的nginx出现问题。以上完成后,会在objs目录下生成一个nginx文件,先验证:/opt/nginx-1.12.2/objs/nginx -t /opt/nginx-1.12.2/objs/nginx -V6.替换Nginx文件并重启cp /opt/nginx-1.12.2/objs/nginx /usr/sbin/ nginx -s reload7.检查nginx -Vnginx version: nginx/1.20.1 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) built with OpenSSL 1.0.2k-fips 26 Jan 2017 TLS SNI support enabled configure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-file-aio --with-ipv6 --with-http_auth_request_module --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-http_perl_module=dynamic --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-debug --with-stream新添加的模块在最后,添加模块成功。
2023年09月18日
44 阅读
0 评论
0 点赞
2023-08-30
Linux命令之grep
Linux命令之grep命令简介文本查找或搜索工具 。用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则grep会从标准输入设备读取数据。同样可以配合正则表达式来搜索文本,并将匹配的行打印输出,也可用于过滤与搜索特定字符串,使用十分灵活常用参数-a #不要忽略二进制数据-A #除了显示符合范本样式的那一行之外,并显示该行之后的内容-b #在显示符合范本样式的那一行之外,并显示该行之前的内容-B #除了显示符合样式的那一行之外,并显示该行之前的内容-c #计算符合范本样式的列数-C #除了显示符合范本样式的那一列之外,并显示该列之前后的内容-d #当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作-e #指定字符串作为查找文件内容的范本样式-E #将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式-f #指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式-F #将范本样式视为固定字符串的列表-G #将范本样式视为普通的表示法来使用-h #在显示符合范本样式的那一列之前,不标示该列所属的文件名称-H #在显示符合范本样式的那一列之前,标示该列的文件名称-i #忽略字符大小写的差别-l #列出文件内容符合指定的范本样式的文件名称-L #列出文件内容不符合指定的范本样式的文件名称-n #在显示符合范本样式的那一列之前,标示出该列的编号-q #不显示任何信息-R/-r #此参数的效果和指定“-d recurse”参数相同-s #不显示错误信息-v #反转查找-V #显示版本信息 -w #只显示全字符合的列-x #只显示全列符合的列-y #此参数效果跟“-i”相同-o #只输出文件中匹配到的部分正则表达式^ #匹配以XX开头的行$ #匹配以XX结尾的行常用实例1、在多个文件中查找:grep "file" file_1 file_2 file_32、输出除之外的所有行 -v 选项:grep -v "file" file_name3、标记匹配颜色 --color=auto 选项:grep "file" file_name --color=auto4、使用正则表达式 -E 选项:grep -E "[1-9]+" egrep "[1-9]+"5、只输出文件中匹配到的部分 -o 选项:echo this is a test line. | grep -o -E "[a-z]+." line. echo this is a test line. | egrep -o "[a-z]+." line.6、统计文件或者文本中包含匹配字符串的行数-c 选项:grep -c "text" file_name 27、输出包含匹配字符串的行数 -n 选项:grep "text" -n file_name 或 cat file_name | grep "text" -n8、多个文件grep "text" -n file_1 file_29、搜索多个文件并查找匹配文本在哪些文件中:grep -l "text" file1 file2 file3...10、grep递归搜索文件在多级目录中对文本进行递归搜索:grep "text" . -r -n11、忽略匹配样式中的字符大小写:echo "hello world" | grep -i "HELLO" hello12、选项 -e 指定多个匹配样式:echo this is a text line | grep -e "is" -e "line" -o is line13、也可以使用 -f 选项来匹配多个样式,在样式文件中逐行写出需要匹配的字符。cat patfile aaa bbb echo aaa bbb ccc ddd eee | grep -f patfile -o14、在grep搜索结果中包括或者排除指定文件:只在目录中所有的.php和.html文件中递归搜索字符"main()"grep "main()" . -r --include *.{php,html}15、在搜索结果中排除所有README文件grep "main()" . -r --exclude "README"16、在搜索结果中排除filelist文件列表里的文件grep "main()" . -r --exclude-from filelist实例grep "San" testfile #过滤有San的行 grep '^J' testfile #显示以J开头的行 grep '70$' testfile #显示以70结尾的行 grep -v "834" testfile #显示所有不包括834的行 grep ':12/' testfile #显示:12/的行 grep ':498-' testfile #显示:498-的行 grep '[A-Z][a-z]{4}:[[:space:]][A-Z]' testfile #显示这样的行,一个大写字母+四个小写字母+空格+一个大写字母 grep '[a-z]{1,}[[:space:]][Kk]' testfile #显示包括K k的行 grep -n '[0-9]{6,}$' testfile #显示6位数字的行,并打印行号 grep -i "lincoln" testfile #显示有lincoln的行,不区分大小写
2023年08月30日
17 阅读
0 评论
0 点赞
2023-08-30
Linux 命令之systemd
Linux 命令之systemdsystemd介绍systemd是目前Linux系统上主要的系统守护进程管理工具,由于init一方面对于进程的管理是串行化的,容易出现阻塞情况,另一方面init也仅仅是执行启动脚本,并不能对服务本身进行更多的管理。所以从CentOS 7开始也由systemd取代了init作为默认的系统进程管理工具。systemd所管理的所有系统资源都称作Unit,通过systemd命令集可以方便的对这些Unit进行管理。比如systemctl、hostnamectl、timedatectl、localctl等命令,这些命令虽然改写了init时代用户的命令使用习惯(不再使用chkconfig、service等命令),但确实也提供了很大的便捷性。systemd特点1.最新系统都采用systemd管理(RedHat7,CentOS7,Ubuntu15...)2.CentOS7 支持开机并行启动服务,显著提高开机启动效率3.CentOS7关机只关闭正在运行的服务,而CentOS6,全部都关闭一次。4.CentOS7服务的启动与停止不再使用脚本进行管理,也就是/etc/init.d下不在有脚本。5.CentOS7使用systemd解决原有模式缺陷,比如原有service不会关闭程序产生的子进程。systemd语法systemctl [command] [unit](配置的应用名称) command可选项 · start:启动指定的unit systemctl start nginx · stop:关闭指定的unit systemctl stop nginx · restart:重启指定unit systemctl restart nginx · reload:重载指定unit systemctl reload nginx · enable:系统开机时自动启动指定unit,前提是配置文件中有相关配置 systemctl enable nginx · disable:开机时不自动运行指定unit systemctl disable nginx · status:查看指定unit当前运行状态 systemctl status nginxsystemd配置文件说明每一个Unit都需要有一个配置文件用于告知systemd对于服务的管理方式配置文件存放于/usr/lib/systemd/system/,设置开机启动后会在/etc/systemd/system目录建立软链接文件每个Unit的配置文件配置默认后缀名为.service在/usr/lib/systemd/system/目录中分为system和user两个目录,一般将开机不登陆就能运行的程序存在系统服务里,也就是/usr/lib/systemd/system配置文件使用方括号分成了多个部分,并且区分大小写systemd相关文件实战一、源码编译安装nginx 实现systemd管理控制安装nginx编译环境yum -y install gcc gcc-c++ openssl-devel pcre-devel gd-devel iproute net-tools telnet wget curl wget http://nginx.org/download/nginx-1.15.5.tar.gz tar zxf nginx-1.15.5.tar.gz && cd nginx-1.15.5 ./configure --prefix=/usr/local/nginx \ --with-http_ssl_module \ --with-http_stub_status_module make -j 4 && make install通用方式启动nginx/usr/local/nginx/sbin/nginx #启动 /usr/local/nginx/sbin/nginx -s reload #重启 /usr/local/nginx/sbin/nginx -s quit #关闭nginxsystemd 管理控制启动模式vim /usr/lib/systemd/system/nginx.service[Unit] Description=nginx After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s quit PrivateTmp=true [Install] WantedBy=multi-user.target参数详解systemctl restart nginx systemctl enable nginx systemctl stop nginx如图所示实现了systemd 管理控制nginx服务实战二、二进制安装tomcat 实现systemd管理控制安装java环境我已经将安装包打包到我的服务器上,也可以去官网下载wget 120.78.77.38/file/jdk-8u231-linux-x64.rpm wget 120.78.77.38/file/apache-tomcat-9.0.27.tar.gzrpm -ivh jdk-8u231-linux-x64.rpm #rpm直接安装jdk配置环境变量export JAVA_HOME=/usr/java/jdk1.8.0_231-amd64 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin export PATH=${JAVA_HOME}/bin:$PATH 安装tomcattar -xf apache-tomcat-9.0.27 mv apache-tomcat-9.0.27 /usr/local/tomcat启动tomcatsh /usr/local/tomcat/bin/startup.sh #启动 sh /usr/local/tomcat/bin/shutdown.sh #关闭systemd管理控制启动[Unit] Description=tomcat server Wants=network-online.target After=network.target [Service] Type=forking WorkingDirectory=/home/dingding/service/tomcat/bin Environment="JAVA_HOME=/usr/java/jdk1.8.0_231-amd64" Environment="PATH=$JAVA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin" Environment="CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar" ExecStart=/usr/local/tomcat/bin/startup.sh ExecStop=/usr/local/tomcat/bin/shutdown.sh Restart=on-failure [Install] WantedBy=multi-user.targetubuntu系统tomcat配置[Unit] Description=tomcat server Wants=network-online.target After=network.target [Service] Type=forking WorkingDirectory=/home/dingding/service/tomcat/bin UMask=0007 Environment="JAVA_HOME=/usr/local/jdk/jre" Environment=CATALINA_PID=/home/dingding/service/tomcat/temp/tomcat.pid Environment=CATALINA_HOME=/home/dingding/service/tomcat Environment=CATALINE_BASE=/home/dingding/service/tomcat ExecStart=/home/dingding/service/tomcat/bin/startup.sh ExecStop=/home/dingding/service/tomcat/bin/shutdown.sh User=dingding Group=dingding [Install] WantedBy=default.targetsystemctl restart tomcat #启动 systemctl enable tomcat #配置自启 systemctl stop tomcat #停止服务 systemctl status tomcat #检测状态 systemctl daemon-reload 重新加载配置以上两个实战nginx和tomcat程序中自带了启动停止脚本,如果启动得程序没有自带脚本则需要自己编写一个类似得启动停止脚本实战三、部署jar程序 实现systemd管理控制实际得项目中会有一些jar程序需要启动 如果手动启动则需要输入一大串命令 停止则需要杀掉进程来停止,很麻烦举一个实际启动得例子切换到jar目录下java -jar decode.jar -Dconfig=/usr/local/abc/application.properties编写一个启动脚本vim demo.sh#!/bin/bash # source /etc/profile jarName="abc-web.jar" workDir="/usr/local/abc" start(){ cd ${workDir} && java -jar ${jarName} --spring.profiles.active=prod --server.port=9630 >uams.log 2>&1 & } stop(){ ps -ef | grep -qP "(?<=-jar)\s+${jarName}" && kill $(ps -ef | grep -P "(?<=-jar)\s+${jarName}" | awk '{print $2}') } case $1 in start) start ;; stop) stop ;; restart) stop start ;; esac编写 systemd配置文件vim /usr/lib/systemd/system/abc.service[Unit] Description=uams server Wants=network-online.target After=network.target [Service] Type=forking WorkingDirectory=/usr/local/abc/ ExecStart=/bin/bash uams.sh start ExecStop=/bin/bash uams.sh stop ExecReload=/bin/bash uams.sh restart Restart=on-failure [Install] WantedBy=multi-user.target启动abc服务systemctl restart abc #启动 systemctl enable abc #配置自启 systemctl stop abc #停止服务 systemctl status abc #检测状态高级写法还有一种更高级的写法,在service中直接定义环境变量和脚本cat /lib/systemd/system/yuxin-house.service[Unit] Description=yuxin house Wants=network-online.target After=network.target [Service] Type=simple WorkingDirectory=/home/dingding/yuxin-house UMask=0007 Environment=PATH=/usr/local/jdk-11/bin:/usr/local/jdk-11/jre/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin Environment=JAVA_HOME=/usr/local/jdk-11 Environment=CLASSPATH=/usr/local/jdk-11/lib:/usr/local/jdk-11/jre/lib:/usr/local/jdk-11/lib/tools.jar:/usr/local/jdk/lib:/usr/local/jdk/jre/lib:/usr/local/jdk/lib/tools.jar:/usr/local/jdk-11/lib:/usr/local/jdk-11/jre/lib:/usr/local/jdk-11/lib/tools.jar ExecStart=/usr/local/jdk-11/bin/java -XX:+UseG1GC -XX:MaxGCPauseMillis=150 -Xms125M -Xmx512M -jar yuxin-house.jar --spring.profiles.active=test ExecStop=/bin/kill -9 $MAINPID Restart=on-failure StartLimitBurst=4 User=dingding Group=dingding [Install] WantedBy=multi-user.target
2023年08月30日
19 阅读
0 评论
0 点赞
2023-08-30
Linux 命令之scp
Linux 命令之scp
2023年08月30日
10 阅读
0 评论
0 点赞
1
...
6
7
8
9