Server Installation


Introduction

We are strongly prefer any Server with ubuntu OS. Because it is quite easy to setup and maintain.

  • Minimum Server Requirements
    • Any server with UBUNTU Preferred
    • 4 GB Ram
    • 30 GB Storage
    • vCPU 2 cores

Installation Requirements

  1. Apache
  2. PHP8.1
  3. mysql
  4. phpmyadmin
  5. composer
  6. Jenkins/FTP
  7. Laravel Supervisor

3. Install Apache

  • Open the ssh terminal using pemfile of your aws instance

  • Run "sudo apt install apache2" to install an apache2

  • Run "sudo apt update"

  • Run "sudo nano /etc/apache2/sites-available/000-default.conf" to edit the config follow next step.

  • <Directory /var/www/html>

            Options -Indexes
            AllowOverride All
            Require all granted
            ErrorDocument 403 "You Don't have a permission to access this URL"
            ErrorDocument 404 "Requesting Page not Found. Contact admin for further details"
      </Directory>
  • Run "sudo service apache2 restart" to restart the apache2.

  • Reference Link : https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-20-04

4.Install PHP8.1

Please follow the instrctions from the reference link below. And Install the php extensions below. bcmath,bz2,intl,gd,mbstring,mysql,zip,fpm,curl,xml

Reference Link : https://www.cloudbooklet.com/developer/how-to-install-or-upgrade-php-8-1-on-ubuntu-20-04/

5.Install mysql

Run the below commands one by one

  • sudo apt-get update
  • sudo apt-get install mysql-server
  • mysql_secure_installation
  • sudo service mysql restart

To create a new user for mysql

  • sudo mysql -u root
  • use mysql;
  • GRANT ALL ON . TO 'taxi_user'@'%' IDENTIFIED BY 'TaxiUser@123' WITH GRANT OPTION;
  • FLUSH PRIVILEGES;

Reference Link : https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-20-04

6. Install phpmyadmin

Open the path "var/www/html". and dowonload the phpmyadmin package using below command.

"sudo wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.zip"

Unzip the downloaded package and rename it to "pma".

7. Install composer

Run The Below Commands One By One

  • cd ~
  • curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php
  • HASH=curl -sS https://composer.github.io/installer.sig
  • echo $HASH
  • php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
  • sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer
  • composer

(Or) Please follow the instructions from the reference link below.

Reference Link: https://www.digitalocean.com/community/tutorials/how-to-install-and-use-composer-on-ubuntu-20-04

8.Install Jenkins (Optional if you want to use ftp)

Run The Below Commands One By One :

To install jenkins you need to install JAVA && skip the firewal setup.
Install JAVA

  1. sudo apt install default-jre
  2. sudo apt install default-jdk

Install Jenkins

  1. wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
  2. sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
  3. curl -fsSL https://pkg.jenkins.io/debian/jenkins.io-2023.key | sudo tee \ /usr/share/keyrings/jenkins-keyring.asc > /dev/null
  4. echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \ https://pkg.jenkins.io/debian binary/ | sudo tee \ /etc/apt/sources.list.d/jenkins.list > /dev/null
  5. sudo apt update
  6. sudo apt install jenkins
  7. sudo systemctl status jenkins

(Or) Follow the instructions from the reference link below.

Reference Link: https://www.digitalocean.com/community/tutorials/how-to-install-jenkins-on-ubuntu-20-04

8.1 Install FTP

  • Follow the below instructions to install ftp on ubntu server
  1. install vsftpd - sudo apt install vsftpd

  2. take backup of config file by following command - sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

  3. edit vsftpd.conf by following command - sudo nano /etc/vsftpd.conf and add the below lines at bottom of the file and save the file.

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
write_enable=YES
chroot_local_user=YES
pasv_min_port=12000
pasv_max_port=12100
ssl_enable=NO
port_enable=YES
allow_writeable_chroot=YES
  1. restart vsftpd - sudo systemctl restart vsftpd

  2. Create Ftp User by folowing command - sudo adduser ftp_user

  3. assign directory to user - sudo usermod -d /var/www/html ftp_user

  4. add user to www-data group - sudo usermod -aG www-data ftp_user

  5. change directory owners - cd /var/www Then - sudo chown -R ftp_user:www-data html/

  6. change readwrite permissions - sudo chmod -R 775 html/

9. Setup Laravel Supervisor

  • Follow the below steps for setup the laravel supervisor
  1. sudo apt-get install supervisor

  2. sudo nano /etc/supervisor/conf.d/laravel-worker.conf

  3. Paste the below lines in that file

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/project-name/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=ubuntu
numprocs=8
redirect_stderr=true
stdout_logfile=/var/www/html/project-name/worker.log
stopwaitsecs=3600

Note:user can be ubuntu/root & project name should be yours

  1. sudo supervisorctl reread

  2. sudo supervisorctl update

  3. sudo supervisorctl start laravel-worker:*

Reference Link: https://laravel.com/docs/8.x/queues#supervisor-configuration