Skip to content
This repository was archived by the owner on Jun 5, 2025. It is now read-only.

Commit f180742

Browse files
Fix and improve WSL process (#1949)
* Save information for features * Uncomment xdebug configuration on php8.1 * Fix wrong path Should be in the users home directory, not root * Enable php 8.2 and 8.3 fpm and restart Just like other php versions * Save features in user folder, username/group in root * Fix php fpm user/group config * Use WSL_USER_NAME for composer * Use existing scripts for mariadb and php83 in wsl-init They do the same thing, prevent copy/pasting and what not * Fix restarting nginx in wsl:create-sites nginx didn't allow to restart as the restart command was in a loop and resulted in ``` Feb 03 15:09:01 systemd[1]: Failed to start A high performance web server and a reverse proxy server. Feb 03 15:09:01 systemd[1]: nginx.service: Start request repeated too quickly. Feb 03 15:09:01 systemd[1]: nginx.service: Failed with result 'exit-code'. ``` So just restart once at the end :) * Prevent mariadb deprecation warning * Also check if fpm is enabled for php 8.2/8.3 * Edit for styleci * Use $WSL_USER_NAME, $$WSL_USER_GROUP where necessary in features * Restart newer php fpms too with blackfire and couchdb
1 parent 5125ef3 commit f180742

19 files changed

+108
-173
lines changed

bin/wsl-init

Lines changed: 23 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@ read WSL_USER_NAME
1111
echo "What is your WSL user group? (Same as username if you're unsure)"
1212
read WSL_USER_GROUP
1313

14+
# Save necessary information for features
15+
mkdir -p ~/.homestead-features
16+
mkdir -p /home/$WSL_USER_NAME/.homestead-features
17+
echo $WSL_USER_NAME > ~/.homestead-features/wsl_user_name
18+
echo $WSL_USER_GROUP > ~/.homestead-features/wsl_user_group
19+
1420
# Update Package List
1521
apt-get update
1622

@@ -50,41 +56,19 @@ apt-get install -y --allow-change-held-packages \
5056
php-imagick php-memcached php-redis php-xdebug php-dev php-swoole
5157

5258
# PHP 8.3
53-
apt-get install -y --allow-change-held-packages \
54-
php8.3 php8.3-bcmath php8.3-bz2 php8.3-cgi php8.3-cli php8.3-common php8.3-curl php8.3-dba php8.3-dev \
55-
php8.3-enchant php8.3-fpm php8.3-gd php8.3-gmp php8.3-imap php8.3-interbase php8.3-intl php8.3-ldap \
56-
php8.3-mbstring php8.3-mysql php8.3-odbc php8.3-opcache php8.3-pgsql php8.3-phpdbg php8.3-pspell php8.3-readline \
57-
php8.3-snmp php8.3-soap php8.3-sqlite3 php8.3-sybase php8.3-tidy php8.3-xml php8.3-xsl \
58-
php8.3-zip php8.3-imagick php8.3-memcached php8.3-redis php8.3-xmlrpc php8.3-xdebug
59-
60-
# Configure php.ini for CLI
61-
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/8.3/cli/php.ini
62-
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/8.3/cli/php.ini
63-
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/8.3/cli/php.ini
64-
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/8.3/cli/php.ini
65-
66-
# Configure Xdebug
67-
echo "xdebug.mode = debug" >> /etc/php/8.3/mods-available/xdebug.ini
68-
echo "xdebug.discover_client_host = true" >> /etc/php/8.3/mods-available/xdebug.ini
69-
echo "xdebug.client_port = 9003" >> /etc/php/8.3/mods-available/xdebug.ini
70-
echo "xdebug.max_nesting_level = 512" >> /etc/php/8.3/mods-available/xdebug.ini
71-
echo "opcache.revalidate_freq = 0" >> /etc/php/8.3/mods-available/opcache.ini
72-
73-
# Fixed php fpm bind listening socket - no such file issue.
74-
mkdir -p /run/php
75-
touch /run/php/php8.3-fpm.sock
76-
77-
# Install Composer
78-
curl -sS https://getcomposer.org/installer | php
79-
mv composer.phar /usr/local/bin/composer
80-
chown -R vagrant:vagrant /home/vagrant/.config
81-
82-
# Install Global Packages
83-
sudo su vagrant <<'EOF'
84-
/usr/local/bin/composer global require "laravel/envoy=^2.0"
85-
/usr/local/bin/composer global require "laravel/installer=^5.0"
86-
/usr/local/bin/composer global config --no-plugins allow-plugins.slince/composer-registry-manager true
87-
/usr/local/bin/composer global require "slince/composer-registry-manager=^2.0"
59+
bash 'scripts/features/php8.3.sh'
60+
61+
# Install Composer
62+
curl -sS https://getcomposer.org/installer | php
63+
mv composer.phar /usr/local/bin/composer
64+
chown -R $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.config
65+
66+
# Install Global Packages
67+
sudo su $WSL_USER_NAME <<'EOF'
68+
/usr/local/bin/composer global require "laravel/envoy=^2.0"
69+
/usr/local/bin/composer global require "laravel/installer=^5.0"
70+
/usr/local/bin/composer global config --no-plugins allow-plugins.slince/composer-registry-manager true
71+
/usr/local/bin/composer global require "slince/composer-registry-manager=^2.0"
8872
EOF
8973

9074
# Install Nginx
@@ -99,36 +83,14 @@ chown -R $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME
9983
touch /home/$WSL_USER_NAME/.config/nginx/nginx.conf
10084
ln -sf /home/$WSL_USER_NAME/.config/nginx/nginx.conf /etc/nginx/conf.d/nginx.conf
10185

102-
# Configure php.ini for FPM
103-
sed -i "s/error_reporting = .*/error_reporting = E_ALL/" /etc/php/8.3/fpm/php.ini
104-
sed -i "s/display_errors = .*/display_errors = On/" /etc/php/8.3/fpm/php.ini
105-
sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php/8.3/fpm/php.ini
106-
sed -i "s/memory_limit = .*/memory_limit = 512M/" /etc/php/8.3/fpm/php.ini
107-
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 100M/" /etc/php/8.3/fpm/php.ini
108-
sed -i "s/post_max_size = .*/post_max_size = 100M/" /etc/php/8.3/fpm/php.ini
109-
sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/8.3/fpm/php.ini
110-
111-
printf "[openssl]\n" | tee -a /etc/php/8.3/fpm/php.ini
112-
printf "openssl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/8.3/fpm/php.ini
113-
printf "[curl]\n" | tee -a /etc/php/8.3/fpm/php.ini
114-
printf "curl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/8.3/fpm/php.ini
115-
11686
# Set The Nginx & PHP-FPM User
11787
sed -i "s/user www-data;/user $WSL_USER_NAME;/" /etc/nginx/nginx.conf
11888
sed -i "s/# server_names_hash_bucket_size.*/server_names_hash_bucket_size 64;/" /etc/nginx/nginx.conf
11989

120-
sed -i "s/user = www-data/user = $WSL_USER_NAME/" /etc/php/8.3/fpm/pool.d/www.conf
121-
sed -i "s/group = www-data/group = $WSL_USER_NAME/" /etc/php/8.3/fpm/pool.d/www.conf
122-
123-
sed -i "s/listen\.owner.*/listen.owner = $WSL_USER_NAME/" /etc/php/8.3/fpm/pool.d/www.conf
124-
sed -i "s/listen\.group.*/listen.group = $WSL_USER_NAME/" /etc/php/8.3/fpm/pool.d/www.conf
125-
sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/8.3/fpm/pool.d/www.conf
126-
12790
# Disable XDebug On The CLI
128-
sudo phpdismod -s cli xdebug
91+
phpdismod -s cli xdebug
12992

13093
service nginx restart
131-
service php8.3-fpm restart
13294

13395
# Add $WSL_USER_NAME User To WWW-Data
13496
usermod -a -G www-data $WSL_USER_NAME
@@ -147,53 +109,11 @@ apt-get install -y sqlite3 libsqlite3-dev
147109
service apparmor stop
148110
update-rc.d -f apparmor remove
149111

150-
# Remove MySQL
151-
apt-get remove -y --purge mysql-server mysql-client mysql-common
152112
apt-get autoremove -y
153113
apt-get autoclean
154114

155-
rm -rf /var/lib/mysql/*
156-
rm -rf /var/log/mysql
157-
rm -rf /etc/mysql
158-
159-
# Add Maria PPA
160-
curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
161-
162-
echo "mariadb-server mysql-server/data-dir select ''" | debconf-set-selections
163-
echo "mariadb-server mysql-server/root_password password secret" | debconf-set-selections
164-
echo "mariadb-server mysql-server/root_password_again password secret" | debconf-set-selections
165-
166-
mkdir /etc/mysql
167-
touch /etc/mysql/debian.cnf
168-
169115
# Install MariaDB
170-
apt-get install -y mariadb-server mariadb-client
171-
172-
# Configure Maria Remote Access and ignore db dirs
173-
sed -i "s/bind-address = 127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/mariadb.conf.d/50-server.cnf
174-
cat > /etc/mysql/mariadb.conf.d/50-server.cnf << EOF
175-
[mysqld]
176-
bind-address = 0.0.0.0
177-
ignore-db-dir = lost+found
178-
#general_log
179-
#general_log_file=/var/log/mysql/mariadb.log
180-
EOF
181-
182-
export MYSQL_PWD=secret
183-
184-
mysql --user="root" -e "GRANT ALL ON *.* TO root@'0.0.0.0' IDENTIFIED BY 'secret' WITH GRANT OPTION;"
185-
service mysql restart
186-
187-
mysql --user="root" -e "CREATE USER IF NOT EXISTS 'homestead'@'0.0.0.0' IDENTIFIED BY 'secret';"
188-
mysql --user="root" -e "GRANT ALL ON *.* TO 'homestead'@'0.0.0.0' IDENTIFIED BY 'secret' WITH GRANT OPTION;"
189-
mysql --user="root" -e "GRANT ALL ON *.* TO 'homestead'@'%' IDENTIFIED BY 'secret' WITH GRANT OPTION;"
190-
mysql --user="root" -e "FLUSH PRIVILEGES;"
191-
service mysql restart
192-
193-
mysql_upgrade --user="root" --verbose --force
194-
service mysql restart
195-
196-
unset MYSQL_PWD
116+
bash 'scripts/features/mariadb.sh'
197117

198118
# Install Postgres 15
199119
apt-get install -y postgresql-15 postgresql-server-dev-15 postgresql-15-postgis-3 postgresql-15-postgis-3-scripts
@@ -219,16 +139,14 @@ service redis-server start
219139
apt-get upgrade -y
220140

221141
# Clean Up
222-
apt -y autoremove
223-
apt -y clean
224142
chown -R $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME
225143
chown -R $WSL_USER_NAME:$WSL_USER_GROUP /usr/local/bin
226144

227145
# Add Composer Global Bin To Path
228146
printf "\nPATH=\"$(sudo su - $WSL_USER_NAME -c 'composer config -g home 2>/dev/null')/vendor/bin:\$PATH\"\n" | tee -a /home/$WSL_USER_NAME/.profile
229147

230-
apt-get -y autoremove;
231-
apt-get -y clean;
148+
apt-get -y autoremove
149+
apt-get -y clean
232150

233151
# What are you doing Ubuntu?
234152
# https://askubuntu.com/questions/1250974/user-root-cant-write-to-file-in-tmp-owned-by-someone-else-in-20-04-but-can-in

scripts/features/blackfire.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ timeout=15s
4747
"
4848

4949
echo "$agent" > "/etc/blackfire/agent"
50-
echo "$client" > "/home/vagrant/.blackfire.ini"
50+
echo "$client" > "/home/$WSL_USER_NAME/.blackfire.ini"
5151

5252
service php5.6-fpm restart
5353
service php7.0-fpm restart
@@ -56,4 +56,7 @@ service php7.2-fpm restart
5656
service php7.3-fpm restart
5757
service php7.4-fpm restart
5858
service php8.0-fpm restart
59+
service php8.1-fpm restart
60+
service php8.2-fpm restart
61+
service php8.3-fpm restart
5962
service blackfire-agent restart

scripts/features/couchdb.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,6 @@ sudo service php7.2-fpm restart
4545
sudo service php7.3-fpm restart
4646
sudo service php7.4-fpm restart
4747
sudo service php8.0-fpm restart
48+
sudo service php8.1-fpm restart
49+
sudo service php8.2-fpm restart
50+
sudo service php8.3-fpm restart

scripts/features/crystal.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,6 @@ cd lucky_cli-0.11.0
3434
shards install
3535
crystal build src/lucky.cr --release --no-debug
3636
mv lucky /usr/local/bin/.
37-
cd /home/vagrant
37+
cd /home/$WSL_USER_NAME
3838
rm -rf lucky_cli-0.11.0
3939
rm -rf v0.11.0.tar.gz

scripts/features/golang.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,5 @@ else
3131
fi
3232

3333
tar -C /usr/local -xzf golang.tar.gz go
34-
printf "\nPATH=\"/usr/local/go/bin:\$PATH\"\n" | tee -a /home/vagrant/.profile
34+
printf "\nPATH=\"/usr/local/go/bin:\$PATH\"\n" | tee -a /home/$WSL_USER_NAME/.profile
3535
rm -rf golang.tar.gz

scripts/features/ohmyzsh.sh

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,20 @@ touch /home/$WSL_USER_NAME/.homestead-features/oh-my-zsh
2020
chown -Rf $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.homestead-features
2121

2222
# Install oh-my-zsh
23-
git clone https://github.com/ohmyzsh/ohmyzsh.git /home/vagrant/.oh-my-zsh
24-
cp /home/vagrant/.oh-my-zsh/templates/zshrc.zsh-template /home/vagrant/.zshrc
23+
git clone https://github.com/ohmyzsh/ohmyzsh.git /home/$WSL_USER_NAME/.oh-my-zsh
24+
cp /home/$WSL_USER_NAME/.oh-my-zsh/templates/zshrc.zsh-template /home/$WSL_USER_NAME/.zshrc
2525

2626
# Set theme and plugins according to config
2727
if [ -n "${theme}" ]; then
28-
sed -i "s/^ZSH_THEME=.*/ZSH_THEME=\"${theme}\"/" /home/vagrant/.zshrc
28+
sed -i "s/^ZSH_THEME=.*/ZSH_THEME=\"${theme}\"/" /home/$WSL_USER_NAME/.zshrc
2929
fi
3030
if [ -n "${plugins}" ]; then
31-
sed -i "s/^plugins=.*/plugins=(${plugins})/" /home/vagrant/.zshrc
31+
sed -i "s/^plugins=.*/plugins=(${plugins})/" /home/$WSL_USER_NAME/.zshrc
3232
fi
3333

34-
printf "\nemulate sh -c 'source ~/.bash_aliases'\n" | tee -a /home/vagrant/.zprofile
35-
printf "\nemulate sh -c 'source ~/.profile'\n" | tee -a /home/vagrant/.zprofile
36-
chown -R vagrant:vagrant /home/vagrant/.oh-my-zsh
37-
chown vagrant:vagrant /home/vagrant/.zshrc
38-
chown vagrant:vagrant /home/vagrant/.zprofile
39-
chsh -s /bin/zsh vagrant
34+
printf "\nemulate sh -c 'source ~/.bash_aliases'\n" | tee -a /home/$WSL_USER_NAME/.zprofile
35+
printf "\nemulate sh -c 'source ~/.profile'\n" | tee -a /home/$WSL_USER_NAME/.zprofile
36+
chown -R $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.oh-my-zsh
37+
chown $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.zshrc
38+
chown $WSL_USER_NAME:$WSL_USER_GROUP /home/$WSL_USER_NAME/.zprofile
39+
chsh -s /bin/zsh $WSL_USER_NAME

scripts/features/php5.6.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,10 @@ printf "[curl]\n" | tee -a /etc/php/5.6/fpm/php.ini
6464
printf "curl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/5.6/fpm/php.ini
6565

6666
# Configure FPM
67-
sed -i "s/user = www-data/user = vagrant/" /etc/php/5.6/fpm/pool.d/www.conf
68-
sed -i "s/group = www-data/group = vagrant/" /etc/php/5.6/fpm/pool.d/www.conf
69-
sed -i "s/listen\.owner.*/listen.owner = vagrant/" /etc/php/5.6/fpm/pool.d/www.conf
70-
sed -i "s/listen\.group.*/listen.group = vagrant/" /etc/php/5.6/fpm/pool.d/www.conf
67+
sed -i "s/user = www-data/user = $WSL_USER_NAME/" /etc/php/5.6/fpm/pool.d/www.conf
68+
sed -i "s/group = www-data/group = $WSL_USER_GROUP/" /etc/php/5.6/fpm/pool.d/www.conf
69+
sed -i "s/listen\.owner.*/listen.owner = $WSL_USER_NAME/" /etc/php/5.6/fpm/pool.d/www.conf
70+
sed -i "s/listen\.group.*/listen.group = $WSL_USER_GROUP/" /etc/php/5.6/fpm/pool.d/www.conf
7171
sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/5.6/fpm/pool.d/www.conf
7272

7373
systemctl enable php5.6-fpm

scripts/features/php7.0.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,10 @@ printf "[curl]\n" | tee -a /etc/php/7.0/fpm/php.ini
6363
printf "curl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/7.0/fpm/php.ini
6464

6565
# Configure FPM
66-
sed -i "s/user = www-data/user = vagrant/" /etc/php/7.0/fpm/pool.d/www.conf
67-
sed -i "s/group = www-data/group = vagrant/" /etc/php/7.0/fpm/pool.d/www.conf
68-
sed -i "s/listen\.owner.*/listen.owner = vagrant/" /etc/php/7.0/fpm/pool.d/www.conf
69-
sed -i "s/listen\.group.*/listen.group = vagrant/" /etc/php/7.0/fpm/pool.d/www.conf
66+
sed -i "s/user = www-data/user = $WSL_USER_NAME/" /etc/php/7.0/fpm/pool.d/www.conf
67+
sed -i "s/group = www-data/group = $WSL_USER_GROUP/" /etc/php/7.0/fpm/pool.d/www.conf
68+
sed -i "s/listen\.owner.*/listen.owner = $WSL_USER_NAME/" /etc/php/7.0/fpm/pool.d/www.conf
69+
sed -i "s/listen\.group.*/listen.group = $WSL_USER_GROUP/" /etc/php/7.0/fpm/pool.d/www.conf
7070
sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/7.0/fpm/pool.d/www.conf
7171

7272
systemctl enable php7.0-fpm

scripts/features/php7.1.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,10 @@ printf "[curl]\n" | tee -a /etc/php/7.1/fpm/php.ini
6363
printf "curl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/7.1/fpm/php.ini
6464

6565
# Configure FPM
66-
sed -i "s/user = www-data/user = vagrant/" /etc/php/7.1/fpm/pool.d/www.conf
67-
sed -i "s/group = www-data/group = vagrant/" /etc/php/7.1/fpm/pool.d/www.conf
68-
sed -i "s/listen\.owner.*/listen.owner = vagrant/" /etc/php/7.1/fpm/pool.d/www.conf
69-
sed -i "s/listen\.group.*/listen.group = vagrant/" /etc/php/7.1/fpm/pool.d/www.conf
66+
sed -i "s/user = www-data/user = $WSL_USER_NAME/" /etc/php/7.1/fpm/pool.d/www.conf
67+
sed -i "s/group = www-data/group = $WSL_USER_GROUP/" /etc/php/7.1/fpm/pool.d/www.conf
68+
sed -i "s/listen\.owner.*/listen.owner = $WSL_USER_NAME/" /etc/php/7.1/fpm/pool.d/www.conf
69+
sed -i "s/listen\.group.*/listen.group = $WSL_USER_GROUP/" /etc/php/7.1/fpm/pool.d/www.conf
7070
sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/7.1/fpm/pool.d/www.conf
7171

7272
systemctl enable php7.1-fpm

scripts/features/php7.2.sh

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,10 @@ printf "[curl]\n" | tee -a /etc/php/7.2/fpm/php.ini
6363
printf "curl.cainfo = /etc/ssl/certs/ca-certificates.crt\n" | tee -a /etc/php/7.2/fpm/php.ini
6464

6565
# Configure FPM
66-
sed -i "s/user = www-data/user = vagrant/" /etc/php/7.2/fpm/pool.d/www.conf
67-
sed -i "s/group = www-data/group = vagrant/" /etc/php/7.2/fpm/pool.d/www.conf
68-
69-
sed -i "s/listen\.owner.*/listen.owner = vagrant/" /etc/php/7.2/fpm/pool.d/www.conf
70-
sed -i "s/listen\.group.*/listen.group = vagrant/" /etc/php/7.2/fpm/pool.d/www.conf
66+
sed -i "s/user = www-data/user = $WSL_USER_NAME/" /etc/php/7.2/fpm/pool.d/www.conf
67+
sed -i "s/group = www-data/group = $WSL_USER_GROUP/" /etc/php/7.2/fpm/pool.d/www.conf
68+
sed -i "s/listen\.owner.*/listen.owner = $WSL_USER_NAME/" /etc/php/7.2/fpm/pool.d/www.conf
69+
sed -i "s/listen\.group.*/listen.group = $WSL_USER_GROUP/" /etc/php/7.2/fpm/pool.d/www.conf
7170
sed -i "s/;listen\.mode.*/listen.mode = 0666/" /etc/php/7.2/fpm/pool.d/www.conf
7271

7372
systemctl enable php7.2-fpm

0 commit comments

Comments
 (0)