Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WSL Rework Discussion #1957

Open
2 tasks done
svpernova09 opened this issue Feb 28, 2024 · 14 comments
Open
2 tasks done

WSL Rework Discussion #1957

svpernova09 opened this issue Feb 28, 2024 · 14 comments

Comments

@svpernova09
Copy link
Contributor

svpernova09 commented Feb 28, 2024

Goal

Continuing work in #1949 by @MichaelBelgium and integrating #1956 from @karmendra

Complete

Complete is a fully functional Homestead-like Ubuntu 22.04 system with associated documentation.

Branch and Status

Work is being done on the wsl-rework branch. I've tested a fresh bento/ubuntu-22.04 Vagrant box and run sudo ./bin/wsl-init installed the base system as expected.

  • Do not install PostgreSQL in wsl-init, should probably be a feature. Thoughts?
  • Ensure our shell variables make it down into the subshell when we run bash scripts/features/php8.3.sh
  • [ ]
@karmendra
Copy link

karmendra commented Feb 29, 2024

Hi @svpernova09,

Regarding PostgreSQL, I am of the opinion that it shouldn't be part of wsl install as in amd64.sh of laravel/settler it installs and then disable the service # Disable to lower initial overhead. We would rather install it as a feature. Also my opinion is biased by the fact that I am a heavy user of MySql.

@MichaelBelgium
Copy link

Agree about PostgreSQL being a feature

Ensure our shell variables make it down into the subshell when we run bash scripts/features/php8.3.sh

What is this for if i may ask?

@MichaelBelgium
Copy link

@svpernova09 Correct me if I'm wrong but I think we also need an apache feature script, Nginx gets installed in wsl-init but if there's gonna be an site with type "apache" or "apache-proxy", the apache type or apache-proxy will be used but there's no webserver

sudo systemctl enable apache2

This line will fail in both site type scripts for WSL

@svpernova09
Copy link
Contributor Author

svpernova09 commented Mar 1, 2024

Hi @svpernova09,

Regarding PostgreSQL, I am of the opinion that it shouldn't be part of wsl install as in amd64.sh of laravel/settler it installs and then disable the service # Disable to lower initial overhead. We would rather install it as a feature. Also my opinion is biased by the fact that I am a heavy user of MySql.

Right, PostgreSQL has been moved to a feature and remove from wsl-init.

Agree about PostgreSQL being a feature

Ensure our shell variables make it down into the subshell when we run bash scripts/features/php8.3.sh

What is this for if i may ask?

I've been burned in the past with running bash scripts within bash scripts and want to do a quick test to ensure variables persist as expected.

@svpernova09 Correct me if I'm wrong but I think we also need an apache feature script, Nginx gets installed in wsl-init but if there's gonna be an site with type "apache" or "apache-proxy", the apache type or apache-proxy will be used but there's no webserver

sudo systemctl enable apache2

This line will fail in both site type scripts for WSL

I don't think we need a feature. We could install and disable it which is what settler does today.

@karmendra
Copy link

karmendra commented Mar 1, 2024

@svpernova09 , I created a new PR with my changes #1958. Please merge this instead of #1956 I closed this PR. Thanks.

@karmendra
Copy link

Hi, Just catching up, hope you guys are doing well, what are our next steps with this, let me know if I can help with something to take this further, got some free time next week. Thanks

@MichaelBelgium
Copy link

Would it be an idea to revert #1933 so that we can have mailpit on WSL?

@svpernova09
Copy link
Contributor Author

svpernova09#3

@MichaelBelgium
Copy link

Hey guys,

Got a solid test out of the wsl-rework branch on Ubuntu 20.04, 22.04 and deploying works perfectly.
I did do a few finishing touches in #1979

Few extra notes:

  • I actually deployed it also on Ubuntu 24.04 and it worked. We could perhaps mention/edit it so it supports 24.04 too.
  • I've had the idea of restoring backups automaticly and I think it can be added sooner or later. It's basicly reading the .backups folder and then asking if the user wants to restore a backup for a database in this loop

foreach ($settings['databases'] as $db) {
$create_cmd = '';
$query = "CREATE DATABASE IF NOT EXISTS {$db} DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci";
$create_cmd = 'mariadb -u homestead -psecret -e "'.$query.'"';
// run command to create the database
$shell_output = shell_exec($create_cmd);
if (! is_null($shell_output)) {
print_r($shell_output);
}
}

Would be a good idea i think.

@sdespont
Copy link
Contributor

sdespont commented Jul 18, 2024

Hi,

The webserver is responding and all databases are installed.

But I am not able to open a connection with the databases installed in the WSL instance with external Windows application like MySQL Workbench. I am using MariaDB.

image

Can you help me ?

@sdespont
Copy link
Contributor

sdespont commented Jul 18, 2024

Also, ./bin/wsl-init is calling bash 'scripts/features/mariadb.sh' without loading the version option specified in the Homestead.yaml file.

Would it be possible to read the Homestead.yaml file in ./bin/wsl-init in order to use it ?

image

image

@sdespont
Copy link
Contributor

sdespont commented Jul 19, 2024

Hello,

I understood why I couldn't establish a connection to the database: the port to use is 3306 and not 33060.

Something that wasn't clear to me when I first tried WSL2 with Homestead is that certain parameters of Homestead.yaml are not taken into account. For example : ip, cpus, memory, ports, ...

Here is the list of parameters not taken into account in my case:
image

Also, the IP to use for mapping homestead.test domain in C:\Windows\System32\drivers\etc\hosts must be 127.0.0.1.

I can suggest a PR to improve the documentation if you think it is a good idea ?

In fact, it would make sense to have specific parameters for WSL only : wsl_folders and wsl_sites. Therefore, both configs vagrant and WSL can live in the same config file as suggested by @svpernova09 !

@skeeith
Copy link
Contributor

skeeith commented Aug 16, 2024

@svpernova09 guys, I would like to help. can someone guide on where to start from here?

@sdespont I've read your comment, and I do agree that's a better option for flexibility and support for both WSL and VM.

@sdespont
Copy link
Contributor

sdespont commented Aug 21, 2024

To maintain fast and efficient synchronization with WSL of source files managed under Windows with an IDE , it could be very interesting to try Mutagen https://mutagen.io

Perfs should be better than NFS and should be easy to setup

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants