记录一次ubuntu /mysql/redis/nginx等 系统安装
没想到还会做一次系统安装配置类的工作,没办法,碰到问题了,总得解决。
安装 &网络配置
从网上下载了ubuntu 18.04.6的安装包,用UltraISO做安装盘,到服务器上修改了下启动顺序,ubuntu的安装非常简单,点几次next就完成了。
安装完成后用安装过程中创建的用户登录,直接到了桌面,默认是自动获取IP地址的,插了网线或者有wifi的话,启动后就直接能上网了。网络配置功能在桌面右上角,和windows类似,操作非常简单。
系统默认使用networkManager进行网络管理,通过桌面进行网络配置,你会发现通过脚本查看/etc/netplan下的yaml配置文件,里面是空的。网上大概看了下(没做验证),脚本方式配置和左面配置网络是二选一的,如果要启用脚本方式配置网络,是需要停掉桌面配置的。既然有了桌面,就没必要通过脚本方式配置网络了,所以,也没有验证过手工写入yaml文件后是否能直接生效。
启用root用户远程登录
默认情况下,root用户没有启用,启用root用户需要:
- 设置root用户密码
这个需要打开shell脚本窗口,尚未开启远程(ssh尚未安装)的话,通过ctl+alt+T打开脚本窗口:
sudo passwd root
- 修改/etc/ssh/sshd_config文件(用vi就可以)
# 找到这一行 #PermitRootLogin prohibit-password # 修改为 PermitRootLogin yes
- 重启ssh
systemctl restart ssh
当然,ssh服务默认也是没有安装的,需要提前安装一下ssh服务:
sudo apt-get updatesudo apt-get install openssh-serversudo systemctl start ssh
安装Mysql
有两种可选的方式,一种是通过apt在线安装,另外一种是从官网下载安装包,上传到ubuntu服务器之后,手动安装。
第一种方式非常简单,一条命令就能完成,开机自启等等一切都ok了。但是我不太喜欢这种方式(可能是我对ubuntu太不熟悉的缘故),因为安装之后配置文件并没有在我熟悉的位置。我主要说一下手动安装,包括下面的ng和redis。
先去官网下载安装包,我安装的是5.7.31,下载完成后上传到服务器上,比如上传到/usr/local下,解压后修改一下目录名:
mv mysql-5.7.31 mysql
之后添加用户、用户组:
groupadd mysql
useradd -r -g mysql mysql
配置my.cnf文件(vim /etc/my.cnf,加入以下内容)
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/tmp/mysql.sock[mysqld]
#skip-name-resolve #设置3306端口
port=3306 socket=/tmp/mysql.sock
# 设置mysql的真正的安装目录 (看自己的是在哪里)
basedir=/usr/local/mysql # 设置mysql数据库的数据的存放目录 (看自己的是在哪里)
datadir=/usr/local/mysql/data # 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为8比特编码的latin1字符雿
character-set-server=utf8 # 创建新表时将使用的默认存储引擿
default-storage-engine=INNODB #大小写敏感要加,否则有些应用生成的sql语句表名称是大写的,会找不到表
lower_case_table_name=1 # 非必要,如果你的应用中的groupby语句不是严格遵守SQL规范的话,必须加,要么就修改应用
sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
创建data文件夹(my.cnf文件中指定的、数据库文件存放路径):
cd mysql
#进入到/usr/local/mysql路径下
mkdir data
修改data路径的所属组、访问权限:
chown -R mysql:mysql ./
chmod -R 755 /usr/local/mysql/data
初始化数据库,非常重要的关键步骤,如果缺少依赖包的话,会报错,根据报错的提示信息,用apt install命令安装缺失的依赖包,绝大部分错误都可以解决。
sudo bin/mysqld --initialize --user=mysql
初始化成功的话,会有类似的提示信息。一定要记录下初始密码,后面要用到,没有这个密码的话,可能还得修改my.cnf文件免密登录、重新设置密码。
这个时候,通过/usr/local/mysql/support-file/mysql.server脚本可以启动服务:
./mysql.server start
接下来配置Mysql开机启动,可能会稍稍麻烦一点,因为Ubuntu属于Debian阵营,和我以前大多数情况下用的centos(是红帽阵营)是有区别的。
进入/etc/systemd/system目录,创建mysql.service文件:
[Unit]
Description= Mysql Server
After=network.target[Service]
ExecStart=/usr/local/mysql/bin/mysqld_safe
Restart=always
User=mysql
Group=mysql
RuntimeDirectory=mysql
RuntimeDirectoryMode=2755[Install]
WantedBy=multi-user.target
重新加载systemd配置:
sudo systemctl daemon-reload
启用mysql.service服务:
sudo systemctl enable mysql
启动服务(如果之前通过/usr/local/mysql/support-files/mysql.service脚本启动了mysql,最好再用mysql.service stop停掉服务):
sudo systemctl start mysql
检查mysql状态:
root@xxxxx:/etc/systemd/system# systemctl status mysql
● mysql.service - Mysql ServerLoaded: loaded (/etc/systemd/system/mysql.service; enabled; vendor preset: enabled)Active: active (running) since Fri 2024-09-20 15:53:35 CST; 23h agoMain PID: 1164 (mysqld_safe)Tasks: 38 (limit: 4915)CGroup: /system.slice/mysql.service├─1164 /bin/sh /usr/local/mysql/bin/mysqld_safe└─1349 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/li9月 20 15:53:35 rx-UniServer-R4900-G3 systemd[1]: Started Mysql Server.
9月 20 15:53:35 rx-UniServer-R4900-G3 mysqld_safe[1164]: 2024-09-20T07:53:35.502057Z mysqld_safe Logging to '/usr/local/mysql/data/rx-Uni
9月 20 15:53:35 rx-UniServer-R4900-G3 mysqld_safe[1164]: 2024-09-20T07:53:35.585258Z mysqld_safe Starting mysqld daemon with databases fr
如果看到以上信息的话,恭喜,安装、配置开机自启动成功了!
接下来就是通过上面说过的初始化命令登录mysql,修改root密码、新增用户、配置远程访问等等,都是mysql的常规操作了。
安装Redis
把下载的安装包上传到服务器上,然后解包(我放在/usr/local下):
tar -xzf redis-5.0.7.tar.gz
mv redis-5.0.7 redis
编译:
make
make过程中如果有报错,基本就是缺失依赖包的,apt install下载缺失的依赖包就可以。
安装:
make install PREFIX=/usr/local/redis
PREFIX指定安装路径,不指定的话安装完成后的bin直接放在/usr/local下了,比较散乱。
配置文件:
cp /usr/local/redis/redis.conf /etc/redis
配置文件保留在/usr/local/redis路径下其实也可以,启动的时候指定配置文件所在路径就可以。
接下来配置开机自启动:
cd /etc/systemd/system
vi redis.service
然后把下面内容copy到redis.service中:
[Unit]
Description=Redis Server
After=network.target[Service]
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
User=root
Group=root
RuntimeDirectory=redis
RuntimeDirectoryMode=2755[Install]
WantedBy=multi-user.target
其中 ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf 指定了启动redis的路径和配置文件。
之后就和mysql的启动一样了:
sudo systemctl daemon-reload
sudo systemctl enable redis
安装Nginx
安装、配置方法和redis几乎一样。但是有一个小小的需要注意的地方是,如果你解压nginx之后放在/usr/local/nginx路径下,那么在生成编译脚本的时候需要稍加注意。
比如下载nginx-1.19.9.tar.gz后,上传到/usr/local下,解压:
tar -xzf nginx-1.19.9.tar.gz
mv nginx-1.19.9 nginx
可以看到解压后的安装包就放在了/usr/local/nginx下了。
生成编译脚本:
./configure --prefix=/usr/local/nginx1 --with-http_ssl_module
prefix如果指定为/usr/local/nginx的话,会报错,原因是nginx解包之后通过命令mv nginx-1.19.9 nginx 修改安装包路径为/usr/local/nginx了,所以就不允许安装到相同路径下。所以,要么就不修改安装包路径名称为nginx,要么就向上面的方式,prefix指定为另外一个路径,安装到另外一个路径下。推荐第一种,prefix指定安装路径的/usr/local/nginx下。
如果有报错,最大的可能还是依赖包缺失,按照提示apt install安装依赖包即可。
编译:
make
安装:
make install
之后查看/usr/local/nginx,看到sbin、conf等路径,说明安装成功,默认情况下,配置文件在/usr/local/nginx/conf下。
最后,配置开机自启动:
cd /etc/systemd/system
vi nginx.service
把一下内容copy到nginx.service文件中:
Description=nginx Server
After=network.target[Service]
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PIDFile=/usr/local/nginx/logs/nginx.pid
PrivateTmp=true
Restart=always
RuntimeDirectory=nginx
RuntimeDirectoryMode=2755[Install]
WantedBy=multi-user.target
需要注意的是,nginx不是通过start stop restart status等参数进行启动、停止操作的,所以,需要额外指定ExecReload、ExecStop等参数。
最后:
sudo systemctl daemon-reload
sudo systemctl enable nginx
万事大吉!
相关文章:
记录一次ubuntu /mysql/redis/nginx等 系统安装
没想到还会做一次系统安装配置类的工作,没办法,碰到问题了,总得解决。 安装 &网络配置 从网上下载了ubuntu 18.04.6的安装包,用UltraISO做安装盘,到服务器上修改了下启动顺序,ubuntu的安装非常简单&a…...

大型语言模型 (LLM) 劫持攻击不断升级,导致每天损失超过 100,000 美元
Sysdig 威胁研究团队 (TRT) 报告称,LLMjacking(大型语言模型劫持)事件急剧增加,攻击者通过窃取的云凭证非法访问大型语言模型 (LLM)。 这一趋势反映了 LLM 访问黑市的不断增长,攻击者的动机包括个人使用和规避禁令和制…...

Java 入门指南:JVM(Java虚拟机)垃圾回收机制 —— 垃圾收集器
文章目录 垃圾回收机制Stop-the-World垃圾收集器垃圾收集器分类Serial 收集器Serial Old 收集器ParNew 收集器Parallel Scavenge 收集器Parallel Old 收集器CMS 收集器CMS 收集器缺点 G1 收集器G1 收集器特点G1 收集器的分代理念G1 收集器运作过程 垃圾回收机制 垃圾回收&…...

nano 命令:文本编辑器
一、命令简介 nano 是一个简单易用的文本编辑器,适合初学者和那些不需要复杂功能的用户。 相关命令(不同难度的编辑器): 初级难度:nano中级难度:vim终极难度:Emacs 二、命…...

【2020工业图像异常检测文献】SPADE
Sub-Image Anomaly Detection with Deep Pyramid Correspondences 1、Background 利用深度预训练特征的最近邻( kNN )方法在应用于整个图像时表现出非常强的异常检测性能。kNN 方法的一个局限性是缺乏描述图像中异常位置的分割图。 为了解决这一问题&a…...

C++QT医院专家门诊预约管理系统
目录 一、项目介绍 二、项目展示 三、源码获取 一、项目介绍 医院专家门诊预约管理系统 [要求] 该系统需创建和管理以下信息:1、门诊专家信息:专家姓名、编号、性别、年龄、职称、门诊科目、服务时间、门诊预约数据集等;2、门诊预约信息…...

在SpringBoot项目中利用Redission实现布隆过滤器(布隆过滤器的应用场景、布隆过滤器误判的情况、与位图相关的操作)
文章目录 1. 布隆过滤器的应用场景2. 在SpringBoot项目利用Redission实现布隆过滤器3. 布隆过滤器误判的情况4. 与位图相关的操作5. 可能遇到的问题(Redission是如何记录布隆过滤器的配置参数的)5.1 问题产生的原因5.2 解决方案5.2.1 方案一:…...

【prefect】python任务调度工具 Prefect | 可视化任务工具 | Python自动化的终极武器 | 高效数据管道管理
一、产品介绍 1、官方 Github https://github.com/PrefectHQ/prefect 2、官方文档 https://docs.prefect.io/3.0/get-started/index 3、Pgsql说明 正确的python链接pgsql如下: import psycopg2 from sqlalchemy import create_enginedef connect_with_psycopg2(…...
蓝禾,汤臣倍健,三七互娱,得物,顺丰,快手,游卡,oppo,康冠科技,途游游戏,埃科光电25秋招内推
蓝禾,汤臣倍健,三七互娱,得物,顺丰,快手,游卡,oppo,康冠科技,途游游戏,埃科光电25秋招内推 ①蓝禾 【岗位】国内/国际电商运营,设计,…...
【面向对象】设计模式分类
java中设计模式共23种,根据使用场景可分为创建型模式、结构型模式、行为型模式。 创建型: 如何创建对象。 单例模式:保证一个类在一个程序中只能创建一个对象。例如windows任务管理器窗口只需要创建一个。单例模式只创建一个对象࿰…...

花朵识别系统Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
一、介绍 花朵识别系统。本系统采用Python作为主要编程语言,基于TensorFlow搭建ResNet50卷积神经网络算法模型,并基于前期收集到的5种常见的花朵数据集(向日葵、玫瑰、蒲公英、郁金香、菊花)进行处理后进行模型训练,最…...

中泰免签,准备去泰国旅游了吗?《泰语翻译通》app支持文本翻译和语音识别翻译,解放双手对着说话就能翻译。
泰国是很多中国游客的热门选择,现在去泰国旅游更方便了,因为泰国对中国免签了。如果你打算去泰国,那么下载一个好用的泰语翻译软件是很有必要的。 简单好用的翻译工具 《泰语翻译通》App就是为泰国旅游设计的,它翻译准确&#x…...

C++/Qt 集成 AutoHotkey
C/Qt 集成 AutoHotkey 前言AutoHotkey 介绍 方案一:子进程启动编写AutoHotkey脚本准备 AutoHotkey 运行环境编写 C/Qt 代码 方案二:显式动态链接方案探索编译动态链接库集成到C工程关于AutoHotkeyDll.dll中的函数原型 总结 前言 上一篇介绍了AutoHotkey…...

OpenMV学习第一步安装IDE_2024.09.20
用360浏览器访问星瞳科技官网,一直提示访问不了。后面换了IE浏览器就可以访问。第一个坑。...

RK3568平台(基础篇)万用表的使用
一.万用表的通断判断 万用表两个笔头的插法:黑笔头是插在COM的孔里面,红色笔头可以插在其他的三个孔里面,20A和mA分别用来测电流,另外一个孔可以用来测其他(电压 电阻)。 以下这个三角符号(像wifi一样的)可以用来测通断: 使用万用表的红笔和黑笔进行短接,这时候两端…...
more、less 命令:阅读文本
一、命令简介 more 和 less 都是用于查看文本文件内容的命令,但它们在显示方式和功能上有一些区别。 简单的说 less 是 more 的升级版:增加了搜索、跳转等功能。所以优先使用 less,可以不用 more 了。 二、命令参数 基…...

【笔记】1.3 塑性变形
一、塑性变形的方式 DDWs(Dislocation-Dipole Walls,位错偶极墙):指由两个位错构成的结构,它们以一种特定的方式排列在一起,形成一个稳定的结构单元。 DTs(Dislocation Tangles,位错…...

Java集合(三)
目录 Java集合(三) Java双列集合体系介绍 HashMap类 HashMap类介绍 HashMap类常用方法 HashMap类元素遍历 LinkedHashMap类 LinkedHashMap类介绍 LinkedHashMap类常用方法 LinkedHashMap类元素遍历 Map接口自定义类型去重的方式 Set接口和Ma…...

python:给1个整数,你怎么判断是否等于2的幂次方?
最近在csdn上刷到一个比较简单的题目,题目要求不使用循环和递归来实现检查1个整数是否等于2的幂次方,题目如下: 题目的答案如下: def isPowerofTwo(n):z bin(n)[2:]print(bin(n))if z[0] ! 1:return Falsefor i in z[1:]:if i !…...

Centos7安装gitlab-ce(rpm安装方式)
本章教程,主要介绍如何在Centos7安装gitlab-ce。 一、安装基础环境 安装gitlab-ce之前,我们需要安装一下jdk版本。 sudo yum install java-11-openjdk-devel二、下载安装包 这里我们下载的是rpm包。更多gitlab-ce版本可以在这里查看:https://…...
5.1 HarmonyOS NEXT系统级性能调优:内核调度、I/O优化与多线程管理实战
HarmonyOS NEXT系统级性能调优:内核调度、I/O优化与多线程管理实战 在HarmonyOS NEXT的全场景生态中,系统级性能调优是构建流畅、高效应用的关键。通过内核调度精细化控制、存储与网络I/O深度优化,以及多线程资源智能管理,开发者…...
任务调度器-关于中心化调度 vs 去中心化调度的核心区别
1. 定义与架构模型 维度中心化调度去中心化调度核心角色存在一个中央调度器(如XXL-JOB的调度中心),统一管理任务分配、状态监控和故障处理。无中心节点,调度逻辑分散在多个节点,通过共识算法(如选举机制&a…...
tpc udp http
TCP(传输控制协议)、UDP(用户数据报协议)和 HTTP(超文本传输协议)是网络通信中常用的三种协议,它们在不同的层次和场景中发挥作用。以下是对这三种协议的详细解释以及它们之间的区别:…...
Lifecycle 核心原理面试回答
1. 核心目标与设计思想 解耦生命周期管理: 将 Activity/Fragment 的生命周期回调逻辑从视图控制器中剥离,让业务组件(如 Presenter, Repository 封装)能独立感知生命周期。 状态驱动: 将离散的生命周期事件 (ON_CREAT…...

thinkphp-queue队列随笔
安装 # 创建项目 composer create-project topthink/think 5.0.*# 安装队列扩展 composer require topthink/think-queue 配置 // application/extra/queue.php<?php return [connector > Redis, // Redis 驱动expire > 0, // 任务的过期时间…...
场景题-3
如何实现一个消息队列 拆解分析主流的几种消息队列 1、基本架构 生产者Producer、消费者Consumer、Broker:生产者发送消息,消费者接受消息,Broker是服务端,处理消息的存储、备份、删除和消费关系的维护。 主题和分区ÿ…...
深入浅出Java ParallelStream:高效并行利器还是隐藏的陷阱?
在Java 8带来的众多革新中,Stream API彻底改变了我们对集合操作的方式。而其中最引人注目的特性之一便是parallelStream——它承诺只需简单调用一个方法,就能让数据处理任务自动并行化,充分利用多核CPU的优势。但在美好承诺的背后,…...
ocrapi服务docker镜像使用
umiocr只能用于windows,http服务只能找旧版,没办法,只能找docker替代一下了。 umiocr 使用paddleOCR和rapidOCR引擎。以下时这两个docker的运行方法 paddleOCR使用 duolabmeng666的ppocr镜像 镜像大小约2.6G docker run -itd --name ppoc…...

动态规划之网格图模型(二)
文章目录 动态规划之网格图模型(二)LeetCode 931. 下降路径最小和思路Golang 代码 LeetCode 2684. 矩阵中移动的最大次数思路Golang 代码 LeetCode 2304. 网格中的最小路径代价思路Golang 代码 LeetCode 1289. 下降路径最小和 II思路Golang 代码 LeetCod…...

Kyosan K5BMC ELECTRONIC INTERLOCKING MANUAL 电子联锁
Kyosan K5BMC ELECTRONIC INTERLOCKING MANUAL 电子联锁...