文章目录
前言
操作系统是应用程序运行的基础支撑环境,是计算机系统软硬件资源的管理者和控制者。Linux是开源的基于Intel x86架构的类Unix多用户操作系统,是目前最主要的服务器端操作系统。
1. Linux为什么受欢迎
- 开源免费,自由传播
- 支持多任务、多用户、多CPU
- 高效且灵活
- 兼容任意x86架构计算机
- 强大易用的系统命令
- 完整的应用软件生态
2. Linux基本操作
2.1 文件操作命令
cd:切换目录
pwd:查看当前目录
ll、ls:显示目录内容
mkdir:创建目录
mkdir -p:创建多级目录
mkdir -p -v:创建多级目录并且显示执行过程(还可以是mkdir -pv)
cp:复制文件
cp -r:复制整个文件夹
mv:重命名文件(前面写文件名 空格 后写新名),或移动文件(前文件 后面写路径),或移动目录
rm:删除指定文件(需要确认)
rm -f:强制删除(不需要确认)
rm -rf:强制删除整个目录,慎用
find:查找文件(在所有目录按文件名称模糊查找,例:find / -name)
rmdir:删除目录
clear:清屏
小技巧: cd 后面不用写全名称,只输入前面几个字母,按Tab就能补全如果前缀相同的话连续按两次Tab就能列出所有符合要求的同前缀项。在命令后面加 --help 就能看到这个命令所能使用到的所有参数./代表当前目录,相对路径。加 -v 可以看执行过程v可以和其他命令连写,比如 -pv
2.2 vim文本工具
i:进入编辑模式
esc:编辑模式到命令模式
delete:删除单个字符
dd:删除整行
/str:全文查找str字符串,n下一个,N前一个
:% s/old/new/g:替换文件内所有old为new
u:撤销最近一次操作
:wq 或者:wq!:退出并保存,只读文件额外加!
:q 或者:q!:放弃保存并退出,加!强制退出
100gg:跳到第100行
ctrl+zz:强制退出
2.3 linux文本工具
echo:打印字符串或变量
cat:连接文件并打印到标准输出
tail:显示文件的后几行
touch:创建一个新文件或更新已有文件的时间戳
grep:在文件中查找特定模式的行并打印出来
sed:流编辑器,用于文本替换、删除和添加
awk:用于模式匹配和数据处理的编程语言
wc:统计文件中的行数、单词数和字符数
head:显示文件的前几行
sort:对文件中的行进行排序
uniq:删除文件中的重复行
cut:从文件中提取特定的列
paste:将多个文件按列连接到一起
tr:用于字符转换和替换
tee:将输出复制到文件和标准输出
其中重点使用:
echo "hello" > hello.txt
cat -nE hello.txt
echo "word" > word.txt
cat hello.txt word.txt >> full.txt
cat > full.txt << EOF
> i like java
> so cool
> bye!
> EOF
tail -n -3 full.txt
tail -f full.txt
grep java full.txt > out.txt
grep -v java full.txt
cat out.txt
ll | grep -E "log[0-9]{1,5}.txt"
注意:> 表示覆盖,>> 表示追加
2.4 打包与压缩
tar zcvf
tar zxvf
z 通过gzip压缩或解压
c 创建新的tar.gz文件
v 显示执行过程
f 指定压缩文件名称
x 解压缩tar.gz文件
-C 指定解压缩目录
- tar是Linux系统将多个文件打包和压缩的工具
- tar本质是打包软件,扩展名.tar
- tar可结合gzip或其他压缩工具实现打包压缩,扩展名.tar.gz
2.5 安装与卸载程序
yum search 应用名 #在仓库中查询是否存在指定应用
yum install -y 应用名 #全自动下载安装应用及其依赖
yum info 应用名 #查看应用详细信息
yum list installed应用名 #查看已安装的应用程序
rpm -ql 应用名 #查看安装后输出的文件清单
yum remove -y 应用名 #全自动卸载指定应用
或者使用make,但是注意在安装程序之前,请确保已经安装了程序所需的依赖项和开发工具。否则,程序无法正常运行或编译。
3. Linux进阶
3.1 网络工具命令
ifconfig:查看网卡ip
netstat:查看网络端口号
t 显示tcp传输协议的连接状况
u 显示udp传输协议的连接状况
l 显示处于监听状态的网络连接
p 显示应用PID和程序名称
n 显示ip地址
a 显示所有连接
o 显示计时器
ps -ef:查看进程
kill -9 PID:强制杀死PID进程
kill -s QUIT PID:指定送出信息后杀死PID进程
3.2 应用服务化
systemctl:服务管理命令
start 启动服务
stop 停止服务
restart 重启服务
enable 设置开机启动
disable 禁止开启启动
status 查看服务状态
daemon-reload 重载服务配置文件
list-unit-files 列出所有服务
例如要将Rides设置为应用服务,可以按照以下步骤操作:
- 首先,确保已经在Linux系统中安装了Rides。
- 打开终端,并使用命令进入到Rides所在的目录,编辑 Redis 配置文件:vim /etc/redis/redis.conf
daemonize yes
bind 127.0.0.1
将 daemonize 改为 yes 可以让 Redis 以守护进程的方式运行,bind 则是设置 Redis 只允许本地访问。
- 使用以下命令将Rides添加到系统服务中:
cp rides.service /etc/systemd/system/
注意: 此处rides.service是一个示例服务文件名,实际上应该使用Rides的服务文件名。或者创建一个名为rides.service的新文件,并打开一个简单的文本编辑器。在编辑器中,输入以下内容:
[Unit]
Description=Rides App Service
After=network.target
[Service]
User=YOUR_USERNAME
Group=www-data
WorkingDirectory=/path/to/rides/app
ExecStart=/usr/bin/python3 /path/to/rides/app/run.py
Restart=always
[Install]
WantedBy=multi-user.target
将YOUR_USERNAME替换为你的用户名,并将/ path / to / rides / app替换为Rides应用程序的完整路径。保存文件并退出编辑器。
- 使用以下命令设置开机启用该服务:
systemctl enable rides.service
- 最后,使用以下命令启动该服务:
systemctl start rides.service
现在,Rides已经被设置为应用服务,在系统启动时将自动运行。如果需要停止该服务,可以使用以下命令:
systemctl stop rides.service
如果需要重新启动该服务,可以使用以下命令:
systemctl restart rides.service
3.3 用户与权限
useradd:创建新用户
passwd:修改密码
usermod:修改用户信息/分配组(覆盖原组)
groupadd:创建新的用户组
chown:更改文件的属主或属组
chmod:更改文件的访问权限
chmod 750:组用户可读写,其他用户不允许访问
chmod 777:所有用户拥有完整权限
chmod 700:只有属主拥有完整权限
newgrp:切换用户当前组
userdel -r 用户名:删除用户
groupdel 用户组名:删除用户组
useradd和adduser两个命令都是存在并且可用的,基本功能都是创建一个新的用户。两者存在一些不同:
- 使用useradd时,如果后面不添加任何参数选项,创建出来的用户将是是没有Home Directory,没有密码,没有系统Shell的。所以通常使用useradd时会在命令后面追加参数以及具体的值。
- 使用adduser时,创建的用户则会将上面所述的都默认进行创建,所以通常在创建完用户之后,都会对密码等信息进行更新操作。
综上,useradd适用于可以熟练进行操作的人,可以通过在命令后追加一系列参数来一次性完成设置。但是adduser更适合初学者使用,因为其数值都是单独进行更新的,可以避免以为某个细节的书写错误导致整个命令都无法生效,并且对于初学者来说,检查命令错误时也更加简单。
sudo可以让普通用户拥有超级管理员的执行权限
普通用户要进行经过超级管理员授权才能使用
visudo:授权命令
在文件中找到"## Allow root to run any commands anywhere",在其下方添加以下内容:
username ALL=(ALL) ALL
其中,"username"是要授权使用sudo的用户名
visudo -c
验证解析授权文件
3.4 防火墙
firewall-cmd --state:查看防火墙状态
firewall-cmd --list–ports:查看防火墙放行的端口
firewall-cmd --zone=public --permanent --add-port=8080/tcp:永久放行8080端口
firewall-cmd --reload:防火墙配置重载
firewall-cmd --zone=public --permanent --remove-port=8080/tcp:取消放行8080端口
firewall-cmd --zone=public --permanent --add-port=8000-9000/tcp:放行8000到9000的端口
firewall-cmd --zone=public --permanent --remove-port=8000-9000/tcp:取消8000到9000的端口
- 防火墙是借助硬件和软件对内外部网络环境的保护措施
- CentOS 7基于firewall实现应用层防火墙,CentOS6基于iptables
- firewall-cmd是firewall的核心命令
3.5 bash shell
Shell是一种命令行解释器,用户可以通过Shell执行与操作系统交互的命令。Shell扮演着用户与计算机系统之间的桥梁。Shell还可以用于编写Shell脚本,实现自动化的任务,例如文件管理和系统配置等。同时,Shell还可以扩展命令行的功能,如自动补全,历史命令记录和别名等。Shell是Linux系统中不可或缺的重要组成部分。Linux 提供了多种Shell与Shell解释器,我们来看一个简单例子。
以下是在CentOS 7上使用Bash Shell实现自动化安装最新版 Redis 的步骤:
- 打开终端并登录到 root 用户。
- 创建一个名为 redis-install.sh 的文件:
vi redis-install.sh
- 在文件中输入以下代码:
#!/bin/bash
# 安装必要的依赖
yum -y install epel-release
yum -y install gcc make
# 下载 Redis 最新版本
wget http://download.redis.io/releases/redis-latest.tar.gz
# 解压 Redis 压缩文件
tar -xzf redis-latest.tar.gz
cd redis-*
# 编译和安装 Redis
make
make install
# 创建 Redis 配置文件目录
mkdir /etc/redis
# 复制 Redis 配置文件到配置文件目录
cp redis.conf /etc/redis/
# 启动 Redis 服务
redis-server /etc/redis/redis.conf
- 保存并退出文件。
- 给文件执行权限:
chmod +x redis-install.sh
- 运行以下命令以开始 Redis 安装过程:
./redis-install.sh
- 等待 Redis 安装完成后,可以使用以下命令检查 Redis 是否正在运行:
redis-cli ping
如果返回值为 “PONG”,则表示 Redis 已成功安装并正在运行。
4. 部署java项目思路
- 安装JDK:首先需要安装Java Development Kit (JDK),可以通过yum命令进行安装。
yum install java-1.8.0-openjdk-devel
- 部署Web服务器:可以选择Apache Tomcat,通过下载并解压缩tar包来进行安装。
wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.50/bin/apache-tomcat-8.5.50.tar.gz
tar -zxvf apache-tomcat-8.5.50.tar.gz
- 部署数据库:可以选择MySQL,通过yum命令来进行安装。
yum install mysql-server mysql
- 配置数据库:需要创建一个新的数据库实例,并设置用户名和密码。可以使用MySQL的命令行工具来操作,输入以下命令:
mysql -u root -p
CREATE DATABASE mydatabase;
GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
- 部署Java应用程序:将Java应用程序部署到Tomcat服务器上,可以使用war包或者将Java代码放到Tomcat的webapps目录下。
- 配置Java应用程序:修改应用程序的配置文件,将数据库的连接地址、用户名和密码配置正确。这些配置文件通常位于应用程序的WEB-INF目录下。
- 启动服务:启动Tomcat服务器和MySQL数据库服务。
/etc/init.d/mysql start
/opt/tomcat/bin/startup.sh
- 测试:使用浏览器访问Java应用程序的网址,确保应用程序能够正常运行。
优化: 分布式两台服务器web和db,db防火墙指定web ip开放端口;jdk需要高级版本的,可官网下载tar.gz文件,上传服务器解压,编辑环境变量: 使用vim /etc/profile命令,按i进入编辑状态,加入相关配置,并保存退出:
# set java environment
export JAVA_HOME=/root/java/jdk/jdk-19.0.2
#安装目录/root/java/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
使用source /etc/profile命令重新加载环境变量配置,最后使用java -version命令验证安装。
以上便是本文全部内容啦,希望能够带来帮助!