Spaces:
Sleeping
Sleeping
| # Updated user data with supervisor setup | |
| $userData = @' | |
| #!/bin/bash | |
| cd /home/ec2-user | |
| # Install supervisor if not already installed | |
| if ! command -v supervisorctl &> /dev/null; then | |
| sudo dnf install -y supervisor | |
| sudo systemctl enable supervisord | |
| sudo systemctl start supervisord | |
| fi | |
| # Remove old directory if it exists but isn't a git repo | |
| if [ -d "AWS_Portfolio_Manager" ] && [ ! -d "AWS_Portfolio_Manager/.git" ]; then | |
| sudo rm -rf AWS_Portfolio_Manager | |
| fi | |
| # Clone or pull | |
| if [ ! -d "AWS_Portfolio_Manager" ]; then | |
| git clone https://huggingface.co/spaces/Multichem-PD/DFS_Portfolio_Manager AWS_Portfolio_Manager | |
| cd AWS_Portfolio_Manager | |
| python3 -m venv venv | |
| cp app.py application.py | |
| mkdir -p .streamlit | |
| else | |
| cd AWS_Portfolio_Manager | |
| git pull origin main | |
| cp app.py application.py | |
| fi | |
| # Install/update packages | |
| source venv/bin/activate | |
| pip install -r requirements.txt | |
| # Create supervisor config for streamlit | |
| sudo tee /etc/supervisor/conf.d/streamlit.conf > /dev/null <<EOF | |
| [program:streamlit] | |
| directory=/home/ec2-user/AWS_Portfolio_Manager | |
| command=/home/ec2-user/AWS_Portfolio_Manager/venv/bin/streamlit run application.py --server.port 5000 --server.address 0.0.0.0 | |
| user=ec2-user | |
| autostart=true | |
| autorestart=true | |
| stderr_logfile=/var/log/streamlit.err.log | |
| stdout_logfile=/var/log/streamlit.out.log | |
| environment=HOME="/home/ec2-user",USER="ec2-user" | |
| EOF | |
| # Reload supervisor and restart streamlit | |
| sudo supervisorctl reread | |
| sudo supervisorctl update | |
| sudo supervisorctl restart streamlit | |
| '@ | |
| # Encode to base64 | |
| $userDataBase64 = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($userData)) | |
| # Create JSON file | |
| $jsonContent = "{`"UserData`": `"$userDataBase64`"}" | |
| [System.IO.File]::WriteAllText("$PWD\launch-template-data.json", $jsonContent, [System.Text.Encoding]::ASCII) | |
| # Create new launch template version | |
| aws ec2 create-launch-template-version ` | |
| --launch-template-name portfolio-manager-template ` | |
| --source-version '$Latest' ` | |
| --launch-template-data file://launch-template-data.json | |
| $latestVersion = aws ec2 describe-launch-template-versions ` | |
| --launch-template-name portfolio-manager-template ` | |
| --query 'LaunchTemplateVersions[0].VersionNumber' ` | |
| --output text | |
| aws ec2 modify-launch-template ` | |
| --launch-template-name portfolio-manager-template ` | |
| --default-version $latestVersion | |
| Remove-Item "launch-template-data.json" -ErrorAction SilentlyContinue | |
| Write-Host "Launch template updated to version $latestVersion with supervisor!" -ForegroundColor Green |