(du, disk usage,-s仅显示总计,-h自适应单位 )
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 9.8G 0 9.8G 0% /dev
tmpfs 9.8G 0 9.8G 0% /dev/shm
Size 分割区总容量
Used 已使用的大小
Avail 剩下的大小
Use% 使用的百分比
Mounted on 路径地址
大小 文件名
4.0K test.txt
#cat /etc/redhat-release,这种方法只适合Redhat系的Linux
工具安装完成后Vboxmanage可以简写为vbm(以下命令均可)
VBxoManage list vms
VBoxManage list runningvms
VBoxManage startvm 虚拟机名
VBoxManage startvm 虚拟机名 --type headless
VBoxManage startvm 虚拟机名 --type vrdp
VBoxManage controlvm 虚拟机名 poweroff
VBoxManage [-v|-version] 显示virtualbox的版本号
VBoxManage -nologo 隐藏logo
VBoxManage -convertSettings 允许自动转换设置文件
VBoxManage -convertSettingsBackup 允许自动转换设置文件,并在转换前作备份
VBoxManage -convertSettingsIgnore 允许自动转换设置文件,但是不保存结果
使用su切换用户,只是用户发生变化,当前的操作环境还是在之前的位置(之前用户的操作环境,不安全)
使用su -切换用户,不仅用户变化,且操作环境也变成新用户的环境(推荐)
在进行源代码编译,或者执行命令无法确认所执行的命令是否成功执行的情况下,会使用 echo $? 来进行测试。
如果返回值是0,就是执行成功;如果是返回值是0以外的值,就是失败。
原理:进程生命周期
当一个进程执行完毕时,该进程会调用一个名为 _exit 的例程来通知内核它已经做好“消亡”的准备了。该进程会提供一个退出码(一个整数)表明它准备退出的原因。按照惯例,0用来表示正常的或者说“成功”的终止。
也就是说我们在执行 echo $? 时返回的值就是进程的退出码。而且,这个退出码是由刚刚执行完的进程提供给系统内核的。
规则:
linux系统自带的ssh服务(默认端口22),为了日常维护,我们实际需要使用特定的ssh服务,特殊配置,并且随时进行更新
所以默认停用系统自带的ssh,下载安装最新版本的ssh存放于/opt/下,并修改配置
下载、更新的大致思路如下:
为了避免更新时操作失误,导致ssh断开连接后,无法远程连接,需要ssh双端口操作
步骤如下
ssh -V
systemctl start sshd
vim /etc/ssh/sshd_config
PermitRootLogin yes
PubkeyAuthentication yes
PasswordAuthentication yes
Index of /pub/OpenBSD/OpenSSH/portable/
openssh-8.9p1.tar.gz
将文件传入目标主机
rz
解压
tar -xf openssh-8.9p1.tar.gz
安装编译到特定目录下你,作为自定义的ssh
此处使用/opt/ssh
进入openssh-8.9p1
./configure --prefix=/opt/ssh --with-pam --with-libedit*
./configure的作用是检测系统配置,生成makefile文件,以便你可以用make和make install来编译和安装程序。
(此步骤之前需要安装相关依赖——gcc,cc,clang,zlib,zlib-devel,libedit-devel ,make ,openssl-devel ,gcc-c++,pam*,等,直接用yum)
prefix选项是配置安装的路径
--with指的是安装本文件所依赖的库文件
PAM是一套适用于Linux的身份验证共享库系统,它为系统中的应用程序或服务提供动态身份验证模块支持
libedit库编辑程序
make clean(清缓存,尤其是在configure失败时)
make -j4
make install
用make -j带一个参数,可以把项目进行并行编译,比如在一台双核的机器上,完全可以用make -j4,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源
修改配置文件,包括端口,和权限
vim /opt/ssh/etc/sshd_config (进入更改14行端口至222 )
…
…
测试配置文件是否正确
/opt/ssh/sbin/sshd -t -f /opt/ssh/etc/sshd_config
其他主机测试端口222连通性
将端口222改回22,再次测试连通性
查看新安装的ssh版本
/opt/ssh/bin/ssh -V
重启本机的ssh服务
对其他主机的批量化操作
备份刚刚更新好的ssh配置文件(自定义的那个/opt/ssh)
新建目录 mkdir -r /tmp/sshetc
备份 cp /opt/ssh/etc/* /tmp/sshetc/
打包ssh所有文件,到目录/opt下(以便发送给新机安装ssh)
tar -zcvf /opt/ssh/ssh版本号.tar.gz /opt/ssh
打包ssh所有文件除了etc,到目录/opt下(以便发送给已有ssh服务的机器进行升级)
移除etc(丢到/tmp)
mv /opt/ssh/etc/* /tmp
tar -zcvf /opt/ssh版本号x.tar.gz /opt/ssh (x表示没有配置文件)
查看两个压缩包
ls -l /opt
-rw-r–r--. 1 root root 2449290 3月 11 15:31 ssh89.tar.gz
-rw-r–r--. 1 root root 2425063 3月 11 15:31 ssh89x.tar.gz
修改ssh服务端口设置,重启服务
vim /etc/ssh/sshd_config
关闭防火墙
systemctl stop firewalld
关闭selinux(getenforce可以查看linux状态)
setenforce 0
重启sshd
#systemctl restart sshd
将之前移走的配置文件还原
mv /tmp/sshetc/* /opt/ssh/etc/
systemctl restart sshd
学到两个typora快捷键
选中一段文字ctrl shift k 代码块
ctrl [ 减少缩进
ctrl ] 增加缩进
【转载】
BBS-GO是基于Golang编写的,但是安装有一些困难,我自己也是走了一些弯路,感谢其他大神的教程:史上最全bbs-go安装教程 和 基于golang的开源论坛bbs-go的搭建步骤, 这里是基于Ubuntu的VPS进行安装,测试成功的。
首先下载go语言开发包
https://golang.google.cn/dl/
sodo wget -c https://golang.org/dl/go1.15.6.linux-amd64.tar.gz
tar xvf go1.15.6.linux-amd64.tar.gz
这时候,你会得到一个go的文件夹,下面我们要把go的权限设置为root,并且拷贝文件到 /usr/local
sudo chown -R root:root ./go
sudo mv go /usr/local
之后需要设置Go Paths
sudo nano ~/.profile
在文件的末尾添加下列信息,Ctrl+o 保存, Ctrl+x 退出
export GOPATH=$HOME/work
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
source ~/.profile
然后确认下Go的版本
go version
紧接着,我们需要安装必要的包
sudo apt update
sudo apt install npm git
使用宝塔的一键安装,主要是为了方便我这样子的小白吧。这里需要宝塔安装Nginx+PHP+Mysql。Nginx主要是为了反向端口,Mysql是因为BBS-GO需要,而PHP的话,这里我要phpmyadmin来导入初始的数据。先安装宝塔面板。(更多的安装信息可以查看这里)
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
安装完之后,你会获得相关信息,怎么通过宝塔的面板安装Nginx+PHP+Mysql我就不再赘述。
下面来正式开始安装BBS-GO了。首先是获取源代码
git clone https://github.com/mlogclub/mlog.git
下载之后,你可以看到mlog的目录,进入到目录里面。BBS-GO有两个模块,一个是Server,一个是网站。
首先我们先配置Server,注意Go的版本不要低于1.15. 拷贝一份配置文件
cp ./mlog/server/bbs-go.example.yaml ./mlog/server/bbs-go.yaml
修改配置文件,这里是修改域名
BaseUrl: https://mlog.club # 网站域名
修改数据库信息,这里我用宝塔已经建好数据了
MySqlUrl: username:password@tcp(localhost:3306)/bbsgo_db?charset=utf8mb4&parseTime=True&loc=Local
修改附件的上传方式
# 启用上传方式
Enable: local
# 本地文件上传
Local:
Host: https://img.zaicanada.com/ # 上传文件域名
Path: /www/wwwroot/img.zaicanada.com # 上传目录
配置修改完成了之后,这里导入一些默认的数据,这时候,小白的我们就需要宝塔的PHPMyAdmin了。官方的参考信息
CREATE TABLE `t_user`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`username` varchar(32) DEFAULT NULL,
`email` varchar(128) DEFAULT NULL,
`email_verified` tinyint(1) NOT NULL DEFAULT '0',
`nickname` varchar(16) DEFAULT NULL,
`avatar` text,
`background_image` text,
`password` varchar(512) DEFAULT NULL,
`home_page` varchar(1024) DEFAULT NULL,
`description` text,
`score` bigint(20) NOT NULL,
`status` bigint(20) NOT NULL,
`topic_count` bigint(20) NOT NULL,
`comment_count` bigint(20) NOT NULL,
`roles` text,
`type` bigint(20) NOT NULL,
`forbidden_end_time` bigint(20) NOT NULL DEFAULT '0',
`create_time` bigint(20) DEFAULT NULL,
`update_time` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`),
UNIQUE KEY `email` (`email`),
KEY `idx_user_score` (`score`),
KEY `idx_user_status` (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4;
-- 初始化用户数据(用户名:admin、密码:123456)
INSERT INTO t_user (`id`, `username`, `nickname`, `avatar`, `email`, `password`, `status`, `create_time`, `update_time`,
`roles`, `type`, `description`, `topic_count`, `comment_count`, `score`)
SELECT 1,
'admin',
'bbsgo站长',
'',
'[email protected]',
'$2a$10$ofA39bAFMpYpIX/Xiz7jtOMH9JnPvYfPRlzHXqAtLPFpbE/cLdjmS',
0,
(UNIX_TIMESTAMP(now()) * 1000),
(UNIX_TIMESTAMP(now()) * 1000),
'owner',
0,
'轻轻地我走了,正如我轻轻的来。',
0,
0,
0
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_user` WHERE `id` = 1);
-- 初始化话题节点
CREATE TABLE `t_topic_node`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL,
`description` longtext,
`sort_no` bigint(20) DEFAULT NULL,
`status` bigint(20) NOT NULL,
`create_time` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `idx_sort_no` (`sort_no`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4;
INSERT INTO `t_topic_node` (`id`, `name`, `description`, `sort_no`, `status`, `create_time`)
SELECT 1, '默认节点', '', 0, 0, (UNIX_TIMESTAMP(now()) * 1000)
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_topic_node` WHERE `id` = 1);
-- 初始化系统配置表
CREATE TABLE `t_sys_config`
(
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`key` varchar(128) NOT NULL,
`value` text,
`name` varchar(32) NOT NULL,
`description` varchar(128) DEFAULT NULL,
`create_time` bigint(20) NOT NULL,
`update_time` bigint(20) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `key` (`key`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4;
-- 初始化系统配置数据
INSERT INTO t_sys_config(`key`, `value`, `name`, `description`, `create_time`, `update_time`)
SELECT 'siteTitle',
'bbs-go演示站',
'站点标题',
'站点标题',
(UNIX_TIMESTAMP(now()) * 1000),
(UNIX_TIMESTAMP(now()) * 1000)
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_sys_config` WHERE `key` = 'siteTitle');
INSERT INTO t_sys_config (`key`, `value`, `name`, `description`, `create_time`, `update_time`)
SELECT 'siteDescription',
'bbs-go,基于Go语言的开源社区系统',
'站点描述',
'站点描述',
(UNIX_TIMESTAMP(now()) * 1000),
(UNIX_TIMESTAMP(now()) * 1000)
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_sys_config` WHERE `key` = 'siteDescription');
INSERT INTO t_sys_config (`key`, `value`, `name`, `description`, `create_time`, `update_time`)
SELECT 'siteKeywords',
'bbs-go',
'站点关键字',
'站点关键字',
(UNIX_TIMESTAMP(now()) * 1000),
(UNIX_TIMESTAMP(now()) * 1000)
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_sys_config` WHERE `key` = 'siteKeywords');
INSERT INTO t_sys_config (`key`, `value`, `name`, `description`, `create_time`, `update_time`)
SELECT 'siteNavs',
'[{\"title\":\"首页\",\"url\":\"/\"},{\"title\":\"话题\",\"url\":\"/topics\"},{\"title\":\"动态\",\"url\":\"/tweets\"},{\"title\":\"文章\",\"url\":\"/articles\"}]',
'站点导航',
'站点导航',
(UNIX_TIMESTAMP(now()) * 1000),
(UNIX_TIMESTAMP(now()) * 1000)
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_sys_config` WHERE `key` = 'siteNavs');
INSERT INTO t_sys_config (`key`, `value`, `name`, `description`, `create_time`, `update_time`)
SELECT 'defaultNodeId',
'1',
'默认节点',
'默认节点',
(UNIX_TIMESTAMP(now()) * 1000),
(UNIX_TIMESTAMP(now()) * 1000)
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_sys_config` WHERE `key` = 'defaultNodeId');
INSERT INTO t_sys_config (`key`, `value`, `name`, `description`, `create_time`, `update_time`)
SELECT 'tokenExpireDays',
'365',
'用户登录有效期(天)',
'用户登录有效期(天)',
(UNIX_TIMESTAMP(now()) * 1000),
(UNIX_TIMESTAMP(now()) * 1000)
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_sys_config` WHERE `key` = 'tokenExpireDays');
INSERT INTO t_sys_config (`key`, `value`, `name`, `description`, `create_time`, `update_time`)
SELECT 'scoreConfig',
'{"postTopicScore":1,"postCommentScore":1,"checkInScore":1}',
'积分配置',
'积分配置',
(UNIX_TIMESTAMP(now()) * 1000),
(UNIX_TIMESTAMP(now()) * 1000)
FROM DUAL
WHERE NOT EXISTS(SELECT * FROM `t_sys_config` WHERE `key` = 'scoreConfig');
这时候,已经可以把Server端运行起来了,输入
go run main.go
下面是设置Site模块
首先是安装依赖包,进入目录./site 后,执行 npm install
此外还需要修改./mlog/site/nuxt.config.js,配置后台服务的 api 访问地址:
proxy: {
'/api/':
process.env.NODE_ENV === 'production'
? 'https://tie.zaicanada.com'
修改完之后,执行 npm run dev
则启动前端服务,服务端口 3000
访问 http://IP:3000
当然到了这里还是不能算是完成品,这时候回到宝塔的界面。我这里添加了两个域名 tie.zaicanada.com 作为论坛的域名,img.zaicanada.com 作为本地图片的域名
安装宝塔
( Centos 8官方已经停止支持、请更换Centos7系统或Centos 8 Stream系统安装宝塔 )
Centos安装命令:
wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
source命令相当于(.)命令——执行
source命令也称为“点命令”,也就是一个点符号(.)
source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。
用法:
source filename 或 . filename
另外:
source命令除了上述的用途之外,还有一个另外一个用途。在对编译系统核心时常常需要输入一长串的命令,如:
make mrproper
make menuconfig
make dep
make clean
make bzImage
…………
如果把这些命令做成一个文件,让它自动顺序执行,对于需要多次反复编译系统核心的用户来说会很方便,而用source命令就可以做到这一点,它的作用就是把一个文件的内容当成shell来执行,先在linux的源代码目录下(如/usr/src/linux-2.4.20)建立一个文件,如 make_command,在其中输入以下内容:
make mrproper &&
make menuconfig &&
make dep &&
make clean &&
make bzImage &&
make modules &&
make modules_install &&
cp arch/i386/boot/bzImage /boot/vmlinuz_new &&
cp System.map /boot &&
vi /etc/lilo.conf &&
lilo -v
文件建立好之后,每次编译核心的时候,只需要在/usr/src/linux-2.4.20下输入:
source make_command
即可,如果你用的不是lilo来引导系统,可以把最后两行去掉,配置自己的引导程序来引导内核。
顺便补充一点,&&命令表示顺序执行由它连接的命令,但是只有它之前的命令成功执行完成了之后才可以继续执行它后面的命令。
pwd可以打印当前工作目录
* /就是根目录
* ~是指当前用户的家目录
root的~就表示/root
tim的~就表示/home/tim
而cd命令不加任何路径可以直接进入~
VMware——ESXi图形化界面管理(抽空了解以下)