A powerful and scalable URL shortener with integrated bio pages built using Spring Boot.
An enterprise-grade, powerful and scalable URL shortener with integrated bio pages built using Spring Boot.
Maven Package | Github Packages - com.bitmutex.shortener |
Docker Image | DockerHub - nmpl/shortener:latest |
This project is an enterprise-grade URL shortener and bio page application developed with Spring Boot. It provides a robust solution for shortening URLs and creating bio pages for users. The application is designed for scalability and includes features such as analytics, user management, and subscription plans.
Before you begin, ensure you have the following installed:
installers
folder.install.bat
file by double-clicking on it or using the following command:
install.bat
install.sh
using the following command:
chmod +x install.sh ./install.sh
Clone the repository:
git clone https://github.com/aamitn/URLShortener.git cd URLShortener
Apply the Database Schema:
Execute the provided create.sql
file to set up the necessary tables and schema for the application. This script will also create the required database.
mysql -u your_username -p{your_password} < create.sql
Update the application.properties file:
application.properties
file in the src/main/resources directory with your application configuration.Build and run the application:
mvn spring-boot:run
Access the application at http://localhost:8080
Build a deployable WAR:
mvn clean install
Deploy the WAR:
Option 1: Manual Deployment
Deploy the generated WAR file to your Tomcat server. Copy the WAR file to the webapps
directory of your Tomcat installation.
cp target/shorten.war /path/to/tomcat/webapps/
Option 2: Web Interface Upload
Alternatively, if your Tomcat server provides a web interface for WAR file deployment, follow these steps:
http://localhost:8080/manager/html
(replace with your Tomcat server address).shortener.war
file using the file upload button.Configure Variables on deployed war:
Set environment variables for cloud-specific settings.
Adjust Tomcat Configuration (Important):
To ensure proper functionality, it's important to run the application on the root of the servlet container. If you're using Tomcat, add the following line to your server.xml
configuration file within the <Host>
section:
<Context path="" docBase="shorten" reloadable="true"></Context>
This ensures that the application runs on the root context path. Adjust the docBase
attribute according to your deployment directory.
Start Tomcat:
Start your Tomcat server.
/path/to/tomcat/bin/startup.sh # for Linux /path/to/tomcat/bin/startup.bat # for Windows
Access the application at http://localhost:8080/
.
Adjust Configuration (Optional): If you need to customize the application configuration after deployment, you can find the application.properties file within the deployed WAR file. THe file can be accesses as :
vi /path/to/tomcat/webapps/shortener/WEB-INF/classes/application.properties
To deploy the URL Shortener application on your cloud environment, follow the steps below:
Prerequisites
Clone the Repository:
git clone https://github.com/your-username/URLShortener.git cd URLShortener
Deploy Using Docker
Build and Run Your Own Image:
docker build -t shortener:latest . docker run -p 8080:8080 -p 3306:3306 shortener:latest
OR
Use Our Pre-built Image with Docker Compose:
docker compose build docker compose up
Customizing Docker Compose Configuration:
In the docker-compose.yml
file, you can customize the build source for the Shortener service:
# Build from docker hub image .Comment/Uncomment Below image: nmpl/shortener:latest # Build from local Dockerfile.Comment/Uncomment Below # build: # context: . # dockerfile: Dockerfilekerfile
Comment or uncomment the relevant lines based on whether you want to use the pre-built image from Docker Hub or build from the local Dockerfile.
Setup Kubernetes Deployment and Service:
cd k8s kubectl apply -f deploy.yaml,service.yaml,data.yaml
Expose the K8s service:
kubectl port-forward service/shortener-app 8080:8080
Access Application at http://localhost:8080
minikube service shortener-app
Use the following command to monitor the deployment:
```plaintext
kubectl get pods
```
4. Deploy Using Helm Chart
Create Deployment from helm chart named "instance" , with a service named "instance-shortener-chart" :
cd k8s helm install instance shortener-chart/ --values shortener-chart/values.yaml
Expose the K8s service:
kubectl port-forward service/instance-shortener-chart 8080:8080
minikube service shortener-app
Use the following command to monitor the deployment:
```plaintext
kubectl get pods
```
Wait until the pod is in the "Running" state.
Access the Application
Depending on your Kubernetes setup, you might need to get the external IP of the service:
kubectl get service instance-shortener-chart
Access your application using the provided external IP(from command output) or at : http://localhost:8080.
To configure the SMS service, you need to specify parameters related to the SMS provider in the application.properties
file.
sms.provider=managed managed.sms.api.key=your_managed_sms_api_key managed.sms.phone-number=123456789
sms.provider=selfhosted selfhosted.gateway.url=https://your-smsgateway-url/index.php selfhosted.device.id=your_device_id selfhosted.hash=your_device_hash
Check application status from the /monitoring page at : http://localhost:8080/monitoring
Check application OpenAPI 3.0 compliant docs at: http://localhost:8080/docs-ui
Contributions are welcome! Please follow the contribution guidelines.
This project is licensed under the MIT License - see the LICENSE.md file for details.
© Bitmutex Technologies | 2024