master
2 years ago
12 changed files with 545 additions and 3 deletions
@ -0,0 +1,73 @@
@@ -0,0 +1,73 @@
|
||||
|
||||
# CentOS 7如何创建loop设备读取iso磁盘镜像文件内容? |
||||
|
||||
|
||||
## 创建loop device虚拟设备 |
||||
|
||||
假设你的iso磁盘镜像文件名为:test.iso |
||||
|
||||
``` |
||||
losetup -fP test.iso |
||||
``` |
||||
|
||||
如果没有,可以用下面命令创建一个1G大小的空文件: |
||||
``` |
||||
dd if=/dev/zero of=test.iso bs=1M count=1024 |
||||
``` |
||||
|
||||
|
||||
查看新创建的虚拟设备: |
||||
|
||||
``` |
||||
losetup -a |
||||
``` |
||||
|
||||
|
||||
## 挂载虚拟设备到指定目录 |
||||
|
||||
假设你的系统之前没有loop device,新创建的为/dev/loop0 |
||||
|
||||
``` |
||||
mkdir /mnt/test |
||||
mount -o loop /dev/loop0 /mnt/test |
||||
``` |
||||
|
||||
查看挂载结果: |
||||
|
||||
``` |
||||
df -Th |
||||
``` |
||||
|
||||
|
||||
## 进入iso磁盘 |
||||
|
||||
挂载成功后,就可以像普通目录一样进入iso文件内部了: |
||||
|
||||
``` |
||||
cd /mnt/test |
||||
ls -l |
||||
``` |
||||
|
||||
|
||||
## 卸载虚拟设备 |
||||
|
||||
``` |
||||
umount /mnt/test |
||||
``` |
||||
|
||||
|
||||
## 删除loop device虚拟设备 |
||||
|
||||
``` |
||||
losetup -d /dev/loop0 |
||||
``` |
||||
|
||||
|
||||
掌握了loop device虚拟设备的创建、挂载、卸载和删除, |
||||
就可以在linux中读取网上下载的iso磁盘镜像文件内容了, |
||||
如软件光盘、视频DVD文件等。 |
||||
|
||||
|
||||
|
||||
## 参考 |
||||
> https://www.thegeekdiary.com/how-to-create-virtual-block-device-loop-device-filesystem-in-linux/ |
@ -0,0 +1,62 @@
@@ -0,0 +1,62 @@
|
||||
|
||||
# CentOS 7如何安装Docker Engine? |
||||
|
||||
|
||||
## 卸载老版本 |
||||
|
||||
如果之前有安装过的docker或者docker-engine(新版本名字为:docker-ce), |
||||
需要先卸载老版本: |
||||
``` |
||||
yum remove docker \ |
||||
docker-client \ |
||||
docker-client-latest \ |
||||
docker-common \ |
||||
docker-latest \ |
||||
docker-latest-logrotate \ |
||||
docker-logrotate \ |
||||
docker-engine |
||||
``` |
||||
|
||||
|
||||
## 配置yum的Docker仓库 |
||||
|
||||
``` |
||||
yum install -y yum-utils |
||||
yum-config-manager \ |
||||
--add-repo \ |
||||
https://download.docker.com/linux/centos/docker-ce.repo |
||||
``` |
||||
|
||||
|
||||
## 安装新版Docker Engine |
||||
|
||||
``` |
||||
yum -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin |
||||
``` |
||||
|
||||
|
||||
## 启动Docker |
||||
|
||||
启动Docker Engine并把它设置开机自动启动: |
||||
``` |
||||
systemctl start docker |
||||
systemctl enable docker |
||||
``` |
||||
|
||||
|
||||
## 卸载Docker |
||||
|
||||
如果某天不需要用它了,可以按下面步骤卸载Docker Engine: |
||||
``` |
||||
yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin |
||||
``` |
||||
|
||||
如果之前下载和使用过的Docker镜像、容器都不需要了,可以按下面步骤删除: |
||||
``` |
||||
rm -rf /var/lib/docker |
||||
rm -rf /var/lib/containerd |
||||
``` |
||||
|
||||
|
||||
## 参考 |
||||
> https://docs.docker.com/engine/install/centos/ |
@ -0,0 +1,115 @@
@@ -0,0 +1,115 @@
|
||||
|
||||
# CentOS 7如何用Docker安装开源git仓库管理软件Gogs? |
||||
|
||||
|
||||
## 安装MySql并配置好账号 |
||||
|
||||
先安装mariadb: |
||||
``` |
||||
docker pull mariadb/server |
||||
docker run -d --name maria -p 3306:3306 -eMARIADB_ROOT_PASSWORD=mypassword mariadb/server |
||||
``` |
||||
|
||||
再进入容器maria,创建gogs专用数据库: |
||||
``` |
||||
docker exec -it maria bash |
||||
mysql -uroot -pmypassword |
||||
mysql> create database gogs default charset=utf8; |
||||
mysql> grant all on gogs.* to 'gogs' identified by 'dbpassword'; |
||||
mysql> flush privileges; |
||||
``` |
||||
|
||||
|
||||
## 下载Gogs镜像 |
||||
|
||||
``` |
||||
docker pull gogs/gogs |
||||
``` |
||||
|
||||
如果你还没安装Docker,请先参考安装: |
||||
[CentOS 7如何安装Docker Engine?](./CentOS_7如何安装Docker_Engine.md) |
||||
|
||||
|
||||
## 创建本地Gogs目录 |
||||
|
||||
``` |
||||
mkdir -p /var/gogs |
||||
``` |
||||
|
||||
|
||||
## 创建Gogs容器 |
||||
|
||||
``` |
||||
docker run --name=gogs -p 10022:22 -p 10880:3000 -v /var/gogs:/data gogs/gogs |
||||
``` |
||||
|
||||
其中端口10022和10880可以自定义,前一个是基于ssh访问,后一个是基于http访问。 |
||||
|
||||
|
||||
## 启动Gogs容器 |
||||
|
||||
``` |
||||
docker start gogs |
||||
``` |
||||
|
||||
|
||||
## 配置Nginx以便外网访问 |
||||
|
||||
Nginx参考配置: |
||||
``` |
||||
server { |
||||
listen 80; |
||||
server_name 你的域名; |
||||
|
||||
location / { |
||||
proxy_pass http://localhost:10880; |
||||
} |
||||
} |
||||
``` |
||||
|
||||
|
||||
## 创建管理员账号 |
||||
|
||||
Gogs的规则是,第一个创建的账号就是管理员,Email不是必须的。 |
||||
|
||||
按上面步骤配置好Nginx之后,打开你配置的域名访问Gogs, |
||||
然后点击注册按钮并完成管理员账号创建。 |
||||
|
||||
第一次访问,会看到一个安装网页, |
||||
在安装网页必须填好正确的MySql数据库地址、账号和密码: |
||||
``` |
||||
数据库地址:172.17.0.1:3306 |
||||
数据库账号:gogs |
||||
数据库密码:dbpassword |
||||
``` |
||||
|
||||
其中数据库ip地址需要用```ifconfig```在服务器查看Docker虚拟网络的本机ip。 |
||||
|
||||
以后如果需要审核新的账号, |
||||
管理员账号登陆后进入:Admin > Users 就可以审核了。 |
||||
|
||||
|
||||
## 命令行创建账号 |
||||
|
||||
除了上述网页的方式管理账号,还可以在服务器里用命令来添加账号: |
||||
``` |
||||
su git |
||||
cd /home/git/gogs |
||||
./gogs admin create-user --name tmpuser --password tmppassword --admin --email [email protected] |
||||
``` |
||||
|
||||
上面示例假设你的Gogs是以git账号运行的,并且安装在/home/git/gogs目录, |
||||
它将创建一个用户名为**tmpuser**和密码为**tmppassword**的新用户。 |
||||
|
||||
以Docker方式运行的话, |
||||
上述命令应该在你的Docker容器里完成,进入到容器: |
||||
``` |
||||
docker exec -it gogs bash |
||||
``` |
||||
|
||||
|
||||
## 参考 |
||||
|
||||
* https://hub.docker.com/r/gogs/gogs |
||||
* https://gogs.io/docs |
||||
* https://gogs.io/docs/intro/faqs |
@ -0,0 +1,81 @@
@@ -0,0 +1,81 @@
|
||||
|
||||
# CentOS 7里如何编译安装Nginx-RTMP直播插件? |
||||
|
||||
## 安装依赖包 |
||||
|
||||
``` |
||||
yum -y install pcre pcre-devel openssl openssl-devel zlib zlib-devel unzip |
||||
``` |
||||
|
||||
|
||||
## 下载最新版nginx源码 |
||||
|
||||
``` |
||||
mkdir downloads/ |
||||
cd downloads/ |
||||
wget http://nginx.org/download/nginx-1.9.9.tar.gz |
||||
``` |
||||
|
||||
|
||||
## 下载Nginx-RTMP插件源码 |
||||
|
||||
``` |
||||
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip -O rtmp.zip |
||||
``` |
||||
|
||||
|
||||
## 解压缩源码 |
||||
|
||||
``` |
||||
unzip rtmp.zip |
||||
tar -zxvf nginx-1.9.9.tar.gz |
||||
``` |
||||
|
||||
|
||||
## 配置Nginx |
||||
|
||||
``` |
||||
cd nginx-1.9.9/ |
||||
./configure --add-module=../nginx-rtmp-module-master/ --with-http_realip_module |
||||
``` |
||||
|
||||
|
||||
## 编译安装Nginx |
||||
|
||||
``` |
||||
make && make install |
||||
``` |
||||
|
||||
确认安装成功: |
||||
``` |
||||
/usr/local/nginx/sbin/nginx -v |
||||
``` |
||||
|
||||
|
||||
## 启动nginx |
||||
|
||||
``` |
||||
/usr/local/nginx/sbin/nginx |
||||
``` |
||||
|
||||
如果需要用systemctl来启动nginx, |
||||
请修改nginx的服务配置文件: |
||||
``` |
||||
cp /usr/lib/systemd/system/nginx.service /usr/lib/systemd/system/nginx_backup.service |
||||
vim /usr/lib/systemd/system/nginx.service |
||||
``` |
||||
|
||||
保存后reload配置: |
||||
``` |
||||
systemctl daemon-reload |
||||
``` |
||||
|
||||
再尝试用systemctl启动nginx服务: |
||||
``` |
||||
systemctl stop nginx |
||||
systemctl start nginx |
||||
``` |
||||
|
||||
|
||||
参考: |
||||
> https://www.vultr.com/docs/setup-nginx-rtmp-on-centos-7 |
@ -0,0 +1,64 @@
@@ -0,0 +1,64 @@
|
||||
|
||||
# CentOS 7如何如何配置证书连接ssh及禁用密码登陆? |
||||
|
||||
|
||||
## ssh-keygen生成证书 |
||||
|
||||
``` |
||||
ssh-keygen -t rsa -b 4096 |
||||
``` |
||||
|
||||
连续回车使用默认值即可在~/.ssh/目录下生成两个证书文件: |
||||
|
||||
> id_rsa 私钥 |
||||
|
||||
> id_rsa.pub 公钥 |
||||
|
||||
|
||||
## 配置公钥 |
||||
|
||||
把公钥文件改名为authorized_keys: |
||||
``` |
||||
cd ~/.ssh/ |
||||
mv id_rsa.pub authorized_keys |
||||
``` |
||||
|
||||
|
||||
## 禁用密码登陆 |
||||
|
||||
修改/etc/ssh/sshd_config文件,找到```PasswordAuthentication yes```, |
||||
把其中的yes改为no后保存。 |
||||
|
||||
``` |
||||
vim /etc/ssh/sshd_config |
||||
``` |
||||
|
||||
|
||||
## 复制私钥到本地 |
||||
|
||||
把~/.ssh/id_rsa的内容复制到本地保存, |
||||
下面以保存路径~/.ssh/为例。 |
||||
|
||||
|
||||
## 重启sshd服务 |
||||
|
||||
在执行这个操作之前,请务必仔细确认修改正确,建议同时保持两个窗口连入服务器, |
||||
避免因为修改有误重启sshd服务后退出当前登陆就无法再次连进服务器。 |
||||
|
||||
``` |
||||
systemctl restart sshd |
||||
``` |
||||
|
||||
|
||||
## 在新命令行窗口登陆验证 |
||||
|
||||
保持修改配置的这个窗口连接状态不要退出, |
||||
在新的命令行窗口执行ssh远程登陆命令: |
||||
|
||||
``` |
||||
ssh -i ~/.ssh/id_rsa root@你的服务器ip |
||||
``` |
||||
|
||||
|
||||
## 参考 |
||||
> https://www.ssh.com/academy/ssh/keygen |
@ -0,0 +1,105 @@
@@ -0,0 +1,105 @@
|
||||
|
||||
# CentOS 8.5如何编译安装ffmpeg和openh264、fdk-aac? |
||||
|
||||
ffmpeg是一个非常棒的视频处理软件,它能在linux、macos和windows下运行。 |
||||
|
||||
下面简单记录下在CentOS 8.5系统里如何从源码编译安装ffmpeg以及它所需要的openh264和fdk-aac软件。 |
||||
|
||||
|
||||
## 1. 安装依赖库和fdk-aac |
||||
``` |
||||
dnf install gcc gcc-c++ git nasm |
||||
dnf install fdk-aac fdk-aac-devel freetype freetype-devel |
||||
``` |
||||
|
||||
CentOS 7 里安装fdk-aac参考: |
||||
``` |
||||
wget "http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm" |
||||
rpm -Uvh nux-dextop-release-0-5.el7.nux.noarch.rpm |
||||
yum -y install fdk-aac fdk-aac-devel freetype freetype-devel |
||||
``` |
||||
|
||||
|
||||
## 2. 下载openh264源码 |
||||
``` |
||||
git clone "https://github.com/cisco/openh264.git" |
||||
``` |
||||
|
||||
推荐用git下载安装,在openh264安装的过程中会用到git。 |
||||
|
||||
|
||||
## 3. 配置ffmpeg所需的openh264目录环境变量 |
||||
``` |
||||
export PKG_CONFIG_PATH=openh264源码保存路径 |
||||
``` |
||||
|
||||
|
||||
## 4. 编译并安装openh264 |
||||
|
||||
cd 进入openh264所在目录 |
||||
``` |
||||
make |
||||
make install |
||||
``` |
||||
|
||||
安装好之后,记得创建软连接: |
||||
``` |
||||
ln -s /usr/local/lib/libopenh264.so.2.3.0 /usr/lib/libopenh264.so.7 |
||||
``` |
||||
|
||||
具体版本号请查看你安装的openh264。 |
||||
|
||||
|
||||
## 5. 下载ffmpeg源码 |
||||
``` |
||||
wget "https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2" |
||||
tar -jxvf ffmpeg-snapshot.tar.bz2 |
||||
``` |
||||
|
||||
如果tar无法解压,先安装bzip2: |
||||
``` |
||||
dnf install bzip2 |
||||
``` |
||||
|
||||
|
||||
## 6. 配置ffmpeg |
||||
|
||||
解压源码后进入源码目录执行: |
||||
``` |
||||
./configure --enable-libopenh264 --enable-libfdk-aac --enable-libfreetype --disable-x86asm |
||||
``` |
||||
|
||||
|
||||
## 7. 编译并安装ffmpeg |
||||
|
||||
在ffmpeg目录下执行: |
||||
``` |
||||
make |
||||
make install |
||||
``` |
||||
|
||||
|
||||
## 8. 测试ffmpeg |
||||
|
||||
``` |
||||
ffmpeg -version |
||||
``` |
||||
|
||||
|
||||
|
||||
## 补充说明 |
||||
|
||||
如果你有安装了x264和x264-devel库, |
||||
需要先删除它们,否则ffmpeg执行的时候会报错: |
||||
> ffmpeg: error while loading shared libraries: libopenh264.so.7: cannot open shared object file: No such file or directory |
||||
|
||||
删除x264和x264-devel库: |
||||
``` |
||||
dnf remove x264 x264-devel |
||||
``` |
||||
|
||||
如果在CentOS 7.9中编译安装好之后,出现上述错误,需要安装x264和x264-libs库: |
||||
``` |
||||
yum -y install x264 x264-libs |
||||
``` |
||||
|
Loading…
Reference in new issue