记录一次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://…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
