Saturday, December 19, 2020

Python Error while creating virtualenv 'ImportError: No module named importlib_metadata'

Python Errors while creating virtualenv

ImportError: No module named importlib_metadata

or

AssertionError: importlib-metadata>=0.12; python_version < "3.8" .dist-info directory not found

or

NameError: name 'ModuleNotFoundError' is not defined

Solution :

You need to upgrade pip.

pip install --upgrade --user pip

Once the pip is upgraded, you should not get the error. If you are using pip3 then use pip3 instead of pip in the command.

You can see the solution in the following video.


 

Friday, November 6, 2020

Forward Authorization header from nginx to apache

 If you have configured Apache and Nginx both on your server as some php sites are configured in Apache and some Python/Node/Ruby or other sites are configured in Nginx.

If your primary web server is Nginx and you have proxy passed apache from Nginx, the Authorization header error can a common issue you might face.

'Undefined Index Authorization' error comes when Apache is expecting a Authorization token which is not passed to apache. As your primary web server (Port 80) is nginx and you have proxypassed apache in it. All requests which are received by Nginx first then Nginx transfers them to apache.

But Authorization header has different mechanism because this is a header. Nginx receives it but it does not pass it to the apache as it thinks the header is for it. You need to tell nginx to pass it to apache. Now How will you tell it?

The virtualhost which you have configured in Nginx and proxypassed to Apache, add following lines in it.

proxy_pass_request_headers      on;
proxy_set_header Authorization $http_authorization;
proxy_pass_header  Authorization;

Where 'Authorization' is the name of the header value which has the token which should be passed to the apache.

Now Nginx will pass the Authorization Header Token to Apache and you will not get the similar error again.

Install mssql server in Ubuntu 20.04 Docker Container

 To install the Mssql server 19 in Ubuntu 20.04, you need to follow these steps.

1. Clone the systemd image.

sudo docker run -d --name linuxamination --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro jrei/systemd-ubuntu:20.04

2. Log into the container

sudo docker exec -it linuxamination bash

3. Run the commands inside the container

apt update

4. Install dependent packages

apt install wget curl sudo software-properties-common gnupg2

5. Add microsoft keys in your apt repository.

sudo wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/18.04/mssql-server-2019.list)"

6. Update the repository

apt update

7. Install Mssql server

sudo apt install mssql-server

8. Configure Mssql server

/opt/mssql/bin/mssql-conf setup

While configuration, You need to select Express (Free) option if you do not have License key for Mssql server.

Then you need to accept the License terms and add a password for your mssql server.

If you get following error while configuring Mssql server

Ubuntu Docker Container Error - System has not been booted with systemd as init system (PID 1). Can't operate

 Then you need to follow this tutorial from the beginning, you will not get this error. If you have launched a container from your existing Ubuntu Image and now you are following rest of the steps from this tutorial then you might get this error. 

Take a look at here for the solution.


 

http://linuxamination.blogspot.com/2020/11/ubuntu-docker-container-error-system.html

or if you need complete guide of solution, follow this.


 

9.Now you need to install mssql tools, run the command in your container.

curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
curl https://packages.microsoft.com/config/ubuntu/19.10/prod.list > /etc/apt/sources.list.d/mssql-release.list

10. Update the repository

sudo apt update 
sudo ACCEPT_EULA=Y apt install mssql-tools unixodbc-dev
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc

11. Now Connect to MS SQL console using command.

sqlcmd -S 127.0.0.1 -U SA 

Enter the password you chose while configuration. Now you are on mssql command line.

12. Create database

1> create database mydb;

13. Get a list of databases:

1> select name from sys.databases;
2> go

You can see the solution in the following video.