Skip to content

Instantly share code, notes, and snippets.

@submtd
Last active November 1, 2021 22:07
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save submtd/c94314a12ab53227eaf46add68cab0b2 to your computer and use it in GitHub Desktop.
Save submtd/c94314a12ab53227eaf46add68cab0b2 to your computer and use it in GitHub Desktop.
Ubuntu 18.04 PHP Local Development
#!/bin/bash
sudo add-apt-repository -y ppa:ondrej/php
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt update
sudo apt install -y mysql-server mysql-client nginx redis-server nodejs pkg-config sqlite3 git curl postgresql-client mercurial zip bash-completion xvfb gtk2-engines-pixbuf xfonts-cyrillic xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable imagemagick x11-apps \
sudo apt-get install -y \
php7.4-fpm \
php-pear \
php7.4-bcmath \
php7.4-cli \
php7.4-common \
php7.4-curl \
php7.4-json \
php7.4-xml \
php7.4-imap \
php7.4-mbstring \
php7.4-mysql \
php7.4-pgsql \
php7.4-soap \
php7.4-sqlite3 \
php7.4-zip \
php-memcached \
php7.4-gd \
php7.4-intl \
php7.4-readline \
php7.4-dev \
php-redis \
libcurl4-openssl-dev \
libedit-dev \
libssl-dev \
libxml2-dev \
xz-utils \
libsqlite3-dev \
&& sudo apt-get clean
sudo mysql --execute="ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ''; FLUSH PRIVILEGES"
curl -sS https://getcomposer.org/installer | php && sudo mv composer.phar /usr/local/bin/composer
composer global require phpmd/phpmd
composer global require squizlabs/php_codesniffer
composer global require phpstan/phpstan
composer global require friendsofphp/php-cs-fixer
composer global require phpunit/phpunit
# add composer bin to path
cat >> ~/.profile << EOF
if [ -d "\$HOME/.config/composer/vendor/bin" ] ; then
PATH="\$HOME/.config/composer/vendor/bin:\$PATH"
fi
EOF
mkdir -p /home/"$USER"/Code/info/public
echo "<?php phpinfo();" > /home/"$USER"/Code/info/public/index.php
sudo dd of=/etc/nginx/sites-available/default << EOF
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name ~^(?<vhost>.+)\\.localtest.me\$;
root /home/$USER/Code/\$vhost/public;
index index.php index.html;
server_name _;
location / {
try_files \$uri \$uri/ /index.php\$is_args\$args;
}
location ~ \.php\$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
}
EOF
# install some npm utils
sudo npm install -g gulp
sudo npm install -g yarn
# restart all services
sudo systemctl restart php7.4-fpm
sudo systemctl restart nginx
sudo systemctl restart mysql
sudo systemctl restart redis-server
# fix permissions on home directory
sudo chown -R $USER:$(id -gn $USER) ~/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment