Buen día, el día de hoy les mostraré una box en Vagrant que realicé hace un tiempo atrás para aprovisionar Ubuntu 19.10 con:
- Git
- Nginx
- PHP V7.3
- MySQL V5.7
- Redis
- Composer
- NodeJS
- Npm
- Memcached
- PHPUnit
- Zsh
Instalación Rápida
Instala el Software Base
- Instalar VirtualBox
- Instalar Vagrant
- Clonar el siguiente repositorio
git clone git@github.com:<user>/ubuntu-lemp-php7.git lemp7
Instala Plugins Base de Vagrant
vagrant plugin install vagrant-vbguest
vagrant plugin install vagrant-hostmanager
Pasos
Documentación técnica
Referencia: Repositorio alojado en Github
-
Ve al directorio donde está ubicado el archivo README.md
cd lemp7
-
Levanta la box
vagrant up
Al momento de ingresar por SSH, el usuario y la contraseña es "vagrant"
-
Verifica que tu archivo hosts tenga la siguiente linea de instrucción
192.168.2.3 lemp7.vh
- Visita en tu navegador el siguiente enlace lemp7
La próxima vez que levante tu box, te aparecerá algo parecido a esto |
Script Bashero de Aprovisionamiento
Lo importante al momento de aprovisionar nuestra distribución sea usando Vagrant, Docker, en un servidor VPS On Premise, Cloud, dedicado, o físico es que consideremos los paquetes necesarios, las interfaces de líneas de comando y las configuraciones correspondientes para que trabajen en armonía.
A continuación muestro el contenido del Script Bashero que es invocado mediante Vagrant:
#!/usr/bin/env bash
main() {
startGo
setupGo
toolsGo
nginxGo
mysqlGo
phpGo
composerGo
nodeGo
zshGo
endGo
}
startGo() {
echo "======== Lemp7 BOX - START ========" && \
echo -e "========================================" && \
sudo bash -c "echo '127.0.1.1 ubuntu-disco-dingo' >> /etc/hosts"
}
setupGo() {
echo "--------------- SETUP --------------" && \
echo -e "----------------------------------------" && \
export LC_ALL=en_US.UTF-8 && \
export LANG=en_US.UTF-8 && \
sudo add-apt-repository -y ppa:ondrej/nginx && \
sudo add-apt-repository -y ppa:ondrej/php && \
sudo apt-get update
}
toolsGo() {
echo "--------------- TOOLS --------------" && \
echo -e "----------------------------------------" && \
sudo apt-get install -y re2c libpcre3-dev gcc mc grc cowsay figlet zsh lsb-core
}
nginxGo() {
echo "--------------- NGINX --------------" && \
echo -e "----------------------------------------" && \
sudo apt-get install -y nginx && \
sudo cp /vagrant/data/nginx/lemp7.vh.conf /etc/nginx/sites-available/lemp7.vh.conf && \
sudo ln -s /etc/nginx/sites-available/lemp7.vh.conf /etc/nginx/sites-enabled/lemp7.vh && \
sudo systemctl restart nginx.service
}
mysqlGo() {
echo "--------------- MYSQL --------------" && \
echo -e "----------------------------------------" && \
sudo apt-get install -y mysql-server && \
sudo cp /vagrant/data/mysql/.my.cnf /root/.my.cnf && \
sudo chmod 600 /root/.my.cnf && \
sudo service mysql start && \
mysql --user=root <<EOF
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
FLUSH PRIVILEGES;
EOF
}
phpGo() {
echo "---------------- PHP ---------------" && \
echo -e "----------------------------------------" && \
sudo apt-get install -y php7.3-fpm php7.3-mysql php7.3-phpdbg php7.3-mbstring php7.3-gd php-imagick && \
sudo apt-get install -y php7.3-pgsql php7.3-pspell php7.3-recode php7.3-tidy php7.3-intl php7.3-curl && \
sudo apt-get install -y php7.3-zip php7.3-xml php7.3-dev php-memcached mcrypt memcached phpunit && \
sudo cp /vagrant/data/php/lemp.ini /etc/php/7.3/mods-available/lemp.ini && \
sudo chmod 644 /etc/php/7.3/mods-available/lemp.ini && \
sudo ln -s /etc/php/7.3/mods-available/lemp.ini /etc/php/7.3/cli/conf.d/100-lemp.ini && \
sudo ln -s /etc/php/7.3/mods-available/lemp.ini /etc/php/7.3/fpm/conf.d/100-lemp.ini && \
sudo pecl install xdebug && \
sudo cp /vagrant/data/php/xdebug.ini /etc/php/7.3/mods-available/xdebug.ini && \
sudo chmod 644 /etc/php/7.3/mods-available/xdebug.ini && \
sudo ln -s /etc/php/7.3/mods-available/xdebug.ini /etc/php/7.3/cli/conf.d/105-xdebug.ini && \
sudo ln -s /etc/php/7.3/mods-available/xdebug.ini /etc/php/7.3/fpm/conf.d/105-xdebug.ini && \
sudo systemctl restart php7.3-fpm
}
composerGo() {
echo "-------------- COMPOSER ------------" && \
echo -e "----------------------------------------" && \
curl -sS https://getcomposer.org/installer | php && \
sudo mv composer.phar /usr/local/bin/composer
}
nodeGo() {
echo "---------------- NODE --------------" && \
echo -e "----------------------------------------" && \
sudo apt install -y nodejs npm
}
zshGo() {
echo "---------------- ZSH ---------------" && \
echo -e "----------------------------------------" && \
cd /tmp && wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh && \
sudo sh ./install.sh && rm ./install.sh && usermod --shell /bin/zsh root && \
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.oh-my-zsh/plugins/zsh-syntax-highlighting && \
git clone https://github.com/zsh-users/zsh-autosuggestions.git ~/.oh-my-zsh/plugins/zsh-autosuggestions && \
sed -i -e 's/git/git zsh-syntax-highlighting zsh-autosuggestions/' ~/.zshrc && \
sed -i -e 's/robbyrussell/risto/' ~/.zshrc
}
endGo() {
sudo usermod -a -G www-data vagrant && \
echo "========= Lemp7 BOX - END =========" && \
echo -e "========================================" && \
figlet Lemp7 && \
cowsay -f milk "Nunca confies en un ordenador que no puedas lanzar por una ventana. --->Steve Wozniak"
}
main
exit 0
Adicionales
Manual de Instalación de oh-my-zsh para usuario vagrant
wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O - | zsh
sudo chsh -s `which zsh`
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.oh-my-zsh/plugins/zsh-syntax-highlighting && \
git clone https://github.com/zsh-users/zsh-autosuggestions.git ~/.oh-my-zsh/plugins/zsh-autosuggestions && \
sed -i -e 's/git/git zsh-syntax-highlighting zsh-autosuggestions/' ~/.zshrc
sed -i -e 's/robbyrussell/risto/' ~/.zshrc
source ~/.zshrc
Manual de Instalación segura de Redis
Documentación técnica
sudo apt install redis-server
sudo vim /etc/redis/redis.conf > supervised systemd
sudo systemctl restart redis.service
sudo systemctl status redis
sudo redis-cli
> ping
sudo vim /etc/redis/redis.conf > bind 127.0.0.1 ::1
sudo systemctl restart redis
sudo netstat -lnp | grep redis
sudo vim /etc/redis/redis.conf
sudo openssl rand 60 | openssl base64 -A
sudo requirepass foobared > change pass
sudo systemctl restart redis.service
Referencia: Repositorio alojado en Github
Social Plugin