SendIO geçici süreli dosya depolama ve paylaşma uygulamasıdır.
- Çoklu dosya yüklemesini destekler.
- Yüklemiş olduğunuz dosyaların bağlantı adresini göndererek paylaşabilirsiniz.
- Klasik dosya saklama yöntemleri yerine “Minio File Object Storage” sunucusunu kullanarak dosyalarınızı saklar.
- Yüklemiş olduğunuz dosyalar otomatik olarak 7 gün sonra silinir.
- .Net 7.0
- Minio object storage (Dosyaların tutulacağı alan)
- Mssql veritabanı
Demo: https://sendio.gulernet.net/
Projeyi klonlayın
git clone https://github.com/canglr/SendIO.git
Proje dizinine gidin
cd SendIO
Visual studio kullanarak projeyi düzenleyebilir ve çalıştırabilirsiniz. Çalıştırmadan önce bağlantı ayarlarının düzenlenmesi gerekmektedir.
src/Presentation/SendIO.WebApi/appsettings.json - appsettings.Development.json
Yukarıdaki dosyaların içerisinde veritabanı ve minio sunucu bilgileri tutulmaktadır. Uygulamanın çalışabilmesi için geçerli bilgiler ile düzenlenmelidir.
src/Presentation/SendIO.WebUI/wwwroot/appsettings.json - appsettings.Development.json
Yukarıdaki dosyada arayüz ile ilgili ayarlar yer almaktadır. Logodaki yazının değiştirilmesi ve demo modu aktif etme gibi işlemler bu dosyadan yapılmaktadır. En önemlisi ise WebApi bağlantı bilgisi burada tutulmaktadır. Kullanılmadan önce kendi bilgileriniz ile değiştirilmelidir.
src/Infrastucture/SendIO.Persistence
Veritabanı oluşturmak için ilk önce yukarıdaki dizine terminal ile gitmemiz gerekiyor.
dotnet ef database update
Eğer config dosyasındaki bilgiler doğru girildiyse yukarıdaki komut ile veritabanı otomatik olarak oluşturulacak.
Dağıtım olarak docker tercih ediyorum. Sırasıyla aşağıdaki dağıtımları yapacağız.
- Mssql
- Minio
- WebApi
- WebUI
İşlemleri yapabilmeniz için bilgisayarınızda veya sunucunuzda docker kurulu olmalıdır.
sudo docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" \
-p 1433:1433 --name sql1 --hostname sql1 \
-d \
mcr.microsoft.com/mssql/server:2022-latest
YourStrong@Passw0rd alanını kendi şifreniz ile değiştiriniz. Kullanıcı adı otomatik olarak sa olacak. Yukarıdaki kodu terminalde çalıştırınız.
version: "3.7"
services:
minio:
container_name: minio
image: minio/minio
ports:
- "9000:9000"
- "9001:9001"
command: server /data --console-address ":9001"
volumes:
- ./data:/data
environment:
MINIO_BROWSER_REDIRECT_URL: http://console.file.gulernet.net:9001
MINIO_SERVER_URL: https://file.gulernet.net
MINIO_ROOT_USER: admin
MINIO_ROOT_PASSWORD: Test12345
Yukarıdaki kodu kendinize göre düzenleyiniz. Daha sonra adını docker-compose.yml olarak kaydediniz.
docker compose up
Dosyanın bulunduğu dizine terminal ile gidip yukarıdaki komutu çalıştırınız.
Şuana kadar yapmış olduğumuz kurulumlar projeden bağımsızdı şimdi proje ile ilgili kısıma gelmiş bulunmaktayız.
Visual studio ile projeyi açıyoruz ve WebApi projesini klasöre publish ediyoruz.
FROM mcr.microsoft.com/dotnet/aspnet:7.0 as runtime
WORKDIR /app
COPY ./sendio/api .
ENV ASPNETCORE_URLS=http://+:5000
ENTRYPOINT ["dotnet", "SendIO.WebApi.dll"]
COPY ./sendio/api .
satırını publish ettiğiniz klasör yolu ile değiştiriniz.
Yukarıdaki kodu Dockerfile olarak kaydediniz.
docker build -t webapiimaj .
Yukarıdaki kod ile projenin docker imajını oluşturuyoruz.
docker run -p 8080:5000 --name webapiimaj webapi
Yukarıdaki kod ile oluşturmuz olduğumuz imajı docker üzerinde başlatıyoruz. 8080 dış portu kendinize göre düzenleyebilirsiniz.
Visual studio ile projeyi açıyoruz ve WebUI projesini klasöre publish ediyoruz.
FROM nginx:alpine
WORKDIR /user/share/nginx/html
COPY ./sendio/ui/wwwroot .
COPY ./sendio/conf/nginx.conf /etc/nginx/nginx.conf
COPY ./sendio/ui/wwwroot .
satırını publish ettiğiniz klasör yolu ile değiştiriniz.
Ek olarak nginx conf dosya yolu içinde geçerli
COPY ./sendio/conf/nginx.conf /etc/nginx/nginx.conf
Bu kısmı kendinize göre değiştiriniz "./sendio/conf/nginx.conf"
Yukarıdaki kodu Dockerfile olarak kaydediniz.
nginx.conf
events { }
http {
include mime.types;
types {
application/wasm;
}
server {
listen 5000;
index index.html;
location / {
root /user/share/nginx/html;
try_files $uri $uri/ /index.html =404;
}
}
}
docker build -t webuiimaj .
Yukarıdaki kod ile projenin docker imajını oluşturuyoruz.
docker run -p 80:5000 --name webuiimaj webui
Dağıtım İşlemleri tamamlandı.
Arayüz adresi : http://localhost
Api adresi : http://localhost:8080
Adresleri örnek olarak yazdım. Kendi yapmış olduğunuz ayarlara göre değişiklik gösterir.