服务器搭建还是需要一些Linux知识的,这节就聊点基础的。

文件权限操作

查看权限

Linux中每个文件对每个用户来说都有对应的权限,在任一路径中输入ll就可以查看这些信息:

root@ip-*** /usr/local # ll

total 32K

drwxr-xr-x 2 root root 4.0K Jan 14 17:00 bin

drwxr-xr-x 2 root root 4.0K Jan 14 17:00 etc

drwxr-xr-x 2 root root 4.0K Jan 14 17:00 games

drwxr-xr-x 2 root root 4.0K Jan 14 17:00 include

drwxr-xr-x 4 root root 4.0K Jan 14 17:08 lib

lrwxrwxrwx 1 root root 9 Jan 14 17:00 man -> share/man

drwxr-xr-x 2 root root 4.0K Jan 14 17:00 sbin

drwxr-xr-x 7 root root 4.0K May 27 14:02 share

drwxr-xr-x 2 root root 4.0K Jan 14 17:00 src

关于权限方面我们主要关注第1、3、4列

我们先来看第一列,第一列表示各用户对该文件/目录的操作权限,我把它断成四个部分,d|rwx|r-x|r-x分别表示类型|文件所有者权限|文件所属用户组权限|其他人的权限。类型我们经常用到的有d-目录,--文件,l-连接文件,r(4)|w(2)|x(1)分别对应读|写|可执行(进入目录)。

第三列和第四列分别代表文件所有者和文件所属用户组。

改变权限属性

改变文件权限需要用到chmod命令,上面我在rwx中标注了4、2、1,代表的就是它们的对应值,需要哪些权限把它们相加就是了,来个示例:

root@ip-*** ~ # ll

total 4.0K

-rw-r--r-- 1 root root 25 Jun 8 02:33 dev.js

计算一下得到文件dev.js对各用户的权限值是644,下面使用chmod命令改变一下:

root@ip-*** ~ # chmod 761 dev.js

root@ip-*** ~ # ll

total 4.0K

-rwxrw---x 1 root root 25 Jun 8 02:33 dev.js

这里分别赋予文件所有者|文件所属用户组|其他用户的权限是可读可写可执行|可读可写|可执行

另外,除了更改文件权限之外,还可以更改文件所有者和所在用户组,分别用到的命令是chown、chgrp,具体使用方式可以使用man命令查看。

磁盘

一般在我们购买服务器的时候我们都会选择安装好一个Linux系统,分区啥的都已经配置好了,这方面对入门同学来讲并不需要掌握太多,主要注重查看。

查看磁盘使用df命令,加上参数-h使用以人类易读的方式展示。

压缩与打包

Linux中有很多软件是下载一个压缩包让用户自己解压安装的,这就需要我们掌握必要的压缩技能。使用比较广泛的有gzip、bzip2、tar。

gzip、zcat

gzip应该说是目前Linux系统中使用最广的压缩命令了。它可以解开*.z、*.zip、*.gz等格式的压缩文件,下面来看它的使用方式:

root@ip-*** ~ # gzip -v dev.js

dev.js: -8.0% -- replaced with dev.js.gz

root@ip-*** ~ # ls

dev.js.gz

这里的-v是为了在压缩结束后查看压缩比,当然还有其他参数:

-c 将压缩的数据输出

-d 解压缩

-t 校验压缩文件

-1~-9 设置压缩级别,-1最快,压缩效果也最差,-9最慢,压缩效果最好,默认-6,一般情况下使用默认的就可以了。

so,当我们需要解压缩文件的时候只要加上-d参数就可以了。

我们知道cat命令可以用来查看纯文本文件,那zcat就是用来查看纯文本被压缩后的压缩文件。

另外,需要注意的一点是使用gzip压缩后源文件就会被自动删除。

bzip2、bzcat

bzip2是比gzip更优秀的压缩工具,用法跟gzip非常近似:

-c 将压缩的数据输出

-d 解压缩

-k 保留原文件

-z 压缩参数

-t 校验压缩文件

-1~-9 设置压缩级别,-1最快,压缩效果也最差,-9最慢,压缩效果最好。

其压缩文件以*.bz2格式存在,bzcat的作用与zcat相似,不再赘述。

tar

上面我们讲到了压缩命令,但是这里的压缩都是单文件的,要是我想把多个文件压缩在同一个压缩包中光用上面的命令是做不到的,有的同学会说我们可以压缩一个文件夹啊,想法很好,但是不好意思,你这么做的话会类似这样的提示:* is a directory -- ignored。所以这里我们要用到另一个工具tar,把那些文件打包成一个文件合集再使用压缩工具进行压缩。

值得一提的是,tar还可以同时在参数中直接使用gzip/bzip2。tar的命令非常多,介绍几个常用的:

-c 新建打包文件

-j/-z 使用bzip2/gzip压缩,打包文件名通常应该是*.tar.bz2/*.tar.gz

-t 查看打包文件内容,主要用来查看文件名

-x 解压缩,通常搭配 -C 用于解压到目标目录

-v 查看压缩/解压过程中,正在被处理的文件

-C 解压到指定目录,与 -x 一起使用

-f 后面接被处理的文件名

下面是几个常用的组合,一般情况下足以应付大部分使用场景了。

压缩(bzip2):tar -jcv -f target.tar.bz2 待压缩的目录

压缩(gzip):tar -zcv -f target.tar.gz 待压缩的目录

查看包含文件(bzip2):tar -jt -f target.tar.gz/target.tar.bz2

查看包含文件(gzip):tar -zt -f target.tar.gz/target.tar.gz

解压(bzip2):tar -jxv -f target.tar.bz2 -C 解压到某处

解压(gzip):tar -zxv -f target.tar.gz -C 解压到某处

来个实例:

root@ip-*** ~ # ls -a

. .config .zcompdump-ip-172-31-17-254-5.0.2

.. .oh-my-zsh .zsh-update

.aptitude .profile .zsh_history

.bash_history .ssh .zshrc

.bashrc .viminfo dev.js

.cloud-locale-test.skip .zcompdump test

root@ip-*** ~ # tar -jcv -f test.tar.bz2 .

...

./.oh-my-zsh/lib/completion.zsh

./.oh-my-zsh/lib/diagnostics.zsh

./.profile

./.zsh_history

./.cloud-locale-test.skip

./.bashrc

root@ip-*** ~ # ls -a

. .oh-my-zsh .zsh_history

.. .profile .zshrc

.aptitude .ssh dev.js

.bash_history .viminfo test

.bashrc .zcompdump test.tar.bz2

.cloud-locale-test.skip .zcompdump-ip-172-31-17-254-5.0.2

.config .zsh-update

打包压缩成功后,可以看到最后多了一个test.tar.bz2文件。另外,另外两组组合可以自己尝试一下,另外,解压强烈建议加上-C命令,以免覆盖原来的文件。

shell脚本

shell脚本是能够在shell环境中执行的程序,它遵从shell语法,有了它,我们可以为一些需要重复操作的系列连续性命令做一个合集,解放劳动力。

下面我先给个常用的git案例:

#!/bin/bash //声明使用的shell环境

action="none" //变量赋值

echo "1: commit to dev and update test" //打印字符串

echo "2: merge branch to master"

read -p "please input number to select next step: " -t 30 action //读取用户键盘输入并赋给 action 变量,30秒内无输入则跳过

case $action in //case语句,判断条件为 action 变量

1)

read -p "please input commit content: " -t 30 commit

if [ "$commit" == "" ]; then //if判断语法

commit="default commit" //条件符合执行的操作

fi //if判断语句结束

git add .

git commit -m "$commit" //引用变量

git push origin dev

exit 0 //退出shell

;; //满足 action 为1的条件的语句结束

2)

echo "1: cyc"

echo "2: bingqichen"

echo "3: dev"

branch[1]="cyc" //数组赋值

branch[2]="bingqichen"

branch[3]="dev"

read -p "please input number to select the branch: " -t 30 branch_no

if [ "$branch_no" == "1" ] || [ "$branch_no" == "2" ] || [ "$branch_no" == "3" ]; then //if条件判断,|| 表示或关系

git checkout master

git merge "${branch[$branch_no]}" //${branch[1]}为数组的引值方法

git push origin master

git checkout -

else //另外还有 elif ,跟js中的 else if 类似,可以继续添加判断条件

echo "sorry, this is an undefined branch!"

fi

exit 0

;;

*) //action为其他值的操作

echo "sorry, this is an undefined action!"

exit 0

;;

esac //case语句结束

这段脚本就是我用来解决git提交和代码合并的问题,大家可以根据自己的使用场景改造。大部分语句还是很简单的,主要有几个需要注意的点,比如条件判断语句:

[ "$branch_no" == "1" ]

这里面的每个空格都不可以省略!还有赋值语句不能加空格,慎用单引号等等。

编译安装

Linux中安装软件的方法主要分为使用包管理器安装,和下载源代码自行编译安装,前者相对简单,但是有可能有些最新的软件包未必会有,比如PHP7,这时候就需要我们下载软件源码编译成二进制文件才能使用。

先来看看编译过程:

大致过程是这样的,当我们下载到软件源码后,一般会是一个压缩包,解压之后里面会有一个用于建立Makefile文件的config/configure文件,使用config/configure建立Makefile后,执行make命令将源代码根据Makefile文件的配置进行编译,最后执行make install命令,将编译好的内容依据Makefile中install选项安装到指定位置完成安装。

这里讲讲为什么要根据Makefile进行编译,其实GCC可以直接编译程序文件,但是一个软件不可能只拥有一个程序文件,要是人工一个个去编译每个文件,会非常劳民伤财!所以借助一个Makefile我们就可以搞定了。

下面来演示一个PHP7的编译安装:

root@ip-*** ~ # wget http://cn2.php.net/get/php-7.0.0.tar.gz/from/this/mirror //下载源码

root@ip-*** ~ # ls

mirror

root@ip-*** ~ # mv mirror php.tar.gz //重命名

root@ip-*** ~ # tar -zxv -f php.tar.gz //解压缩源码包

root@ip-*** ~ # ls

php-7.0.0 php.tar.gz

root@ip-*** ~ # cd php-7.0.0 //进入源文件目录

root@ip-*** ~/php-7.0.0 # ls //里面会有一些手册,可以用来做安装参考

INSTALL README.md configure

...

root@ip-*** ~/php-7.0.0 # ./configure //执行configure建立Makefile

checking for grep that handles long lines and -e... /bin/grep

checking for egrep... /bin/grep -E

...

checking for xml2-config path...

configure: error: xml2-config not found. Please check your libxml2 installation.

我在编译到这一步报了一个错误,看起来是由于libxml2未安装,在我尝试安装后发现已经存在这个软件,在网上搜寻一片后发现还要安装libxml2-dev,这个我不是很懂。。。再次执行./configure成功并自动建立了Makefile文件,继续:

root@ip-*** ~/php-7.0.0 # make //这个步骤视软件大小和硬件性能执行时间会有差异

/bin/bash /root/php-7.0.0/libtool --silent --preserve-dup-deps --mode=compile cc -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -Iext/opcache/ -I/root/php-7.0.0/ext/opcache/ -DPHP_ATOM_INC -I/root/php-7.0.0/include -I/root/php-7.0.0/main -I/root/php-7.0.0 -I/root/php-7.0.0/ext/date/lib -I/usr/include/libxml2 -I/root/php-7.0.0/ext/sqlite3/libsqlite -I/root/php-7.0.0/TSRM -I/root/php-7.0.0/Zend -I/usr/include -g -O2 -fvisibility=hidden -c /root/php-7.0.0/ext/opcache/ZendAccelerator.c -o ext/opcache/ZendAccelerator.lo

...

Build complete.

Don't forget to run 'make test'.

编译结束时,应该能看到上面的提示,make test是非必要的,自行选择,另外要注意的一点,如果你是二次编译的话需要先清理之前的编译出来的文件,即在make之前执行一下make clean

到这里我们只要再执行一下make install就可以安装结束了。

这只是最基础的安装,我在这过程中省略了很多配置项,这样安装出来的软件是很“简陋”的,事实上在执行./configure操作时,有很多可选项供我们配置,但是不同软件可以添加的参数是不一样的,怎么看当前的软件可以添加哪些参数呢?在软件源码目录执行./configure --help就可以了:

root@ip-*** ~/php-7.0.0 # ./configure --help

...

Installation directories:

--prefix=PREFIX install architecture-independent files in PREFIX

[/usr/local]

...

SAPI modules:

--enable-fpm Enable building of the fpm SAPI executable

...

这里只列举了两个,一个是目标安装目录,一个是启用fpm,这些选项可以根据需要自行添加。

其实,很多软件通过添加软件源的方式还是可以用包管理器安装的,上面说的PHP7就是这样,不要打我???

其他资料

包管理器

Linux的包管理器有很多种,Cent OS有yum,Ubuntu有apt,还有别的像aptitude之类的,这里有一篇很好的文章供参考点我查看

oh-my-zsh

zsh也是一个非常强大的shell环境,可以用它来代替Linux系统原有的bash,这是一组zsh的配置,它可以让zsh更加好用,感兴趣的可以看我的另一篇文章oh-my-zsh小记

htop

这是一个运行在终端的用于查看系统资源使用情况和管理进程的图形化工具,使用yum或者apt-get等安装即可,完成后直接输入htop就可以使用了,比原生的top更强大。

linux服务器基本常识,服务器搭建-Linux基础知识相关推荐

  1. 空服务器安装linux,debian服务器linux服务器web建站搭建linux服务器之Debian安装

    debian服务器linux服务器web建站搭建linux服务器之Debian安装 原文来自i火吧 大家都知道linux的发行版本很多,有centos啊,debian啊,ubuntu等,下面我就用de ...

  2. Linux进程管理:进程和线程基础知识

    <Linux进程管理:进程和线程基础知识> <Linux-进程管理> <C语言进程的内存地址空间分配> <进程和线程模型> <(1)Linux进程 ...

  3. ROS Qt环境的搭建及基础知识介绍

    ROS Qt环境的搭建及基础知识介绍 文章目录 ROS Qt环境的搭建及基础知识介绍 1. 开发环境搭建 1.1 qtcreator安装 1.2 catkin_create_qt_pkg环境配置 1. ...

  4. 2018电子商务证书计算机基础知识,2018银行春招笔试高频考点—常识百科之计算机基础知识...

    原标题:2018银行春招笔试高频考点-常识百科之计算机基础知识 2018年度银行春季校园招聘正如火如荼的进行,下面帮大家梳理下2018银行春招笔试高频考点-常识百科之计算机基础知识. 一.计算机的分类 ...

  5. 自建服务器系列-0元搭建linux服务器(windows笔记本)

    0元搭建linux服务器 一.windows装Centos7 1.1 centos7 iso镜像 1.2 准备U盘 1.3 UltraISO 启动盘制作工具安装 1.4 准备一台windows 机器 ...

  6. 金万维linux 路由,金万维可以搭建linux服务器吗

    匿名用户 1级 2018-11-15 回答 安装步骤如下: 1)下载金万维gnhostlinux动态域名Linux/Unix下客户端软件 在Linux命令行输入: wget http://www.gn ...

  7. 服务器架设笔记——Apache模块开发基础知识

    通过上节的例子,我们发现Apache插件开发的一个门槛便是学习它自成体系的一套API.虽然Apache的官网上有对这些API的详细介绍,但是空拿着一些零散的说明书,是很难快速建立起一套可以运行的系统. ...

  8. 路由器设置服务器用什么协议,路由器配置基础知识

    路由器配置基础知识 一般来说,可以用5种方式来设置路由器,下面跟YJBYS小编一起来学习一下吧! 一.简单介绍 1.Console口接终端或运行终端仿真软件的微机; 2.AUX口接MODEM,通过电话 ...

  9. linux下tc、htb、iptables基础知识及openwrt 下qos使用介绍

    htb基础知识:Linux Htb队列规定指南中文版:http://wenku.baidu.com/view/64da046825c52cc58bd6beac.html TC基础知识: Linux 的 ...

最新文章

  1. c语言将水仙花数放入一维数组a中,全国计算机等级考试C语言考试程序设计题(13)...
  2. 邬贺铨:解读5G技术关键点,及如何影响AIoT
  3. 锤子辩论有感——我该如何定义成功
  4. 关于IE6.7.8.FF兼容的问题
  5. Android处理ListView中的Item中的Button按钮不能点击的问题
  6. ipconfig没有显示ip_TCP/IP 协议修复网络问题
  7. [css] 写例子说明如何强制(自动)中、英文换行与不换行
  8. 布朗的计算机排名,布朗大学计算机工程硕士排名第26(2020年TFE Times排名)
  9. 如何快速看透一个人?
  10. 山海镜花vivo服务器微信号,山海镜花初始号怎么刷
  11. CSS学习总结3:CSS定位
  12. linux上sh工具如何使用,怎样用 Bash 编程:语法和工具 | Linux 中国
  13. 华为交换机基本配置命令详解
  14. 杰控连接mysql_杰控FameView在数据库连接和查询方面的应用———FameView组态软件在数据库处理方面的...
  15. Python之Selenium模拟浏览器
  16. ROS错误:摄像头数据格式错误 wants topic /image/compressed to have datatype/md5sum
  17. 分析java程序在运行中卡顿
  18. 微信公众号获取OpenId(未授权)(需要关注公众号)
  19. Fbx文件解析(一)——FBX SDK for Windows环境配置
  20. Oracle 查看表空间名称及大小和删除表空间及数据文件方法

热门文章

  1. 最大公约数最小公倍数
  2. mysql断网_断网的情况上如何访问本机的mysql
  3. excel实战应用案例100讲(五)-excel实现南丁格尔玫瑰图制作
  4. Hey,孙叫兽的2020 CSDN年度报告已出炉,请查收!
  5. 【APICloud系列|12】ios真机调试时如何添加新设备的udid?
  6. tomcat mysql如何优化_Tomcat+Mysql高并发配置优化讲解
  7. 计算机控制论文,计算机控制系统论文.ppt
  8. koa2 mongdb 做后端接口的小demo
  9. JS加密算法简单分析
  10. 如何在 vue-cli v3.0 中使用 SCSS/SASS