mirror of
https://github.com/openimsdk/open-im-server.git
synced 2026-04-28 14:29:19 +08:00
feat(main): 🚀 Database Name Correction and S3 Module Int32 Overflow Fix with Go Routine Integration for Automated Checks and Script Optimization (#1799)
* feat: replace mongo database openIM_v3 to openim_v3 * openim-building-an-efficient-version-control-and-testing-workflow * feat: complete openim source deployment rpc start timeout * feat: optimize config Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com> * feat: add scripts format * feat: use scripts format code * fix cos and minio etc to typecheck * feat: scripts make verify check ci * fix: make file verify spelling * fix: make file verify spelling * Concurrent Type Checking and Cross-Platform Development in Go * feat: add copyright make lint and format * feat: add config examples file Signed-off-by: Xinwei Xiong <3293172751@qq.com> * feat: add config examples file Signed-off-by: Xinwei Xiong <3293172751@qq.com> --------- Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com> Signed-off-by: Xinwei Xiong <3293172751@qq.com>
This commit is contained in:
@@ -31,7 +31,7 @@ docs/guide/en-US/cmd/openim/openim-rpc-user_list.md
|
||||
docs/guide/en-US/cmd/openim/openim-rpc-user_update.md
|
||||
docs/guide/en-US/cmd/openim/openim_validate.md
|
||||
docs/guide/en-US/cmd/openim/openim_version.md
|
||||
docs/guide/en-US/yaml/openim/openim.yaml
|
||||
docs/guide/en-US/yaml/openim/config.yaml
|
||||
docs/guide/en-US/yaml/openim/openim_color.yaml
|
||||
docs/guide/en-US/yaml/openim/openim_completion.yaml
|
||||
docs/guide/en-US/yaml/openim/openim_info.yaml
|
||||
|
||||
@@ -89,7 +89,7 @@ While the first two methods will be our main focus, it's worth noting that the t
|
||||
|
||||
### 1.2. <a name='SourceCodeDeployment'></a>Source Code Deployment
|
||||
|
||||
In the source code deployment method, the configuration generation process involves executing `make init`, which fundamentally runs the script `./scripts/init-config.sh`. This script utilizes variables defined in the [`environment.sh`](https://github.com/openimsdk/open-im-server/blob/main/scripts/install/environment.sh) script to render the [`openim.yaml`](https://github.com/openimsdk/open-im-server/blob/main/deployments/templates/openim.yaml) template file, subsequently generating the [`config.yaml`](https://github.com/openimsdk/open-im-server/blob/main/config/config.yaml) configuration file.
|
||||
In the source code deployment method, the configuration generation process involves executing `make init`, which fundamentally runs the script `./scripts/init-config.sh`. This script utilizes variables defined in the [`environment.sh`](https://github.com/openimsdk/open-im-server/blob/main/scripts/install/environment.sh) script to render the [`config.yaml`](https://github.com/openimsdk/open-im-server/blob/main/deployments/templates/config.yaml) template file, subsequently generating the [`config.yaml`](https://github.com/openimsdk/open-im-server/blob/main/config/config.yaml) configuration file.
|
||||
|
||||
### 1.3. <a name='DockerComposeDeployment'></a>Docker Compose Deployment
|
||||
|
||||
|
||||
@@ -45,60 +45,6 @@ Homebrew is an essential package manager for macOS. Install it using:
|
||||
git config --global user.email "your.email@example.com"
|
||||
```
|
||||
|
||||
### Forking and Cloning the Repository
|
||||
|
||||
To optimize and add logic to your instructions, particularly regarding deploying on a Mac, you can modify them as follows:
|
||||
|
||||
1. **Fork the OpenIM Repository**: Fork the OpenIM repository on GitHub to your account.
|
||||
|
||||
2. **Clone Your Fork to Your Local Machine**:
|
||||
Open your terminal and execute the following commands:
|
||||
|
||||
```sh
|
||||
# Clone the repository
|
||||
git clone https://github.com/<your-username>/open-im-server.git
|
||||
|
||||
# Set Docker bridging network mode for Mac
|
||||
export DOCKER_BRIDGE_SUBNET=127.0.0.0/16
|
||||
|
||||
# Set OpenIM IP
|
||||
export OPENIM_IP=<your-ip>
|
||||
|
||||
# Initialize configuration
|
||||
make init
|
||||
|
||||
# Start components using Docker
|
||||
docker compose up -d
|
||||
|
||||
# Start OpenIM Server
|
||||
make start
|
||||
```
|
||||
|
||||
3. **Additional Steps for Mac Deployment**:
|
||||
If you are deploying on a Mac and wish to use the chat feature, you need to modify the `docker-compose` file. Specifically, you'll need to uncomment the sections related to `openim-chat` and `mysql`.
|
||||
|
||||
Here's how to do it:
|
||||
|
||||
- Open the `docker-compose.yml` file in a text editor.
|
||||
- Find the sections for `openim-chat` and `mysql`.
|
||||
- Remove the comment marks (`#`) at the beginning of the lines in these sections to enable them.
|
||||
- Save the file after making these changes.
|
||||
|
||||
4. **Update and Restart Services**:
|
||||
After modifying the `docker-compose` file, you need to update and restart the services to apply these changes. Run the following command in your terminal:
|
||||
|
||||
```sh
|
||||
# Update and restart services
|
||||
docker compose up -d
|
||||
|
||||
# Check openim-chat start
|
||||
docker compose logs openim-chat
|
||||
```
|
||||
|
||||
This command will re-read the `docker-compose.yml` file, apply the new configuration, and restart the necessary containers.
|
||||
|
||||
Remember, replacing `<your-username>` and `<your-ip>` with your actual GitHub username and desired IP address for OpenIM is crucial. These steps should streamline the setup process, particularly for Mac users wishing to use the chat feature.
|
||||
|
||||
### Setting Up the Devcontainer
|
||||
|
||||
`Devcontainers` provide a Docker-based isolated development environment.
|
||||
@@ -126,6 +72,136 @@ Ensure the version of Go is compatible with the version required by OpenIM (refe
|
||||
|
||||
Install other required tools like Docker, Vagrant, and necessary GNU utils as described in the main documentation.
|
||||
|
||||
## Mac Deployment openim-chat and openim-server
|
||||
|
||||
To integrate the Chinese document into an English document for Linux deployment, we will first translate the content and then adapt it to suit the Linux environment. Here's how the translated and adapted content might look:
|
||||
|
||||
### Ensure a Clean Environment
|
||||
|
||||
- It's recommended to execute in a new directory.
|
||||
- Run `ps -ef | grep openim` to ensure no OpenIM processes are running.
|
||||
- Run `ps -ef | grep chat` to check for absence of chat-related processes.
|
||||
- Execute `docker ps` to verify there are no related containers running.
|
||||
|
||||
### Source Code Deployment
|
||||
|
||||
#### Deploying openim-server
|
||||
|
||||
Source code deployment is slightly more complex because Docker's networking on Linux differs from Mac.
|
||||
|
||||
```bash
|
||||
git clone https://github.com/openimsdk/open-im-server
|
||||
cd open-im-server
|
||||
|
||||
export OPENIM_IP="Your IP" # If it's a cloud server, setting might not be needed
|
||||
make init # Generates configuration files
|
||||
```
|
||||
|
||||
Before deploying openim-server, modify the Kafka logic in the docker-compose.yml file. Replace:
|
||||
|
||||
```yaml
|
||||
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,EXTERNAL://${DOCKER_BRIDGE_GATEWAY:-172.28.0.1}:${KAFKA_PORT:-19094}
|
||||
```
|
||||
|
||||
With:
|
||||
|
||||
```yaml
|
||||
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,EXTERNAL://127.0.0.1:${KAFKA_PORT:-19094}
|
||||
```
|
||||
|
||||
Then start the service:
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
Before starting the openim-server source, set `config/config.yaml` by replacing all instances of `172.28.0.1` with `127.0.0.1`:
|
||||
|
||||
```bash
|
||||
vim config/config.yaml -c "%s/172\.28\.0\.1/127.0.0.1/g" -c "wq"
|
||||
```
|
||||
|
||||
Then start openim-server:
|
||||
|
||||
```bash
|
||||
make start
|
||||
```
|
||||
|
||||
To check the startup:
|
||||
|
||||
```bash
|
||||
make check
|
||||
```
|
||||
|
||||
<aside>
|
||||
🚧 To avoid mishaps, it's best to wait five minutes before running `make check` again.
|
||||
|
||||
</aside>
|
||||
|
||||
#### Deploying openim-chat
|
||||
|
||||
There are several ways to deploy openim-chat, either by source code or using Docker.
|
||||
|
||||
Navigate back to the parent directory:
|
||||
|
||||
```bash
|
||||
cd ..
|
||||
```
|
||||
|
||||
First, let's look at deploying chat from source:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/openimsdk/chat
|
||||
cd chat
|
||||
make init # Generates configuration files
|
||||
```
|
||||
|
||||
If openim-chat has not deployed MySQL, you will need to deploy it. Note that the official Docker Hub for MySQL does not support architectures like ARM, so you can use the newer version of the open-source edition:
|
||||
|
||||
```bash
|
||||
docker run -d \
|
||||
--name mysql \
|
||||
-p 13306:3306 \
|
||||
-p 3306:33060 \
|
||||
-v "$(pwd)/components/mysql/data:/var/lib/mysql" \
|
||||
-v "/etc/localtime:/etc/localtime" \
|
||||
-e MYSQL_ROOT_PASSWORD="openIM123" \
|
||||
--restart always \
|
||||
mariadb:10.6
|
||||
```
|
||||
|
||||
Before starting the source code of openim-chat, set `config/config.yaml` by replacing all instances of `172.28.0.1` with `127.0.0.1`:
|
||||
|
||||
```bash
|
||||
vim config/config.yaml -c "%s/172\.28\.0\.1/127.0.0.1/g" -c "wq"
|
||||
```
|
||||
|
||||
Then start openim-chat from source:
|
||||
|
||||
```bash
|
||||
make start
|
||||
```
|
||||
|
||||
To check, ensure the following four processes start successfully:
|
||||
|
||||
```bash
|
||||
make check
|
||||
```
|
||||
|
||||
### Docker Deployment
|
||||
|
||||
Refer to https://github.com/openimsdk/openim-docker for Docker deployment instructions, which can be followed similarly on Linux.
|
||||
|
||||
```bash
|
||||
git clone https://github.com/openimsdk/openim-docker
|
||||
cd openim-docker
|
||||
export OPENIM_IP="Your IP"
|
||||
make init
|
||||
docker compose up -d
|
||||
docker compose logs -f openim-server
|
||||
docker compose logs -f openim-chat
|
||||
```
|
||||
|
||||
## GitHub Development Workflow
|
||||
|
||||
### Creating a New Branch
|
||||
|
||||
Reference in New Issue
Block a user