diff --git a/source/_posts/Docker.md b/source/_posts/Docker.md index 54e7cfc..ab312b8 100644 --- a/source/_posts/Docker.md +++ b/source/_posts/Docker.md @@ -702,3 +702,166 @@ docker run -itd -p 18080:8080 -p 8333:8333 -p 18888:8888 -p 9333:9333 -p 19333:1 ``` +## Docker 安装 Subversion + +拉取镜像 + +```shell +docker pull elleflorio/svn-server + +mkdir /usr/local/docker/svn +cd /usr/local/docker/svn +``` + +创建脚本启动临时容器 + +```shell +vim start.sh + +docker stop svn-test +docker rm svn-test +docker run --restart always --name svn-test -d -p 3690:3690 -p 18080:80 \ + -v /usr/local/docker/svn:/tmp/svn elleflorio/svn-server + +chmod +x start.sh +./start.sh +``` + +创建脚本进入容器 + +```shell +vim enter.sh + +docker exec -it svn-test /bin/sh + +chmod +x enter.sh +./enter.sh +``` + +进入容器 + +```shell +# 查看仓库配置文件 +cat /etc/apache2/conf.d/dav_svn.conf +#LoadModule dav_svn_module /usr/lib/apache2/mod_dav_svn.so +#LoadModule authz_svn_module /usr/lib/apache2/mod_authz_svn.so +# +# DAV svn +# SVNParentPath /home/svn +# SVNListParentPath On +# AuthType Basic +# AuthName "Subversion Repository" +# AuthUserFile /etc/subversion/passwd +# AuthzSVNAccessFile /etc/subversion/subversion-access-control +# Require valid-user +# 拷贝相关文件到tmp,同步到挂载点 +mkdir /tmp/svn/config /tmp/svn/svnadmin_data +cp /etc/subversion/* /tmp/svn/config +cp /opt/svnadmin/data/* /tmp/svn/svnadmin_data +exit +``` + +退出容器,再次编辑启动容器脚本 + +```shell +vim start.sh + +# 3690是svn server的默认端口,80是apache的默认端口 +docker stop svn-test +docker rm svn-test +docker run --restart always --name svn-test -d -p 3690:3690 -p 18080:80 \ + -v /usr/local/docker/svn/repo:/home/svn \ + -v /usr/local/docker/svn/config:/etc/subversion \ + -v /usr/local/docker/svn/svnadmin_data:/opt/svnadmin/data elleflorio/svn-server +# 更改挂载点后,重启容器 +./start.sh +./enter.sh +# 创建一个示例项目 +mkdir -p /home/svn/myrep +ls /home/svn/ +# myrepo +# 添加用户访问权限 +vi /etc/subversion/subversion-access-control + +[groups] +[/] +* = r +# 添加admin的读写权限 +admin = rw + +# 添加用户账号 +htpasswd -b /etc/subversion/passwd admin admin123 +# Adding password for user admin +exit +# 授予权限 +sudo chmod -R a+w /usr/local/docker/svn/config/* +sudo chmod -R a+w /usr/local/docker/svn/repo/* +sudo chmod -R a+w /usr/local/docker/svn/svnadmin_data/* + +# 访问Apache HTTP Server +http://ip:18080/ +# 服务器开放18080端口 +# 在浏览器地址后面加上svn, 即http://ip:18080/svn,会弹出提示框输入用户名和密码,登录成功后可查看项目目录 + +``` + +配置svnadmin(一个php写的svn管理工具) + +访问 http://ip:18080/svnadmin/ + +``` +Error: Could not copy configuration file template. Require write permission (777) to "data" folder and all containing files. + +#0 /opt/svnadmin/index.php(20): include_once() +#1 {main} +``` + +配置文件权限 + +```shell +chmod 777 /usr/local/docker/svn/svnadmin_data/ +``` + +刷新以下 + +按照 上面步骤里提到的`/etc/apache2/conf.d/dav_svn.conf的内容去填写,并点击test按钮验证,如下图,然后点击Save Configuration` + +```shell +LoadModule dav_svn_module /usr/lib/apache2/mod_dav_svn.so +LoadModule authz_svn_module /usr/lib/apache2/mod_authz_svn.so + + + DAV svn + SVNParentPath /home/svn + SVNListParentPath On + AuthType Basic + AuthName "Subversion Repository" + AuthUserFile /etc/subversion/passwd + AuthzSVNAccessFile /etc/subversion/subversion-access-control + Require valid-user +``` + +![image-20231121123737636](Docker/image-20231121123737636.png) + +- Subversion 授权文件: /etc/subversion/subversion-access-control + +- 用户身份验证文件 (SVNUserFile): /etc/subversion/passwd + +- 代码仓库的父目录 (SVNParentPath): /home/svn + + > 需要授予权限 + > + > 进入容器内 + > + > 执行 + > + > ```chmodshell + > chmod -R a+w /home/svn/ + > ``` + +- 'svn.exe' 或 'svn'可执行文件:/usr/bin/svn + +- 'svnadmin.exe' 或 'svnadmin' 可执行文件:/usr/bin/svnadmin + +保存设置就可以登录了 + diff --git a/source/_posts/Docker/image-20231121123737636.png b/source/_posts/Docker/image-20231121123737636.png new file mode 100644 index 0000000..891a2da Binary files /dev/null and b/source/_posts/Docker/image-20231121123737636.png differ diff --git a/source/_posts/Linux.md b/source/_posts/Linux.md index f861295..1f8e90e 100644 --- a/source/_posts/Linux.md +++ b/source/_posts/Linux.md @@ -336,6 +336,24 @@ Linux 下文件有三种权限 r 读 w写 x可执行 chmod 755 file ``` +## Shell 脚本 + +### 为什么大多数 shell 脚本都包含 #! /bin/bash 在 shell 脚本的开头? + +“`#!/bin/bash`”这一行被称为`shebang` 行,在某些文献中,它被称为`hashbang` 行,这是因为它以两个字符`hash '#'` 和`bang '!' `开头。 + +```shell +#! /bin/bash + +echo 'Hello, World!' +``` + +当你在脚本的最顶部包含“`#!/bin/bash`”行时,系统知道你想使用 `bash` 作为脚本的解释器。因此,你现在可以直接运行 `hello.sh` 脚本,而无需在其前面加上 `bash`。 + +使用 `#!/bin/bash` 表示该脚本是 `bash shell` 脚本,无论系统上正在使用什么 `shell`,都应该使用 `bash` 作为解释器运行。如果你使用的是 `zsh` 特定的语法,你可以通过添加 `#! /bin/zsh` 作为脚本的第一行。 + +`#!` 和 `/bin/bash` 之间的空格无关紧要。你也可以使用 `#!/bin/bash`。 + ## 安装MySQL 有些Linux会自带MariaDB数据库,所以需要先卸载 @@ -906,6 +924,15 @@ cd build docker run -itd --name nodejs -v /usr/local/bin/npm:/usr/local/bin/npm n ``` +### AlmaLinux 安装 + +```shell +dnf update -y +dnf install nodejs -y +``` + + + ## 查看硬盘空间 ```shell @@ -980,3 +1007,59 @@ wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm sudo dnf install ./google-chrome-stable_current_x86_64.rpm -y ``` +## 安装 Supervisor + +### 安装 + +```shell +sudo dnf update -y +sudo dnf install epel-release -y +sudo dnf install supervisor -y +``` + +### 配置 + +```shell +sudo vim /etc/supervisord.conf +# 开启web服务管理界面 +# 修改port中的ip为0.0.0.0,以允许任何ip访问 +# 修改用户名密码 +# 去掉行首的 ; 以使配置生效 +[inet_http_server] ; inet (TCP) server disabled by default +port=0.0.0.0:9001 ; (ip_address:port specifier, *:port for all iface) +username=user ; (default is no username (open server)) +password=123 ; (default is no password (open server)) +# 修改包含子配置文件,文件类型为.conf,默认为.ini +[include] +files = supervisord.d/*.conf +``` + +### 常用命令 + +```shell +# 启动 supervisord +sudo systemctl start supervisord +# 开机启动 supervisord +sudo systemctl enable supervisord +# 检查是否开机启动 supervisord +sudo systemctl is-enable supervisord +# 检查 supervisord 状态 +sudo systemctl status supervisord +# 更新新的配置到supervisord(不会重启原来已运行的程序) +sudo supervisorctl update +# 载入所有配置文件,并按新的配置启动、管理所有进程(会重启原来已运行的程序) +sudo supervisorctl reload +# 启动某个进程 +sudo supervisorctl start xxx +# 重启某个进程 +sudo supervisorctl restart xxx +# 停止某个进程(xxx),xxx为[program:theprogramname]里配置的值 +sudo supervisorctl stop xxx +# 重启所有属于名为groupworker这个分组的进程(start,restart同理) +sudo supervisorctl restart groupworker +# 停止全部进程 +sudo supervisorctl stop all +# 查看服务状态 +sudo supervisorctl status +``` + diff --git a/source/_posts/MySQL.md b/source/_posts/MySQL.md index 3fea230..78e92ac 100644 --- a/source/_posts/MySQL.md +++ b/source/_posts/MySQL.md @@ -225,3 +225,38 @@ mysqldump -uroot -p -B test > test.sql source <脚本绝对路径> ``` +# 用户和权限 + +```mysql +CREATE USER 'username'@'%' IDENTIFIED BY 'password'; +GRANT Usage ON *.* TO 'username'@'%'; +GRANT Alter ON database.* TO 'username'@'%'; +GRANT Create ON database.* TO 'username'@'%'; +GRANT Create view ON database.* TO 'username'@'%'; +GRANT Delete ON database.* TO 'username'@'%'; +GRANT Drop ON database.* TO 'username'@'%'; +GRANT Index ON database.* TO 'username'@'%'; +GRANT Insert ON database.* TO 'username'@'%'; +GRANT References ON database.* TO 'username'@'%'; +GRANT Select ON database.* TO 'username'@'%'; +GRANT Show view ON database.* TO 'username'@'%'; +GRANT Update ON database.* TO 'username'@'%'; +``` + + + +# 存储过程和函数 + +## 函数 + +创建函数要加上**DELIMITER $$**、**$$ DELIMITER** + +MySQL 8 还需要执行 + +```mysql +-- 查看该参数,默认为0 +select @@log_bin_trust_function_creators; +-- 设置为1 +set GLOBAL log_bin_trust_function_creators=1; +``` +