做了很多修改

This commit is contained in:
Aaron Chen 2023-06-12 10:51:02 +08:00
parent 500b9af62d
commit 35f093126d
15 changed files with 404 additions and 152 deletions

View File

@ -0,0 +1,282 @@
## 在Debian11服务器上使用docker部署gitea服务器完整过程
本文目标:
- 仓库、数据库等用户产生数据保存在数据盘中
- 使用postgresql数据库
- 数据库和gitea服务以docker方式启动
- 主机和容器使用22端口实现SSH直通
- 使用域名访问通过nginx反向代理实现通过80端口访问web UI
> 为了方便文档中的操作都是在root用户下执行建议在生产环境中使用普通用户执行操作在命令前加`sudo`。
### 准备域名
提前准备一个公网域名指向到下面即将要操作的服务器IP上后面的操作完成了域名解析也差不多该生效了。
> 假设我们用的是`gitea.wukezhenzhu.com`,后面配置是用以它为例。
### 准备Debian11服务器
#### 安装系统
#### 挂载数据盘
通过`df -h`、`lsblk`、`fdisk -l`等命令确认当前磁盘和分区状态,下面是结果示例:
```sh
root@debian:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 2.0G 0 2.0G 0% /dev
tmpfs 394M 560K 393M 1% /run
/dev/sda1 491G 1.4G 464G 1% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 394M 0 394M 0% /run/user/0
root@debian:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 499G 0 part /
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 975M 0 part [SWAP]
sdb 8:16 0 4T 0 disk
sr0 11:0 1 1024M 0 rom
root@debian:~# fdisk -l
Disk /dev/sdb: 4 TiB, 4398046511104 bytes, 8589934592 sectors
Disk model: Virtual disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sda: 500 GiB, 536870912000 bytes, 1048576000 sectors
Disk model: Virtual disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xac8bf5c9
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 1046575103 1046573056 499G 83 Linux
/dev/sda2 1046577150 1048573951 1996802 975M 5 Extended
/dev/sda5 1046577152 1048573951 1996800 975M 82 Linux swa
```
从上面的结果可以看到,系统中有一个名为`/dev/sdb`的4TB硬盘是空闲的下面我们要把它整个挂载到`/data`目录下:
```sh
root@debian:~# mkfs.ext4 /dev/sdb
mke2fs 1.46.2 (28-Feb-2021)
Creating filesystem with 1073741824 4k blocks and 134217728 inodes
Filesystem UUID: f081b706-f637-4b84-b70b-5521b7ad5b6b
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000, 550731776, 644972544
Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done
root@debian:~# mkdir /data
root@debian:~# mount -t ext4 /dev/sdb /data
root@debian:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 2.0G 0 2.0G 0% /dev
tmpfs 394M 560K 393M 1% /run
/dev/sda1 491G 1.4G 464G 1% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 394M 0 394M 0% /run/user/0
/dev/sdb 4.0T 28K 3.8T 1% /data
```
经过上面的操作,已经把磁盘`/dev/sdb`格式化为ext4文件系统并成功挂载下`/data`目录下,但是如果现在重启系统后,数据盘还不能自动完成挂载,需要执行下面的操作:
```sh
root@debian:~# ll /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 Apr 21 14:22 0bc1a76e-3457-4e2c-b708-a201e510f343 -> ../../sda1
lrwxrwxrwx 1 root root 9 Apr 21 14:30 f081b706-f637-4b84-b70b-5521b7ad5b6b -> ../../sdb
lrwxrwxrwx 1 root root 10 Apr 21 14:22 ff162b2a-5e9e-4661-854a-64ad11f22fa5 -> ../../sda5
root@debian:~# echo "UUID=f081b706-f637-4b84-b70b-5521b7ad5b6b /data ext4 defaults 0 0" >> /etc/fstab
```
> 上面写入`/etc/fstab`文件中的UUID是在`/dev/disk/by-uuid/`中查到的`sdb`对应的UUID。
可以试着`reboot`一下,重启后数据盘会自动完成挂载。
> 操作系统的准备工作已经完成,但是我们建议中国大陆用户要为系统配置一组高速的软件源,配置文件位置`/etc/apt/sources.list`,本文不对展开讲解。
### 准备docker环境
> 按照docker官方文档安装[Docker Engine](https://docs.docker.com/engine/install/debian/)和[Docker Compose](https://docs.docker.com/compose/install/other/)。
```sh
# 卸载原有旧版本的docker新系统可以跳过
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
# 安装ca支持
sudo apt-get update && sudo apt-get install ca-certificates curl gnupg
# 配置docker官方GPG密钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 配置docker官方软件源
echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装docker engine
sudo apt-get update && sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 单独安装docker-compose不执行后面这步使用docker compose [command]也是可以的)
curl -SL https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
# 查看docker版本
docker version
# 查看docker-compose版本
docker-compose version
```
对于国内服务器给docker hub配置几个加速源是必要的操作[阿里云容器镜像服务-镜像加速器](https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors)。
除了阿里云,也可以试试下面的加速源:
- https://registry.docker-cn.com
- https://hub-mirror.c.163.com
### 部署gitea和postgresql服务
#### 配置nginx实现反向代理
我们希望实现的是通过网址http://gitea.wukezhenzhu.com直接访问gitea的web UI而gitea服务默认使用的http端口是3000为了不过多更改服务配置我们只要用nginx做一层指向127.0.0.1:3000端口的反向代理即可具体如何操作本文不展开。
#### 创建git专用的系统账号和分组
```sh
# 创建git分组和git用户
adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git
# 记录下返回结果中的UID和GID
Adding system user `git' (UID 112) ...
Adding new group `git' (GID 117) ...
Adding new user `git' (UID 112) with group `git' ...
# 为git用户生成ssh-key
sudo -u git ssh-keygen -t rsa -b 4096 -C "Gitea Host Key"
```
#### 为主机和容器建立SSH直通
创建名为`/usr/local/bin/gitea`的可执行文件,文件内容:
```shell
ssh -p 2222 -o StrictHostKeyChecking=no git@127.0.0.1 "SSH_ORIGINAL_COMMAND=\"$SSH_ORIGINAL_COMMAND\" $0 $@"
```
为`/usr/local/bin/gitea`文件添加可执行权限:
```sh
chmod +x /usr/local/bin/gitea
```
把git用户的ssh公钥添加到`/home/git/.ssh/authorized_keys`中(因为主机的`/home/git/.ssh/`会映射到容器中)
```sh
echo "$(cat /home/git/.ssh/id_rsa.pub)" >> /home/git/.ssh/authorized_keys
```
#### 准备docker-compose.yml文件
创建`/data/docker-compose.yml`文件,内容如下(随着时间推移,可以试着改变镜像的版本),注意修改`USER_UID`和`USER_GID`为实际值:
```yml
version: "3"
networks:
gitea:
external: false
services:
gitea:
image: gitea/gitea:1.19
container_name: gitea
environment:
- USER_UID=112
- USER_GID=117
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=gitea_db:5432
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea
restart: always
networks:
- gitea
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
- /home/git/.ssh/:/data/git/.ssh
ports:
- "3000:3000"
- "127.0.0.1:2222:22"
depends_on:
- gitea_db
gitea_db:
image: postgres:14
container_name: gitea_db
restart: always
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=gitea
- POSTGRES_DB=gitea
networks:
- gitea
volumes:
- ./postgres:/var/lib/postgresql/data
```
在/data目录下执行
```sh
docker-compose up
```
如果在编排期间没有提示错误的话说明我们在服务器端的部署工作基本完成了下面进入web安装与配置阶段。
#### 通过Web UI完成服务安装与配置
假设最开始做的域名解析已经生效了接下来打开浏览器访问gitea.wukezhenzhu.com如果找不开页面检查检查域名解析、服务器防火墙、nginx代理
```url
http://gitea.wukezhenzhu.com
```
- 数据库设置都使用默认值就行因为我们没有把pg的5432端口映射给主机所以基本也不需要给数据库设置强口令
- 站点名称会显示在Web首页和浏览器标题栏
- 仓库根目录:默认
- LFS根目录默认
- 以用户名运行默认git
- 服务器域名就是刚才解析的域名文本中是gitea.wukezhenzhu.com
- SSH服务端口22
- HTTP服务端口3000
- 基础URL如果这里是带:3000端口号的url我们就把端口号去掉就是http://gitea.wukezhenzhu.com/。
- 日志路径:默认
- 启用更新检查不勾选因为我们用的是docker即使在线更新了容器重启后也会把程序重置。
- 电子邮箱设置:建议配置并开启邮件确认注册和邮件通知提醒
- 第三方服务设置:根据情况
- 管理账号设置:根据情况
完成以上配置后直接点“立即安装”然后等待一小会页面会自动以管理员登录如果创建了管理员或者进入到gitea的登录页。
#### 以daemon方式重新启动服务
在服务器上按ctrl+c停止docker服务再重启执行一遍docker-compose命令这次后面加上-d。
```sh
docker-compose up -d
```
好了,大功告成!

View File

@ -0,0 +1,45 @@
## Debian11中安装docker和docker-compose
本文参考docker官方文档(https://docs.docker.com/engine/install/debian/)[https://docs.docker.com/engine/install/debian/]和(https://docs.docker.com/compose/install/other/)[https://docs.docker.com/compose/install/other/]
### 安装docker engine
使用`apt-get install sudo -y`安装sudo可解决没有sudo命令的问题。
```sh
# 卸载旧版本(可省略)
sudo apt-get remove docker docker-engine docker.io containerd runc
# 安装新版本
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```
### 安装docker-compose
默认情况下docker engine安装成功时会自动支持`docker compose`命令,但并不支持`docker-compose`命令,按照下面的步骤操作完,就可以使用`docker-compose`命令了。
```sh
curl -SL https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
```
### 验证安装
```sh
# 查看docker版本
docker version
# 查看docker compose版本
docker compose version
# 查看docker-compose版本
docker-compose --version
```

View File

@ -47,7 +47,7 @@ docker images
## 创建编排文件
创建文件`/data/pgspostgresql/docker-compose.yml`,内容如下(注意自己改管理员账号密码):
创建文件`/data/postgres/docker-compose.yml`,内容如下(注意自己改管理员账号密码):
> `image`一行要用自己编译的镜像名。
@ -58,7 +58,7 @@ services:
image: wkzz/postgres
restart: always
environment:
POSTGRES_PASSWORD: wkzz051223
POSTGRES_PASSWORD: password
PGDATA: /var/lib/postgresql/data/pgdata
ports:
- 5432:5432

View File

@ -4,6 +4,12 @@
### 下载延时队列插件
针对rabbitmq3.12.x
```bash
wget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/v3.12.0/rabbitmq_delayed_message_exchange-3.12.0.ez
```
针对rabbitmq3.11.x
```bash
@ -24,18 +30,18 @@ wget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/down
### 安装rabbitmq
> 以3.11为例
> 以3.12为例
```bash
# 拉取镜像并启动容器
docker run -d -v /data/rabbitmq/mnesia:/var/lib/rabbitmq/mnesia --hostname rabbitmq --name rabbitmq rabbitmq:3.11-management
docker run -d -v `pwd`/mnesia:/var/lib/rabbitmq/mnesia --hostname rabbitmq --name rabbitmq rabbitmq:3.12-management
```
### 安装并启用插件
```bash
# 将延时队列插件拷贝至容器以3.11为例)
docker cp rabbitmq_delayed_message_exchange-3.11.1.ez rabbitmq:/plugins
docker cp rabbitmq_delayed_message_exchange-3.12.0.ez rabbitmq:/plugins
# 进入容器
docker exec -it rabbitmq /bin/bash
# 查看插件
@ -58,7 +64,7 @@ docker rm -f rabbitmq
### 用新的命令重新启用新的容器
```bash
docker run -d -p 5672:5672 -p 15672:15672 -p 15674:15674 -p 61613:61613 -v /data/rabbitmq/mnesia:/var/lib/rabbitmq/mnesia --hostname rabbitmq --name rabbitmq rabbitmq:stomp-delay
docker run -d -p 5672:5672 -p 15672:15672 -p 15674:15674 -p 61613:61613 -v `pwd`/mnesia:/var/lib/rabbitmq/mnesia --hostname rabbitmq --name rabbitmq rabbitmq:stomp-delay
```
### 检验

View File

@ -229,7 +229,7 @@ vim /usr/local/freeswitch/conf/sip_profiles/internal.xml
### conf/autoload_configs/acl.conf.xml中的配置项
> 主要用来制定可通过ESL)连接FreeSWITCH的IP规则
> 主要用来制定可通过ESL连接FreeSWITCH的IP规则
```shell
vim /usr/local/freeswitch/conf/autoload_configs/acl.conf.xml

View File

@ -39,7 +39,7 @@ sudo apt-get install -y \
libldns-dev \
python3-dev \
libavformat-dev libswscale-dev libavresample-dev \
liblua5.2-dev \
liblua5.1-dev \
libopus-dev \
libpq-dev \
libshout3-dev libmpg123-dev libmp3lame-dev \
@ -80,13 +80,13 @@ cd freeswitch
make -j`nproc`
sudo make install
# 安装英文声音资源(可选)
make cd-sounds-install
make cd-moh-install
make uhd-sounds-install
make uhd-moh-install
make hd-sounds-install
make hd-moh-install
make sounds-install
make cd-sounds-install && \
make cd-moh-install && \
make uhd-sounds-install && \
make uhd-moh-install && \
make hd-sounds-install && \
make hd-moh-install && \
make sounds-install && \
make moh-install
cd ..
```
@ -102,3 +102,32 @@ bin/freeswitch
```
等待一段时间后FreeSWITCH服务就已经成功启动了在当前控制台输入命令`sofia status`可以看到一点配置信息。前台启动方式非常简单,但是一旦执行`...`命令退出控制台后对应的FreeSWITCH服务也就退出了。如果想在后台启动服务在执行`bin/freeswitch`时后面加上`-nc`命令参数就可以了。
### 做freeswitch和fs_cli的软连接
```shell
ln -sf /usr/local/freeswitch/bin/freeswitch /usr/local/bin/
ln -sf /usr/local/freeswitch/bin/fs_cli /usr/local/bin/
```
做完这一步操作后就可以在任意目录下执行freeswitch地fs_cli命令了但是要注意freeswitch的运行目录的相对路径问题
### 配置.fs_cli_conf文件
fs_cli的本质也是通过esl连接去控制FreeSWITCH所以如果对FreeSWITCH做配置时更改了event_socket的端口号、密码等内容时再使用fs_cli工具时就需要在后面加上各种复杂的参数为了简化操作我们可以配置一个名为.fs_cli_conf的文件在里面写好FreeSWITCH的esl相关参数以后就可以直接执行fs_cli命令进入到FreeSWITCH控制台了。
```shell
vim ~/.fs_cli_conf
```
文件内容参数:
```ini
[default]
host => 127.0.0.1
port => 8021
password => ClueConAAAA
debug => 6
```
做了以上配置后,直接`fs_cli`就能查看控制台,`...`退出控制台。

View File

@ -1,4 +1,4 @@
## Debian11安装lua5.2和luarocks
## Debian11安装lua5.1和luarocks
> wandoubaba / 2023-01-18
@ -9,7 +9,7 @@
> 后面的操作过程中如果使用root账号的话就不需要加`sudo`了
```sh
sudo apt-get install -y lua5.2
sudo apt-get install -y lua5.1
```
### 安装luarocks

View File

@ -54,6 +54,13 @@ make
sudo make install
```
如果在执行./bootstrap.sh后遇到`required file './ltmain.sh' not found`错误的话,通过以下方法或许可以解决:
```sh
libtoolize --version
libtoolize --automake --copy --debug --force
```
### 在FreeSWITCH配置中启用mod_unimrcp
编辑配置文件`/usr/local/freeswitch/conf/autoload_configs/modules.conf.xml`,在`configuration->modules`节点下,追加下面一行配置:

View File

@ -0,0 +1,18 @@
## 解决create-vue创建的项目运行后提示Network: use --host to expose的问题
### 修改vite.config.js文件
```js
import vue from '@vitejs/plugin-vue'
/**
* https://vitejs.dev/config/
* @type {import('vite').UserConfig}
*/
export default {
plugins: [vue()],
server: {
host: '0.0.0.0' // 新增内容
}
}
```

View File

@ -1,46 +0,0 @@
# 安装部署gitlab
---
## 在centos7部署
1. 安装配置必要的依赖
- ssh和防火墙
```shell
sudo yum install -y curl policycoreutils-python openssh-server perl
# Enable OpenSSH server daemon if not enabled: sudo systemctl status sshd
sudo systemctl enable sshd
sudo systemctl start sshd
# Check if opening the firewall is needed with: sudo systemctl status firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld
```
- 安装postfix用来发通知邮件
```shell
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
```
2. 安装gitlab
- 下载安装包
```shell
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
```
- 安装gitlab先做好域名解析
```shell
# EXTERNAL_URL是想要使用的域名
sudo EXTERNAL_URL="https://gitlab.example.com" yum install -y gitlab-ee
```
- Web登录进行配置

View File

@ -1,89 +0,0 @@
# docker部署minio服务
## 单节点-单存储
> 基于linux系统
### 拉取image
```shell
# 推荐quay.io
docker pull quay.io/minio/minio
# 备用dockerhub
docker pull bitnami/minio
```
### 创建环境变量文件
```shell
touch /etc/default/minio
vim /etc/default/minio
```
在环境变量文件中编辑如下内容
```conf
# MINIO_ROOT_USER and MINIO_ROOT_PASSWORD sets the root account for the MinIO server.
# This user has unrestricted permissions to perform S3 and administrative API operations on any resource in the deployment.
# Omit to use the default values 'minioadmin:minioadmin'.
# MinIO recommends setting non-default values as a best practice, regardless of environment
MINIO_ROOT_USER=myminioadmin
MINIO_ROOT_PASSWORD=minio-secret-key-change-me
# MINIO_VOLUMES sets the storage volume or path to use for the MinIO server.
MINIO_VOLUMES="/mnt/data"
# MINIO_SERVER_URL sets the hostname of the local machine for use with the MinIO Server
# MinIO assumes your network control plane can correctly resolve this hostname to the local machine
# Uncomment the following line and replace the value with the correct hostname for the local machine.
#MINIO_SERVER_URL="http://minio.example.net"
```
### 启动container
> 下面的命令不能直接复制
```shell
# 下面命令中的PATH要换成本地路径如/data/minio
docker run -dt \
-p 9000:9000 -p 9090:9090 \
-v PATH:/mnt/data \
-v /etc/default/minio:/etc/config.env \
-e "MINIO_CONFIG_ENV_FILE=/etc/config.env" \
--name "minio_local" \
quay.io/minio/minio server \
--console-address ":9090"
```
### 查看容器状态
```shell
docker logs minio
```
正常的话应该能看到类似如下信息
```console
Status: 1 Online, 0 Offline.
API: http://10.0.2.100:9000 http://127.0.0.1:9000
RootUser: myminioadmin
RootPass: minio-secret-key-change-me
Console: http://10.0.2.100:9090 http://127.0.0.1:9090
RootUser: myminioadmin
RootPass: minio-secret-key-change-me
Command-line: https://min.io/docs/minio/linux/reference/minio-mc.html
$ mc alias set myminio http://10.0.2.100:9000 myminioadmin minio-secret-key-change-me
Documentation: https://min.io/docs/minio/container/index.html
```
### 通过web访问minio面板
容器启动成功后minio服务的web面板在本机可以通过`http://localhost:9090`访问,如果端口开放正确,通过`http://IP:9090`可以打开minio的web面板如果有前置nginx的话只要做指向http://IP:9090的反向代理就可以了。
web面板的账号密码就是在`/etc/default/minio`这个环境变量文件中配置的`MINIO_ROOT_USER`和`MINIO_ROOT_PASSWORD`。