-
基本操作
1.1 常用命令(假设使用root账号操作. 可以自己装个VirtualBox, 下载centos8的镜像,然后本地虚拟机来练习.)命令 说明 示例 ls 列出当前目录下文件列表 ls
只展示基本的文件和目录名称不包扩隐藏文件(以.开头的文件视为隐藏文件),ls -al
会展示当前目录下所有文件及目录的名称及细节信息. 有一个别名命令比较常用ll
就等于ls -l --color=auto
, 如果要同时显示隐藏文件就ll -a
cd 切换目录 cd /var/
切换到 /var/目录,cd ~
切换到家目录(常用~表示当前用户的家目录).cd ..
切换到上级目录pwd 展示当前所在路径 pwd
某些时候不知道当前位于什么目录下, 或者想复制当前目录路径就用这个展示出来mkdir 创建一个目录 mkdir test
创建名为test的目录,mkdir -p /var/www/test
加上-p参数递归创建层级目录touch 创建一个文件 touch a.txt
创建名为a.txt的空文件. 平时用的不多.cp 复制 cp a.txt b.txt
将a.txt 复制为b.txtcp -r /var/www /var/xxx
-r参数用于递归复制整个目录mv 移动/剪切 mv b.txt a.txt
将b.txt 移动为a.txt, 通常用于改名,mv /var/www /root/
将/var/www整个目录移动到/root/ 目录下rm 删除操作 rm a.txt
删除a.txtrm -rf /var/www
-rf参数递归强制删除/var/www目录echo 类似编程语言的echo输出 echo abc 在屏幕上展示abc 三个字符, echo $PATH
输出环境变量PATH($符号开头的表示变量, 此PATH和windows下环境变量path意义相同)echo abc > c.txt
将abc这三个字符写入到c.txt文件中,注意这会覆盖原来文件中内容.echo def >> c.txt
将def三个字符追加写入c.txt中 ">>"符号表示追加写入,不会覆盖原来内容,只会在原来内容后接着写. 关于输入输出相关内容后面再具体说cat 输出文件类容 cat a.txt
将a.txt文件的内容都在屏幕上输出tail 输入文件末尾内容 tail -n 5 c.txt
-n参数指定只展示最后几行内容tail -f c.txt
持续输出c.txt文件末尾的内容, 通常用于持续查看日志文件最新的记录行. 注意可以按ctrl+c
来终止持续输出head 与tail相反, 只查看文件开头几行内容 head -n 2 c.txt
输出c.txt开头两行内容more 一点一点查看文件内容 more /var/log/boot.log
先输出一屏内容, 按回车就输出额外行,输出完毕后就自动退出, 也可以按ctrl+c
提前退出grep 统计输出 grep -n File /var/log/boot.log
将boot.log文件中包含File字符的行都输出 -n参数会标上行号.grep -c File /var/log/boot.log
统计包含File字符的有多少行. 注意在分析日志的时候经常用到 cat, more, tail, grep等. 更多高级处理有兴趣可以参考sed awklsblk 查看块设备, 分区, 挂载点 lsblk
输出驱动器和分区及挂载信息df 查看磁盘空间信息 df -h
查看不同分区磁盘用量. 如果分区被用完, ssh还能登录赶紧删东西du 如果分区满了要删东西得知道哪些个目录占用比较多, 用这个统计文件目录占用磁盘大小 du -hd1 /var
统计/var 目录下文件和目录占用空间大小, -h参数表示用人类友好方式展示,即自动把单位转换成K/M/G这样, -d参数表示统计深度多少层free 查看内存用量 free -h
top 实时查看进程资源消耗 top
如果有内存或者cpu消耗过高的进程就需要注意了chown 改变文件/目录的所有者和群组 chown -R www:www /var/www
-R参数表示递归改变/var/www 及其子目录的属组chmod 改变文件/目录的读写权限 chmod -R a-x /var/www
-R 参数表示递归的意思, a-x表示拿掉所有人对/var/www目录的执行权限. 关于权限问题后面再详细讨论useradd 添加用户 useradd www 添加一个名为www的普通用户. 关于用户/账号的问题后面再详细讨论 passwd 修改密码 passwd
修改当前用户密码.passwd www
修改www用户的密码. 注意root用户可以修改其他账号密码, 普通用户只能修改自己密码id 查看账号的用户和组信息 id
查看当前用户组.id www
查看www用户的用户和组信息groups 查看账号有哪些组 groups
查看当前用户的组,groups www
查看www用户拥有哪些组usermod 修改账号信息,比如uid,基本组,附加组,账户过期时间,家目录,登录shell,锁定解锁等 usermod -a -G wheel www
将www额外追加到wheel组中su 切换账号 su -
或者su root
切换到root账号, 他们之间有些微区别可以百度, 建议用 su - 来切换到root.su www
切换到www账号. 从root账号切到其他账号不需要密码, 其他用户切换的时候需要验证密码sudo 以root身份执行命令 sudo ls -al
以root身份查看当前目录文件列表wget 下载 wget https://www.php.net/distributions/php-8.2.7.tar.gz
下载php源码curl 模拟浏览器访问 curl -v http://www.baidu.com
将百度首页html代码输出到屏幕, -v参数会额外展示http报头信息.curl https://www.php.net/distributions/php-8.2.7.tar.gz -O php-8.2.7.tar.gz
加-O参数会将输出写入到对应的文件中, 效果就是下载文件tar 打包/解包工具 tar -zcvf test.tar.gz /var/test
将/var/test 目录打包并压缩.tar -xvf test.tar.gz
将test.tar.gz 解压缩出来.1.2. 基本概念
a) 账号
系统中有三类账号 root是超级账号, 拥有最大权限, 操作基本不受任何限制. 普通账号是由root或者其他具有管理员权限账号创建的账号,权限会受到限制. 系统账号是安装操作系统或部分程序时自动创建的低权限账号,这些账号不允许登录,通常只用于维持某个程序的正常运行,比如通过yum安装mysql,会创建mysql用户,只用于mysql服务的运行,不能干别的事.cat /etc/passwd
可以查看系统中所有账号信息, 第一列时账号名, 第二列由于历史原因都用x表示密码占位符(密码信息被保存在/etc/shadow中, 可以用cat查看), 第三列为uid, 第四列为基本组的gid,第五列为用户全名, 第六列为用户家目录, 第七列为登录后使用的shell.如果为/bin/bash 就是常规的用户, 如果为/sbin/nologin 之类就是系统账户. root用户的家目录默认是/root/, 常规账户家目录为 /home/用户名.
b) 组
账号创建时会自动创建账号的一个基本组. 另外还能给一个账号添加到多个组里面称为附加组, 或者一个组添加多个账号. 这样方便同一个组的人来共同管理一些资料.cat /etc/group
可以查看系统中有哪些组usermod -a -G 组名 用户名
可以将对应用户账号追加到特定组中
c) sudo
出于安全考虑大部分时候我们用普通账号来处理一般事务, 需要的时候才用su -
切换到root用户. 从普通用户切换到root用户需要输入root的密码(从root切换到其他账户不需要密码),如果多个用户都有切root的需求,root密码就不好管理, 泄露风险也大. 因此考虑让部分账户可以通过sudo以root身份来执行命令.查看/etc/sudoers 文件可以发现 wheel组的用户可以从任何地方以root身份执行任何命令. 故此usermod -a -G wheel 用户名
将对应用户添加到wheel组,此用户就能用sudo执行root的命令了. 此时只需要验证此用户的密码就好, 如果没有密码就passwd
命令设置个密码.注意,有时候医院并不会给我们root密码,给的就是具有wheel组的普通用户账号.
d) 文件权限
一个文件可以被特定的用户或者组做读/写/执行等操作.ls -al
输出第一列共十位表示了各文件的基本操作权限. 例如drwxrwxrwx, 第一位表示文件类型(一切皆文件,目录视为特殊文件d为目录, c为字符设备, b为块设备, -为普通文件), 第2-4位标识所有者是否有读/写/执行的权限, 第5-7位表示同组人是否具有读/写/执行权限, 第8-10位表示其他人是否具有读/写/执行权限. 为了方便表示有时候也用三位二进制来表示读写属性. 100是读,010是写,001是执行, 按位与就能用一个数字表示具有的权限.chmod 600 a.txt
就表示修改a.txt权限为所有者具有读写权限,组和其他人无权限.chmod a+x a.sh
也可以用这种形式给所有人加上a.sh的执行权限. 文件还有些隐藏属性通过lsattr
可以查看,chattr +i a.txt
这样可以将文件设置为只读, 就算是root也不能对此文件编辑/移动/删除. 这样的操作比较少,有兴趣的话可以百度.
1.3. 注意事项
a) 尽量只用普通用户做日常操作,比如更新代码,查看程序日志等.
b) 不要用chmod -R 777 ./ 来递归添加所有权限, 这样文件的读写权限就失去意义了.
c) 对于目录需要具有执行权限才能cd进去, 有读权限才能查看其下具体的子文件信息, 有写权限才能在其中创建文件和子目录.
d) 如果按下了ctrl+s 是暂停屏幕输出的意思, 此时会发现按什么都没反应了. 只需要按ctrl+q 继续屏幕输出就好. -
软件安装与配置
软件安装有两种方式: 一是通过yum仓库直接安装仓库中已经编译好的二进制文件,类似从应用商城安装应用的意思, 会自动处理各种依赖,适合简单稳定, 对版本要求不高,也没有自己特殊要求的场景. 另一种是自己下载源代码然后编译再安装, 相对复杂, 需要自己处理各种依赖, 适合自己把控版本以及各种细节. 注意yum将要被dnf取代, 二者参数用法一致, 比如yum install vim
和dnf install vim
是一样的效果, 后面如果看到混用yum 和dnf不要迷惑.-
yum安装
1.1 仓库镜像源配置
ls -al /etc/yum.repos.d/
列出当前仓库用到了哪些源.cat /etc/yum.repos.d/CentOS-Stream-BaseOS.repo
查看基础源默认使用的centos官方仓库地址. 通常需要切换为国内的镜像地址,比如阿里云的.centos7及以前的版本只需要切换BaseOS的就好, 8以后需要切换BaseOS和AppStream两个源.cd /etc/yum.repos.d/ mv CentOS-Stream-BaseOS.repo CentOS-Stream-BaseOS.repo.bk mv CentOS-Stream-AppStream.repo CentOS-Stream-AppStream.repo.bk vim aliyun.repo //输入以下内容并保存 [BaseOS] name=baseos baseurl=https://mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/ gpgcheck=0 enabled=1 [AppStream] name=appstream baseurl=https://mirrors.aliyun.com/centos/8/AppStream/x86_64/os/ gpgcheck=0 enabled=1 //退出vim后更新仓库缓存 dnf clean all dnf makecache
1.2 本地仓库镜像源配置
如果服务器完全处于内网状态,没法上网, 也没法和外部服务器通信.要通过仓库来安装软件就可以考虑本地仓库源. centos完整版的dvd镜像文件(比如CentOS-Stream-8-20230612.0-x86_64-dvd1.iso)就包含官方仓库中各种软件.通常我们使用的都是虚拟机, 可以让虚拟机管理员把镜像文件载入到虚拟的光驱中,我们挂载进来使用, 也可以让管理员直接把iso文件上传到服务器磁盘上我们通过回环设备挂载.
假设已经通过虚拟光盘加载了centos的dvd镜像文件. 下面的操作将镜像文件挂载到/mnt/centos/下.cd /mnt mkdir centos mount /dev/cdrom /mnt/centos ls centos
假设已经将光盘镜像上传到/usr/local/src/ 目录下. 下面操作将dvd镜像挂载到/mnt/centos/ 下
cd /mnt mkdir centos mount -o loop /usr/local/src/CentOS-Stream-8-20230612.0-x86_64-dvd1.iso centos ls centos
不管上面哪种方式挂载好dvd镜像后就可以像常规目录一样操作(默认是只读挂载, 取消挂载是
umount /mnt/centos
). 然后我们编辑yum的仓库配置cd /etc/yum.repos.d/ mv CentOS-Stream-AppStream.repo CentOS-Stream-AppStream.repo.bk mv CentOS-Stream-BaseOS.repo CentOS-Stream-BaseOS.repo.bk vim Local.repo //写入如下配置 [Local-Base] name=local-base baseurl=file:///mnt/centos/BaseOS gpgcheck=0 enable=1 [Local-Stream] name=local-stream baseurl=file:///mnt/centos/AppStream gpgcheck=0 enable=1 //重建缓存 dnf clean all dnf makecache dnf install bzip2 //测试安装软件
1.3 mysql安装
centos8-stream 仓库中默认带的是mysql8的, 可以直通过仓库安装. 安装完成后systemctl 来管理对应的服务dnf install mysql-server //安装mysql systemctl start mysqld //启动mysql systemctl enable mysqld //设为自启动 systemctl status mysqld //查看mysql服务状态 cat /var/log/mysql/mysqld.log | grep pass //查看生成的临时密码 mysql -uroot -p //登录mysql mysql> alter user root@localhost identified by 'new_password';// 修改密码 mysql> flush privileges; // mysql> exit
-
编译安装
a) 下载及解包
可以使用wget 或者curl 来从网上下载文件. 也可以在本地电脑下载好后上传到服务器上去. 通常我们下载的都是tar包. 使用tar 来解包就好. 假设下载php的源码dnf install wget //先安装下载软件. 已安装就略过. cd /usr/local/src/ wget https://www.php.net/distributions/php-8.2.7.tar.xz tar -cvf php-8.2.7.tar.xz //解包. 不想展示太多信息可以省略v参数.
b) php的编译安装及配置示例
一般都是通过make工具调用gcc来编译安装, make需要一个makefile, 手工写一个makefile 比较麻烦, 通常都会通过configure 来生成makefile文件. 假设已经按之前的示例下载并解包了php8的源码.dnf config-manager --enable powertools //启用额外仓库 //先安装必要的依赖库 dnf install -y make dnf install -y libxml2-devel openssl-devel sqlite-devel bzip2-devel libcurl-devel libpng-devel libwebp-devel libjpeg-devel libXpm-devel freetype-devel oniguruma-devel libpq-devel libxslt-devel libzip-devel cd php-8.2.7 ll //可以看到有一个名为configure的可执行程序. ./configure --help //展示所有的配置项目. 不同php版本配置项目可能不同,稍微看看心中有谱. ./configure --prefix=/usr/local/php82 --with-pdo-pgsql --with-zlib-dir --with-freetype --enable-mbstring --enable-soap --enable-calendar --with-curl --enable-gd --with-webp --with-jpeg --with-xpm --with-pgsql --disable-rpath --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --enable-exif --enable-bcmath --with-mhash --with-zip --with-pcre-jit --enable-mysqlnd --with-pdo-mysql --with-mysqli --with-openssl --with-fpm-user=www --with-fpm-group=www --enable-ftp --with-gettext --with-xsl --enable-opcache --enable-fpm --with-fpm-acl --with-iconv --with-pear --with-fpm-selinux make && make install ln -s /usr/local/php82/bin/php /usr/bin/php //做一个软连接, 可以直接执行php mv php.ini-production /usr/local/php82/lib/php.ini //php配置文件 cd /usr/local/php82/etc mv php-fpm.conf.default php-fpm.conf mv php-fpm.d/www.conf.default php-fpm.d/www.conf vim php-fpm.conf //修改 pid = /var/run/php-fpm.pid vim php-fpm.d/www.conf //php-fpm的各种配置按照默认就好, 主要就是动态进程数量可能影响性能. //打开 listen.allowed_clients = 127.0.0.1 出于安全考虑只允许本机连接 //pm.max_children = 5 根据内存大小修改最大子进程数量. 大概估计下,比如8G内存, 如果跑的服务比较多,nginx mysql php 都在一个机器上, 就按四分之一2G内存算, 一个进程给40M, 大概支持50个进程. //slowlog = var/log/$pool.log.slow 设置慢查询日志. vim /usr/lib/systemd/system/php-fpm.service systemctl start php-fpm //启动php-fpm systemctl enable php-fpm //设置为随开机启动 systemctl status php-fpm //查看服务状态
php-fpm 启动脚本php-fpm.service
[Unit] Description=php-fpm After=syslog.target network.target [Service] Type=forking PIDFile=/var/run/php-fpm.pid ExecStart=/usr/local/php82/sbin/php-fpm ExecReload=/bin/kill -USR2 $MAINPID ExecStop=/bin/kill -INT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
php扩展ssh2 redis安装. 可以通过pecl安装, 也可以手动安装, 效果是一样的. 这里通过pecl安装
dnf install epel-release dnf install autoconf dnf install libssh2-devel dnf install libzstd-devel cd /usr/local/php82/bin/ ./pecl install igbinary ./pecl install ssh2 ./pecl install redis vim /usr/local/php82/lib/php.ini //在适当位置加入 extension=ssh2 extension=redis extension=igbinary systemctl restart php-fpm php -m //查看是否已经有redis 和 ssh的扩展了.
c) nginx的编译安装及配置示例
//nginx 编译安装和php差不多的流程. 下载源码, 配置编译选项, 编译和安装, 配置启动脚本. dnf install gd-devel //依赖库 cd /usr/local/src wget http://nginx.org/download/nginx-1.24.0.tar.gz tar -zxf nginx-1.24.0.tar.gz cd nginx-1.24.0 ./configure --prefix=/usr/local/nginx --user=www --group=www --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-stream --with-stream_ssl_module --with-stream_realip_module --with-stream_ssl_preread_module make make install vim /usr/lib/systemd/system/nginx.service systemctl start nginx systemctl enable nginx systemctl status nginx
nginx启动脚本
[Unit] Description=nginx - high performance web server Documentation=http://nginx.org/en/docs/ After=network-online.target remote-fs.target nss-lookup.target Wants=network-online.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s TERM $MAINPID [Install] WantedBy=multi-user.target
-
-
安全相关
firewalld
selinux
网络相关
-
其他
vpn
https证书
systemctl
环境
vim
Linux服务器管理
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 企业实战LNMP高性能服务器_wordpress、discuz双网站部署 LNMP WEB架构中,Nginx为一款...
- 企业实战LNMP高性能服务器_phpMyAdmin部署 LNMP WEB架构中,Nginx为一款高性能WEB服务器...
- InPanel 是一款免费开源的 Linux 服务器管理面板,快速在线安装、小巧且节省资源、支持 Linux 的流...