分类 运维 下的文章

一 stable diffusion简介
stable diffusion和mid journey是现今最为流行的2个A训练工具
stable diffusion开源,插件和配置项较多
mid journey非开源,操作较为简单

二 github下载源码
https://github.com/AUTOMATIC1111/stable-diffusion-webui

三 根据当前版本的readme文件进行安装
Installation and Running推荐的安装步骤为:
1 确认及更新显卡驱动
2 安装Python
3 安装git
4 下载仓库
5 运行批处理

四 安装Python
建议的版本为3.10.6
安装时勾选Add Python to PATH
安装后确认版本:python -V
版本异常检查环境变量

五 更新显卡驱动
命令行执行
nvidia-smi
确认当前为CUDA Version: 11.7

在developer.download.nvidia.cn下载对应斑斑
https://developer.download.nvidia.cn/compute/cuda/11.7.0/local_installers/cuda_11.7.0_516.01_windows.exe

在命令行确认当前版本
nvcc -V

六 运行批处理
文件夹下直接点击webui-user.bat

七 从入门到放弃
卡顿 无法安装
使用B站秋葉aaaki的整合包
https://www.bilibili.com/video/BV1iM4y1y7oA

八 问题解决
提示:No module 'xformers'. Proceeding without it
webui-user.bat”文件,添加--xformers参数
set COMMANDLINE_ARGS=--xformers

提示RuntimeError: No CUDA GPUs are available
命令行
python
import torch
torch.cuda.device_count()
torch.cuda.is_available()
发现为false

print(torch.__version__)
发现为2.0.0+cpu
cpu版本而非GPU版本

安装GPU版本Pytorch
根据官网选项生成在线安装命令
https://pytorch.org/get-started/locally/
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117

执行报错
Requirement already satisfied: torch in XXX
进入所在目录
针对提示删除torch开头的文件夹
重新执行安装命令

1 获取数据盘的设备名称
fdisk -lu
/dev/vdb1是新增数据盘

2 安装Parted工具
yum install -y parted

3 开始分区
parted /dev/vdb1
设置GPT分区格式
mklabel gpt
划分一个主分区、分区名为primary且100%容量给到第一个分区
mkpart primary 1 100%
检查分区是否对齐
align-check optimal 1
如果分区是对齐的,结果如下
1 aligned
查看分区表
print
退出Parted工具
quit

4 使系统重读分区表
partprobe

5 查看新分区信息
fdisk -lu /dev/vdb1

6 配置/etc/fstab文件并挂载分区
备份/etc/fstab文件
cp /etc/fstab /etc/fstab.bak

7 在/etc/fstab里写入新分区信息
echo blkid /dev/vdb1 | awk '{print $2}' | sed 's/\"//g' /mnt ext4 defaults 0 0 >> /etc/fstab

8 查看/etc/fstab中的新分区信息
cat /etc/fstab

9 挂载/etc/fstab配置的文件系统

1 查看系统当前服务状态
service --status-all

2 停用当前ftp服务以免端口占用
Pure-FTPd

3 安装vsftpd
yum install vsftpd

4 默认配置项说明
vim /etc/vsftpd/vsftpd.conf

#关闭匿名用户访问
anonymous_enable=NO
#允许用户写权限
allow_writeable_chroot=YES
#本地用户锁定在自己的主目录中
chroot_local_user=YES
#不使用chroot_list_file指定的用户列表,没有任何“例外”用户
chroot_list_enable=NO
#主动模式端口为20
connect_from_port_20=YES
#日志路径在vsftpd_log_file
dual_log_enable=YES
#启用虚拟用户
guest_enable=YES
#虚拟用户映射为本地用户
guest_username=huchangyi
#ipv4
listen=YES
#ipv6
listen_ipv6=NO
#允许本地用户登录
local_enable=YES
#建立文件夹的权限为777-022=755
local_umask=022
#可插拔验证模块名称
pam_service_name=vsftpd
#主动
port_enable=YES
#被动
pasv_enable=YES
#被动模式传输数据的端口范围
pasv_min_port=10000
#被动模式传输数据的端口范围
pasv_max_port=10000
#屏蔽ftpusers列表中的用户
userlist_enable=YES
#屏蔽user_list列表中的用户
userlist_deny=YES
#user_list列表路径
userlist_file=/etc/vsftpd/user_list
#虚拟用户文件夹路径
user_config_dir=/etc/vsftpd/user_conf
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/etc/vsftpd/ftp.log
vsftpd_log_file=/etc/vsftpd/vsftpd.log
#对登录用户开启写权限
write_enable=YES

5 查看系统用户
cat /etc/passwd

6 虚拟用户权限独立控制
mkdir /etc/vsftpd/user_conf
vim /etc/vsftpd/user_conf/test

write_enable=YES
#虚拟用户和本地用户有相同的权限
#virtual_use_local_privs=YES
#不是只读
anon_world_readable_only=NO
#下载
anon_upload_enable=YES
#下载文件和创建文件夹
anon_mkdir_write_enable=YES
#下载、删除和重命名
anon_other_write_enable=YES
local_root=/home/huchangyi

7 重启
systemctl restart vsftpd

8 新建虚拟账号教程

8.1 建立虚拟用户口令库文件
建立口令文件(名字随便) 奇数是用户 偶数是密码
vim /etc/vsftpd/login.txt

test
t123456

8.2 生成vsftpd的认证文件

使用db_load命令生成认证文件
db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db

设置认证文件只对用户可写可读
chmod 600 /etc/vsftpd/login.db

8.3 建立虚拟用户所需的pam配置文件
cd /etc/pam.d
vim /etc/pam.d/vsftpd

文件内容如下:
auth required /lib/security/pam_userdb.so (so表示调用的共享模块)
db=/etc/vsftpd/login(.db要去掉) (自动生成认证文件)
account required /lib/security/pam_uesrdb.so
db=/etc/vsftpd/login(.db要去掉) (以认证文件为标准验证帐号)

最终调整为
auth sufficient pam_userdb.so db=/etc/vsftpd/login
account sufficient pam_userdb.so db=/etc/vsftpd/login

sufficient
表示该模块验证成功是用户通过认证的充分条件。只要这个模块验证成功了,就代表没有必要继续去认证这个用户了。
那么相应的行为就是只要被sufficient标记的模块一旦认证成功,就会立即返回给应用,报告成功;
但是需要注意的是sufficient的优先级低于required,那么如果有required失败,刚最终的结果也是失败的;
当sufficient认证失败时,相当于optional。

8.4 建立虚拟用户所要访问的目录并设置相应权限
即:建立所以ftp虚拟用户帐号使用的系统用户帐号的映射文件并设置该帐号
宿主目录的权限
useradd huchangyi -d /home/huchangyi -s /sbin/nologin
注意不能给虚拟用户设密码 他只起映射作用

8.5 设置vsftpd.conf配 置文件
在配置文件中添加虚拟用户的配置内容
vim /etc/vsftpd/vsftpd.conf

guest_enable=YES
guest_username=huchangyi
pam_service_name=vsftpd

9 重启服务
systemctl restart vsftpd

10 报错问题解决
euler系统报错 无法初始化数据库:
gdbmtool /etc/vsftpd/login.pag store test test1234