Linux基本命令及软件安装

Linux

Linux介绍

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

Linux常用命令

ifconfig命令

ifconfig命令被用于配置和显示Linux内核中网络接口的网络参数,但其配置的信息在重启后会丢失

ls命令

ls:用于显示目标列表 ==>

选项==>

-a:显示所有档案及目录(ls不显示隐藏文件);

-l:以长格式显示目录下的内容列表。(输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等);

实例==>

显示当前目录下非隐藏文件与目录:ls

显示当前目录下包括隐藏文件在内的所有文件列表:ls -a

以长格式显示当前目录下的内容列表:ls -l

pwd命令

pwd命令以绝对路径的方式显示用户当前工作目录。命令将当前目录的全路径名称(从根目录)写入标准输出。全部目录使用/分隔。第一个/表示根目录,最后一个目录是当前目录。执行pwd命令可立刻得知您目前所在的工作目录的绝对路径名称。

cd命令

cd命令用来切换工作目录至dirname。 其中dirName表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的home directory(也就是刚login时所在的目录)。另外,~也表示为home directory的意思,.则是表示目前所在的目录,…则表示目前目录位置的上一层目录。

实例==>

cd 进入用户主目录;

cd ~ 进入用户主目录;

cd/ 进入系统根目录

cd - 返回进入此目录之前所在的目录;

cd … 返回上级目录(若当前目录为“/“,则执行完后还在“/";"…"为上级目录的意思);

cd …/… 返回上两级目录;

说明:根目录是树状目录形式的树根只有一个,主目录是用户的home目录,添加用户的时候指定的。对于不同用户,主目录不同,主目录为/home/用户名

mkdir命令

mkdir命令用来创建目录。该命令创建由dirname命名的目录。如果在目录名的前面没有加任何路径名,则在当前目录下创建由dirname指定的目录;如果给出了一个已经存在的路径,将会在该目录下创建一个指定的目录。在创建目录时,应保证新建的目录与它所在目录下的文件没有重名。

选项==>

-p或–parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;

实例==>

创建fengqing目录:mkdir fengqing

同时创建多个目录,多个目录之间用空格分开:

mkdir aa bb cc

所要建立目录的上层目录目前尚未建立,则会一并建立上层目录:

mkdir -p /aa/bb/destdir

rmdir命令

rmdir命令用来删除空目录。当目录不再被使用时,或者磁盘空间已到达使用限定值,就需要删除失去使用价值的目录。虽然还可以用带有-r选项的rm命令递归删除一个目录中的所有文件和该目录本身,但是这样做存在很大的危险性。

选项==>

-p或–parents:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除;

实例==>

删除空目录:rmdir dirname

删除非空目录,需要借助-r递归删除该目录下的所有文件和目录:

rm -r dirname(rm -rf dirname 没有提示)

同时删除多个空目录,多个目录用空格分开:

rmdir aa bb cc

touch命令

两个功能:

  • 把已存在文件的时间标签更新为系统当前的时间(默认方式)
  • 用来创建新的空文件
实例==>

创建一个空文件:touch hello.txt

rm命令

rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。如果参数中含有目录,则必须加上-r或者-R选项。

rm命令可以用-i选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。

选项==>

-f:强制删除文件或目录;

-i:删除已有文件或目录之前先询问用户;

-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;

实例==>

删除当前目录下除隐含文件外的所有文件和子目录:

rm -r *

vi命令

vi命令是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器。Linux中的vi编辑器叫vim,它是vi的增强版(vi Improved),与vi编辑器完全兼容,而且实现了很多增强功能

两种模式:

  • 编辑模式
  • 命令模式

vi编辑器提供了丰富的内置命令,有些内置命令使用键盘组合键即可完成,有些内置命令则需要以冒号“:”开头输入。

常用命令==>

Ctrl+u:向文件首翻半屏;

Ctrl+d:向文件尾翻半屏;

Ctrl+f:向文件尾翻一屏;

Ctrl+b:向文件首翻一屏;

Esc:从编辑模式切换到命令模式;

ZZ:命令模式下保存当前文件所做的修改后退出vi;

:行号:光标跳转到指定行的行首;

:光标跳转到最后一行的行首;

x或X:删除一个字符,x删除光标后的,而X删除光标前的;

D:删除从当前光标到光标所在行尾的全部字符;

dd:删除光标行整行内容;

ndd:删除当前行及其后n-1行;

nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字;

/字符串:文本查找操作,用于从当前光标所在位置开始向文件尾部查找指定字符串的内容,查找的字符串会被加亮显示;

?name:文本查找操作,用于从当前光标所在位置开始向文件头部查找指定字符串的内容,查找的字符串会被加亮显示;

a,bs/F/T:替换文本操作,用于在第a行到第b行之间,将F字符串换成T字符串。其中,“s/”表示进行替换操作;

a:在当前字符后添加文本;

A:在行末添加文本;

i:在当前字符前插入文本;

I:在行首插入文本;

o:在当前行后面插入一空行;

O:在当前行前面插入一空行;

:wq:在命令模式下,执行存盘退出操作;

:w:在命令模式下,执行存盘操作;

:w!:在命令模式下,执行强制存盘操作;

:q:在命令模式下,执行退出vi操作;

:q!:在命令模式下,执行强制退出vi操作;

:e文件名:在命令模式下,打开并编辑指定名称的文件;

:n:在命令模式下,如果同时打开多个文件,则继续编辑下一个文件;

:f:在命令模式下,用于显示当前的文件名、光标所在行的行号以及显示比例;

:set number:在命令模式下,用于在最左端显示行号;

:set nonumber:在命令模式下,用于在最左端不显示行号;

chmod命令

chmod命令用来变更文件或目录的权限。在UNIX系统家族里,文件或目录权限的控制分别以读取、写入、执行3种

权限范围的表示法如下:

u:User,即文件或目录拥有者

g:Group,即文件或目录的所属群组

o:Other,除了文件或目录拥有者或群组之外,其他用户皆属于这个范围

a:All,即全部用户,包含所拥有者,所属群组以及其他用户
r:读取权限,数字代号为4

w:写入权限,数字代号为2

x:执行或切换权限,数字代号为1

-:不具任何权限,数字代号为0

选项==>

-f或–quiet或–silent:不显示错误信息;

-R或–recursive:递归处理,将指令目录下的所有文件及子目录一并处理;

<权限范围>+<权限设置>:开启权限范围的文件或目录的该选项权限设置;

<权限范围>-<权限设置>:关闭权限范围的文件或目录的该选项权限设置;

<权限范围>=<权限设置>:指定权限范围的文件或目录的该选项权限设置;

实例==>

给用户添加写权限:

chmod u+w hello.txt

设置权限

chmod u=rwx,g=rw,o=r hello.txt

或者 chmod 764 hello.txt

jdk安装

第一步:解压jdk,先进入压缩包所在路径,解压到app文件夹

tar -zxvf jdk-8u162-linux-x64.tar.gz -C ~/app

第二步:配置环境变量

在用户目录下查看隐藏文件并修改

[root@luheng ~]# ls -la
[root@luheng ~]# vim .bash_profile

修改配置文件

PATH=$PATH:$HOME/bin
JAVA_HOME=/root/app/jdk1.8.0_231
export PATH=$JAVA_HOME/bin:$PATH
export PATH

第三步:重新编译

查看环境变量

[root@luheng ~]# cat .bash_profile

重新编译

[root@luheng ~]# source .bash_profile

Tomcat安装

第一步:解压

[root@luheng ~]# tar apache-tomcat-7.0.86.tar.gz -C ~/app

第二步:修改端口

先找到该配置文件,在根目录下

[root@luheng ~]# cd /
[root@luheng /]# cd /etc/sysconfig/
[root@luheng sysconfig]# vim iptables

添加端口号

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

第三步:复制文件夹到webapps文件夹

先进入要复制的文件所在文件夹,然后执行复制命令

[root@luheng ~]# cp fengqing.war /root/app/apache-tomcat-7.0.86/webapps

第四部:启动与关闭

进入tomcat的bin文件夹

启动

[root@luheng bin]# ./startup.sh 

关闭

[root@luheng bin]# ./shutdown.sh 

Nginx安装

第一步:安装gc++

Nginx下载地址: http://nginx.org/en/download.html

Nginx需要安装C++编译环境(yum install gcc-c++)

查看是否安装了C++编译环境:rpm -qa|grep gcc*

第二步:安装依赖库

pcre库(pcre-8.32.tar.gz):

​ 可以yum安装: yum install pcre*

​ 也可以下载安装,下载地址==> http://www.pcre.org

​ 先解压pcre-8.32.tar.gz

​ 再进入解压后的目录里用超管(sudo)执行"./configure", “make”, “make install”

openssl库(openssl-fips-2.0.16.tar.gz):

​ 可以yum安装: yum install openssl*

​ 下载地址==> http://www.openssl.org

​ 先解压openssl-fips-2.0.16.tar.gz

​ 再进入解压后的目录里用超管(sudo)执行"./config", “make”, “make install”

zlib库(zlib-1.2.11.tar.gz):

​ 可以yum安装: yum install zlib*

​ 下载地址==> http://www.zlib.net

​ 先解压zlib-1.2.11.tar.gz

​ 再进入解压后的目录里用超管(sudo)执行"./configure", “make”, “make install”

ps:yum安装需要外网环境

第三步:安装Nginx

1.解压nginx-1.12.2.tar.gz

tar -zxvf nginx-1.12.2.tar.gz -C ~/app

2.再进入解压后的目录里用超管(sudo)执行

"./configure", "make", "make install"

3.开放80端口,重启防火墙

sudo vim /etc/sysconfig/iptables
service iptable restart

4.启动、关闭和重启

sudo /usr/local/nginx/sbin/nginx
sudo /usr/local/nginx/sbin/nginx -s stop
sudo /usr/local/nginx/sbin/nginx -s reload

5.错误解决

查看nginx启动与否

ps -ef | grep nginx

启动Nginx报错:

./nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory

原因:不能加载libpcre.so.1

解决方案:

查看libpcre.so.1的位置: whereis libpcre.so.1

把/usr/local/lib/libpcre.so.1在/lib64目录下做个软链

ln -s /usr/local/lib/libpcre.so.1 /lib64/libpcre.so.1

Nginx的配置

nginx成功安装的nginx.conf结构:

server{
		listen 80;
		location / {
            root   html;
            index  index.html index.htm;
        }
        ......
	}

Nginx的配置文件的位置:

/usr/local/nginx/conf/nginx.conf

修改配置文件,在原配置文件server上添加,添加上连接的服务器路径

upstream server_abc{
	server 127.0.0.1:8080;
}

将原有的server删除复制以下server,代理的路径要和上面的名字一只

server{
	listen 80;
	server_name fengqing.com;
	root /home/fengqing/myweb;
	index index.html;
	
	location / {
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_pass http://server_abc; 
	}
	
	location ~ .*\.(gif|jpg|png|html|mp3)$ {
		expires 6h;
	}
	
	location ~ .*\.(css|js)?$ {
		expires 6h;
	}
	
	access_log /home/fengqing/data/logs/nginx_access.log;
}

修改完后检查配置文件(nginx.conf)是否合法:

/usr/local/nginx/sbin/nginx -t 

负载均衡

建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

linux上配置两个tomcat

https://blog.csdn.net/fengqing5578/article/details/80265005

实现负载均衡的三种方式

A轮询

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

upstream server_abc{
	server 127.0.0.1:8080;
	server 127.0.0.1:8081;
}

B权重 weight

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。权重越高,在被访问的概率越大。

upstream server_abc{
	server 127.0.0.1:8080;
	server 127.0.0.1:8081 weight=3;
}

C热备 backup

当主服务器down掉后,由备用服务器处理请求。

upstream server_abc{
	server 127.0.0.1:8080;
	server 127.0.0.1:8081 backup;
}

轮询方式和权重方式存在一个问题就是说,在负载均衡系统中,假如用户在某台服务器上登录了,那么该用户第二次请求的时候,因为我们是负载均衡系统,每次请求都会重新定位到服务器集群中的某一个,那么已经登录某一个服务器的用户再重新定位到另一个服务器,其登录信息将会丢失,这样显然是不妥的。

我们可以采用ip_hash指令解决这个问题,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器。

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

图片缩放

Tengine + Lua + GraphicsMagick

功能:根据请求自动生成相应的缩略图。

简介

Tengine

淘宝优化改良后的Nginx

负责展示图片和调用Lua脚本

安装包:tengine-master.zip

下载地址:https://github.com/alibaba/tengine

Lua

Lua 是一个小巧的脚本语言。其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

作用1:Tengine通过Lua脚本实现对GM操作

作用2:控制裁剪、缩放规格

安装包:lua-5.3.1.tar.gz和LuaJIT-2.0.4.tar.gz(Lua依赖包)

下载地址:http://www.lua.org/ftp和http://luajit.org/download.html

GraphicsMagick

强大的图片处理工具,没有UI,动态的生成图片,特别适用于互联网的应用。

负责图片的处理。

安装包:GraphicsMagick-1.3.18.tar.gz

下载地址:https://sourceforge.net/projects/graphicsmagick/files/graphicsmagick

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dnw9geIN-1578985733127)(…/…/AppData/Roaming/Typora/typora-user-images/image-20200103111523551.png)]

软件安装

软件安装顺序:

Lua --> Tengine --> GraphicsMagick

安装Lua

先yum安装Lua的依赖(readline, readline-devel)

yum install readline

yum install readline-devel

解压lua-5.3.1.tar.gz

tar -zxvf lua-5.3.1.tar.gz -C ~/app

进入解压后的目录/root/app/lua-5.3.1进行编译安装

编译:make linux (说明:lua编译需要指定系统)

安装:make install

解压LuaJIT-2.0.4.tar.gz

tar -zxvf LuaJIT-2.0.4.tar.gz -C ~/app

进入解压后的目录/root/app/LuaJIT-2.0.4进行编译安装

编译:make

安装:make install

安装Tengine

Tengine-master.zip在本地解压就可以了,然后把解压后的tengine-master文件夹上传到linux服务器上。

进入目录tengine-master进行配置、编译、安装

先修改tengine-master目录下的configure的权限,让当前用户有执行权限

chmod 777 configure

配置:

./configure --prefix=/root/app/Tengine --dso-path=/root/app/Tengine/modules  --with-http_realip_module --with-http_gzip_static_module  --with-http_stub_status_module --with-http_concat_module --with-http_lua_module  --http-proxy-temp-path=/var/tmp/Tengine/proxy_temp --http-fastcgi-temp-path=/var/tmp/Tengine/fastcgi_temp --http-uwsgi-temp-path=/var/tmp/Tengine/uwsgi_temp --http-scgi-temp-path=/var/tmp/Tengine/cgi_temp --http-client-body-temp-path=/var/tmp/Tengine/client_body_temp --http-log-path=/var/log/Tengine/access.log --error-log-path=/var/log/Tengine/error.log

编译:make

安装:make install

安装时的错误

错误001

CentOS 6.8 下 安装 Tengine 执行配置命令

./configure时提示以下错误:

./configure: error: SSL modules require the OpenSSL library.

You can either do not enable the modules, or install the OpenSSL library

into the system, or build the OpenSSL library statically from the source

with nginx by using --with-openssl= option.

解决方案001

yum -y install openssl openssl-devel

测试tengine是否安装成功

启动tengine:/root/app/Tengine/sbin/nginx

在本地打开浏览器访问http://192.168.126.130看是否能出现tengine的首页

如果启动时显示No such file or directory

解决办法,制作软链

ln -s /usr/local/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2

错误002

403 Forbidden

You don’t have permission to access the URL on this server. Sorry for the inconvenience.

Please report this message and include the following information to us.

Thank you very much!

URL: http://192.168.126.130/

Server: luheng

Date: 2018/05/10 14:07:08

Powered by Tengine/2.2.0

解决方案002

原因是没有权限进入/root目录

修改首页

修改tengine的配置文件nginx.conf

root /data/myweb

或者在nginx.conf文件中打开root权限

安装GraphicsMagick

先yum安装GraphicsMagick的依赖

yum install libjpeg libjpeg-devel libpng libpng-devel giflib giflib-devel freetype freetype-devel -y

解压GraphicsMagick-1.3.18.tar.gz

tar -zxvf GraphicsMagick-1.3.18.tar.gz -C ~/app

进入解压后的目录/root/app/GraphicsMagick-1.3.18进行配置、编译、安装

配置:

./configure --prefix=/usr/local/myapp/GraphicsMagick --enable-shared

编译:make

安装:make install

配置、测试功能

在/usr/local/myapp/GraphicsMagick下创建一个文件夹lua

再在lua文件夹下创建一个文件ImageResizer.lua,其内容为:

local command = "/usr/local/myapp/GraphicsMagick/bin/gm convert " .. ngx.var.request_filepath .. " -resize " .. ngx.var.width .. "x" .. ngx.var.height .. " +profile \"*\" " .. ngx.var.request_filepath .. "_" .. ngx.var.width .. "x" .. ngx.var.height .. "." .. ngx.var.ext;
os.execute(command);
ngx.exec(ngx.var.request_uri);

修改tengine的nginx.conf文件

user root  #打开root权限(一定要注意这里)
server {
        listen       80;
        server_name  luhengjava.com;
        root /data/imgs;

        location / {
             root /data/imgs; # 站点根目录
             expires 1h;    # 缓存时间
             add_header Cache-Control max-age=3600; # 缓存时间
             access_log   /var/log/Tengine/host_access.log;
        }

        #如果 url 格式如:xxxx.gif_数字x数字.gif
        location ~* ^(.+\.(jpg|jpeg|gif|png))_(\d+)x(\d+)\.(jpg|jpeg|gif|png)$ {
           root /data/imgs;  
           if (!-f $request_filename) { 
              add_header X-Powered-By 'Lua GraphicsMagick';  
              add_header file-path $request_filename;  
              lua_code_cache on; 
              set $request_filepath /data/imgs$1;  
              set $width $3;     
              set $height $4;    
              set $ext $5;      
              content_by_lua_file /usr/local/myapp/GraphicsMagick/lua/ImageResizer.lua;  
            }
        }
}

上传图片到/data/imgs目录下;

启动tengine进行访问

例:http://192.168.10.31/hello.jpg

​ http://192.168.10.31/hello.jpg数字x数字.gpg

你可能感兴趣的:(Linux基本命令及软件安装)