abicorios / lamp_vagrant

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

lamp_vagrant

Lamp server (Linux Ubuntu 20.04, Apache2, MySQL 5.7, PHP 7.3).

It is insecure, for the local development only.

Warning

It is infinitely slow on Windows 10 at the PhpMyAdmin import. But on the Ubuntu host it is good. So you need another LAMP on the Windows. Maybe I will try to fix it later. The simplest solution is the Docker https://github.com/sprintcube/docker-compose-lamp

Requirements

VirtualBox https://www.virtualbox.org/

Vagrant https://www.vagrantup.com/

Web development requirements

Also the web-development can be comfortable with Git https://git-scm.com/ and VS Code https://code.visualstudio.com/

Usage

Clone this LAMP by the Git:

git clone git@github.com:abicorios/lamp_vagrant.git

or load the archive https://github.com/abicorios/lamp_vagrant/archive/refs/heads/main.zip and unzip it.

Copy a zip archive of the web-project to the directory of the LAMP project (let it is project.zip).

Then go to the directory of this LAMP project by the command line, and run:

vagrant up

After up of the virtual machine, you can go inside by the ssh:

vagrant ssh

Then become the root user:

sudo -i

Go to the main web directory, copy a project archive to the main web directory, and extract an archive:

cd /var/www/html
cp /vagrant/project.zip .
unzip project.zip

See a result:

ls

If you obtain the project directory (/var/www/html/project), but you need project files just inside the /var/www/html directory, you can simle move it:

cd /var/www/html
rsync -a project/ ./
rm -rf project
rm project.zip

Finally set the owner of the files to the dummy web user:

chown -R www-data:www-data /var/www/html

The website is accessible by the http://localhost:8080, and the PhpMyAdmin is accessible by the http://localhost:8080/phpmyadmin. MySQL admin user is root with the password 123456 (it is not secure, but it is not important, because it is accessible only locally).

You can disable the virtual machine by the vagrant halt, and next time you can enable it by the vagrant up. You can destroy the virtual machine by the vagrant destroy.

Web development

At the Windows the git-bash tool can be useful, it appears by an installation of the git. At the Linux the usual bash terminal is good.

Go to the LAMP project directory by the command line on the host system (outside the virtual machine). Then you can add the ssh settings of the virtual machine access to the ssh config:

vagrant ssh-config | sed 's/User vagrant/User root/; s/Host default/Host lamp/; $i\ \ ForwardAgent yes' >> ~/.ssh/config

Open the VS Code, install the Remote - SSH extension. Connect to the LAMP machine by this extension (left-down green button). If it is not so clear, read the expanded instruction https://code.visualstudio.com/docs/remote/ssh-tutorial, some begin part about the connection to the host.

So, open the main web directory /var/www/html by the VS Code inside the virtual machine.

You can add the new archive from the host system by the mouse moving.

You can open the terminal inside the VS Code connected to the virtual machine by the main menu of the VS Code.

You can extract and move files like on the above Usage description by the terminal.

If some access errors, you can fix owner:

chown -R www-data:www-data /var/www/html

Also, it can be need to fix owner on new files. May be I will fix this more globally by the new ftp-user like on a hosting in next updates.

In short, names of VS Code extension for the web development which are comfortable for me: GitLens, PHP Intelephense, PHP Debug (it is good with the Xdebug helper browser extension). If you want use Xdebug without the browser extension, you can add the line xdebug.start_with_request = yes to the config file /etc/php/7.3/mods-available/xdebug.ini, and restart the Apache by the service apache2 restart command, but it will start Xdebug by the background scripts too (for example cron tasks), sometime it is not so comfortable.

To work with Github, it needs to set the ssh key by the instructions https://docs.github.com/en/authentication/connecting-to-github-with-ssh. You can check by the command ssh-add -L key in the host and the guest system. If you set a key on the host system, and enable it on the Github settings, so when you ssh to the guest system with the forward agent option, then a key is accessible in the guest system. The agent forwarding is enabled in the ~/.ssh/config as it is described above. On the Ubuntu host the ssh agent is enabled by default. In some case you need search how to do the autostart of the ssh agent. For example, on the Windows host it is possible by the instruction https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse. But on the Windows host it is stack on the PhpMyAdmin import, as it warned above. The simplest solution is the Docker https://github.com/sprintcube/docker-compose-lamp

About

License:GNU General Public License v3.0


Languages

Language:PHP 100.0%