diff --git a/.gitattributes b/.gitattributes
index e81e6ce3a031..074fc2cccc8a 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -15,7 +15,6 @@ contributing/ export-ignore
.nojekyll export-ignore export-ignore
CODE_OF_CONDUCT.md export-ignore
CONTRIBUTING.md export-ignore
-Vagrantfile.dist export-ignore
# They don't want our test files
tests/AutoReview/ export-ignore
diff --git a/Vagrantfile.dist b/Vagrantfile.dist
deleted file mode 100644
index e85393ff8588..000000000000
--- a/Vagrantfile.dist
+++ /dev/null
@@ -1,203 +0,0 @@
-# -*- mode: ruby -*-
-# vi: set ft=ruby :
-
-# https://github.com/hashicorp/vagrant/issues/9442#issuecomment-374785457
-unless Vagrant::DEFAULT_SERVER_URL.frozen?
- Vagrant::DEFAULT_SERVER_URL.replace('https://vagrantcloud.com')
-end
-
-Vagrant.configure("2") do |config|
- # VM Box
- config.vm.box = "ubuntu/bionic64"
- # Automatic box update checking
- config.vm.box_check_update = true
-
- # CodeIgniter virtual host
- config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
- # Code Coverage virtual host
- config.vm.network "forwarded_port", guest: 81, host: 8081, host_ip: "127.0.0.1"
- # User Guide virtual host
- config.vm.network "forwarded_port", guest: 82, host: 8082, host_ip: "127.0.0.1"
- # MySQL server
- #config.vm.network "forwarded_port", guest: 3306, host: 3307, host_ip: "127.0.0.1"
- # PostgreSQL server
- #config.vm.network "forwarded_port", guest: 5432, host: 5433, host_ip: "127.0.0.1"
- # Memcached server
- #config.vm.network "forwarded_port", guest: 11211, host: 11212, host_ip: "127.0.0.1"
- # Redis server
- #config.vm.network "forwarded_port", guest: 6379, host: 6380, host_ip: "127.0.0.1"
-
- # Add "192.168.10.10 ${VIRTUALHOST}" in your host file to access by domain
- #config.vm.network "private_network", ip: "192.168.10.10"
-
- # Same path set in the $CODEIGNITER_PATH Provision
- # "virtualbox" type allow auto-sync host to guest and guest to host
- # but chmod does not work... tests will fail.
- # Default rsync__args except "--copy-links", to allow phpunit correctly works by symlink
- config.vm.synced_folder ".", "/var/www/codeigniter", type: "rsync", rsync__args: ["--verbose", "--archive", "--delete", "-z"]
-
- # Provider-specific configuration
- config.vm.provider "virtualbox" do |vb|
- # Display the VirtualBox GUI when booting the machine
- vb.gui = false
- # Customize the amount of memory on the VM:
- vb.memory = "1024"
- end
-
- # Provision
- config.vm.provision "shell", inline: <<-SHELL
- MYSQL_ROOT_PASS="password"
- PGSQL_ROOT_PASS="password"
- VIRTUALHOST="localhost"
- CODEIGNITER_PATH="/var/www/codeigniter"
- PHP_VERSION=7.4
- PGSQL_VERSION=10
- #APT_PROXY="192.168.10.1:3142"
-
- grep -q "127.0.0.1 ${VIRTUALHOST}" /etc/hosts || echo "127.0.0.1 ${VIRTUALHOST}" >> /etc/hosts
-
- # Creates a swap file if necessary
- RAM=`awk '/MemTotal/ {print $2}' /proc/meminfo`
- if [ $RAM -lt 1000000 ] && [ ! -f /swap/swapfile ]; then
- echo "================================================================================"
- echo "Adding swap"
- echo "================================================================================"
- echo "This process may take a few minutes. Please wait..."
- mkdir /swap
- dd if=/dev/zero of=/swap/swapfile bs=1024 count=1000000
- chmod 600 /swap/swapfile
- mkswap /swap/swapfile
- swapon /swap/swapfile
- echo "/swap/swapfile swap swap defaults 0 0" >> /etc/fstab
- echo "Done."
- fi
-
- # Prepare to use APT Proxy
- if [ ! -z $APT_PROXY ]; then
- if [ ! -f /etc/apt/sources.list-origin ]; then
- cp /etc/apt/sources.list /etc/apt/sources.list-origin
- fi
- sed -i "s/archive.ubuntu.com/${APT_PROXY}/" /etc/apt/sources.list
- sed -i "s/security.ubuntu.com/${APT_PROXY}/" /etc/apt/sources.list
- fi
-
- export DEBIAN_FRONTEND=noninteractive
-
- echo "================================================================================"
- echo "Updating and Installing Required Packages"
- echo "================================================================================"
-
- add-apt-repository ppa:ondrej/php
-
- apt-get update
-
- debconf-set-selections <<< "mysql-server mysql-server/root_password password ${MYSQL_ROOT_PASS}"
- debconf-set-selections <<< "mysql-server mysql-server/root_password_again password ${MYSQL_ROOT_PASS}"
-
- apt-get install -y \
- php$PHP_VERSION apache2 composer \
- php-intl php-mbstring php-xml php-zip php-xdebug \
- php-mysql mysql-server mysql-client \
- php-pgsql postgresql-$PGSQL_VERSION \
- php-sqlite3 sqlite3 \
- php-memcached memcached \
- php-redis redis-server \
- php-curl curl \
- php-gd php-imagick \
- python-pip
-
- pip install sphinx sphinxcontrib-phpdomain
-
- apt-get autoclean
-
- echo "================================================================================"
- echo "Preparing User Guide"
- echo "================================================================================"
-
- cd "${CODEIGNITER_PATH}/user_guide_src/cilexer"
- python setup.py install
- cd ..
- make html
-
- echo "================================================================================"
- echo "Configuring Databases"
- echo "================================================================================"
-
- sed -i "s/^bind-address/#bind-address/" /etc/mysql/mysql.conf.d/mysqld.cnf
- mysql -e "CREATE DATABASE IF NOT EXISTS codeigniter COLLATE 'utf8_general_ci';
- UPDATE mysql.user SET Host='%' WHERE user='root';
- GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
- FLUSH PRIVILEGES;" -uroot -p$MYSQL_ROOT_PASS
- systemctl restart mysql
-
- sed -i "s/^#listen_addresses = 'localhost'/listen_addresses = '*'/" /etc/postgresql/$PGSQL_VERSION/main/postgresql.conf
- grep -q "host all root all md5" /etc/postgresql/$PGSQL_VERSION/main/pg_hba.conf || echo "host all root all md5" >> /etc/postgresql/$PGSQL_VERSION/main/pg_hba.conf
- sudo -u postgres psql -tc "SELECT 1 FROM pg_roles WHERE rolname='root'" | grep -q 1 || sudo -u postgres psql -c "CREATE ROLE root WITH SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN"
- sudo -u postgres psql -c "ALTER ROLE root WITH PASSWORD '${PGSQL_ROOT_PASS}'"
- sudo -u postgres psql -tc "SELECT 1 FROM pg_database WHERE datname='codeigniter'" | grep -q 1 ||sudo -u postgres psql -c "CREATE DATABASE codeigniter"
- sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE codeigniter TO root"
- systemctl restart postgresql
-
- echo "================================================================================"
- echo "Configuring Memcached and Redis"
- echo "================================================================================"
-
- sed -i "s/^bind 127.0.0.1/#bind 127.0.0.1/" /etc/redis/redis.conf
- sed -i "s/^protected-mode yes/protected-mode no/" /etc/redis/redis.conf
- sed -i "s/^-l 127.0.0.1/#-l 127.0.0.1/" /etc/memcached.conf
- systemctl restart redis
- systemctl restart memcached
-
- echo "================================================================================"
- echo "Configuring Virtual Hosts"
- echo "================================================================================"
-
- mkdir -p "${CODEIGNITER_PATH}/build/coverage-html"
- mkdir -p "${CODEIGNITER_PATH}/public"
- mkdir -p "${CODEIGNITER_PATH}/user_guide_src/build/html"
- mkdir -p "${CODEIGNITER_PATH}/writable/apache"
- chown -R vagrant:vagrant $CODEIGNITER_PATH
-
- # Creates a symlink in the user home
- if [ ! -d /home/vagrant/codeigniter ]; then
- ln -s $CODEIGNITER_PATH /home/vagrant/codeigniter
- fi
-
- sed -i "s/APACHE_RUN_USER=www-data/APACHE_RUN_USER=vagrant/" /etc/apache2/envvars
- sed -i "s/APACHE_RUN_GROUP=www-data/APACHE_RUN_GROUP=vagrant/" /etc/apache2/envvars
- grep -q "Listen 81" /etc/apache2/ports.conf || sed -i "s/^Listen 80/Listen 80\\nListen 81\\nListen 82/" /etc/apache2/ports.conf
- sed -i "s/^display_errors = Off/display_errors = On/" /etc/php/7.4/apache2/php.ini
- sed -i "s/^display_startup_errors = Off/display_startup_errors = On/" /etc/php/7.4/apache2/php.ini
-
- echo "ServerName ${VIRTUALHOST}
-
- DirectoryIndex index.html index.php
- Options All
- AllowOverride All
-
-
- ServerAdmin vagrant@localhost
- DocumentRoot ${CODEIGNITER_PATH}/public
- ErrorLog ${CODEIGNITER_PATH}/writable/apache/error.log
- CustomLog ${CODEIGNITER_PATH}/writable/apache/custom.log combined
-
-
- DocumentRoot ${CODEIGNITER_PATH}/build/coverage-html
-
-
- DocumentRoot ${CODEIGNITER_PATH}/user_guide_src/build/html
-
-" > /etc/apache2/sites-available/codeigniter.conf
-
- a2enmod rewrite
- a2dissite 000-default.conf
- a2ensite codeigniter.conf
- systemctl restart apache2
-
- echo "================================================================================"
- echo "Services Status"
- echo "================================================================================"
- service --status-all
-
- SHELL
-end
diff --git a/user_guide_src/source/changelogs/v4.2.2.rst b/user_guide_src/source/changelogs/v4.2.2.rst
index eb457750e7c5..ffc55080d5db 100644
--- a/user_guide_src/source/changelogs/v4.2.2.rst
+++ b/user_guide_src/source/changelogs/v4.2.2.rst
@@ -28,6 +28,7 @@ Changes
- Fixed: Validation of fields with a leading asterisk (wildcard).
- Now ``CLIRequest::isCLI()`` always returns true.
- Now ``IncommingRequest::isCLI()`` always returns false.
+- **Vagrantfile.dist** has been moved to `CodeIgniter DevKit `_.
Deprecations
************
diff --git a/user_guide_src/source/installation/running.rst b/user_guide_src/source/installation/running.rst
index b2ba72d4cd7f..70ed23d22f4c 100644
--- a/user_guide_src/source/installation/running.rst
+++ b/user_guide_src/source/installation/running.rst
@@ -260,40 +260,6 @@ Setting Environment
See :ref:`Handling Multiple Environments `.
-Hosting with Vagrant
-====================
-
-Virtualization is an effective way to test your webapp in the environment you
-plan to deploy on, even if you develop on a different one.
-Even if you are using the same platform for both, virtualization provides an
-isolated environment for testing.
-
-The codebase comes with a ``VagrantFile.dist``, that can be copied to ``VagrantFile``
-and tailored for your system, for instance enabling access to specific database or caching engines.
-
-Setting Up
-----------
-
-It assumes that you have installed `VirtualBox `_ and
-`Vagrant `_
-for your platform.
-
-The Vagrant configuration file assumes you have set up a `ubuntu/bionic64 Vagrant box
-`_ on your system::
-
- vagrant box add ubuntu/bionic64
-
-Testing
--------
-
-Once set up, you can then launch your webapp inside a VM, with the command::
-
- vagrant up
-
-Your webapp will be accessible at ``http://localhost:8080``, with the code coverage
-report for your build at ``http://localhost:8081`` and the user guide for
-it at ``http://localhost:8082``.
-
Bootstrapping the App
=====================
diff --git a/user_guide_src/source/installation/upgrading.rst b/user_guide_src/source/installation/upgrading.rst
index 3570419e19c2..0a2d5a975968 100644
--- a/user_guide_src/source/installation/upgrading.rst
+++ b/user_guide_src/source/installation/upgrading.rst
@@ -12,6 +12,7 @@ upgrading from.
.. toctree::
:titlesonly:
+ upgrade_422
upgrade_421
upgrade_420
upgrade_418