首页
关于
推荐
CSDN
Search
1
文件上传下载-io-流的理解-笔记
129 阅读
2
vue循环指令el-table-column展示图片src路径拼接
122 阅读
3
正则表达式,将字符串分割两部分
114 阅读
4
MySQL数据库练习【一】
110 阅读
5
MySQL数据库练习【三】
95 阅读
默认分类
Mysql
Java基础
一天一练
Mongodb
Nginx
Docker
FastDFS
面试题
云计算基础
linux基础
shell脚本
实验
工具
基础命令
redis
zookeeper
部署
案例
登录
Search
标签搜索
vue
Mysql
IO
面试题
良辰美景好时光
累计撰写
68
篇文章
累计收到
0
条评论
首页
栏目
默认分类
Mysql
Java基础
一天一练
Mongodb
Nginx
Docker
FastDFS
面试题
云计算基础
linux基础
shell脚本
实验
工具
基础命令
redis
zookeeper
部署
案例
页面
关于
推荐
CSDN
搜索到
16
篇与
的结果
2024-10-11
云计算基础
@TOCday01、云计算行业介绍一、今日学习收货Linux操作系统:Linux系统是一种开源的操作系统,具有安全性,稳定性,灵活性。它被广泛应用于企业服务器当中,拥有很多软件生态,支持多用户。全球服务器领域,操作系统采用 Linux 占比,接近 80%;开源:开放源代码、免费、安全、稳定IP:IP 地址是所有网络设备在互联网上唯一的地址标志PV:点击量单台服务器访问极限: (限定情况):10万PV/小时网站类型:新闻类服务器类型:1万5千集群:将多台计算机连接在一起,作为一个整体来工作。它可以提高系统的性能、可靠性和可扩展性,在集群中,多台计算机共享工作负载,通过协作完成任务。负载均衡性集群:是指将网络请求合理地分发到多台服务器上,以达到最大化利用服务器资源、提高网站性能和可用性的日的(LVS)轮询加权轮询应急故障处理高可用性集群:是指系统能够在长时间内持续正常运行,对于服务中断有很强的抵抗力,当一台接收外理请求的服务器挂了之后,备用的能够及时而上,提供系统的容错和故障转移。备用机二、今日学习问题通过今日的学习课程让我了解到云计算就是通过整合服务器进行相关的服务,能否通过最小的资源实现最大的访问量和并发量,降低企业成本。三、今日学习感悟通过今日的学习课程让我了解到云计算是一切新兴技术的底层基石,了解到集群的搭建,常用的算法,故障的处理知识。day02、Windows 安装一、Windows 安装Windows 版本分类:个人版:(阉割版本:古代的皇宫的公务员)Windows XP 7 8 10 11家庭版旗舰版服务器版:Windows Server 2000 2003 2008 2012 2016 2019+Windows 安装步骤:1、拔网线2、正常安装 Windows 系统a.备份文件b.下载Windows 镜像:官网c.制作启动U盘:(在U盘安装一个简易 win PE,利用U盘来启动系统,绕开了C盘,才能彻底清空C盘系统,达到重装目的)第三方工具 (大白菜)d.进入Bios系统:修改启动级别为U盘优先启动e.进入u盘的临时操作系统f.安装Windows操作系统g.安装完成后重新启动级别修改为硬盘启动3、安装驱动程序a.第三方软件(驱动精灵):优点:简单、傻瓜式安装缺点:不开源b.手工官网下载安装:优点:相对安全可靠缺点:对使用者技术要求高4、安装杀毒软件和防火墙严禁:金山系软件5、插入网线6、更新(windows补丁、驱动、杀毒软件和防火墙)7、安装常用软件8、常规优化防火墙:是对数据包(IP地址、MAC地址、端口号、底层协议、数据包中数据)进行过滤BIOS(基本输入/输出系统)主板自带的简易系统(系统时间、启动顺序)进入BIOS方法:台式机: del键笔记本:不同品牌,不同型号,按键不一样F2-F12 Fn+F2开机时一直按F2/F10/Delete...键安装方式:光盘安装:U盘安装:优点:相对简单 缺点:安装时间长,单对单磁盘对拷安装:Windows: ghost:优点:速度快 缺点:不稳定Linux: dd: 优点:刻录稳定 缺点:慢批量无人值守安装:优点:一对多安装缺点:对使用者技术要求高密码三大原则:复杂性:避免暴力破解密码大于8位大写、小写、数字、符号四种最少含有三种不允许使用个人相关信息不允许使用现有英文单词易记忆性:flzx_3QC(飞流直下三千尺)时效性: 原则180天更改一次密码二、今日学习收货今日学习了解到windows系统的安装、BIOS、4种安装方式、密码三大原则三、今日学习问题暂无问题四、今日学习感悟通过此次让我感悟到以后电脑出现此次情况,可以快速的使用U盘启动电脑,进行资料的备份,防止重装系统数据丢失问题day03、虚拟机安装【桥接模式使用】一、虚拟机的设置与使用1.1.VMware简介VMware官方网站:http://www.vmware.comVMware是一个虚拟PC的软件,可以在现有的操作系统上虚拟出一个新的硬件环境,相当于模拟出一台新的PC,以此来实现在一台机器上真正同时运行两个独立的操作系统。1.2.VMware主要特点:不需要分区或重新开机就能在同一台PC上使用两种以上的操作系统本机系统可以与虚拟机系统网络通信可以设定并且随时修改虚拟机操作系统的硬件环境1.3.建议的VMware配置CPU: 建议主频为1GHz以上内存: 建议8GB以上硬盘: 建议分区空闲空间8GB以上1.4.虚拟机安装1.4.1.安装过程1.4.2.注册1.5.常见故障安装过程报错重新下载安装(最好换个版本)检查虚拟机网卡现象:控制面板--查看网络状态--更改适配器配置--检查VMnet1和VMnet8两块虚拟网卡解决办法: 顺序执行(优先级)a.还原默认设置:虚拟机--编辑--虚拟网络适配器--更改设置--还原默认设置b.重新安装虚拟机(最好更换版本)c.重新安装真实机虚拟机启动时蓝屏原因:win11和虚拟机不兼容解决方案:安装采用最先版本VMware(16)(17)CPU虚拟化不支持现象:解决方案:进入BIOS(UEFI),查找CPU虚拟化开关,开启CPU虚拟化1.6.虚拟机删除方式注意:一定要删除干净,否则需要重新安装真实机删除Windows软件:软件自带卸载工具软件管家控制面板---软件卸载后备手段:VMware install cleaner1.7.基本使用1.8.day04、IIS实验day05、硬件基础一、计算机基础1.1.存储单位存储单位:存储器的最小单位是二进制位(比特);每一个最小单位能够存储一个二进制数值比特位 bit 0/1字节: 1Byte = 8bit1KB = 1024Byte1MB = 1024KB1GB = 1024MB1TB = 1024GB1PB = 1024TB1EB = 1024PB1ZB = 1024EB在计算机中所有数据都必须是二进制的英文:1Byte = 8bit 2(8) = 2551.2.ASCII码:中文:2Byte = 16bit 2(16) = 65535简体中文:GB2312繁体中文:BIG5UTF-81.3.计算机的发展史计算机的发展经历了4个时代第一代 (1946至1956年): 电子管计算机时代第二代 (1958至1964年):晶体管计算机时代第三代(1964至1972年):集成电路计算机时代第四代 (1972年至今):大规模、超大规模集成电路计算机时代摩尔定律:每18个月,集成电路的集成密度会翻一翻1.4.计算机组成:软件系统:操作系统软件:Linux应用软件:服务器软件(Apache...)硬件系统:外设:服务器不需要外设(严禁:噪音污染、光污染)输入设备:键盘、鼠标、摄像头、麦克风、触摸板、方向盘输出设备:屏幕、音响、打印机、投影仪1.5.主机主板:计算机各种设备的连接载体1.6.常见插槽:PCI插槽 66MB/S (淘汰)IDE插槽: 133MB/S (老式机械硬盘、光驱)SCSI插槽: 200MB/S (老式服务器机械硬盘)SATA插槽: 500MB/S (机械硬盘、SSD固态硬盘)M.2 插槽:M.2 SATA插槽: 500MB/S (M.2 SATA固态硬盘)M.2 NVMe(PCIe 4.0): 7000MB/S (M.2 NVMe(PCIe 4.0硬盘))DDR4插槽: 内存(速度快)(临时存储)DDR4: >=2400MHz <4800MHzDDR5: >=4800MHzCPU(中央处理器):3G次 8Byte 16 =网速:100Mbps = 100M bit/s = 12.5MB/s1.7.硬盘分类:机械硬盘:100MB/s固态硬盘:SSD固态硬盘:500MB/s二、今日学习收货我首先学习了计算机的基本构成,包括硬件和软件两大部分。在硬件方面,我了解了中央处理器(CPU)、内存、硬盘等核心组件的功能和相互之间的协作关系。在软件方面,了解了操作系统软件和服务器软件。这些知识的掌握为我后续深入学习计算机相关领域打下了坚实的基础。三、今日学习问题暂无问题四、今日学习感悟今天的学习让我深刻体会到了计算机基础的重要性和复杂性。计算机作为现代社会不可或缺的工具,其基础知识的掌握对于我们的学习和工作都至关重要。通过学习计算机基础,我不仅了解了计算机的基本构成和工作原理,还学会了如何运用计算机解决实际问题。同时,我也意识到学习是一个不断探索和进步的过程,需要保持好奇心和求知欲,不断挑战自己,才能取得更好的成绩。总的来说,今天的学习让我收获颇丰,也让我更加明白了自己的不足和需要努力的方向。我会继续努力学习计算机基础知识,为未来的学习和工作做好充分的准备。day06、IDC机房和机柜知识一、IDC机房和机柜知识【了解】1.1.IDC机房为企业提供存放服务器的空间和提供大量带宽,宽带分为单线带宽和多线(BGP线路)带宽。联通、移动、电信、教育、广电、铁通。不同线路之间通信很慢。单线,1M/30元,只有某一个线路比如,联通,做CDN服务的企业,或者CDN服务器。多路(BGP线路):4线 联通、移动、电信、教育,1M/120-300元,企业多数都会买BGP机房。1.2.机柜和服务器通常机柜都是42U约2米高,一般每个服务器之间都会留有散热的空余空间。1.3.IDC机房服务器上架流程1.3.1.购买服务器服务器配置清单,价格清单(找不低于三家),发给老大选择。老大审核后,申请财务支付。走==钉钉==流程。1.3.2.上架服务器:one: 第一种上架方式:把购买的服务器直接送到托管的IDC机房,由IDC机房的人负责上架(7--8 个)然后由运维人员去装系统,初始化,测试网络连接回公司远程连接,配置各种服务。:two: 第二种上架方式:把购买的服务器送到公司,做好RAID,做好系统,然后送到IDC机房运维人员自行上架,装系统,初始化,测试回公司远程连接,配置各种服务、压力测试,正式上线1.3.3.和IDC约定上架日期确定好上架日期之后,提上架工单上架人员:姓名、身份证、服务器型号、机柜号、IP地址1.3.4.去IDC机房需要准备的工具身份证U盘、光盘、移动光驱、空白光盘、螺丝刀(也可以提前配置好==无人值守安装服务==)1.3.5.去机房配置服务器细节:one: 先去IDC机房等记去前台等记,拿到工牌寄存背包,登机领取==显示器、键盘或者小推车==:two: 配置服务器做RAID、装系统、配网络、==配置防火墙==初始化、测试SSH连接,确保投过跳板机能正常连接:three: 收尾去前台归还工牌,小推车(放显示器和键盘)拿回自己的东西手工回公司endl
2024年10月11日
3 阅读
0 评论
0 点赞
2024-09-28
FastDFS安装并整合Openresty
@TOC一、安装环境准备【CentOS7.9】[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)libfastcommon-1.0.72.tar.gz libserverframe-1.2.2.tar.gz fastdfs-6.11.0.tar.gz openresty/1.25.3.1 fastdfs-nginx-module-1.24.tar.gz二、FastDFS--tracker安装分别在192.168.229.141和192.168.229.142上安装tracker注:初次安装可只安装一台tracker方便调试2.1.下载fastdfstracker和storage使用相同的安装包,下载地址:https://github.com/happyfish100/FastDFS2.2.FastDFS安装环境FastDFS是C语言开发,建议在linux上运行,本教程使用Centos7.9作为安装环境。安装FastDFS需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gccyum install gcc-c++2.3.安装FastDFS依赖libevent库yum -y install libevent2.4.安装libfastcommonlibfastcommon是FastDFS官方提供的,libfastcommon包含了FastDFS运行所需要的一些基础库。下载地址:https://github.com/happyfish100/libfastcommon将libfastcommon-1.0.72.tar.gz拷贝至/usr/local/下cd /usr/local tar -zxvf libfastcommon-1.0.72.tar.gz cd libfastcommon-1.0.72 ./make.sh ./make.sh install cd /usr/lib安装完成之后查看相关文件,默认情况下: 头文件安装在/usr/include/fastcommon目录下 动态库安装在/usr/lib64/和/usr/lib/目录下2.5.安装 libserverframe 网络框架安装包下载地址:https://github.com/happyfish100/libserverframecd /usr/local tar -zxvf libserverframe-1.2.2.tar.gz cd libserverframe-1.2.2 ./make.sh ./make.sh install2.6.tracker编译安装将fastdfs-6.11.0.tar.gz拷贝至/usr/local/下cd /usr/local tar -zxvf fastdfs-6.11.0.tar.gz cd fastdfs-6.11.0 ./make.sh ./make.sh install安装成功将安装目录下的conf下的文件拷贝到/etc/fdfs/下cp /usr/local/fastdfs-6.11.0/conf/* /etc/fdfs/2.7.安装之后文件目录介绍安装之后,工具安装在/usr/bin/目录下: fdfs_delete_file:删除文件 fdfs_download_file:下载文件 fdfs_upload_file:上传文件 fdfs_trackerd:启动tracker服务 fdfs_storaged:启动storage服务 fdfs_file_info:用来检查一个文件的信息,参数传递一个FastDFS文件[root@localhost fastdfs-6.11.0]# ls /usr/bin/fdfs_* /usr/bin/fdfs_appender_test /usr/bin/fdfs_crc32 /usr/bin/fdfs_file_info /usr/bin/fdfs_storaged /usr/bin/fdfs_trackerd /usr/bin/fdfs_appender_test1 /usr/bin/fdfs_delete_file /usr/bin/fdfs_monitor /usr/bin/fdfs_test /usr/bin/fdfs_upload_appender /usr/bin/fdfs_append_file /usr/bin/fdfs_download_file /usr/bin/fdfs_regenerate_filename /usr/bin/fdfs_test1 /usr/bin/fdfs_upload_file配置文件默认安装在/etc/fdfs/目录下: client.conf.sample:客户端默认配置文件 storage.conf.sample:storage服务默认配置文件 storage_ids.conf.sample: tracker.conf.sample:tracker服务默认配置文件[root@localhost fastdfs-6.11.0]# ls /etc/fdfs anti-steal.jpg client.conf http.conf mime.types storage.conf storage_ids.conf tracker.conf动态库文件分别安装在/usr/lib/目录和/usr/lib64/目录下2.8.错误处理[root@localhost fastdfs-6.11.0]# ./make.sh gcc -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O1 -DDEBUG_FLAG -c -o ../common/fdfs_global.o ../common/fdfs_global.c -I../common -I/usr/local/include In file included from ../common/fdfs_global.c:21:0: ../common/fdfs_global.h:17:26: 致命错误:sf/sf_global.h:没有那个文件或目录 #include "sf/sf_global.h" ^ 编译中断。 make: *** [../common/fdfs_global.o] 错误 1 gcc -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O1 -DDEBUG_FLAG -c -o ../common/fdfs_global.o ../common/fdfs_global.c -I. -Itrunk_mgr -I../common -I../tracker -I../client -Ifdht_client -I/usr/include/fastcommon In file included from ../common/fdfs_global.c:21:0: ../common/fdfs_global.h:17:26: 致命错误:sf/sf_global.h:没有那个文件或目录 #include "sf/sf_global.h" ^ 编译中断。 make: *** [../common/fdfs_global.o] 错误 1 gcc -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O1 -DDEBUG_FLAG -c -o ../common/fdfs_global.o ../common/fdfs_global.c -I../common -I../tracker -I/usr/include/fastcommon In file included from ../common/fdfs_global.c:21:0: ../common/fdfs_global.h:17:26: 致命错误:sf/sf_global.h:没有那个文件或目录 #include "sf/sf_global.h" ^ 编译中断。 make: *** [../common/fdfs_global.o] 错误 1原因:在安装较新版得 fastdfs 时,从github 下载得安装包缺少文件,缺少了 libserverframe 网络框架解决方法:安装 libserverframe 网络框架`安装包下载地址:https://github.com/happyfish100/libserverframecd /usr/local tar -zxvf libserverframe-1.2.2.tar.gz cd libserverframe-1.2.2 ./make.sh ./make.sh install安装完成后重新编译 fastdfs2.9.配置FastDFS跟踪器(Tracker)2.9.1.FastDFS 配置文件详解FastDFS 配置文件详解:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=1941456&extra=page%3D1%26filter%3Ddigest%26digest%3D12.9.2.备份tracker配置文件并修改cd /etc/fdfs # 备份tracker配置文件 cp tracker.conf tracker.conf.bak # 修改文件 vi tracker.conf# 配置文件是否不生效,false 为生效 disabled=false # 提供服务的端口 port=22122 # Tracker 数据和日志目录地址(根目录必须存在,子目录会自动创建) #base_path = /opt/fastdfs #base_path=/home/fastdfs/Tracker base_path = /home/fastdfs/tracker # 设置store_path, 0:是轮询方式 2:选择剩余最大的目录存放文件,根据自己的需要选择即可 store_path = 0 # HTTP 服务端口 默认8080 ,建议修改 防止冲突 #http.server_port = 8080 http.server_port = 802.9.3.创建tracker基础数据目录# base_path配置的路径一定要存在,否则可能会报错,创建个目录 # 创建tracker基础数据目录,即base_path对应的目录 mkdir -p /home/fastdfs/tracker2.9.4.防火墙放行端口# 检查端口号是否被占用 netstat -apn | grep 22122 # 防火墙放行端口(默认的22122) firewall-cmd --zone=public --add-port=22122/tcp --permanent # 配置立即生效 firewall-cmd --reload # 查询开放端口 firewall-cmd --list-ports2.9.5.初次成功启动初次成功启动,会在 /home/fastdfs/ (配置的base_path)下创建 data、logs 两个目录[root@localhost fdfs]# ls /home/fastdfs/tracker data logs${base_path} |__data | |__storage_groups.dat:存储分组信息 | |__storage_servers.dat:存储服务器列表 |__logs | |__trackerd.log: tracker server 日志文件2.10.启动/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf stop # 检查是否启动 ps aux | grep fdfs*三、FastDFS--storage安装分别在192.168.229.143、192.168.229.144、192.168.229.145、192.168.229.146上安装storage注:初次安装可只安装一台storage方便调试。3.1.安装libevent同上3.2.安装libfastcommon同上3.3.storage编译安装同tracker编译安装3.4.配置 FastDFS 存储 (Storage)3.4.1.备份storage配置文件并修改cd /etc/fdfs # 备份storage配置文件 cp storage.conf storage.conf.bak vi storage.conf# 配置文件是否不生效,false 为生效 disabled=false # 指定此 storage server 所在 组(卷) group_name = group1 # storage server 服务端口 port=23000 # 心跳间隔时间,单位为秒 (这里是指主动向 tracker server 发送心跳) heart_beat_interval=30 # storage 数据和日志目录地址(根目录必须存在,子目录会自动生成) #base_path = /opt/fastdfs base_path = /home/fastdfs/storage # 存放文件时 storage server 支持多个路径。这里配置存放文件的基路径数目,通常只配一个目录。 store_path_count=2 # 逐一配置 store_path_count 个路径,索引号基于 0。 #store_path0 = /opt/fastdfs #store_path1 = /opt/fastdfs2 store_path0 = /home/fastdfs/storage/d0 store_path1 = /home/fastdfs/storage/d1 #如果有多个挂载磁盘则定义多个store_path,如下 #store_path1=..... #store_path2=...... # FastDFS 存储文件时,采用了两级目录。这里配置存放文件的目录个数。 # 如果本参数只为 N(如: 256),那么 storage server 在初次运行时,会在 store_path 下自动创建 N * N 个存放文件的子目录。 subdir_count_per_path=256 # 修改tracker的地址和端口号,用于心跳 #tracker_server = 192.168.209.121:22122 #tracker_server = 192.168.209.122:22122 #配置tracker服务器:IP tracker_server = 192.168.229.141:22122 #如果有多个则配置多个tracker #tracker_server = 192.168.229.142:22122 # 允许系统同步的时间段 (默认是全天) 。一般用于避免高峰同步产生一些问题而设定。 sync_start_time=00:00 sync_end_time=23:59 # 访问端口 默认80 建议修改 防止冲突 #http.server_port = 8888 #配置http服务端口,和nginx中的监听端口要一致 http.server_port = 803.4.2.创建Storage基础数据目录,对应base_path目录# base_path配置的路径一定要存在,否则可能会报错,创建个目录 # 对应base_path mkdir -p /home/fastdfs/storage # 这是配置的store_path0路径,有多个要创建多个 cd /home/fastdfs/storage mkdir d0 mkdir d13.4.3.防火墙放行端口# 检查端口号是否被占用 netstat -apn | grep 23000 # 防火墙放行端口(默认的 23000) firewall-cmd --zone=public --add-port=23000/tcp --permanent # 配置立即生效 firewall-cmd --reload # 查询开放端口 firewall-cmd --list-ports3.4.4.初次启动启动Storage前确保Tracker是启动的初次启动成功,会在 /home/fastdfs/storage/base(base_path) 目录下创建 data、 logs 两个目录3.5.启动/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart /usr/bin/fdfs_storaged /etc/fdfs/storage.conf stop# 检查是否启动 ps aux | grep fdfs*3.6.查看Storage和Tracker是否在通信/usr/bin/fdfs_monitor /etc/fdfs/storage.conf3.7.Storage 目录同Tracker一样,Storage 启动成功后,在base_path 下创建了data、logs目录,记录着 Storage Server 的信息在 store_path0/data 目录下,创建了N*N个子目录:[root@localhost fdfs]# ls /home/fastdfs/storage/d0/data/ 00 07 0E 15 1C 23 2A 31 38 3F 46 4D 54 5B 62 69 70 77 7E 85 8C 93 9A A1 A8 AF B6 BD C4 CB D2 D9 E0 E7 EE F5 FC 01 08 0F 16 1D 24 2B 32 39 40 47 4E 55 5C 63 6A 71 78 7F 86 8D 94 9B A2 A9 B0 B7 BE C5 CC D3 DA E1 E8 EF F6 FD 02 09 10 17 1E 25 2C 33 3A 41 48 4F 56 5D 64 6B 72 79 80 87 8E 95 9C A3 AA B1 B8 BF C6 CD D4 DB E2 E9 F0 F7 FE 03 0A 11 18 1F 26 2D 34 3B 42 49 50 57 5E 65 6C 73 7A 81 88 8F 96 9D A4 AB B2 B9 C0 C7 CE D5 DC E3 EA F1 F8 FF 04 0B 12 19 20 27 2E 35 3C 43 4A 51 58 5F 66 6D 74 7B 82 89 90 97 9E A5 AC B3 BA C1 C8 CF D6 DD E4 EB F2 F9 05 0C 13 1A 21 28 2F 36 3D 44 4B 52 59 60 67 6E 75 7C 83 8A 91 98 9F A6 AD B4 BB C2 C9 D0 D7 DE E5 EC F3 FA 06 0D 14 1B 22 29 30 37 3E 45 4C 53 5A 61 68 6F 76 7D 84 8B 92 99 A0 A7 AE B5 BC C3 CA D1 D8 DF E6 ED F4 FB四、FastDFS 服务启动、停止、重启设置4.1.创建文件夹管理脚本mkdir -p /usr/fdfs cd /usr/fdfs4.2.编辑启动脚本文件 startFastDFS.sh# 编辑脚本 vi startFastDFS.sh # 给所有人添加执行权限 chmod a+x startFastDFS.sh # 启动脚本 ./startFastDFS.sh # 查看是否启动成功 ps aux | grep fdfs*脚本内容:#!/bin/bash # 启动tracker服务 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start # 启动storage服务 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf start echo 'FastDFS start success'4.3.编辑停止脚本文件 stopFastDFS.sh# 编辑脚本 vi stopFastDFS.sh # 给所有人添加执行权限 chmod a+x stopFastDFS.sh # 停止脚本 ./stopFastDFS.sh # 查看是否停止成功 ps aux | grep fdfs*脚本内容:#!/bin/bash # 停止tracker服务 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf stop # 停止storage服务 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf stop echo 'FastDFS stop success'4.4.编辑重启脚本文件 restartFastDFS.sh# 编辑脚本 vi restartFastDFS.sh # 给所有人添加执行权限 chmod a+x restartFastDFS.sh # 重启脚本 ./restartFastDFS.sh # 查看是否停止成功 ps aux | grep fdfs*脚本内容:#!/bin/bash # 重启tracker服务 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart # 重启storage服务 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart echo 'FastDFS restart success'4.5.FastDFS安装成系统服务# 创建脚本 vi /usr/lib/systemd/system/fastdfs.service # 重新加载系统服务 systemctl daemon-reload服务脚本内容[Unit] Description=fastdfs - Fast Distributed File System After=network.target [Service] Type=forking ExecStart=/usr/fdfs/startFastDFS.sh ExecReload=/usr/fdfs/stopFastDFS.sh ExecStop=/usr/fdfs/stopFastDFS.sh PrivateTmp=true [Install] WantedBy=default.target[Unit]:服务的说明 Description:描述服务 After:描述服务类别 [Service]服务运行参数的设置 Type=forking是后台运行的形式ExecStartpre是检查配置文件 ExecStart为服务的具体运行命令 ExecReload为重启命令 ExecStop为停止命令 PrivateTmp=True表示给服务分配独立的临时空间 注意:[Service]的启动、重启、停止命令全部要求使用绝对路径 [Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为34.6.fastdfs常用命令# 启动服务 systemctl start fastdfs #停止 systemctl stop fastdfs #重启 systemctl restart fastdfs # 查看fastdfs状态 systemctl status fastdfs # 开机启动 systemctl enable fastdfs # 查看fdfs ps aux | grep fdfs*4.7.fastdfs其他常用命令# 监控服务器状态命令:fdfs_monitor # 查看Storage和Tracker是否在通信 /usr/bin/fdfs_monitor /etc/fdfs/storage.conf /usr/bin/fdfs_test 客户端配置文件地址 upload 上传文件 /usr/bin/fdfs_test /etc/fdfs/client.conf upload /etc/fdfs/anti-steal.jpg # 上传文件 /usr/bin/fdfs_upload_file /etc/fdfs/client.conf a.jpg # 下载文件 /usr/bin/fdfs_download_file /etc/fdfs/client.conf group_name/文件地址 # 删除文件 /usr/bin/fdfs_delete_file /etc/fdfs/client.conf group_name/文件地址 # 启动tracker服务 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf # 重启tracker服务 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart/stop # 启动storage服务 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf # 重启storage服务 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart/stop五、上传图片测试:通过fdfs_test程序5.1.FastDFS安装成功可通过/usr/bin/fdfs_test测试上传、下载等操作5.2.修改/etc/fdfs/client.confvi /etc/fdfs/client.conftracker_server根据自己部署虚拟机的情况配置#Client 的数据和日志目录 #base_path=/opt/fastdfs base_path=/home/fastdfs/client tracker_server=192.168.229.141:22122 #tracker_server=192.168.229.142:22122把base_path的目录创建一下mkdir -p /home/fastdfs/client5.3.上传文件使用格式/usr/bin/fdfs_test 客户端配置文件地址 upload 上传文件比如将/etc/fdfs/anti-steal.jpg下的图片上传到FastDFS中:/usr/bin/fdfs_test /etc/fdfs/client.conf upload /etc/fdfs/anti-steal.jpg5.4.打印如下日志[root@localhost fdfs]# vi client.conf [root@localhost fdfs]# [root@localhost storage]# /usr/bin/fdfs_test /etc/fdfs/client.conf upload /etc/fdfs/anti-steal.jpg This is FastDFS client test program v6.11.0 Copyright (C) 2008, Happy Fish / YuQing FastDFS may be copied only under the terms of the GNU General Public License V3, which may be found in the FastDFS source kit. Please visit the FastDFS Home Page http://www.fastken.com/ for more detail. [2024-02-12 18:42:17] DEBUG - base_path=/home/fastdfs/client, connect_timeout=5, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, connect_first_by=tracker, storage server id count: 0,multi storage ips: 0 tracker_query_storage_store_list_without_group: server 1. group_name=, ip_addr=192.168.229.141, port=23000 group_name=group1, ip_addr=192.168.229.141, port=23000 storage_upload_by_filename group_name=group1, remote_filename=M00/00/00/wKjljWXJ9gqAQ4wTAABdreSfEnY538.jpg source ip address: 192.168.229.141 file timestamp=2024-02-12 18:42:18 file size=23981 file crc32=3835630198 example file url: http://192.168.229.141/group1/M00/00/00/wKjljWXJ9gqAQ4wTAABdreSfEnY538.jpg storage_upload_slave_by_filename group_name=group1, remote_filename=M00/00/00/wKjljWXJ9gqAQ4wTAABdreSfEnY538_big.jpg source ip address: 192.168.229.141 file timestamp=2024-02-12 18:42:18 file size=23981 file crc32=3835630198 example file url: http://192.168.229.141/group1/M00/00/00/wKjljWXJ9gqAQ4wTAABdreSfEnY538_big.jpg5.5.下载路径http://192.168.229.141/group1/M00/00/00/wKjljWXJ9gqAQ4wTAABdreSfEnY538_big.jpg就是文件的下载路径对应storage服务器上的find / -name wKjljWXJ9gqAQ4wTAABdreSfEnY538_big.jpg/home/fastdfs/storage/d0/data/00/00/wKjljWXJ9gqAQ4wTAABdreSfEnY538_big.jpg文件或者是/home/fastdfs/storage/d1/data/00/00/wKjljWXJ9gqAQ4wTAABdreSfEnY538_big.jpg文件由于现在还没有和nginx整合无法使用http下载六、FastDFS 和nginx整合6.1.nginx代理nginx代理storage上的nginx,并进行负载均衡nginx的安装细节参考nginx文档,这里使用单机nginx,也可以使用两台nginx组成高可用或者采用lvs+nginx访问Storage上的nginx创建nginx-fdfs.conf配置文件:#storage群group1组 upstream storage_server_group1{ server 192.168.229.143:80 weight=10; server 192.168.229.144:80 weight=10; } #storage群group2组 upstream storage_server_group2{ server 192.168.229.145:80 weight=10; server 192.168.229.146:80 weight=10; } server { listen 80; ## 该端口为storage.conf中的http.server_port相同 server_name location; location /group1{ proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://storage_server_group1; } location /group2{ proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://storage_server_group2; } }6.2.在Storage上安装openresty6.2.1.下载fastdfs-nginx-module模块下载地址:https://github.com/happyfish100/fastdfs-nginx-module将fastdfs-nginx-module-1.24.tar.gz传至/openresty/core/moudle/下cd /openresty/core/moudle tar -zxvf fastdfs-nginx-module-1.24.tar.gz mv fastdfs-nginx-module-1.24 fastdfs-nginx-module cd fastdfs-nginx-module/src6.2.2.修改config文件将/usr/local/路径改为/usr/#修改config文件将/usr/local/路径改为/usr/ cd fastdfs-nginx-module/src vi config6.2.3.将fastdfs-nginx-module/src下的mod_fastdfs.conf拷贝至/etc/fdfs/下#将fastdfs-nginx-module/src下的mod_fastdfs.conf拷贝至/etc/fdfs/下 cp mod_fastdfs.conf /etc/fdfs/6.2.4.修改mod_fastdfs.conf的内容cd /etc/fdfs vi /etc/fdfs/mod_fastdfs.conf# 连接超时时间 connect_timeout=10 # base_path和store_path和storage.conf一致 base_path=/home/fastdfs #指定文件存储路径,Storage配置的store_path0路径,必须和storage.conf中的一致 store_path_count=2 #store_path0=/home/yuqing/fastdfs #store_path1=/home/yuqing/fastdfs1 store_path0=/home/fastdfs/storage/d0 store_path1=/home/fastdfs/storage/d1 # 配置group_name,要和storage中配置的一样 group_name=group1 # 修改tracker的地址和端口号,用于心跳 tracker_server=192.168.229.141:22122 #tracker_server=192.168.229.142:22122 # StorageServer 默认端口 storage_server_port=23000 # 如果文件ID的uri中包含/group**,则要设置为true url_have_group_name=truefind / -name libfdfsclient.so #将libfdfsclient.so拷贝至/usr/lib下 cp /usr/lib64/libfdfsclient.so /usr/lib/6.2.5.openresty安装【添加fastdfs-nginx-module模块】openresty安装:https://blog.csdn.net/qq_45740503/article/details/135887895./configure --add-module=/openresty/core/moudle/fastdfs-nginx-module/src make && make install nginx -V6.2.6.编辑nginx配置文件nginx.conf新建nginx配置文件nginx-fdfs.conf直接编辑nginx.confvi /usr/local/openresty/nginx/conf/nginx.confserver { listen 80; ## 该端口为storage.conf中的http.server_port相同 server_name 192.168.229.141; #在80端口下添加fastdfs-nginx-module模块 # 配置多个存储路径,需要配置多个代理 # M00映射到store_path0的路径 location ~/group([0-9])/M00 { root /home/fastdfs/storage/data/d0; ngx_fastdfs_module; } # M01映射到store_path1的路径 location ~/group([0-9])/M01 { root /home/fastdfs/storage/data/d1; ngx_fastdfs_module; } }说明:server_name指定本机ip location /group1/M00/: group1为nginx 服务fastdfs的分组名称, M00是fastdfs自动生成编号,对应store_path0=/home/fastdfs/storage/d0, M01是fastdfs自动生成编号,对应store_path1=/home/fastdfs/storage/d1, 如果fastdfs定义store_path1,这里就是M01listen 80端口值是要与 /etc/fdfs/storage.conf 中的 http.server_port=80相对应。如果改成其它端口,则需要统一,同时在防火墙中打开该端口。6.3.访问测试通过java客户端上传文件,使用浏览器http访问文件,这里访问上传图片测试的文件:6.3.1.访问storage:http://192.168.229.143/group1/M00/00/00/wKjljWXF_5WALK3dAABdreSfEnY041_big.jpg 如果配置了多个ip地址改为192.168.229.144也行,因为同一个分组的storage文件互相同步。6.3.2.访问tracker:http://192.168.229.141/group1/M00/00/00/wKjljWXF_5WALK3dAABdreSfEnY041.jpg 如果配置了多个ip地址改为192.168.229.142也行6.3.3.使用域名访问 (推荐):nginx对外由vip提供服务,使用域名访问如下: 比如vip对应的域名为img.test.com: http://img.test.com/group1/M00/00/00/wKjljWXF_5WALK3dAABdreSfEnY041_big.jpg6.4.测试上传图片/usr/bin/fdfs_test 客户端配置文件地址 upload 上传文件/usr/bin/fdfs_test /etc/fdfs/client.conf upload /etc/fdfs/22.png6.5.访问图片预览效果【success】http://192.168.229.141/group1/M00/00/00/wKjljWXGIWKATkMkAAVtZBzi-RU560.png http://192.168.229.141/group1/M00/00/00/wKjljWXGIWKATkMkAAVtZBzi-RU560_big.pngendl
2024年09月28日
7 阅读
0 评论
0 点赞
2024-09-27
Linux部署lomp环境,安装typecho、WordPress博客
@TOC一、环境要求1.1.版本信息CentOS 7.9 openresty 1.25.3.1 Mysql 5.7 PHP 7.4.331.2.准备阿里云服务器【新用户免费使用三个月】阿里云服务器链接专享:https://www.aliyun.com/daily-act/ecs/activity_selection?userCode=yu4fhct71.3.准备远程工具【FinalShell】官网:http://www.hostbuf.com/下载链接:http://www.hostbuf.com/t/988.html二、Linux下安装openresty参考链接:https://blog.csdn.net/qq_45740503/article/details/135887895三、Linux下安装Mysql参考链接:https://blog.csdn.net/qq_45740503/article/details/135617610四、安装Apache【此步骤可省略】4.1.安装Apache服务及其扩展包yum -y install httpd httpd-manual httpd-devel mod_ssl mod_perl4.2.Apache服务相关命令#启动Apache服务 systemctl start httpd #重启Apache服务 systemctl restart httpd # 查看Apache状态 systemctl status httpd #停止Apache服务 systemctl stop httpd # 设置Apache服务开机自启动 systemctl enable httpd4.3.检查Apache状态# 查看Apache状态 systemctl status httpd # 检查apache软件版本 rpm -qa | grep httpd # 检查apache的进程 ps -ef | grep apache4.4.查看其配置文件位置rpm -qc httpd配置文件主目录: /etc/httpd/conf/http.conf 默认发布目录是:/var/www/html 子配置文件目录 /etc/httpd/conf.d/* 默认关联上下文的情况是 httpd_sys_content_t 通找到index 进行添加默认访问目录,其访问顺序分先后次序 apache 日志文件位置 :/etc/httpd/logs/* apache 的默认用户为apache apache 有同步阻塞功能,使用的意义是在有多个文件时是顺序访问的4.5.如果想修改默认页面,可以修改指定目录中 index.html 内容# 目录地址 cd /usr/share/httpd/noindex4.6.开放centos7的80和3306端口,配置防火墙相关命令方法1 直接关闭防火墙,开启系统所有端口 systemctl stop firewalld 方法2 防火墙放行80端口【推荐】 //放行80端口 firewall-cmd --zone=public --add-port=80/tcp --permanent //让防火墙通过mysql的3306端口 firewall-cmd --zone=public --add-port=3306/tcp --permanent //使能防火墙生效 firewall-cmd --reload //查看是否生效 firewall-cmd --list-ports4.7.打开浏览器输入ECS服务器的公网IP,如果显示如下图的测试页面表示Apache服务安装成功。说明:在实例页面可查看到ECS服务器的公网IP。五、remi扩展源安装PHP5.1.PHP官网官网:https://www.php.net/5.2.安装remi扩展源yum install -y epel-release yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm5.3.安装yum管理工具yum install -y yum-utils5.4.安装php7.4yum search php74 yum install -y php74-php-cli php74-php-common php74-php-devel \ php74-php-embedded php74-php-fpm php74-php-gd php74-php-mbstring \ php74-php-mysqlnd php74-php-pdo php74-php-opcache php74-php-xml php74-php-soap php74-php-zip5.5.查看安装结果yum list installed | grep php5.6.建立软连接通过remi安装的php的指令是php74,建立一下软链接find / -name php74 ln -s /opt/remi/php74/root/usr/bin/php /usr/local/bin/php5.7.启动PHPstart、stop、restart、enable、status、restartphp -v # 启动fpm systemctl start php74-php-fpm # 开机自启 systemctl enable php74-php-fpm5.8.修改php-fpm的配置vim /etc/opt/remi/php74/php-fpm.d/www.conf#创建 www的用户 useradd www;把user = apache和group = apache 改成 user = www group = www ;在这个配置文件中前面加上;就是注释 ;user = apache ;group = apachesystemctl restart php74-php-fpm5.9.创建PHP测试页面mkdir -p /opt/www echo "<?php phpinfo(); ?>" > /opt/www/info.php5.10.修改nginx配置文件,使nginx支持php# 备份文件 mv /usr/local/openresty/nginx/conf/nginx.conf /usr/local/openresty/nginx/conf/nginx.conf.bak vi /usr/local/openresty/nginx/conf/nginx.conf主要添加内容:user www; server { listen 8080; server_name localhost; location / { #修改html路径 root /opt/www; # 添加index.php index index.php index.html; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ \.php$ { root /opt/www; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; } }完整内容:user www; # 指令名 指令值; #全局块,主要设置Nginx服务器整体运行的配置指令 worker_processes 1; # 默认为1,表示开启一个业务进程 error_log logs/error.log; # events块,主要设置,Nginx服务器与用户的网络连接,这一部分对Nginx服务器的性能影响较大 events { # 事件驱动模块 accept_mutex on; #设置Nginx网络连接序列化,防止多个进程对连接的争抢 multi_accept on; #设置Nginx的worker进程是否可以同时接收多个网络请求 worker_connections 1024; # 设置Nginx单个worker进程最大的连接数 use epoll; #设置Nginx使用的事件驱动模型,使用epoll函数来优化Ngin } # http块,是Nginx服务器配置中的重要部分,代理、缓存、日志记录、第三方模块配置... http { include mime.types; # 引入http mime类型 default_type application/octet-stream; # 如果mime类型没有匹配上,默认使用二进制流的方式传输 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; # 使用limux的sendfile(socket,file,len)高效网络传输,也就是数据0拷贝 tcp_nopush on; # 主要是用来提升网络包的传输效率 tcp_nodelay on; # 提高网络包传输的实时性 keepalive_timeout 65; # server块,是Nginx配置和虚拟主机vhost相关的内容 server { # 虚拟主机配置 listen 80; # 监听端口号80 server_name localhost; # 域名、主机名 # location块,基于Nginx服务器接收请求字符串与location后面的值进行匹配,对特定请求进行处理 location / { # 匹配路径 root html; # 文件根目录 index index.html index.htm; # 默认页名称 } error_page 500 502 503 504 /50x.html; # 报编码错误对应页面 location = /50x.html { root html; } } server { listen 8080; server_name localhost; location / { #修改html路径 root /opt/www; # 添加index.php index index.php index.html; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ \.php$ { root /opt/www; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; } } }5.11.重启openresty服务systemctl restart openresty5.12.查看openresty运行状态来判断是否成功systemctl status openresty5.13.打开浏览器,访问http://<ECS公网IP>:8080/info.php,显示如下页面表示PHP安装成功http://192.168.229.141:8080/info.php5.14.出现问题解决5.14.1.CentOS 64 编译PHP出现 error: Cannot find ldap libraries in /usr/libcp -frp /usr/lib64/libldap* /usr/lib/5.14.2.编译安装PHP7.4时出现configure: error: Package requirements (oniguruma) were not met网址: https://github.com/kkos/onigurumamkdir -p /php/modules cd /php/modules wget https://github.com/kkos/oniguruma/releases/download/v6.9.9/onig-6.9.9.tar.gz tar -zxf onig-6.9.9.tar.gz ./configure --prefix=/usr --libdir=/lib64 #64位的系统一定要标识 --libdir=/lib64 否则还是不行 make && make install5.14.3.Package requirements (libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0) were not metCMake Error at CMakeLists.txt:1 (cmake_minimum_required): CMake 3.5.0 or higher is required. You are running version 2.8.12.2 -- Configuring incomplete, errors occurred!configure: error: Package requirements (libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0) were not met: No package 'libzip' found No package 'libzip' found No package 'libzip' found解决:提示cmake版本过低,需新版本,则需要重新安装cmake # 移除旧的cmake yum remove cmake # 安装cmake cd /php/modules wget https://cmake.org/files/v3.9/cmake-3.9.1-Linux-x86_64.tar.gz # 这个cmake压缩包不是源码包,解压后直接用 tar -zxf cmake-3.9.1-Linux-x86_64.tar.gz mv cmake-3.9.1-Linux-x86_64 /opt/cmake-3.9.1 # 创建软链接 ln -sf /opt/cmake-3.9.1/bin/* /usr/bin/ # 查看版本 cmake --version # libzip 编译生成静态库 # 移除旧的libzip yum remove libzip cd /php/modules wget https://libzip.org/download/libzip-1.3.2.tar.gz tar -zxf libzip-1.3.2.tar.gz cd libzip-1.3.2 ./configure --prefix=/usr/local/libzip-1.3.2 make && make install vim /etc/profile export PKG_CONFIG_PATH='/usr/local/libzip-1.3.2/lib/pkgconfig' source /etc/profile mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=/usr/local/libzip-1.10.1 .. cmake --build . cmake --install .六、搭建博客【WordPress】WordPress官网:https://cn.wordpress.org/6.1.创建文件夹管理mkdir -p /wordpress/core cd /wordpress/core6.2.下载Wordpress安装包并解压wget https://cn.wordpress.org/wordpress-6.4.2-zh_CN.tar.gz tar -zxf wordpress-6.4.2-zh_CN.tar.gz6.3.修改WordPress配置文件wp-config.phpdatabase_name_here为之前步骤中创建的数据库名称,本示例为wordpress。username_here为MySQL数据库的用户名,本示例为root。password_here为MySQL数据库的登录密码,本示例为Mysql.123456。cd /wordpress/core/wordpress cp wp-config-sample.php wp-config.php vi wp-config.php # 设置wordpress的权限 chown -R www.www /wordpress/core/wordpress systemctl restart php74-php-fpm// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** // /** WordPress数据库的名称 */ define( 'DB_NAME', 'wordpress' ); /** MySQL数据库用户名 */ define( 'DB_USER', 'root' ); /** MySQL数据库密码 */ define( 'DB_PASSWORD', '123456' ); /** MySQL主机 */ define( 'DB_HOST', '192.168.229.141:3306' ); /** 创建数据表时默认的文字编码 */ define( 'DB_CHARSET', 'utf8' ); /** 数据库整理类型。如不确定请勿更改 */ define( 'DB_COLLATE', '' ); 6.4.创建存储博客网站内容的数据库systemctl start mysqld mysql -u root -p create database wordpress; show databases;6.5.配置MySQL的安全性mysql_secure_installation[root@localhost mysql]# mysql_secure_installation ## 默认已用空密码登录 Securing the MySQL server deployment. Connecting to MySQL using a blank password. ##是否安装密码强度验证模块,看自己需求 VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: no ## 设置root的密码 Please set the password for root here. New password: Re-enter new password: ## 是否删除匿名用户,可删 By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : y Success. ## 默认情况下只允许本机访问,是否开启远程访问,按自己需求 Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y Success. ## 是否删除测试数据库,可删 By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y - Dropping test database... Success. - Removing privileges on test database... Success. ## 是否立即重新加载刚才的配置,选择是 Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y Success. ## 配置完毕 All done!6.6.输入exit退出数据库6.7.修改openresty配置文件并重启vi /usr/local/openresty/nginx/conf/nginx.conf systemctl restart openresty6.8.防火墙放行8080端口//放行8080端口 firewall-cmd --zone=public --add-port=8080/tcp --permanent //使能防火墙生效 firewall-cmd --reload //查看是否生效 firewall-cmd --list-ports6.9.确保服务启动systemctl status php74-php-fpm systemctl status openresty systemctl status mysqld6.10.FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream权限不足停用selinux# 查看状态 sestatus # 如果查看不是disabled状态,我们可以通过修改配置文件来进行设置,修改SELINUX=disabled,然后重启下系统即可生效。 vim /etc/selinux/config # 重启系统 reboot6.11.打开浏览器,访问http://<ECS公网IP>:8080http://192.168.229.141:8080/6.12.博客页面进行相关设置七、安装typecho博客7.1.创建文件夹管理并下载typecho博客官网下载:https://typecho.org/downloadmkdir -p /typecho cd typecho wget https://github.com/typecho/typecho/releases/latest/download/typecho.zip unzip typecho.zip chmod -R 777 /typecho # 直接给 typecho 目录及子文件赋予所有权限,防止安装时出现其他问题7.2.修改openresty配置文件vi /usr/local/openresty/nginx/conf/nginx.conf systemctl reload openrestyserver { listen 8081; server_name localhost; location / { #修改html路径为解压博客文件路径 root /typecho; # 添加index.php index index.php index.html; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ .*\.php(\/.*)*$ { root /typecho; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; } } 7.3.创建数据库typecho# 进入数据库 mysql -u root -p 自己的密码 # 创建数据库 create database typecho;7.4.打开浏览器,访问http://<ECS公网IP>:8081http://192.168.229.141:8081/7.5.博客页面进行相关设置7.6.Typecho点击前台链接或者后台登录时出现404的解决方法官方给的解决方式是nginx.conf 里的 location 设置成这样location ~ .*\.php$要支持 pathinfo,需要改成location ~ .*\.php(\/.*)*$ #location ~ [^/]\.php(/|$)在某些老版本的php里面,可能还要打开php.ini里的cgi.fix_pathinfofind / -name php.ini vi /etc/opt/remi/php74/php.ini cgi.fix_pathinfo = 17.7.typecho只能打开主页,文章详细内容打不开问题原因:PHP这块不支持pathinfo修改为: server { listen 8081; server_name localhost; location / { #修改html路径为解压博客文件路径 root /typecho; # 添加index.php index index.php index.html; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ .*\.php(\/.*)*$ { root /typecho; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^(.+?.php)(/.*)$; set $path_info ""; set $real_script_name $fastcgi_script_name; if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$"){ set $real_script_name $1; set $path_info $2; } fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $real_script_name; fastcgi_param PATH_INFO $path_info; #fastcgi_pass 127.0.0.1:9000; include fastcgi_params; } }完整版:nginx.confuser www; # 指令名 指令值; #全局块,主要设置Nginx服务器整体运行的配置指令 worker_processes 1; # 默认为1,表示开启一个业务进程 error_log logs/error.log; # events块,主要设置,Nginx服务器与用户的网络连接,这一部分对Nginx服务器的性能影响较大 events { # 事件驱动模块 accept_mutex on; #设置Nginx网络连接序列化,防止多个进程对连接的争抢 multi_accept on; #设置Nginx的worker进程是否可以同时接收多个网络请求 worker_connections 1024; # 设置Nginx单个worker进程最大的连接数 use epoll; #设置Nginx使用的事件驱动模型,使用epoll函数来优化Ngin } # http块,是Nginx服务器配置中的重要部分,代理、缓存、日志记录、第三方模块配置... http { include mime.types; # 引入http mime类型 default_type application/octet-stream; # 如果mime类型没有匹配上,默认使用二进制流的方式传输 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; # 使用limux的sendfile(socket,file,len)高效网络传输,也就是数据0拷贝 tcp_nopush on; # 主要是用来提升网络包的传输效率 tcp_nodelay on; # 提高网络包传输的实时性 keepalive_timeout 65; include nginx_gzip.conf; # server块,是Nginx配置和虚拟主机vhost相关的内容 server { # 虚拟主机配置 listen 80; # 监听端口号80 server_name localhost; # 域名、主机名 # location块,基于Nginx服务器接收请求字符串与location后面的值进行匹配,对特定请求进行处理 location / { # 匹配路径 root html; # 文件根目录 index index.html index.htm; # 默认页名称 } error_page 500 502 503 504 /50x.html; # 报编码错误对应页面 location = /50x.html { root html; } } server { listen 8081; server_name localhost; location / { #修改html路径为解压博客文件路径 root /typecho; # 添加index.php index index.php index.html; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ .*\.php(\/.*)*$ { root /typecho; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^(.+?.php)(/.*)$; set $path_info ""; set $real_script_name $fastcgi_script_name; if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$"){ set $real_script_name $1; set $path_info $2; } fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $real_script_name; fastcgi_param PATH_INFO $path_info; #fastcgi_pass 127.0.0.1:9000; include fastcgi_params; } } } 7.8.配置Joe主题Joe主题网站:https://github.com/HaoOuBa/Joe.githttps://github.com/HaoOuBa/Joe.git7.9.关闭【Bye Bye】systemctl stop openresty systemctl stop php74-php-fpm systemctl stop mysqld # 关机 shutdown now八、Typecho博客进阶版8.1.环境和软件包准备CentOS 7.9 openresty 1.25.3.1 Mysql 5.7 PHP 7.4.33 Typecho8.2.启动服务systemctl start openresty systemctl start php74-php-fpm systemctl start mysqld8.3.创建文件夹解压mkdir -p /www/blog/typecho cd /www/blog/typecho unzip typecho.zip cd usr/themes tar -zxf myJoe-1.1.tar chown -R 777 /www/blog/typecho/usr/uploads8.4.配置文件# 创建用户www useradd www # 编辑php74配置文件 vim /etc/opt/remi/php74/php-fpm.d/www.conf # 修改内容 user = www group = www systemctl restart php74-php-fpmvi /usr/local/openresty/nginx/conf/nginx.conf # 重新加载配置文件 systemctl reload openrestynginx配置文件user www; # 指令名 指令值; #全局块,主要设置Nginx服务器整体运行的配置指令 worker_processes 2; # 默认为1,表示开启一个业务进程 error_log logs/error.log; # events块,主要设置,Nginx服务器与用户的网络连接,这一部分对Nginx服务器的性能影响较大 events { # 事件驱动模块 accept_mutex on; #设置Nginx网络连接序列化,防止多个进程对连接的争抢 multi_accept on; #设置Nginx的worker进程是否可以同时接收多个网络请求 worker_connections 1024; # 设置Nginx单个worker进程最大的连接数 use epoll; #设置Nginx使用的事件驱动模型,使用epoll函数来优化Ngin } # http块,是Nginx服务器配置中的重要部分,代理、缓存、日志记录、第三方模块配置... http { include mime.types; # 引入http mime类型 default_type application/octet-stream; # 如果mime类型没有匹配上,默认使用二进制流的方式传输 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; # 使用limux的sendfile(socket,file,len)高效网络传输,也就是数据0拷贝 tcp_nopush on; # 主要是用来提升网络包的传输效率 tcp_nodelay on; # 提高网络包传输的实时性 keepalive_timeout 65; # 可以单独定义nginx_gzip.conf # include nginx_gzip.conf; # Gzip压缩功能的实例配置 gzip on; #开启gzip功能 gzip_types *; #压缩源文件类型,根据具体的访问资源类型设定 gzip_comp_level 6; #gzip压缩级别 gzip_min_length 1024; #进行压缩响应页面的最小长度,content-length gzip_buffers 4 16K; #缓存空间大小 gzip_http_version 1.1; #指定压缩响应所需要的最低HTTP请求版本 gzip_vary on; #往头信息中添加压缩标识 gzip_disable "MSIE [1-6]\."; #对IE6以下的版本都不进行压缩 gzip_proxied off; #nginx作为反向代理压缩服务端返回数据的条件 #隐藏版本号 server_tokens off; server { listen 80; server_name localhost; root /www/blog/typecho; # -e表示只要filename存在,则为真,不管filename是什么类型,当然这里加了!就取反 if (!-e $request_filename) { rewrite ^(.*)$ /index.php$1 last; } location / { index index.php index.html index.htm; if (!-e $request_filename) { rewrite . /index.php last; } } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ .*\.php(\/.*)*$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^(.+?.php)(/.*)$; set $path_info ""; set $real_script_name $fastcgi_script_name; if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$"){ set $real_script_name $1; set $path_info $2; } fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $real_script_name; fastcgi_param PATH_INFO $path_info; include fastcgi_params; } # 设置强缓存 location ~ .*\.(js|css|png|jpeg|bmp|swf|gif)$ { add_header Cache-Control max-age=36000; #36000秒 10h # expires 36000; #36000秒 10h } error_page 500 502 503 504 /50x.html; # 报编码错误对应页面 location = /50x.html { root html; } } }8.5.网页访问:输入Ip访问出现以下错误cd /www/blog/typecho # 粘贴以上内容 vi config.inc.php<?php // site root path define('__TYPECHO_ROOT_DIR__', dirname(__FILE__)); // plugin directory (relative path) define('__TYPECHO_PLUGIN_DIR__', '/usr/plugins'); // theme directory (relative path) define('__TYPECHO_THEME_DIR__', '/usr/themes'); // admin directory (relative path) define('__TYPECHO_ADMIN_DIR__', '/admin/'); // register autoload require_once __TYPECHO_ROOT_DIR__ . '/var/Typecho/Common.php'; // init \Typecho\Common::init(); // config db $db = new \Typecho\Db('Pdo_Mysql', 'typecho_'); $db->addServer(array ( 'host' => 'localhost', 'port' => 3306, 'user' => 'root', 'password' => '123456', 'charset' => 'utf8mb4', 'database' => 'typecho', 'engine' => 'InnoDB', 'sslCa' => '', 'sslVerify' => true, ), \Typecho\Db::READ | \Typecho\Db::WRITE); \Typecho\Db::set($db);8.6.网页配置8.7.Typecho忘记后台密码如何解决操作步骤找到数据库选择typecho绑定的数据库名将typecho_users-编辑-更改password字段的值为e10adc3949ba59abbe56e057f20f883e此时后台密码还原为123456九、Typecho博客设置域名开启SSL实例【 --with-http_ssl_module模块】9.1.阿里云域名解析注册9.1.2.注册域名网站:https://free.aliyun.com?userCode=yu4fhct79.1.3.解决问题--- 未使用系统分配DNS地址,是你的域名解析DNS地址不是当前系统的DNS地址9.1.4.问题解决9.2.添加域名解析9.3.生成证书9.3.1.方式一:使用阿里云/腾讯云等第三方服务进行购买9.3.2.方式二:使用openssl生成证书先要确认当前系统是否有安装opensslopenssl version安装下面的命令进行生成# 放在配置文件同目录下新建文件夹 mkdir /usr/local/openresty/nginx/conf/cert cd /usr/local/openresty/nginx/conf/cert openssl genrsa -des3 -out server.key 1024 openssl req -new -key server.key -out server.csr cp server.key server.key.org openssl rsa -in server.key.org -out server.key openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt9.3.3.证书位置9.4.开启SSL实例9.4.1.模板# 只需在原本配置https的server下添加location即可 http { # ......... # ......... server { #监听443端口 listen 443 ssl; # ......... #跨域 #add_header 'Access-Control-Allow-Origin' '*' always; #add_header 'Access-Control-Max-Age' '1000' always; #add_header 'Access-Control-Allow-Methods' "POST, GET, OPTIONS, DELETE, PUT" always; #add_header 'Access-Control-Allow-Headers' "x-requested-with, Content-Type, Origin, authorization, Accept, client-security-token" always; # ......... # 不同业务 location /a { proxy_pass http://xxx.xxx.xxx.xxx:xx # http://公网地址:项目端口号; } # 配置多个服务 # location /b { # proxy_pass http://云服务器ip:8090/; #反向代理,将请求转发给后端应用程序 # proxy_set_header Host $host; # proxy_set_header X-Real-IP $remote_addr; # proxy_set_header X-Real-PORT $remote_port; # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # proxy_set_header X-Forwarded-Proto $scheme; # } } # ......... # ......... }9.4.2.nginx.conf配置文件user www; # 指令名 指令值; #全局块,主要设置Nginx服务器整体运行的配置指令 worker_processes 2; # 默认为1,表示开启一个业务进程 error_log logs/error.log; # events块,主要设置,Nginx服务器与用户的网络连接,这一部分对Nginx服务器的性能影响较大 events { # 事件驱动模块 accept_mutex on; #设置Nginx网络连接序列化,防止多个进程对连接的争抢 multi_accept on; #设置Nginx的worker进程是否可以同时接收多个网络请求 worker_connections 1024; # 设置Nginx单个worker进程最大的连接数 use epoll; #设置Nginx使用的事件驱动模型,使用epoll函数来优化Ngin } # http块,是Nginx服务器配置中的重要部分,代理、缓存、日志记录、第三方模块配置... http { include mime.types; # 引入http mime类型 default_type application/octet-stream; # 如果mime类型没有匹配上,默认使用二进制流的方式传输 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; # 使用limux的sendfile(socket,file,len)高效网络传输,也就是数据0拷贝 tcp_nopush on; # 主要是用来提升网络包的传输效率 tcp_nodelay on; # 提高网络包传输的实时性 keepalive_timeout 65; # 单独定义nginx_gzip.conf # 引入Gzip压缩功能的实例配置 # include nginx_gzip.conf; # Gzip压缩功能的实例配置 gzip on; #开启gzip功能 gzip_types *; #压缩源文件类型,根据具体的访问资源类型设定 gzip_comp_level 6; #gzip压缩级别 gzip_min_length 1024; #进行压缩响应页面的最小长度,content-length gzip_buffers 4 16K; #缓存空间大小 gzip_http_version 1.1; #指定压缩响应所需要的最低HTTP请求版本 gzip_vary on; #往头信息中添加压缩标识 gzip_disable "MSIE [1-6]\."; #对IE6以下的版本都不进行压缩 gzip_proxied off; #nginx作为反向代理压缩服务端返回数据的条件 #隐藏openresty版本号 server_tokens off; server { listen 80; server_name <yourdomain>;# 你的域名 return 301 https://$server_name$request_uri; #将所有HTTP请求通过rewrite指令重定向到HTTPS #rewrite ^(.*)$ https://$server_name$1 permanent; # 把http的域名请求转成https location / { root html; index index.html index.htm; } } #从此开始443端口配置https协议 server { #配置HTTPS的默认访问端口为443 #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。 #如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on listen 443 ssl; # 填写证书绑定的域名 server_name <yourdomain>; root /www/blog/typecho; # 开启ssl支持,证书、私钥文件文件放在/usr/local/openresty/nginx/conf/cert/目录下 ssl_certificate cert/server.cert; #证书文件路径cert/<cert-file-name>.pem ssl_certificate_key cert/server.key; #私钥文件路径cert/<cert-file-name>.key ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; # 缓存有效期 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #安全链接可选的加密协议 ssl_prefer_server_ciphers on; #使用服务器端的首选算法 # -e表示只要filename存在,则为真,不管filename是什么类型,当然这里加了!就取反 if (!-e $request_filename) { rewrite ^(.*)$ /index.php$1 last; } location / { index index.php index.html index.htm; if (!-e $request_filename) { rewrite . /index.php last; } } # 配置php访问路由 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ .*\.php(\/.*)*$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^(.+?.php)(/.*)$; set $path_info ""; set $real_script_name $fastcgi_script_name; if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$"){ set $real_script_name $1; set $path_info $2; } fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $real_script_name; fastcgi_param PATH_INFO $path_info; include fastcgi_params; } # 设置强缓存 location ~ .*\.(js|css|png|jpeg|bmp|swf|gif)$ { expires 36000; #36000秒 10h } error_page 500 502 503 504 /50x.html; # 报编码错误对应页面 location = /50x.html { root html; } } }nginx_gzip.conf# 单独定义nginx_gzip.conf # include nginx_gzip.conf; # Gzip压缩功能的实例配置 gzip on; #开启gzip功能 gzip_types *; #压缩源文件类型,根据具体的访问资源类型设定 gzip_comp_level 6; #gzip压缩级别 gzip_min_length 1024; #进行压缩响应页面的最小长度,content-length gzip_buffers 4 16K; #缓存空间大小 gzip_http_version 1.1; #指定压缩响应所需要的最低HTTP请求版本 gzip_vary on; #往头信息中添加压缩标识 gzip_disable "MSIE [1-6]\."; #对IE6以下的版本都不进行压缩 gzip_proxied off; #nginx作为反向代理压缩服务端返回数据的条件9.5.验证endl 本文章下载链接本文章下载链接:https://www.lanzv.com/i8d6p1npxrje 密码:i0ntendl
2024年09月27日
6 阅读
0 评论
0 点赞
2024-09-20
Linux服务器相关软件安装汇总
@TOC一、Linux防火墙配置1.1.关闭防火墙# 关闭防火墙 systemctl stop firewalld.service # 禁止防火墙开机启动 systemctl disable firewalld.service1.2.放行80端口# 放行端口 firewall-cmd --zone=public --add-port=80/tcp --permanent # 重新加载防火墙 firewall-cmd --reload1.3.开启防火墙systemctl start firewalld1.4.重启防火墙systemctl restart firewalld1.5.重载规则firewall-cmd --reload1.6.查看已配置规则firewall-cmd --list-all1.7.指定端口和ip访问firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.229.136" port protocol="tcp" port="8080" accept"1.8.移除规则firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.229.136" port protocol="tcp" port="8080" accept"1.9.查询防火墙中指定的端口是否开放firewall-cmd --query-port=9002/tcp1.10.开放一个指定的端口9002# --add-port=9002/tcp,表示添加指定9002端口,格式为:端口/通讯协议 # --permanent表示设置为持久 # --zone 表示作用域 firewall-cmd --zone=public --add-port=9002/tcp --permanent # 重新加载防火墙 firewall-cmd --reload # 再次查询开放端口 firewall-cmd --list-ports1.11.批量添加开放端口# --add-port表示添加指定端口 # --permanent表示设置为持久 firewall-cmd --zone=public --add-port=9001-9003/tcp --permanent # 重新加载防火墙 firewall-cmd --reload # 再次查询开放端口 firewall-cmd --list-ports1.12移除一个指定的端口9002# --remove-port表示移除指定端口 firewall-cmd --zone=public --remove-port=9002/tcp --permanent # 重新加载防火墙 firewall-cmd --reload # 再次查询开放端口 firewall-cmd --list-ports@TOC二、Linux配置静态上网2.1.配置上网修改配置网卡配置文件我用的版本是CentOS-7.9.29-x86_64-Minimal-2207-02,配置上网就无需配置,低版本需要配置下载网址:http://mirror.datacenter.mn/centos/7.9.2009/isos/x86_64/vi /etc/sysconfig/network-scripts/ifcfg-ens33TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="dhcp" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" UUID="aaf96f45-f242-4717-8c4b-86b751cd72e6" DEVICE="ens33" # 修改ONBOOT="yes" ONBOOT="yes"# 重启网络服务 systemctl restart network# 测试 ping qq.com2.2.配置静态IP之前的网络配置是使用dhcp方式分配ip地址,这种方式会在系统每次联网的时候分配一个ip给我们用,也就是说有可能系统下次启动的时候ip会变,这样非常不方便我们管理。配置静态ip首先需要打开网卡配置文件修改完成后,重启测试即可--查看配置上网测试vi /etc/sysconfig/network-scripts/ifcfg-ens33TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" # 修改dhcp为static BOOTPROTO="static" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" UUID="aaf96f45-f242-4717-8c4b-86b751cd72e6" DEVICE="ens33" ONBOOT="yes" # 手动配置ip地址,添加以下配置 # ip addr 命令获取ip地址 IPADDR="192.168.229.136" NETMASK="255.255.255.0" # 网关获取如下 GATEWAY="192.168.229.2" DNS1="8.8.8.8"# 重启网络服务 systemctl restart network# 测试 ping qq.com三、Linux下安装 Redis7【redis-7.2.4.tar.gz】3.1.下载redis的安装包官网下载:https://redis.io/download历史版本:https://download.redis.io/releases/3.1.1.手动下载Redis压缩包并上传【redis-7.2.4.tar.gz】3.1.2.wget工具下载redis-7.2.4.tar.gz# 安装wget工具 yum -y install wget # 创建自己的redis文件夹 mkdir -p /redis/core cd /redis/core # 自己复制的链接地址 wget https://download.redis.io/releases/redis-7.2.4.tar.gz3.2.将安装包进行解压缩tar -zxf redis-7.2.4.tar.gz3.3.进入redis的安装包cd redis-7.2.43.4.检查是否有gcc 环境gcc -v# 首先安装编译需要的环境依赖 yum install gcc-c++3.5.编译和安装并指定安装目录 make install PREFIX=/usr/local/redis# 如果安装redis出现错误执行以下命令,需要清理源码目录后再次执行编译 make distclean# PREFIX关键字的作用是编译的时候用于指定程序存放的路径,指定了redis必须存在 /usr/local/redis 目录 #方便后续的卸载,直接rm -rf /usr/local/redis 即可删除redis make PREFIX=/usr/local/redis install# 可执行文件存放在 /usr/local/bin 目录 # 库文件会存放在 /usr/local/lib 目录 # 配置文件会存放在/usr/local/etc目录 # 其他的资源文件会存放在 usr/local/share 目录 # 不建议,不方便后续卸载 make install3.5.拷贝redis配置文件redis.conf到/usr/local/redis目录中# 查找redis.conf find / -name redis.conf # 将redis的源码目录中复制 redis.conf 到 redis 的安装目录 cp /redis/core/redis-7.2.4/redis.conf /usr/local/redis3.6.redis的bin目录文件作用介绍可执行命令在/usr/local/bin 目录redis-benchmark: 性能测试工具,可以在自己机器运行,看看自己机器性能如何redis-check-aof:修复有问题的 AOF 文件,rdb 和 aof 后面讲redis-check-rdb:修复有问题的 dump.rdb 文件redis-sentinel:Redis 集群使用redis-server:Redis 服务器启动命令redis-cli:客户端,操作入口3.7.修改redis.conf配置文件requirepass 123456 # 开启redis验证,修改为自己的密码 protected-mode no #需要远程连接,设置为no,取消保护模式 #bind 127.0.0.1 # 允许redis远程连接,必须注释掉(注释或者改为bind 0.0.0.0) port 6379 #redis的端口 daemonize yes #后台启动redis设置为yes,开启守护进程模式 appendonly yes #开启redis数据持久化3.8.重要的配置项配置项名称配置项值范围说明daemonizeyes、noyes表示启用守护进程,默认是no即不以守护进程方式运行。其中Windows系统下不支持启用守护进程方式运行port 指定 Redis 监听端口,默认端口为 6379bind 绑定的主机地址,如果需要设置远程访问则直接将这个属性备注下或者改为bind * 即可,这个属性和下面的protected-mode控制了是否可以远程访问 。protected-modeyes 、no保护模式,该模式控制外部网是否可以连接redis服务,默认是yes,所以默认我们外网是无法访问的,如需外网连接rendis服务则需要将此属性改为no。timeout300当客户端闲置多长时间后关闭连接,如果指定为 0,表示关闭该功能logleveldebug、verbose、notice、warning日志级别,默认为 noticedatabases16设置数据库的数量,默认的数据库是0。整个通过客户端工具可以看得到rdbcompressionyes、no指定存储至本地数据库时是否压缩数据,默认为 yes,Redis 采用 LZF 压缩,如果为了节省 CPU 时间,可以关闭该选项,但会导致数据库文件变的巨大。dbfilenamedump.rdb指定本地数据库文件名,默认值为 dump.rdbdir 指定本地数据库存放目录requirepass 设置 Redis 连接密码,如果配置了连接密码,客户端在连接 Redis 时需要通过 AUTH 命令提供密码,默认关闭maxclients0设置同一时间最大客户端连接数,默认无限制,Redis 可以同时打开的客户端连接数为 Redis 进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis 会关闭新的连接并向客户端返回 max number of clients reached 错误信息。maxmemoryXXX 指定 Redis 最大内存限制,Redis 在启动时会把数据加载到内存中,达到最大内存后,Redis 会先尝试清除已到期或即将到期的 Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis 新的 vm 机制,会把 Key 存放内存,Value 会存放在 swap 区。配置项值范围列里XXX为数值。3.9.验证redis是否成功安装cd /usr/local/redis/bin/ ./redis-server -v ./redis-cli -v3.10.运行时出现以下警告123156:C 23 Jan 2024 22:22:22.467 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.原因:当前系统不允许超量申请内存空间解决:让当前系统允许超量申请内存空间# 编辑sysctl.conf文件 vim /etc/sysctl.conf #添加以下行,修改配置启用内存过度分配 vm.overcommit_memory = 1 #执行命令"sysctl -p" 或 重启系统,使配置生效 sysctl -p # 或者使更改生效,运行以下命令 sysctl vm.overcommit_memory=1 # 验证更改是否已生效 cat /proc/sys/vm/overcommit_memory # 返回1,则表示内存过度分配已成功启用3.11.启动rediscd /usr/local/redis #进入redis安装目录,执行下面命令启动redis服务 ./bin/redis-server redis.conf # 查看 Redis 服务器进程 ps -ef | grep redis3.12.启动redis-cli测试rediscd /usr/local/redis #进入redis安装目录,执行下面命令启动redis-cli ./bin/redis-cli3.13.关闭 Redis 服务器./bin/redis-cli shutdown # 查看 Redis 服务器进程 ps -ef | grep redis # kill -9 进程的PID kill -9 27320四、将redis设置成系统服务4.1.创建redis服务文件vim /usr/lib/systemd/system/redis.service[Unit] Description=Redis Server After=network.target [Service] Type=forking # 配置成自己的路径 ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf ExecStop=/usr/local/redis/bin/redis-cli shutdown Restart=always [Install] WantedBy=multi-user.targetDescription:服务描述After:指定服务依赖的其他服务启动之后再启动Type:指定服务的类型,这里设置为forking,表示服务以fork方式启动ExecStart:指定服务的启动命令ExecStop:指定服务的停止命令Restart:指定服务在退出后是否自动重启WantedBy:指定服务的启动级别4.2.重新加载服务配置文件使之生效# 重新加载服务配置文件 systemctl daemon-reload4.3.服务操作命令#启动redis服务 systemctl start redis #停止redis服务 systemctl stop redis #重新启动服务 systemctl restart redis #查看服务当前状态 systemctl status redis #设置开机自启动 systemctl enable redis #停止开机自启动 systemctl disable redis五、配置Redis环境变量5.1.编辑环境变量配置文件vim /etc/profile5.2.文件末尾添加以下内容# redis export REDIS_HOME=/usr/local/redis export PATH=$PATH:$REDIS_HOME/bin/5.3.保存并退出后,刷新配置信息source /etc/profile5.4.验证环境变量redis-server -v redis-cli -v六、Nginx环境准备6.1.Nginx版本Nginx的官方网站为: http://nginx.orgNginx的官方下载网站为http://nginx.org/en/download.html6.2.获取Nginx源码http://nginx.org/download/打开上述网站,就可以查看到Nginx的所有版本,选中自己需要的版本进行下载。6.3.准备服务器系统6.3.1.环境准备FinalShell SSH工具官网:http://www.hostbuf.com/FinalShell SSH工具官网下载:http://www.hostbuf.com/t/988.htmlCentos官网:https://www.centos.org/download/MobaXterm官网:https://mobaxterm.mobatek.net/MobaXterm官网下载:https://mobaxterm.mobatek.net/download.html6.3.2.确认centos的内核准备一个内核为2.6及以上版本的操作系统,因为linux2.6及以上内核才支持epoll,而Nginx需要解决高并发压力问题是需要用到epoll# 查询linux的内核版本 uname -a6.3.3.确保centos能联网ping www.baidu.com6.3.4.确认关闭防火墙关闭的方式有如下两种:# 关闭运行的防火墙,系统重新启动后,防火墙将重新打开 systemctl stop firewalld # 永久关闭防火墙,,系统重新启动后,防火墙依然关闭 systemctl disable firewalld # 查看防火墙状态 systemctl status firewalld6.3.5.确认停用selinuxselinux(security-enhanced linux),美国安全局对于强制访问控制的实现,在linux2.6内核以后的版本中,selinux已经成功内核中的一部分。可以说selinux是linux史上最杰出的新安全子系统之一。虽然有了selinux,我们的系统会更安全,但是对于我们的学习Nginx的历程中,会多很多设置,所以这块建议大家将selinux进行关闭。# 查看状态 sestatus如果查看不是disabled状态,我们可以通过修改配置文件来进行设置,修改SELINUX=disabled,然后重启下系统即可生效。vim /etc/selinux/config # 重启系统 reboot七、Nginx安装方式【源码安装和yum安装】7.1.Nginx源码安装需要提前准备7.1.1.GCC编译器Nginx是使用C语言编写的程序,因此想要运行Nginx就需要安装一个编译工具。GCC就是一个开源的编译器集合,用于处理各种各样的语言,其中就包含了C语言。# 安装gcc yum install -y gcc # 查看gcc是否安装成功 gcc --version7.1.2.PCRENginx在编译过程中需要使用到PCRE库(perl Compatible Regular Expressoin 兼容正则表达式库),因为在Nginx的Rewrite模块和http核心模块都会使用到PCRE正则表达式语法。# 安装 PCRE库 yum install -y pcre pcre-devel rpm -qa pcre pcre-devel7.1.3.zlibzlib库提供了开发人员的压缩算法,在Nginx的各个模块中需要使用gzip压缩,所以我们也需要提前安装其库及源代码zlib和zlib-develyum install -y zlib zlib-devel rpm -qa zlib zlib-devel7.1.4.OpenSSLOpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包进行安全通信,并且避免被窃听。SSL:Secure Sockets Layer安全套接协议的缩写,可以在Internet上提供秘密性传输,其目标是保证两个应用间通信的保密性和可靠性。-在Nginx中,如果服务器需要提供安全网页时就需要用到OpenSSL库,所以我们需要对OpenSSL的库文件及它的开发安装包进行一个安装。yum install -y openssl openssl-devel rpm -qa openssl openssl-devel上述命令,一个个来的话比较麻烦,我们也可以通过一条命令来进行安装# 一条命令来进行全部安装 yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel gcc --version rpm -qa pcre pcre-devel zlib zlib-devel openssl openssl-devel7.1.5.警告时缺少安装包安装gccyum -y install gccchecking for OS + Linux 3.10.0-693.el7.x86_64 x86_64 checking for C compiler ... not found ./configure: error: C compiler cc is not found安装perl库yum install -y pcer-devl./configure: error: the HTTP rewrite module requires the PCRE library. You can either disable the module by using --without-http_rewrite_module option, or install the PCRE library into the system, or build the PCRE library statically from the source with nginx by using --with-pcre=<path> option. 安装zlib库yum install -y zlib zlib-devel./configure: error: the HTTP gzip module requires the zlib library. You can either disable the module by using --without-http_gzip_module option, or install the zlib library into the system, or build the zlib library statically from the source with nginx by using --with-zlib=<path> option. 7.2.方案一:Nginx的源码安装7.2.1.进入官网查找需要下载版本的链接地址,然后使用wget命令进行下载yum -y install wget wget http://nginx.org/download/nginx-1.24.0.tar.gz7.2.2.将下载的资源进行包管理mkdir -p /app/nginx/core mv nginx-1.24.0.tar.gz /app/nginx/core7.2.3.解压缩cd /app/nginx/core tar -zxvf nginx-1.24.0.tar.gz7.2.4.进入资源文件中,发现configurecd /app/nginx/core/nginx-1.24.07.2.5.指定编译参数,编译Nginx复杂安装./configure --prefix=/usr/local/nginx \ --sbin-path=/usr/local/nginx/sbin/nginx \ --modules-path=/usr/local/nginx/modules \ --conf-path=/usr/local/nginx/conf/nginx.conf \ --error-log-path=/usr/local/nginx/logs/error.log \ --http-log-path=/usr/local/nginx/logs/access.log \ --pid-path=/usr/local/nginx/logs/nginx.pid \ --lock-path=/usr/local/nginx/logs/nginx.lock \ --with-http_gzip_static_module \ --with-http_ssl_module \ --with-stream7.2.6.编译&安装make & make install7.2.7.启动Nginx进入安装好的目录 /usr/local/nginx/sbincd /usr/local/nginx/sbin ./nginx -V 查看版本详细信息 ./nginx 启动 ./nginx -s stop 快速停止 ./nginx -s quit 优雅关闭,在退出前完成已经接受的连接请求 ./nginx -s reload 重新加载配置7.2.8.测试7.3.方案二:yum安装【默认安装最新版】官网:http://nginx.org/en/docs/install.htmlRHEL and derivatives:http://nginx.org/en/linux_packages.html#RHEL使用源码进行简单安装,我们会发现安装的过程比较繁琐,需要提前准备GCC编译器、PCRE兼容正则表达式库、zlib压缩库、OpenSSL安全通信的软件库包,然后才能进行Nginx的安装。7.3.1.官方安装步骤RHEL and derivatives:http://nginx.org/en/linux_packages.html#RHELRHEL and derivativesThis section applies to Red Hat Enterprise Linux and its derivatives such as CentOS, Oracle Linux, Rocky Linux, AlmaLinux.Install the prerequisites:sudo yum install yum-utilsTo set up the yum repository, create the file named /etc/yum.repos.d/nginx.repo with the following contents:vim /etc/yum.repos.d/nginx.repo[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=trueBy default, the repository for stable nginx packages is used. If you would like to use mainline nginx packages, run the following command:# 切换成主线版本,暂时不需要 sudo yum-config-manager --enable nginx-mainlineTo install nginx, run the following command:sudo yum install nginxWhen prompted to accept the GPG key, verify that the fingerprint matches 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62, and if so, accept it.7.3.2.安装yum-utils工具sudo yum install -y yum-utils7.3.3.添加yum源文件vim /etc/yum.repos.d/nginx.repo[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true7.3.4.查看是否安装成功yum list | grep nginx7.3.5.使用yum进行安装yum -y install nginx7.3.6.查看nginx的安装位置whereis nginx7.3.7.启动测试cd /usr/sbin ./nginx7.4.卸载nginx7.4.1.步骤一:需要将nginx的进程关闭# 先看下nginx是否在运行中 ps aux | grep nginx # 如果在运行中,则停止 ./nginx -s stop 或者直接杀死进程 pkill nginx或 kill -9 进程号7.4.2.步骤二:将安装的nginx进行删除cd ~ # 找到所有nginx有关文件 find / -name nginx* # 删除有关nginx的文件(linux中一切都文件) rm -rf /usr/local/nginx7.4.3.步骤三:将安装包之前编译的环境清除掉cd /app/nginx/core/nginx-1.24.0 make clean # 卸载nginx的有关依赖 yum remove nginx八、Nginx目录结构分析8.1.Nginx目录结构# 安装tree工具展示目录结构 yum -y install tree # 查看centos系统上的文件目录结构 tree /usr/local/nginx # 显示所有文件和目录 tree /usr/local/nginx -a8.2.nginx所有配置文件目录[root@192 sbin]# tree /usr/local/nginx /usr/local/nginx ├── client_body_temp ├── conf # 用来存放配置文件相关的 │ ├── fastcgi.conf # fastcgi相关配置文件 │ ├── fastcgi.conf.default # fastcgi.conf的备份文件 │ ├── fastcgi_params # fastcgi的参数文件 │ ├── fastcgi_params.default # fastcgi的参数备份文件 │ ├── koi-utf │ ├── koi-win │ ├── mime.types # 媒体类型,记录的是HTTP协议中的Content-Type的值和文件后缀名的对应关系 │ ├── mime.types.default # mime.types的备份文件 │ ├── nginx.conf # 这个是Nginx的核心配置文件 │ ├── nginx.conf.default # nginx.conf的备份文件 │ ├── scgi_params # scgi的参数文件 │ ├── scgi_params.default # scgi的参数备份文件 │ ├── uwsgi_params # uwsgi的参数文件 │ ├── uwsgi_params.default # uwsgi的参数备份文件 │ └── win-utf # koi-utf、koi-win、win-utf这三个文件都是与编码转换映射相关的配置文件,用来将一种编码转换成另一种编码 ├── fastcgi_temp ├── html # 存放nginx自带的两个静态的html页面 │ ├── 50x.html # 访问失败后的失败页面 │ └── index.html # 成功访问的默认首页 ├── logs # 记录入门的文件,当nginx服务器启动后,这里面会有 access.log error.log 和nginx.pid三个文件出现 │ ├── access.log # 访问日志 │ ├── error.log # 错误日志 │ └── nginx.pid # nginx进程的PID ├── proxy_temp ├── sbin # nginx的主程序 │ └── nginx # nginx是用来控制Nginx的启动和停止等相关的命令 ├── scgi_temp └── uwsgi_temp# 查看Nginx的PID more /usr/local/nginx/logs/nginx.pid # 查看日志 tail -f /usr/local/nginx/logs/access.log tail -f /usr/local/nginx/logs/error.log8.3.nginx.confNginx的核心配置文件默认是放在/usr/local/nginx/conf/nginx.confvi /usr/local/nginx/conf/nginx.confworker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }8.4.Nginx基础配置文件nginx.conf 解读# 指令名 指令值; #全局块,主要设置Nginx服务器整体运行的配置指令 worker_processes 1; # 默认为1,表示开启一个业务进程 # events块,主要设置,Nginx服务器与用户的网络连接,这一部分对Nginx服务器的性能影响较大 events { # 事件驱动模块 accept_mutex on; #设置Nginx网络连接序列化,防止多个进程对连接的争抢 multi_accept on; #设置Nginx的worker进程是否可以同时接收多个网络请求 worker_connections 1024; # 设置Nginx单个worker进程最大的连接数 use epoll; #设置Nginx使用的事件驱动模型,使用epoll函数来优化Ngin } # http块,是Nginx服务器配置中的重要部分,代理、缓存、日志记录、第三方模块配置... http { include mime.types; # 引入http mime类型 default_type application/octet-stream; # 如果mime类型没有匹配上,默认使用二进制流的方式传输 sendfile on; # 使用limux的sendfile(socket,file,len)高效网络传输,也就是数据0拷贝 tcp_nopush on; # 主要是用来提升网络包的传输效率 tcp_nodelay on; # 提高网络包传输的实时性 keepalive_timeout 65; include nginx_gzip.conf; # server块,是Nginx配置和虚拟主机vhost相关的内容 server { # 虚拟主机配置 listen 80; # 监听端口号80 server_name localhost; # 域名、主机名 # location块,基于Nginx服务器接收请求字符串与location后面的值进行匹配,对特定请求进行处理 location / { # 匹配路径 root html; # 文件根目录 index index.html index.htm; # 默认页名称 } error_page 500 502 503 504 /50x.html; # 报编码错误对应页面 location = /50x.html { root html; } } }nginx_gzip.conf# Gzip压缩功能的实例配置 gzip on; #开启gzip功能 gzip_types *; #压缩源文件类型,根据具体的访问资源类型设定 gzip_comp_level 6; #gzip压缩级别 gzip_min_length 1024; #进行压缩响应页面的最小长度,content-length gzip_buffers 4 16K; #缓存空间大小 gzip_http_version 1.1; #指定压缩响应所需要的最低HTTP请求版本 gzip_vary on; #往头信息中添加压缩标识 gzip_disable "MSIE [1-6]\."; #对IE6以下的版本都不进行压缩 gzip_proxied off; #nginx作为反向代理压缩服务端返回数据的条件gzip on; gzip_types *; gzip_comp_level 6; gzip_min_length 1024; gzip_buffers 4 16K; gzip_http_version 1.1; gzip_vary on; gzip_disable "MSIE [1-6]\."; gzip_proxied off;九、Nginx服务器版本升级和新增模块需求:Nginx的版本最开始使用的是nginx-1.22.1,由于服务升级,需要将Nginx的版本升级到nginx-1.24.0,要求Nginx不能中断提供服务。为了应对上述的需求,这里我们给大家提供两种解决方案:方案一:使用Nginx服务信号完成Nginx的升级方案二:使用Nginx安装目录的make命令完成升级9.1.环境准备9.1.1.先准备两个版本的Nginx分别是 1.22.1和1.24.09.1.2.使用Nginx源码安装的方式将1.22.1版本安装成功并正确访问# 进入安装目录,指定编译参数,按照自己需求 ./configure --prefix=/usr/local/nginx \ --sbin-path=/usr/local/nginx/sbin/nginx \ --modules-path=/usr/local/nginx/modules \ --conf-path=/usr/local/nginx/conf/nginx.conf \ --error-log-path=/usr/local/nginx/logs/error.log \ --http-log-path=/usr/local/nginx/logs/access.log \ --pid-path=/usr/local/nginx/logs/nginx.pid \ --lock-path=/usr/local/nginx/logs/nginx.lock \ --with-http_gzip_static_module \ --with-http_ssl_module \ --with-streammake && make install9.1.3.将Nginx1.24.0进行参数配置和编译,不需要进行安装。# 进入安装目录,指定编译参数,按照自己需求 ./configure --prefix=/usr/local/nginx \ --sbin-path=/usr/local/nginx/sbin/nginx \ --modules-path=/usr/local/nginx/modules \ --conf-path=/usr/local/nginx/conf/nginx.conf \ --error-log-path=/usr/local/nginx/logs/error.log \ --http-log-path=/usr/local/nginx/logs/access.log \ --pid-path=/usr/local/nginx/logs/nginx.pid \ --lock-path=/usr/local/nginx/logs/nginx.lock \ --with-http_gzip_static_module \ --with-http_ssl_module \ --with-stream# 不需要进行安装,直接make make9.2.方案一:使用Nginx服务信号进行升级9.2.1.将1.22.1版本的sbin目录下的nginx进行备份cd /usr/local/nginx/sbin mv nginx nginxold9.2.2.将Nginx1.24.0安装目录编译后的objs目录下的nginx文件,拷贝到原来/usr/local/nginx/sbin目录下cd /nginx/core/nginx-1.24.0/objs cp nginx /usr/local/nginx/sbin9.2.3.发送信号USR2给Nginx的1.22.1版本对应的master进程kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`9.2.4.发送信号QUIT给Nginx的1.22.1版本对应的master进程kill -QUIT `more /usr/local/logs/nginx.pid.oldbin`9.3.方案二:使用Nginx安装目录的make upgrade命令完成升级9.3.1.将1.22.1版本的sbin目录下的nginx进行备份cd /usr/local/nginx/sbin mv nginx nginxold9.3.2.将Nginx1.24.0安装目录编译后的objs目录下的nginx文件,拷贝到原来/usr/local/nginx/sbin目录下cd /nginx/core/nginx-1.24.0/objs cp nginx /usr/local/nginx/sbin9.3.3.进入到安装目录,执行make upgrademake upgrade9.3.4.查看是否更新成功cd /usr/local/nginx/sbin ./nginx -v十、Nginx安装成系统服务10.1.创建脚本vi /usr/lib/systemd/system/nginx.service10.2.服务脚本内容[Unit] Description=nginx web service Documentation=http://nginx.org/en/docs/ After=network.target [Service] Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s stop PrivateTmp=true [Install] WantedBy=default.target[Unit]:服务的说明 Description:描述服务 After:描述服务类别 [Service]服务运行参数的设置 Type=forking是后台运行的形式ExecStartpre是检查配置文件 ExecStart为服务的具体运行命令 ExecReload为重启命令 ExecStop为停止命令 PrivateTmp=True表示给服务分配独立的临时空间 注意:[Service]的启动、重启、停止命令全部要求使用绝对路径 [Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为310.3.进行权限设置chmod 755 /usr/lib/systemd/system/nginx.service10.4.开机启动# 重新加载系统服务 systemctl daemon-reload # 启动服务 systemctl start nginx #停止 systemctl stop nginx #重启 systemctl restart nginx #重新加载配置文件 systemctl reload nginx # 查看nginx状态 systemctl status nginx # 开机启动 systemctl enable nginx.service # 查看nginx是否启动 ps -ef | grep nginx十一、Linux下安装openresty11.1.概述OpenResty是由淘宝工程师开发的,所以其官方网站(http://openresty.org/)我们读起来是非常的方便。OpenResty是一个基于Nginx与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。所以本身OpenResty内部就已经集成了Nginx和Lua,所以我们使用起来会更加方便。11.2.下载OpenResty并安装相关依赖:https://openresty.org/download/openresty-1.25.3.1.tar.gz# 安装相关依赖 yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel # 查询版本信息 gcc --version # 查询是否安装成功 rpm -qa pcre pcre-devel zlib zlib-devel openssl openssl-devel11.3.使用wget下载:# 创建包管理 mkdir -p /openresty/core cd /openresty/core wget https://openresty.org/download/openresty-1.25.3.1.tar.gz11.4.解压缩:tar -zxf openresty-1.25.3.1.tar.gz11.5.进入OpenResty目录:cd openresty-1.25.3.111.6.编译和安装./configure make && make installcd nginx-1.25.3 sh ./configure --prefix=/usr/local/openresty/nginx \ --with-cc-opt='-O2' \ --add-module=../ngx_devel_kit-0.3.3 \ --add-module=../echo-nginx-module-0.63 \ --add-module=../xss-nginx-module-0.06 \ --add-module=../ngx_coolkit-0.2 \ --add-module=../set-misc-nginx-module-0.33 \ --add-module=../form-input-nginx-module-0.12 \ --add-module=../encrypted-session-nginx-module-0.09 \ --add-module=../srcache-nginx-module-0.33 \ --add-module=../ngx_lua-0.10.26 \ --add-module=../ngx_lua_upstream-0.07 \ --add-module=../headers-more-nginx-module-0.37 \ --add-module=../array-var-nginx-module-0.06 \ --add-module=../memc-nginx-module-0.20 \ --add-module=../redis2-nginx-module-0.15 \ --add-module=../redis-nginx-module-0.3.9 \ --add-module=../rds-json-nginx-module-0.16 \ --add-module=../rds-csv-nginx-module-0.09 \ --add-module=../ngx_stream_lua-0.0.14 \ --with-ld-opt='-Wl,-rpath,/usr/local/openresty/luajit/lib' \ --with-stream --without-pcre2 --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_ssl_module 11.7.进入OpenResty的目录,找到nginx:cd /usr/local/openresty/nginx/11.8.在sbin目录下启动nginx11.9.通过浏览器访问测试【直接输入IP地址】成功安装11.10.设置环境变量vim /etc/profile # openresty export PATH=$PATH:/usr/local/openresty/nginx/sbin # 输入下面命令让设置的环境变量生效 source /etc/profile # 查看版本信息 nginx -V11.11.openresty安装成系统服务# 创建脚本 vi /usr/lib/systemd/system/openresty.service # 重新加载系统服务 systemctl daemon-reload服务脚本内容[Unit] Description=openresty web service Documentation=https://openresty.org/cn/ After=network.target [Service] Type=forking PIDFile=/usr/local/openresty/nginx/logs/nginx.pid ExecStartPre=/usr/local/openresty/nginx/sbin/nginx -t -c /usr/local/openresty/nginx/conf/nginx.conf ExecStart=/usr/local/openresty/nginx/sbin/nginx ExecReload=/usr/local/openresty/nginx/sbin/nginx -s reload ExecStop=/usr/local/openresty/nginx/sbin/nginx -s stop PrivateTmp=true [Install] WantedBy=default.target[Unit]:服务的说明 Description:描述服务 After:描述服务类别 [Service]服务运行参数的设置 Type=forking是后台运行的形式ExecStartpre是检查配置文件 ExecStart为服务的具体运行命令 ExecReload为重启命令 ExecStop为停止命令 PrivateTmp=True表示给服务分配独立的临时空间 注意:[Service]的启动、重启、停止命令全部要求使用绝对路径 [Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3 11.12.openresty常用命令# 启动服务 systemctl start openresty #停止 systemctl stop openresty #重启 systemctl restart openresty #重新加载配置文件 systemctl reload openresty # 查看nginx状态 systemctl status openresty # 开机启动 systemctl enable openresty.service # 查看nginx是否启动 ps -ef | grep openresty十二、linux下安装jdk12.1.下载Linux版本的JDKJDK17官网下载:https://www.oracle.com/java/technologies/downloads/#java17JDK8官网下载:https://www.oracle.com/java/technologies/downloads/#java8-linux12.2.Linux安装JDk#在usr目录下新建Java目录,然后将下载的JDK拷贝到这个新建的Java目录中 mkdir -p /usr/java # 进入该文件夹 cd /usr/java # 解压 tar -zxvf jdk-8u391-linux-x64.tar.gz #重命名 mv jdk1.8.0_391 jdk1.812.3.设置环境变量vim /etc/profileshift+g快速将光标定位到最后一行,然后按“i”,再输入下面环境变量#set java environment JAVA_HOME=/usr/java/jdk1.8 CLASSPATH=$JAVA_HOME/lib PATH=$PATH:$JAVA_HOME/bin export PHTH JAVA_HOME CLASSPATH# 输入下面命令让设置的环境变量生效 source /etc/profile # 验证JDK是否安装成功 java -version12.4.卸载JDK# 查看Linux是否有安装JDK java-version # 列出所有已经被安装的,名字中包含jdk字符串的RPM包 rpm -qa | grep jdk # rpm -q 查询rpm package name的包是否被安装 # rpm -a列出所有已经安装的rpm package软件包 # | 表示将输出结果(字符串)转向到后面的命令处理 # grep jdk 表示在当前结果中搜索包含jdk字样的字符串 # 查看JDK版本信息 java -version # 查看JDK安装路径 which java # 卸载JDk rm -rf /usr/java/jdk1.8 # 删除java相关环境变量 vim /etc/profile # 让环境变量生效 source /etc/profile十三、linux下安装tomcat13.1.下载Linux版本的Tomcat官网下载地址:https://tomcat.apache.org/download-80.cgi13.2.在usr目录下新建tomcat目录将下载的tomcat拷贝到新建的tomcat目录中,fialshell工具可以直接拖动tomcat安装包到tomcat中mkdir -p /usr/tomcat13.3.进入到tomcat目录中解压下载的tomcat安装包cd /usr/tomcat ls -l tar -zxvf apache-tomcat-8.5.98.tar.gz给解压后的文件夹重新命名mv apache-tomcat-8.5.98 tomcat8.513.4.配置环境变量-前提是已经安装并配置好了JDKvim /etc/profileshift+g快速将光标定位到最后一行,然后按i,再输入下面配置CATALINA_HOME=/usr/tomcat/tomcat8.5# 让环境变量生效 source /etc/profile13.5.启动tomcat13.5.1.方法一:进入到/usr/tomcat/tomcat8.5/bin目录# 进入到当前bin目录 cd /usr/tomcat/tomcat8.5/bin # 启动 ./startup.sh # 关闭 ./shutdown.sh13.5.2.方法二:无论在哪个目录都可以启动tomcat# 启动 sh /usr/tomcat/tomcat8.5/bin/startup.sh # 关闭 sh /usr/tomcat/tomcat8.5/bin/shutdown.sh13.5.3.查看tomcat是否启动成功ps -ef | grep tomcat13.6.验证tomcat是否安装成功Linux启动tomcat后,我们在浏览器中输入:http:\IP地址:8080 如果出现tomcat的主页则代表安装成功http://192.168.229.139:8080/13.7.阿里云 linux tomcat 无法访问方法阿里云服务器防火墙没有放开8080端口Linux 命令行防火墙 设置端口打开#查看当前已经开放的端口 firewall-cmd --list-ports #以下命令添加指定端口8080让防火墙放行 firewall-cmd --zone=public --add-port=8080/tcp --permanent #添加成功后需要用firewall-cmd --reload 命令重载一下firewall服务才能生效 firewall-cmd --reload十四、Linux下安装Mysql-5.7.41【tar包下载安装】14.1.首先检查是否已经安装过mysqlrpm -qa | grep mysql14.2.下载Linux版本的Mysql-5.7Mysql官网:https://www.mysql.com/下载网址:https://downloads.mysql.com/archives/community/cat /etc/redhat-release14.3.解压缩首先使用第三方工具上传# 创建一个文件夹,存放mysql mkdir -p /usr/mysql cd /usr/mysql # 在当前目录下(mysql)下创建一个 mysql-5.7.41 文件夹 mkdir mysql-5.7.41 # 解压安装包到该目录下 tar -xvf mysql-5.7.41-1.el7.x86_64.rpm-bundle.tar -C mysql-5.7.41[root@localhost mysql-5.7.41]# ls mysql-community-client-5.7.41-1.el7.x86_64.rpm mysql-community-embedded-compat-5.7.41-1.el7.x86_64.rpm mysql-community-server-5.7.41-1.el7.x86_64.rpm mysql-community-common-5.7.41-1.el7.x86_64.rpm mysql-community-embedded-devel-5.7.41-1.el7.x86_64.rpm mysql-community-test-5.7.41-1.el7.x86_64.rpm mysql-community-devel-5.7.41-1.el7.x86_64.rpm mysql-community-libs-5.7.41-1.el7.x86_64.rpm mysql-community-embedded-5.7.41-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.41-1.el7.x86_64.rpm 14.4.安装执行 rpm 安装包需要先下载 openssl-devel 插件解压后的文件都是 rpm 文件,因此需要用到 rpm 包资源管理器相关的指令安装这些 rpm 的安装包yum install openssl-devel14.5.安装 Mysql5.7 执行 rpm 安装包安装完该插件之后,依次执行以下命令安装这些 rpm 包yum install openssl-devel rpm -ivh mysql-community-common-5.7.41-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-5.7.41-1.el7.x86_64.rpm yum remove mysql-libs rpm -ivh mysql-community-libs-compat-5.7.41-1.el7.x86_64.rpm rpm -ivh mysql-community-devel-5.7.41-1.el7.x86_64.rpm # 至此所有依赖已安装完毕,下面安装客户端和服务端 rpm -ivh mysql-community-client-5.7.41-1.el7.x86_64.rpm yum -y install net-tools rpm -ivh mysql-community-server-5.7.41-1.el7.x86_64.rpm # 查询 MySQL 的安装文件 rpm -qa | grep -i mysql # yum remove openssl-devel # yum remove net-tools问题1[root@localhost mysql-5.7.41]# rpm -ivh mysql-community-libs-5.7.41-1.el7.x86_64.rpm 警告:mysql-community-libs-5.7.41-1.el7.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 3a79bd29: NOKEY 错误:依赖检测失败: mysql-community-common(x86-64) >= 5.7.9 被 mysql-community-libs-5.7.41-1.el7.x86_64 需要 mariadb-libs 被 mysql-community-libs-5.7.41-1.el7.x86_64 取代解决方案1:清除之前安装过的依赖即可,最后重新安装下。[root@localhost mysql-5.7.41]# yum remove mysql-libs 问题2[root@localhost mysql-5.7.41]# rpm -ivh mysql-community-server-5.7.41-1.el7.x86_64.rpm 警告:mysql-community-server-5.7.41-1.el7.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 3a79bd29: NOKEY 错误:依赖检测失败: net-tools 被 mysql-community-server-5.7.41-1.el7.x86_64 需要解决方案2:yum -y install net-tools[root@localhost mysql-5.7.41]# rpm -ivh mysql-community-common-5.7.41-1.el7.x86_64.rpm 警告:mysql-community-common-5.7.41-1.el7.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 3a79bd29: NOKEY 准备中... ################################# [100%] 正在升级/安装... 1:mysql-community-common-5.7.41-1.e################################# [100%] [root@localhost mysql-5.7.41]# [root@localhost mysql-5.7.41]# rpm -ivh mysql-community-libs-5.7.41-1.el7.x86_64.rpm 警告:mysql-community-libs-5.7.41-1.el7.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 3a79bd29: NOKEY 准备中... ################################# [100%] 正在升级/安装... 1:mysql-community-libs-5.7.41-1.el7################################# [100%] [root@localhost mysql-5.7.41]# [root@localhost mysql-5.7.41]# rpm -ivh mysql-community-libs-compat-5.7.41-1.el7.x86_64.rpm 警告:mysql-community-libs-compat-5.7.41-1.el7.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 3a79bd29: NOKEY 准备中... ################################# [100%] 正在升级/安装... 1:mysql-community-libs-compat-5.7.4################################# [100%] [root@localhost mysql-5.7.41]# [root@localhost mysql-5.7.41]# rpm -ivh mysql-community-devel-5.7.41-1.el7.x86_64.rpm 警告:mysql-community-devel-5.7.41-1.el7.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 3a79bd29: NOKEY 准备中... ################################# [100%] 正在升级/安装... 1:mysql-community-devel-5.7.41-1.el################################# [100%] [root@localhost mysql-5.7.41]# [root@localhost mysql-5.7.41]# rpm -ivh mysql-community-client-5.7.41-1.el7.x86_64.rpm 警告:mysql-community-client-5.7.41-1.el7.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 3a79bd29: NOKEY 准备中... ################################# [100%] 正在升级/安装... 1:mysql-community-client-5.7.41-1.e################################# [100%] [root@localhost mysql-5.7.41]# [root@localhost mysql-5.7.41]# rpm -ivh mysql-community-server-5.7.41-1.el7.x86_64.rpm 警告:mysql-community-server-5.7.41-1.el7.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 3a79bd29: NOKEY 准备中... ################################# [100%] 正在升级/安装... 1:mysql-community-server-5.7.41-1.e################################# [100%]14.6.Mysql相关操作命令# 启动 MySQL 服务 systemctl start mysqld # 重启 MySQL 服务 systemctl restart mysqld # 关闭 MySQL 服务 systemctl stop mysqld #设置开机自启 systemctl enable mysqld # 查看状态 systemctl status mysqld14.7.查看Mysql-5.7 临时密码rpm 安装 MySQL 会自动生成一个随机密码grep 'temporary password' /var/log/mysqld.log cat /var/log/mysqld.logA temporary password is generated for root@localhost: 2yiNb5Pvum<4账号:root随机密码:2yiNb5Pvum<414.8.修改Mysql-5.7密码# 登录 mysql -u root -p 2yiNb5Pvum<4 # 修改密码 ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mysql.123456'; # 设置密码的验证强度等级 #Mysql 5.7 版本 # 将密码复杂度校验调整简单类型 # set global validate_password_policy=MEDIUM; set global validate_password_policy=LOW; # 设置密码最少位数限制为 4 位 set global validate_password_length=4; # 查看 mysql 初始的密码策略 SHOW VARIABLES LIKE 'validate_password%';# 查看 mysql5.7 初始的密码策略 mysql> SHOW VARIABLES LIKE 'validate_password%'; +--------------------------------------+--------+ | Variable_name | Value | +--------------------------------------+--------+ | validate_password_check_user_name | OFF | | validate_password_dictionary_file | | | validate_password_length | 8 | | validate_password_mixed_case_count | 1 | | validate_password_number_count | 1 | | validate_password_policy | MEDIUM | | validate_password_special_char_count | 1 | +--------------------------------------+--------+14.9.远程连接navicat--遇见问题14.9.1.问题:1130 - Host '192.168.229.1' is not allowed to connect to this MySQL server自己安装在本地的mysql默认时不允许进行远程登陆,如果想要远程访问本地的数据库需要修改访问权限,将’root‘访问权限修改为’%‘14.9.2.连接服务器--修改权限# 连接服务器 mysql -u root -p # 看当前所有数据库 show databases; # 进入mysql数据库 use mysql; # 查看mysql数据库中所有的表 show tables; # 执行更新权限语句 # 其中“%”代表所有的地址,意味着所有的地址都可以访问“root” update user set Host='%' where User='root'; # 查看权限是否修改成功 select host,user from user; # 刷新服务器配置 FLUSH PRIVILEGES;14.9.3.连接成功14.10.卸载Mysql-5.7# 停止Mysql systemctl stop mysqld # 查询 MySQL 的安装文件 rpm -qa | grep -i mysql # 卸载上述查询的所有安装包 rpm -e mysql-community-libs-5.7.41-1.el7.x86_64 --nodeps rpm -e mysql-community-devel-5.7.41-1.el7.x86_64 --nodeps rpm -e mysql-community-common-5.7.41-1.el7.x86_64 --nodeps rpm -e mysql-community-libs-compat-5.7.41-1.el7.x86_64 --nodeps rpm -e mysql-community-client-5.7.41-1.el7.x86_64 --nodeps rpm -e mysql-community-server-5.7.41-1.el7.x86_64 --nodeps # 再次查询 MySQL 的安装文件 rpm -qa | grep -i mysql # 删除MySQL的数据存放目录 rm -rf /var/lib/mysql # 找出服务器中分散的mysql文件夹,查询残留的文件和相关依赖,并删除 find / -name mysql rm -rf [显示的文件夹路径,每个绝对路径中间用空格隔开] # MySQL配置文件通常位于/etc/my.cnf或/etc/mysql/my.cnf下,MySQL日志文件通常位于/var/log/mysql下 # 删除mysql日志 rm -rf /var/log/mysqld.log # 删除MySQL的配置文件备份 rm -rf /etc/my.cnf.rpmsave # 删除mysql配置文件 rm -rf /etc/mysql/my.cnf rm -rf /etc/my.cnf # 清除MySQL用户和组 userdel mysql groupdel mysql十五、Linux下安装Mysql-8.0.34【tar包下载安装】15.1.首先检查是否已经安装过mysqlrpm -qa | grep mysql15.2.下载Linux版本的Mysql-8.0.34Mysql官网:https://www.mysql.com/下载网址:https://downloads.mysql.com/archives/community/cat /etc/redhat-release15.3.解压缩首先使用第三方工具上传# 创建一个文件夹,存放mysql mkdir -p /usr/mysql cd /usr/mysql # 在当前目录下(mysql)下创建一个 mysql-5.7.41 文件夹 mkdir mysql-8.0.34 # 解压安装包到该目录下 tar -xvf mysql-8.0.34-1.el7.x86_64.rpm-bundle.tar -C mysql-8.0.34[root@localhost mysql-8.0.34]# ls mysql-community-client-8.0.34-1.el7.x86_64.rpm mysql-community-debuginfo-8.0.34-1.el7.x86_64.rpm mysql-community-icu-data-files-8.0.34-1.el7.x86_64.rpm mysql-community-server-8.0.34-1.el7.x86_64.rpm mysql-community-client-plugins-8.0.34-1.el7.x86_64.rpm mysql-community-devel-8.0.34-1.el7.x86_64.rpm mysql-community-libs-8.0.34-1.el7.x86_64.rpm mysql-community-server-debug-8.0.34-1.el7.x86_64.rpm mysql-community-common-8.0.34-1.el7.x86_64.rpm mysql-community-embedded-compat-8.0.34-1.el7.x86_64.rpm mysql-community-libs-compat-8.0.34-1.el7.x86_64.rpm mysql-community-test-8.0.34-1.el7.x86_64.rpm15.4.安装执行 rpm 安装包需要先下载 openssl-devel 插件解压后的文件都是 rpm 文件,因此需要用到 rpm 包资源管理器相关的指令安装这些 rpm 的安装包yum install openssl-devel15.5.安装 Mysql8.0 执行 rpm 安装包安装完该插件之后,依次执行以下命令安装这些 rpm 包yum install openssl-devel # yum install net-tools rpm -ivh mysql-community-common-8.0.34-1.el7.x86_64.rpm rpm -ivh mysql-community-client-plugins-8.0.34-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-8.0.34-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-compat-8.0.34-1.el7.x86_64.rpm rpm -ivh mysql-community-devel-8.0.34-1.el7.x86_64.rpm # 至此所有依赖已安装完毕,下面安装客户端和服务端 rpm -ivh mysql-community-client-8.0.34-1.el7.x86_64.rpm rpm -ivh mysql-community-icu-data-files-8.0.34-1.el7.x86_64.rpm rpm -ivh mysql-community-server-8.0.34-1.el7.x86_64.rpm # 查询 MySQL 的安装文件 rpm -qa | grep -i mysql # yum remove openssl-devel # yum remove net-tools15.6.Mysql相关操作命令# 启动 MySQL 服务 systemctl start mysqld # 重启 MySQL 服务 systemctl restart mysqld # 关闭 MySQL 服务 systemctl stop mysqld #设置开机自启 systemctl enable mysqld # 查看状态 systemctl status mysqld15.7.查看Mysql-8.0 临时密码rpm 安装 MySQL 会自动生成一个随机密码grep 'temporary password' /var/log/mysqld.log cat /var/log/mysqld.logA temporary password is generated for root@localhost: ij9uN+hmchw2账号:root随机密码:ij9uN+hmchw215.8.修改Mysql-8.0 密码# 登录 mysql -u root -p ij9uN+hmchw2 # 修改密码 ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mysql.123456'; # 设置密码的验证强度等级 #Mysql 8.0 版本 # 将密码复杂度校验调整简单类型 # set global validate_password.policy=MEDIUM; set global validate_password.policy=LOW; # 设置密码最少位数限制为 4 位 set global validate_password.length=4; # 查看 mysql 初始的密码策略 SHOW VARIABLES LIKE 'validate_password%';mysql> SHOW VARIABLES LIKE 'validate_password%'; ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.提示ERROR 1820,让我们先修改密码后才能查看规则。# 查看 mysql8.0 初始的密码策略 mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mysql.123456'; Query OK, 0 rows affected (0.01 sec) mysql> SHOW VARIABLES LIKE 'validate_password%'; +-------------------------------------------------+--------+ | Variable_name | Value | +-------------------------------------------------+--------+ | validate_password.changed_characters_percentage | 0 | | validate_password.check_user_name | ON | | validate_password.dictionary_file | | | validate_password.length | 8 | | validate_password.mixed_case_count | 1 | | validate_password.number_count | 1 | | validate_password.policy | MEDIUM | | validate_password.special_char_count | 1 | +-------------------------------------------------+--------+ 8 rows in set (0.01 sec) 15.9.远程连接navicat--遇见问题15.9.1.问题:1130 - Host '192.168.229.1' is not allowed to connect to this MySQL server自己安装在本地的mysql默认时不允许进行远程登陆,如果想要远程访问本地的数据库需要修改访问权限,将’root‘访问权限修改为’%‘15.9.2.连接服务器--修改权限# 连接服务器 mysql -u root -p # 看当前所有数据库 show databases; # 进入mysql数据库 use mysql; # 查看mysql数据库中所有的表 show tables; # 执行更新权限语句 # 其中“%”代表所有的地址,意味着所有的地址都可以访问“root” update user set Host='%' where User='root'; # 查看权限是否修改成功 select host,user from user; # 刷新服务器配置 FLUSH PRIVILEGES;15.9.3.连接成功15.10.MySQL 8.0 配置mysql_native_password身份验证插件的password方法一:# 登录MySQL后输入 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword'; FLUSH PRIVILEGES;方法二:# 编辑my.cnf文件,更改默认的身份认证插件。 vi /etc/my.cnf # 在[mysqld]中添加下边的代码 default_authentication_plugin=mysql_native_password # 然后重启MySQL service mysqld restart15.11.卸载Mysql-8.0# 停止Mysql systemctl stop mysqld # 查询 MySQL 的安装文件 rpm -qa | grep -i mysql # 卸载上述查询的所有安装包 rpm -e mysql-community-client-plugins-8.0.34-1.el7.x86_64 --nodeps rpm -e mysql-community-libs-compat-8.0.34-1.el7.x86_64 --nodeps rpm -e mysql-community-client-8.0.34-1.el7.x86_64 --nodeps rpm -e mysql-community-server-8.0.34-1.el7.x86_64 --nodeps rpm -e mysql-community-common-8.0.34-1.el7.x86_64 --nodeps rpm -e mysql-community-libs-8.0.34-1.el7.x86_64 --nodeps rpm -e mysql-community-devel-8.0.34-1.el7.x86_64 --nodeps rpm -e mysql-community-icu-data-files-8.0.34-1.el7.x86_64 --nodeps # 再次查询 MySQL 的安装文件 rpm -qa | grep -i mysql # 找出服务器中分散的mysql文件夹,查询残留的文件和相关依赖,并删除 find / -name mysql rm -rf [显示的文件夹路径,每个绝对路径中间用空格隔开] # MySQL配置文件通常位于/etc/my.cnf或/etc/mysql/my.cnf下,MySQL日志文件通常位于/var/log/mysql下 # 删除mysql日志 rm -rf /var/log/mysqld.log # 删除MySQL的配置文件备份 rm -rf /etc/my.cnf.rpmsave # 删除mysql配置文件 rm -rf /etc/mysql/my.cnf rm -rf /etc/my.cnf # 清除MySQL用户和组 userdel mysql groupdel mysql十六、Linux下--yum源安装Mysql16.1.进入Mysql官网获取yum源安装包【无需登录账号】# linux8 yum源 https://dev.mysql.com/get/mysql80-community-release-el8-9.noarch.rpm # linux7 yum源 https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm # linux6 yum源 https://dev.mysql.com/get/mysql80-community-release-el6-10.noarch.rpm16.2.通过yum搜索命令查询mysql相关的包数据yum list | grep mysql* yum list mysql*16.3.确保系统中已经安装了wget和rpm工具# 确保系统中已经安装了wget和rpm工具 sudo yum install wget rpm16.4.安装Mysql的yum源【centos7为例】# linux8 yum源 wget https://dev.mysql.com/get/mysql80-community-release-el8-9.noarch.rpm # linux7 yum源 wget https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm # linux6 yum源 wget https://dev.mysql.com/get/mysql80-community-release-el6-10.noarch.rpm16.5.安装Mysql的yum源cd /etc/yum.repos.d rpm -ivh mysql80-community-release-el7-11.noarch.rpm16.6.默认安装Mysql8.0,修改为Mysql5.7vi mysql-community.repo16.7.安装mysql-server# 安装方式一 yum -y install mysql-community-server # 安装方式二 # 安装MySQL服务器、MySQL客户端和MySQL依赖库 yum -y install mysql-server mysql mysql-libs # 安装方式三 # 只想安装MySQL服务器 yum -y install mysql-server16.8.启动mysql-server# 查看Mysql版本信息 mysql --version # 启动mysql systemctl start mysqld # 查看mysql状态信息 systemctl status mysqld16.9.获取mysql-server初始登陆的密码grep 'temporary password' /var/log/mysqld.log cat /var/log/mysqld.log16.10.其余同上16.11.卸载mysql# 停止MySQL服务 systemctl stop mysqld # 查询 MySQL 的安装文件 rpm -qa | grep -i mysql # 删除已安装mysql yum -y remove mysql80-community-release-el7-11.noarch yum -y remove mysql-community-common-5.7.44-1.el7.x86_64 yum -y remove mysql-community-libs-compat-5.7.44-1.el7.x86_64 yum -y remove mysql-community-server-5.7.44-1.el7.x86_64 yum -y remove mysql-community-libs-5.7.44-1.el7.x86_64 yum -y remove mysql-community-client-5.7.44-1.el7.x86_64 # 查询 MySQL 的安装文件 rpm -qa | grep -i mysql # 查看mysql相关的文件目录,并删除 find / -name mysql rm -rf [显示的文件夹路径,每个绝对路径中间用空格隔开] # MySQL配置文件通常位于/etc/my.cnf或/etc/mysql/my.cnf下,MySQL日志文件通常位于/var/log/mysql下 # 删除mysql日志 rm -rf /var/log/mysqld.log # 删除MySQL的配置文件备份 rm -rf /etc/my.cnf.rpmsave # 删除mysql配置文件 rm -rf /etc/mysql/my.cnf rm -rf /etc/my.cnf # 清除MySQL用户和组 userdel mysql groupdel mysql cd ~ find / -name mysql*16.12.Mysql的yum源仓库http://repo.mysql.com/16.13.配置MySQL的安全性mysql_secure_installation重置root账号的密码新密码,长度为8至30个字符,必须同时包含大小写英文字母、数字和特殊符号。特殊符号可以是()` ~!@#$%^&*-+=|{}[]:;‘<>,.?/删除匿名用户账号禁止root账号远程登录删除test库以及对test库的访问权限重新加载授权表十七、建库建表--字符集修改【防止插入中文报错】linux中mysql5.7默认的字符集是latin1,在插入中文时会报错,通常是由于数据库字符集和字符串编码不匹配导致的。所以一般在配置好mysql时需要修改字符集为utf8【又叫utfmb3,一般开发够用,一个字符用3个字节表示】或者utfmb4【一个字符用4个字节表示,如果存储emoji表情,必须用utfmb4】17.1.建库建表--指定字符集show databases; CREATE DATABASE IF NOT EXISTS school CHARACTER SET utf8mb4; use school; DROP TABLE IF EXISTS user; CREATE TABLE `user` ( `id` int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT COMMENT '主键', `name` varchar(50) NOT NULL COMMENT '姓名' ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='用户表'; -- ALTER TABLE user AUTO_INCREMENT = 1; INSERT INTO user (name) VALUES('张三'),('李四'),('lily'); select * from user; -- 查询表结构 desc user; -- 表级 show table status from school like '%use%'; -- 列级 show full columns from user; -- 查询指定表的建表语句 show create table user;17.2.建库建表--不指定字符集DROP TABLE IF EXISTS customer; CREATE TABLE customer( id INT AUTO_INCREMENT, name VARCHAR(200), PRIMARY KEY(id) ); INSERT INTO customer (id,name) VALUES(1,'张三'),(2,'李四'),(3,'lily'); # ERROR 1366 (HY000): Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'NAME' at row 1 -- 表级 show table status from school like '%customer%'; -- 列级 show full columns from customer; -- 查询指定表的建表语句 show create table customer;17.3.当前MySQL 支持的字符集show charset; show char set;mysql> show char set; +----------+---------------------------------+---------------------+--------+ | Charset | Description | Default collation | Maxlen | +----------+---------------------------------+---------------------+--------+ | big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 | | dec8 | DEC West European | dec8_swedish_ci | 1 | | cp850 | DOS West European | cp850_general_ci | 1 | | hp8 | HP West European | hp8_english_ci | 1 | | koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 | | latin1 | cp1252 West European | latin1_swedish_ci | 1 | | latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 | | swe7 | 7bit Swedish | swe7_swedish_ci | 1 | | ascii | US ASCII | ascii_general_ci | 1 | | ujis | EUC-JP Japanese | ujis_japanese_ci | 3 | | sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 | | hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 | | tis620 | TIS620 Thai | tis620_thai_ci | 1 | | euckr | EUC-KR Korean | euckr_korean_ci | 2 | | koi8u | KOI8-U Ukrainian | koi8u_general_ci | 1 | | gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 | | greek | ISO 8859-7 Greek | greek_general_ci | 1 | | cp1250 | Windows Central European | cp1250_general_ci | 1 | | gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 | | latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 | | armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 | | utf8 | UTF-8 Unicode | utf8_general_ci | 3 | | ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 | | cp866 | DOS Russian | cp866_general_ci | 1 | | keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1 | | macce | Mac Central European | macce_general_ci | 1 | | macroman | Mac West European | macroman_general_ci | 1 | | cp852 | DOS Central European | cp852_general_ci | 1 | | latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 | | utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4 | | cp1251 | Windows Cyrillic | cp1251_general_ci | 1 | | utf16 | UTF-16 Unicode | utf16_general_ci | 4 | | utf16le | UTF-16LE Unicode | utf16le_general_ci | 4 | | cp1256 | Windows Arabic | cp1256_general_ci | 1 | | cp1257 | Windows Baltic | cp1257_general_ci | 1 | | utf32 | UTF-32 Unicode | utf32_general_ci | 4 | | binary | Binary pseudo charset | binary | 1 | | geostd8 | GEOSTD8 Georgian | geostd8_general_ci | 1 | | cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 | | eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 | | gb18030 | China National Standard GB18030 | gb18030_chinese_ci | 4 | +----------+---------------------------------+---------------------+--------+ 41 rows in set (0.00 sec)17.4.将表字符集设置为utf8# 对新建表、列,新插入数据有效 alter database 数据库名 character set utf8 collate utf8_bin; #将表字符集设置为utf8 alter table 表名 default character set utf8 collate utf8_bin; alter table customer character set utf8; #将想要插入中文的字段的字符集改为utf8 alter table 表名 change 列名 新列名 char(20) character set utf8; alter table customer change name nikname char(20) character set utf8; INSERT INTO customer (id,nikname) VALUES(1,'张三'),(2,'李四'),(3,'lily'); #查看表的字符集和字段的字符集 show create table customer;17.5.数据库中查看MySQL状态status;17.6.查看当前数据库的字符集show variables like "%server%"; show variables like '%char%';mysql> show variables like 'character%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.02 sec) mysql> show variables like "%server%"; +---------------------------------+--------------------------------------+ | Variable_name | Value | +---------------------------------+--------------------------------------+ | character_set_server | latin1 | | collation_server | latin1_swedish_ci | | innodb_ft_server_stopword_table | | | server_id | 1 | | server_id_bits | 32 | | server_uuid | 72c696aa-cee7-11ee-9fe1-000c29c833e8 | +---------------------------------+--------------------------------------+ 6 rows in set (0.00 sec) # 默认是latin1十八、修改Mysql字符集my.cnf【防止插入中文报错】18.1.编辑my.cnf配置文件【永久修改字符集】# 查找my.cnf配置文件 find / -name my.cnf vi /etc/my.cnfmy.cnf内容添加[client] default_character_set=utf8 [mysqld] default-storage-engine=INNODB collation_server = utf8_general_ci character_set_server = utf818.2.重启mysqlsystemctl restart mysqld show variables like "%server%"; show variables like '%char%';十九、mysql5.7使用group by语句:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated19.1.报错信息ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'company.emp.ename' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by19.2.原因分析mysql 5.7以后默认启用sql_mode=only_full_group_by模式特性 对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中, 也就是说查出来的列必须在group by后面出现否则就会报错,或者这个字段出现在聚合函数里面。19.3.解决方法19.3.1.方法一:登录Mysql--1.查看模式中是否有only_full_group_by select @@global.sql_mode; --2.删除only_full_group_by set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';mysql> select @@global.sql_mode; +-------------------------------------------------------------------------------------------------------------------------------------------+ | @@global.sql_mode | +-------------------------------------------------------------------------------------------------------------------------------------------+ | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION | +-------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)19.3.2.方法二:修改mysql的配置文件 /etc/my.cnf 或my.ini在尾部添加以下内容,重新启动 mysql 即可#Linux 用户 find / -name my.cnf vi /etc/my.cnf service restart mysqld# 配置my.cnf或my.ini [mysqld] sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION二十、Mysql字符集my.cnf【完整版】[client] default_character_set=utf8 [mysqld] # 表示永久表(permanent tables)的默认存储引擎 default-storage-engine=INNODB sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION collation_server = utf8_general_ci character_set_server = utf8二十一、MySQL登录报错21.1.问题ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)21.2.原因MySQL服务器停止则重新启动即可 密码输入错误21.3.解决方法--修改密码21.3.1.加上登录时跳过权限检查#Linux 用户 find / -name my.cnf vi /etc/my.cnf #在[mysqld]中添加skip-grant-tables(登录时跳过权限检查) skip-grant-tables21.3.2.修改密码# 重启数据库 systemctl restart mysqld # 登录mysql,回车即可 mysql -uroot -p # 进入mysql数据库 use mysql; # 查看权限是否修改成功 select host,user,plugin,authentication_string from user; # 刷新服务器配置 FLUSH PRIVILEGES; # 没有用户创建用户 可能需要刷新 create user 'root'@'localhost' identified by 'Mysql.123456'; # 执行更新权限语句 # 其中“%”代表所有的地址,意味着所有的地址都可以访问“root” update user set Host='%' where User='root'; # 更改密码 update mysql.user set authentication_string ='Mysql.123456' where user="root"; # 更改密码 alter user 'root'@'localhost' identified by 'Mysql.123456'; # 刷新服务器配置 FLUSH PRIVILEGES; exit # 将my.cnf中的skip-grant-tables去除 vi /etc/my.cnf # 重启数据库 systemctl restart mysqld21.3.2.去掉登录时跳过权限检查endl
2024年09月20日
2 阅读
0 评论
0 点赞
2024-06-06
IDC机房和机柜知识
@TOC一、IDC机房和机柜知识【了解】1.1.IDC机房为企业提供存放服务器的空间和提供大量带宽,宽带分为单线带宽和多线(BGP线路)带宽。联通、移动、电信、教育、广电、铁通。不同线路之间通信很慢。单线,1M/30元,只有某一个线路比如,联通,做CDN服务的企业,或者CDN服务器。多路(BGP线路):4线 联通、移动、电信、教育,1M/120-300元,企业多数都会买BGP机房。1.2.机柜和服务器通常机柜都是42U约2米高,一般每个服务器之间都会留有散热的空余空间。1.3.IDC机房服务器上架流程1.3.1.购买服务器服务器配置清单,价格清单(找不低于三家),发给老大选择。老大审核后,申请财务支付。走==钉钉==流程。1.3.2.上架服务器:one: 第一种上架方式:把购买的服务器直接送到托管的IDC机房,由IDC机房的人负责上架(7--8 个)然后由运维人员去装系统,初始化,测试网络连接回公司远程连接,配置各种服务。:two: 第二种上架方式:把购买的服务器送到公司,做好RAID,做好系统,然后送到IDC机房运维人员自行上架,装系统,初始化,测试回公司远程连接,配置各种服务、压力测试,正式上线1.3.3.和IDC约定上架日期确定好上架日期之后,提上架工单上架人员:姓名、身份证、服务器型号、机柜号、IP地址1.3.4.去IDC机房需要准备的工具身份证U盘、光盘、移动光驱、空白光盘、螺丝刀(也可以提前配置好==无人值守安装服务==)1.3.5.去机房配置服务器细节:one: 先去IDC机房等记去前台等记,拿到工牌寄存背包,登机领取==显示器、键盘或者小推车==:two: 配置服务器做RAID、装系统、配网络、==配置防火墙==初始化、测试SSH连接,确保投过跳板机能正常连接:three: 收尾去前台归还工牌,小推车(放显示器和键盘)拿回自己的东西手工回公司endl
2024年06月06日
4 阅读
0 评论
0 点赞
1
2
3
4