my-cloud-devops-consulting 0.1.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- my_cloud_devops_consulting-0.1.2/MANIFEST.in +3 -0
- my_cloud_devops_consulting-0.1.2/PKG-INFO +147 -0
- my_cloud_devops_consulting-0.1.2/README.md +120 -0
- my_cloud_devops_consulting-0.1.2/app.py +92 -0
- my_cloud_devops_consulting-0.1.2/my_cloud_devops_consulting.egg-info/PKG-INFO +147 -0
- my_cloud_devops_consulting-0.1.2/my_cloud_devops_consulting.egg-info/SOURCES.txt +28 -0
- my_cloud_devops_consulting-0.1.2/my_cloud_devops_consulting.egg-info/dependency_links.txt +1 -0
- my_cloud_devops_consulting-0.1.2/my_cloud_devops_consulting.egg-info/requires.txt +4 -0
- my_cloud_devops_consulting-0.1.2/my_cloud_devops_consulting.egg-info/top_level.txt +1 -0
- my_cloud_devops_consulting-0.1.2/setup.cfg +4 -0
- my_cloud_devops_consulting-0.1.2/setup.py +31 -0
- my_cloud_devops_consulting-0.1.2/static/css/contact-form.css +206 -0
- my_cloud_devops_consulting-0.1.2/static/css/index.css +305 -0
- my_cloud_devops_consulting-0.1.2/static/css/login.css +81 -0
- my_cloud_devops_consulting-0.1.2/static/css/main.css +41 -0
- my_cloud_devops_consulting-0.1.2/static/css/register.css +126 -0
- my_cloud_devops_consulting-0.1.2/static/css/services.css +177 -0
- my_cloud_devops_consulting-0.1.2/static/images/image.jpg +0 -0
- my_cloud_devops_consulting-0.1.2/static/js/index.js +118 -0
- my_cloud_devops_consulting-0.1.2/static/js/login.js +42 -0
- my_cloud_devops_consulting-0.1.2/static/js/main.js +74 -0
- my_cloud_devops_consulting-0.1.2/static/js/register.js +18 -0
- my_cloud_devops_consulting-0.1.2/static/js/services.js +78 -0
- my_cloud_devops_consulting-0.1.2/templates/contact-form.html +103 -0
- my_cloud_devops_consulting-0.1.2/templates/index.html +137 -0
- my_cloud_devops_consulting-0.1.2/templates/login.html +72 -0
- my_cloud_devops_consulting-0.1.2/templates/register.html +78 -0
- my_cloud_devops_consulting-0.1.2/templates/services.html +78 -0
- my_cloud_devops_consulting-0.1.2/templates/test.html +277 -0
- my_cloud_devops_consulting-0.1.2/tests/test_unit_test.py +8 -0
@@ -0,0 +1,147 @@
|
|
1
|
+
Metadata-Version: 2.2
|
2
|
+
Name: my-cloud-devops-consulting
|
3
|
+
Version: 0.1.2
|
4
|
+
Summary: This is my consulting website for Cloud & DevOps services.
|
5
|
+
Home-page: https://github.com/Betrand1999/project-root
|
6
|
+
Author: Betrand Mutagha
|
7
|
+
Author-email: mmutagha@gmail.com
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
9
|
+
Classifier: Programming Language :: Python :: 3.10
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
11
|
+
Classifier: Operating System :: OS Independent
|
12
|
+
Requires-Python: >=3.6
|
13
|
+
Description-Content-Type: text/markdown
|
14
|
+
Requires-Dist: Flask>=2.0
|
15
|
+
Requires-Dist: pymongo
|
16
|
+
Requires-Dist: werkzeug
|
17
|
+
Requires-Dist: requests
|
18
|
+
Dynamic: author
|
19
|
+
Dynamic: author-email
|
20
|
+
Dynamic: classifier
|
21
|
+
Dynamic: description
|
22
|
+
Dynamic: description-content-type
|
23
|
+
Dynamic: home-page
|
24
|
+
Dynamic: requires-dist
|
25
|
+
Dynamic: requires-python
|
26
|
+
Dynamic: summary
|
27
|
+
|
28
|
+
# Cloud & DevOps Consulting
|
29
|
+
|
30
|
+
This project is a website for Cloud & DevOps consulting services. It is built with **Flask** for the backend, **MongoDB** for the database, and **Docker** for containerization.
|
31
|
+
|
32
|
+
## Features
|
33
|
+
|
34
|
+
- Cloud consulting services
|
35
|
+
- DevOps solutions
|
36
|
+
- Security & Compliance consulting
|
37
|
+
|
38
|
+
## Prerequisites
|
39
|
+
|
40
|
+
Before getting started, make sure you have the following installed:
|
41
|
+
|
42
|
+
- [Python 3.10+](https://www.python.org/downloads/)
|
43
|
+
- [Docker](https://www.docker.com/products/docker-desktop)
|
44
|
+
- [Git](https://git-scm.com/)
|
45
|
+
- [MongoDB](https://www.mongodb.com/try/download/community) (if you're not using MongoDB Atlas)
|
46
|
+
- [pip](https://pip.pypa.io/en/stable/)
|
47
|
+
- [twine](https://twine.readthedocs.io/en/stable/) (for uploading to PyPI)
|
48
|
+
|
49
|
+
## Installation
|
50
|
+
|
51
|
+
### 1. Clone the Repository
|
52
|
+
|
53
|
+
Clone this repository to your local machine using Git:
|
54
|
+
```bash
|
55
|
+
git clone https://github.com/Betrand1999/project-root.git
|
56
|
+
cd project-root
|
57
|
+
,,,
|
58
|
+
####
|
59
|
+
Setup Python Environment
|
60
|
+
python3 -m venv venv
|
61
|
+
source venv/bin/activate # For Windows use `venv\Scripts\activate`
|
62
|
+
#####
|
63
|
+
|
64
|
+
####
|
65
|
+
Install Dependencies
|
66
|
+
pip install -r requirements.txt
|
67
|
+
###
|
68
|
+
|
69
|
+
|
70
|
+
###
|
71
|
+
Set Up Python Package Build Tools
|
72
|
+
The setup.py file is where you define the details of your package, including its dependencies, description, version, and more.
|
73
|
+
###
|
74
|
+
|
75
|
+
###
|
76
|
+
MANIFEST.in
|
77
|
+
he MANIFEST.in file ensures that the necessary files are included when you build your package.
|
78
|
+
###
|
79
|
+
|
80
|
+
###
|
81
|
+
Build the Package
|
82
|
+
python setup.py sdist bdist_wheel
|
83
|
+
###
|
84
|
+
|
85
|
+
###
|
86
|
+
Upload to PyPI (Optional)
|
87
|
+
If you want to distribute your package on PyPI, you'll need a PyPI account. After registering and logging in to PyPI, use twine to upload the distribution files.
|
88
|
+
Install Twine: pip install twine
|
89
|
+
Upload the Package:
|
90
|
+
twine upload dist/*
|
91
|
+
###
|
92
|
+
|
93
|
+
##################################################################
|
94
|
+
pip install wheel
|
95
|
+
#################################################################
|
96
|
+
To see packages OutPUT
|
97
|
+
ls dist/
|
98
|
+
project-root-0.1.0.tar.gz
|
99
|
+
project_root-0.1.0-py3-none-any.whl
|
100
|
+
###################################################################
|
101
|
+
|
102
|
+
pip install dist/project_root-0.1.0-py3-none-any.whl
|
103
|
+
####################################################################
|
104
|
+
|
105
|
+
pip install twine
|
106
|
+
what is twine: Twine is a utility for publishing Python packages on the Python Package Index (PyPI)
|
107
|
+
#####################################################################
|
108
|
+
twine upload dist/my_cloud_devops_consulting-0.1.1-py3-none-any.whl
|
109
|
+
|
110
|
+
#############################################################################
|
111
|
+
How route are configure in apache2
|
112
|
+
sudo vi /etc/apache2/sites-available/000-default.conf
|
113
|
+
|
114
|
+
|
115
|
+
|
116
|
+
<VirtualHost *:80>
|
117
|
+
ServerAdmin webmaster@localhost
|
118
|
+
|
119
|
+
# Default application
|
120
|
+
ProxyPreserveHost On
|
121
|
+
ProxyPass / http://localhost:8080/
|
122
|
+
ProxyPassReverse / http://localhost:8080/
|
123
|
+
|
124
|
+
# Application running on port 9090
|
125
|
+
ProxyPass /app2 http://localhost:9090/
|
126
|
+
ProxyPassReverse /app2 http://localhost:9090/
|
127
|
+
|
128
|
+
# Logging
|
129
|
+
ErrorLog ${APACHE_LOG_DIR}/error.log
|
130
|
+
CustomLog ${APACHE_LOG_DIR}/access.log combined
|
131
|
+
</VirtualHost>
|
132
|
+
|
133
|
+
|
134
|
+
# Enable both configurations and restart Apache:
|
135
|
+
|
136
|
+
bash
|
137
|
+
Copy code
|
138
|
+
sudo a2ensite app1.conf
|
139
|
+
sudo a2ensite app2.conf
|
140
|
+
sudo systemctl restart apache2
|
141
|
+
|
142
|
+
|
143
|
+
# sudo systemctl restart apache2
|
144
|
+
|
145
|
+
####################################################
|
146
|
+
https://www.youtube.com/watch?v=3j33lNzMZlM&t=308s
|
147
|
+
####################################################
|
@@ -0,0 +1,120 @@
|
|
1
|
+
# Cloud & DevOps Consulting
|
2
|
+
|
3
|
+
This project is a website for Cloud & DevOps consulting services. It is built with **Flask** for the backend, **MongoDB** for the database, and **Docker** for containerization.
|
4
|
+
|
5
|
+
## Features
|
6
|
+
|
7
|
+
- Cloud consulting services
|
8
|
+
- DevOps solutions
|
9
|
+
- Security & Compliance consulting
|
10
|
+
|
11
|
+
## Prerequisites
|
12
|
+
|
13
|
+
Before getting started, make sure you have the following installed:
|
14
|
+
|
15
|
+
- [Python 3.10+](https://www.python.org/downloads/)
|
16
|
+
- [Docker](https://www.docker.com/products/docker-desktop)
|
17
|
+
- [Git](https://git-scm.com/)
|
18
|
+
- [MongoDB](https://www.mongodb.com/try/download/community) (if you're not using MongoDB Atlas)
|
19
|
+
- [pip](https://pip.pypa.io/en/stable/)
|
20
|
+
- [twine](https://twine.readthedocs.io/en/stable/) (for uploading to PyPI)
|
21
|
+
|
22
|
+
## Installation
|
23
|
+
|
24
|
+
### 1. Clone the Repository
|
25
|
+
|
26
|
+
Clone this repository to your local machine using Git:
|
27
|
+
```bash
|
28
|
+
git clone https://github.com/Betrand1999/project-root.git
|
29
|
+
cd project-root
|
30
|
+
,,,
|
31
|
+
####
|
32
|
+
Setup Python Environment
|
33
|
+
python3 -m venv venv
|
34
|
+
source venv/bin/activate # For Windows use `venv\Scripts\activate`
|
35
|
+
#####
|
36
|
+
|
37
|
+
####
|
38
|
+
Install Dependencies
|
39
|
+
pip install -r requirements.txt
|
40
|
+
###
|
41
|
+
|
42
|
+
|
43
|
+
###
|
44
|
+
Set Up Python Package Build Tools
|
45
|
+
The setup.py file is where you define the details of your package, including its dependencies, description, version, and more.
|
46
|
+
###
|
47
|
+
|
48
|
+
###
|
49
|
+
MANIFEST.in
|
50
|
+
he MANIFEST.in file ensures that the necessary files are included when you build your package.
|
51
|
+
###
|
52
|
+
|
53
|
+
###
|
54
|
+
Build the Package
|
55
|
+
python setup.py sdist bdist_wheel
|
56
|
+
###
|
57
|
+
|
58
|
+
###
|
59
|
+
Upload to PyPI (Optional)
|
60
|
+
If you want to distribute your package on PyPI, you'll need a PyPI account. After registering and logging in to PyPI, use twine to upload the distribution files.
|
61
|
+
Install Twine: pip install twine
|
62
|
+
Upload the Package:
|
63
|
+
twine upload dist/*
|
64
|
+
###
|
65
|
+
|
66
|
+
##################################################################
|
67
|
+
pip install wheel
|
68
|
+
#################################################################
|
69
|
+
To see packages OutPUT
|
70
|
+
ls dist/
|
71
|
+
project-root-0.1.0.tar.gz
|
72
|
+
project_root-0.1.0-py3-none-any.whl
|
73
|
+
###################################################################
|
74
|
+
|
75
|
+
pip install dist/project_root-0.1.0-py3-none-any.whl
|
76
|
+
####################################################################
|
77
|
+
|
78
|
+
pip install twine
|
79
|
+
what is twine: Twine is a utility for publishing Python packages on the Python Package Index (PyPI)
|
80
|
+
#####################################################################
|
81
|
+
twine upload dist/my_cloud_devops_consulting-0.1.1-py3-none-any.whl
|
82
|
+
|
83
|
+
#############################################################################
|
84
|
+
How route are configure in apache2
|
85
|
+
sudo vi /etc/apache2/sites-available/000-default.conf
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
<VirtualHost *:80>
|
90
|
+
ServerAdmin webmaster@localhost
|
91
|
+
|
92
|
+
# Default application
|
93
|
+
ProxyPreserveHost On
|
94
|
+
ProxyPass / http://localhost:8080/
|
95
|
+
ProxyPassReverse / http://localhost:8080/
|
96
|
+
|
97
|
+
# Application running on port 9090
|
98
|
+
ProxyPass /app2 http://localhost:9090/
|
99
|
+
ProxyPassReverse /app2 http://localhost:9090/
|
100
|
+
|
101
|
+
# Logging
|
102
|
+
ErrorLog ${APACHE_LOG_DIR}/error.log
|
103
|
+
CustomLog ${APACHE_LOG_DIR}/access.log combined
|
104
|
+
</VirtualHost>
|
105
|
+
|
106
|
+
|
107
|
+
# Enable both configurations and restart Apache:
|
108
|
+
|
109
|
+
bash
|
110
|
+
Copy code
|
111
|
+
sudo a2ensite app1.conf
|
112
|
+
sudo a2ensite app2.conf
|
113
|
+
sudo systemctl restart apache2
|
114
|
+
|
115
|
+
|
116
|
+
# sudo systemctl restart apache2
|
117
|
+
|
118
|
+
####################################################
|
119
|
+
https://www.youtube.com/watch?v=3j33lNzMZlM&t=308s
|
120
|
+
####################################################
|
@@ -0,0 +1,92 @@
|
|
1
|
+
from flask import Flask, render_template, request, redirect, url_for, session, flash
|
2
|
+
from pymongo import MongoClient
|
3
|
+
from werkzeug.security import generate_password_hash, check_password_hash
|
4
|
+
from urllib.parse import quote_plus
|
5
|
+
import os
|
6
|
+
|
7
|
+
app = Flask(__name__)
|
8
|
+
app.secret_key = os.environ.get('SECRET_KEY', 'your_secret_key') # Secure your secret key with an environment variable
|
9
|
+
|
10
|
+
# MongoDB Configuration with properly escaped credentials
|
11
|
+
username = quote_plus("betrand1997")
|
12
|
+
password = quote_plus("Cameroon@10K")
|
13
|
+
client = MongoClient(f"mongodb+srv://{username}:{password}@cluster.7plpy.mongodb.net/my-database?retryWrites=true&w=majority")
|
14
|
+
db = client['my-database'] # Specify your database as shown in the MongoDB Atlas interface
|
15
|
+
users_collection = db['inventory_collection'] # Collection for storing user data
|
16
|
+
|
17
|
+
@app.route('/')
|
18
|
+
def home():
|
19
|
+
video_url = None
|
20
|
+
if 'username' in session:
|
21
|
+
video_url = None # Removed S3 video URL
|
22
|
+
return render_template('index.html', video_url=video_url)
|
23
|
+
|
24
|
+
@app.route('/login', methods=['GET', 'POST'])
|
25
|
+
def login():
|
26
|
+
if request.method == 'POST':
|
27
|
+
username = request.form['username']
|
28
|
+
password = request.form['password']
|
29
|
+
user = users_collection.find_one({'username': username})
|
30
|
+
if user and check_password_hash(user['password'], password):
|
31
|
+
session['username'] = username
|
32
|
+
flash('Login successful', 'success')
|
33
|
+
return redirect(url_for('home'))
|
34
|
+
else:
|
35
|
+
flash('Invalid username or password', 'error')
|
36
|
+
return redirect(url_for('login'))
|
37
|
+
return render_template('login.html')
|
38
|
+
|
39
|
+
@app.route('/register', methods=['GET', 'POST'])
|
40
|
+
def register():
|
41
|
+
if request.method == 'POST':
|
42
|
+
username = request.form['username']
|
43
|
+
password = request.form['password']
|
44
|
+
|
45
|
+
# Check if the user already exists
|
46
|
+
existing_user = users_collection.find_one({'username': username})
|
47
|
+
if existing_user:
|
48
|
+
flash('Username already exists. Please choose a different username.', 'error')
|
49
|
+
return redirect(url_for('register'))
|
50
|
+
|
51
|
+
# Hash the password for security
|
52
|
+
hashed_password = generate_password_hash(password)
|
53
|
+
user_data = {'username': username, 'password': hashed_password}
|
54
|
+
users_collection.insert_one(user_data)
|
55
|
+
flash('Successfully registered! Please log in.', 'success')
|
56
|
+
return redirect(url_for('login'))
|
57
|
+
return render_template('register.html')
|
58
|
+
|
59
|
+
@app.route('/services')
|
60
|
+
def services():
|
61
|
+
return render_template('services.html')
|
62
|
+
|
63
|
+
@app.route('/contact-form', methods=['GET', 'POST'])
|
64
|
+
def contact_form():
|
65
|
+
if request.method == 'POST':
|
66
|
+
name = request.form['name']
|
67
|
+
email = request.form['email']
|
68
|
+
phone = request.form['phone']
|
69
|
+
category = request.form['category']
|
70
|
+
appointment = request.form.get('appointment')
|
71
|
+
message = request.form['message']
|
72
|
+
|
73
|
+
# Store the contact data in the database
|
74
|
+
contact_data = {
|
75
|
+
'name': name,
|
76
|
+
'email': email,
|
77
|
+
'phone': phone,
|
78
|
+
'category': category,
|
79
|
+
'appointment': appointment,
|
80
|
+
'message': message
|
81
|
+
}
|
82
|
+
db.contacts.insert_one(contact_data)
|
83
|
+
|
84
|
+
# Remove the email or SMS notification logic here
|
85
|
+
# Simply flash a success message
|
86
|
+
flash('Your message has been submitted successfully!', 'success')
|
87
|
+
|
88
|
+
return redirect(url_for('home'))
|
89
|
+
return render_template('contact-form.html')
|
90
|
+
|
91
|
+
if __name__ == '__main__':
|
92
|
+
app.run(debug=True, host='0.0.0.0', port=80)
|
@@ -0,0 +1,147 @@
|
|
1
|
+
Metadata-Version: 2.2
|
2
|
+
Name: my-cloud-devops-consulting
|
3
|
+
Version: 0.1.2
|
4
|
+
Summary: This is my consulting website for Cloud & DevOps services.
|
5
|
+
Home-page: https://github.com/Betrand1999/project-root
|
6
|
+
Author: Betrand Mutagha
|
7
|
+
Author-email: mmutagha@gmail.com
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
9
|
+
Classifier: Programming Language :: Python :: 3.10
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
11
|
+
Classifier: Operating System :: OS Independent
|
12
|
+
Requires-Python: >=3.6
|
13
|
+
Description-Content-Type: text/markdown
|
14
|
+
Requires-Dist: Flask>=2.0
|
15
|
+
Requires-Dist: pymongo
|
16
|
+
Requires-Dist: werkzeug
|
17
|
+
Requires-Dist: requests
|
18
|
+
Dynamic: author
|
19
|
+
Dynamic: author-email
|
20
|
+
Dynamic: classifier
|
21
|
+
Dynamic: description
|
22
|
+
Dynamic: description-content-type
|
23
|
+
Dynamic: home-page
|
24
|
+
Dynamic: requires-dist
|
25
|
+
Dynamic: requires-python
|
26
|
+
Dynamic: summary
|
27
|
+
|
28
|
+
# Cloud & DevOps Consulting
|
29
|
+
|
30
|
+
This project is a website for Cloud & DevOps consulting services. It is built with **Flask** for the backend, **MongoDB** for the database, and **Docker** for containerization.
|
31
|
+
|
32
|
+
## Features
|
33
|
+
|
34
|
+
- Cloud consulting services
|
35
|
+
- DevOps solutions
|
36
|
+
- Security & Compliance consulting
|
37
|
+
|
38
|
+
## Prerequisites
|
39
|
+
|
40
|
+
Before getting started, make sure you have the following installed:
|
41
|
+
|
42
|
+
- [Python 3.10+](https://www.python.org/downloads/)
|
43
|
+
- [Docker](https://www.docker.com/products/docker-desktop)
|
44
|
+
- [Git](https://git-scm.com/)
|
45
|
+
- [MongoDB](https://www.mongodb.com/try/download/community) (if you're not using MongoDB Atlas)
|
46
|
+
- [pip](https://pip.pypa.io/en/stable/)
|
47
|
+
- [twine](https://twine.readthedocs.io/en/stable/) (for uploading to PyPI)
|
48
|
+
|
49
|
+
## Installation
|
50
|
+
|
51
|
+
### 1. Clone the Repository
|
52
|
+
|
53
|
+
Clone this repository to your local machine using Git:
|
54
|
+
```bash
|
55
|
+
git clone https://github.com/Betrand1999/project-root.git
|
56
|
+
cd project-root
|
57
|
+
,,,
|
58
|
+
####
|
59
|
+
Setup Python Environment
|
60
|
+
python3 -m venv venv
|
61
|
+
source venv/bin/activate # For Windows use `venv\Scripts\activate`
|
62
|
+
#####
|
63
|
+
|
64
|
+
####
|
65
|
+
Install Dependencies
|
66
|
+
pip install -r requirements.txt
|
67
|
+
###
|
68
|
+
|
69
|
+
|
70
|
+
###
|
71
|
+
Set Up Python Package Build Tools
|
72
|
+
The setup.py file is where you define the details of your package, including its dependencies, description, version, and more.
|
73
|
+
###
|
74
|
+
|
75
|
+
###
|
76
|
+
MANIFEST.in
|
77
|
+
he MANIFEST.in file ensures that the necessary files are included when you build your package.
|
78
|
+
###
|
79
|
+
|
80
|
+
###
|
81
|
+
Build the Package
|
82
|
+
python setup.py sdist bdist_wheel
|
83
|
+
###
|
84
|
+
|
85
|
+
###
|
86
|
+
Upload to PyPI (Optional)
|
87
|
+
If you want to distribute your package on PyPI, you'll need a PyPI account. After registering and logging in to PyPI, use twine to upload the distribution files.
|
88
|
+
Install Twine: pip install twine
|
89
|
+
Upload the Package:
|
90
|
+
twine upload dist/*
|
91
|
+
###
|
92
|
+
|
93
|
+
##################################################################
|
94
|
+
pip install wheel
|
95
|
+
#################################################################
|
96
|
+
To see packages OutPUT
|
97
|
+
ls dist/
|
98
|
+
project-root-0.1.0.tar.gz
|
99
|
+
project_root-0.1.0-py3-none-any.whl
|
100
|
+
###################################################################
|
101
|
+
|
102
|
+
pip install dist/project_root-0.1.0-py3-none-any.whl
|
103
|
+
####################################################################
|
104
|
+
|
105
|
+
pip install twine
|
106
|
+
what is twine: Twine is a utility for publishing Python packages on the Python Package Index (PyPI)
|
107
|
+
#####################################################################
|
108
|
+
twine upload dist/my_cloud_devops_consulting-0.1.1-py3-none-any.whl
|
109
|
+
|
110
|
+
#############################################################################
|
111
|
+
How route are configure in apache2
|
112
|
+
sudo vi /etc/apache2/sites-available/000-default.conf
|
113
|
+
|
114
|
+
|
115
|
+
|
116
|
+
<VirtualHost *:80>
|
117
|
+
ServerAdmin webmaster@localhost
|
118
|
+
|
119
|
+
# Default application
|
120
|
+
ProxyPreserveHost On
|
121
|
+
ProxyPass / http://localhost:8080/
|
122
|
+
ProxyPassReverse / http://localhost:8080/
|
123
|
+
|
124
|
+
# Application running on port 9090
|
125
|
+
ProxyPass /app2 http://localhost:9090/
|
126
|
+
ProxyPassReverse /app2 http://localhost:9090/
|
127
|
+
|
128
|
+
# Logging
|
129
|
+
ErrorLog ${APACHE_LOG_DIR}/error.log
|
130
|
+
CustomLog ${APACHE_LOG_DIR}/access.log combined
|
131
|
+
</VirtualHost>
|
132
|
+
|
133
|
+
|
134
|
+
# Enable both configurations and restart Apache:
|
135
|
+
|
136
|
+
bash
|
137
|
+
Copy code
|
138
|
+
sudo a2ensite app1.conf
|
139
|
+
sudo a2ensite app2.conf
|
140
|
+
sudo systemctl restart apache2
|
141
|
+
|
142
|
+
|
143
|
+
# sudo systemctl restart apache2
|
144
|
+
|
145
|
+
####################################################
|
146
|
+
https://www.youtube.com/watch?v=3j33lNzMZlM&t=308s
|
147
|
+
####################################################
|
@@ -0,0 +1,28 @@
|
|
1
|
+
MANIFEST.in
|
2
|
+
README.md
|
3
|
+
app.py
|
4
|
+
setup.py
|
5
|
+
my_cloud_devops_consulting.egg-info/PKG-INFO
|
6
|
+
my_cloud_devops_consulting.egg-info/SOURCES.txt
|
7
|
+
my_cloud_devops_consulting.egg-info/dependency_links.txt
|
8
|
+
my_cloud_devops_consulting.egg-info/requires.txt
|
9
|
+
my_cloud_devops_consulting.egg-info/top_level.txt
|
10
|
+
static/css/contact-form.css
|
11
|
+
static/css/index.css
|
12
|
+
static/css/login.css
|
13
|
+
static/css/main.css
|
14
|
+
static/css/register.css
|
15
|
+
static/css/services.css
|
16
|
+
static/images/image.jpg
|
17
|
+
static/js/index.js
|
18
|
+
static/js/login.js
|
19
|
+
static/js/main.js
|
20
|
+
static/js/register.js
|
21
|
+
static/js/services.js
|
22
|
+
templates/contact-form.html
|
23
|
+
templates/index.html
|
24
|
+
templates/login.html
|
25
|
+
templates/register.html
|
26
|
+
templates/services.html
|
27
|
+
templates/test.html
|
28
|
+
tests/test_unit_test.py
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
app
|
@@ -0,0 +1,31 @@
|
|
1
|
+
from setuptools import setup, find_packages
|
2
|
+
|
3
|
+
setup(
|
4
|
+
name='my-cloud-devops-consulting',
|
5
|
+
version='0.1.2',
|
6
|
+
author='Betrand Mutagha',
|
7
|
+
author_email='mmutagha@gmail.com',
|
8
|
+
description='This is my consulting website for Cloud & DevOps services.',
|
9
|
+
long_description=open('README.md').read(),
|
10
|
+
long_description_content_type='text/markdown',
|
11
|
+
url='https://github.com/Betrand1999/project-root',
|
12
|
+
packages=find_packages(where="."), # Include the root as the package
|
13
|
+
py_modules=["app"], # Explicitly include app.py
|
14
|
+
include_package_data=True, # Ensures static and template files are included
|
15
|
+
package_data={
|
16
|
+
"": ["static/**/*", "templates/**/*"], # Include static and templates from the root
|
17
|
+
},
|
18
|
+
install_requires=[
|
19
|
+
'Flask>=2.0',
|
20
|
+
'pymongo',
|
21
|
+
'werkzeug',
|
22
|
+
'requests',
|
23
|
+
],
|
24
|
+
classifiers=[
|
25
|
+
'Programming Language :: Python :: 3',
|
26
|
+
'Programming Language :: Python :: 3.10',
|
27
|
+
'License :: OSI Approved :: MIT License',
|
28
|
+
'Operating System :: OS Independent',
|
29
|
+
],
|
30
|
+
python_requires='>=3.6',
|
31
|
+
)
|