Wednesday, January 18, 2023

Lumen Back-end , Angularjs, Vuejs front-end AWS deployment instructions

https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-20-04


sudo apt update
sudo apt install apache2

--------no need to do this----------
sudo ufw status
sudo ufw app list

sudo ufw allow 'Apache Full'
press 'y' and enter continue'

sudo ufw enable
-------------------------------
check: http://server ip

-------------------------------------------

install mysql

    $ sudo apt install mysql-server

switch its authentication method from auth_socket to mysql_native_password

        sudo mysql
        SELECT user,authentication_string,plugin,host FROM mysql.user;


         ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'fabrica@mysupply';
        FLUSH PRIVILEGES;
        TEST
        SELECT user,authentication_string,plugin,host FROM mysql.user;
        exit

 
    $ sudo mysql_secure_installation

--VALIDATE PASSWORD PLUGIN.-NO
REST- YES
---------------------------------------------------

Install PHP8.1

---------------------------------------------------------------------------------------------------

Add PPA for PHP 8.1
    sudo apt install software-properties-common

    sudo add-apt-repository ppa:ondrej/php

    sudo apt-get update

    sudo apt install php8.1

    sudo apt install php8.1-common php8.1-mysql php8.1-xml php8.1-xmlrpc php8.1-curl php8.1-gd php8.1-imagick php8.1-cli php8.1-dev php8.1-imap php8.1-mbstring php8.1-opcache php8.1-soap php8.1-zip php8.1-intl -y
    
    
    
    ----------------------------------------------------------------------------------------------
INSTALL MONGODB in ubuntu 20, php8.1

https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-ubuntu/?_ga=2.242670018.1950484347.1673427386-451534989.1673427383

sudo apt remove mongodb-org*
sudo apt autoremove mongodb-org*
sudo apt purge mongodb-org*



wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org
sudo systemctl start mongod
sudo systemctl daemon-reload
sudo systemctl status mongod



sudo apt-get install php8.1-mongodb

how to work with mongodb

sudo systemctl start mongod
mongosh
show databases;
use testing_api
db.dropDatabase()
//db.logs.remove({});//deprecated
show collections


-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



cd /etc/apache2/sites-available

Step 2 — Modify the new api.domain.work.conf file

    -
<VirtualHost *:80>
ServerName api.domain.work
ServerAdmin admin@domain.work
DocumentRoot /var/www/html/api/public
<Directory /var/www/html/api>
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =api.domain.work
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>


--------------------------
<VirtualHost *:80>
ServerName domain.work
ServerAdmin admin@domain.work
DocumentRoot /var/www/html/user
<Directory /var/www/html/user>
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =domain.work
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
-------------------------------------------------------------------------------------
<VirtualHost *:80>
ServerName dashboard.domain.com
ServerAdmin admin@domain.com
DocumentRoot /var/www/html/dashboard.domain.com
<Directory /var/www/html/dashboard.domain.com>
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =dashboard.domain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
---------------------------------------------------------------------------------------
set up domain name in godaddy
set up ssl using certbot:

$ sudo snap install --classic certbot


$ sudo certbot --apache -d domain.solutions -d www.domain.solutions
dashboard.medicalfactory.org
$ sudo certbot --apache -d supplier.domain.org -d supplier.domain.org
$ systemctl  restart apache2
mongo
sudo a2ensite api.domain.com.conf
sudo apachectl configtest
-------------------------------------------------------
-to enable the site
        sudo a2ensite <directoryname>
    -to test for syntax errors
        sudo apachectl configtest
-syntax ok

    -restart apache services
        sudo systemctl restart apache2
---------------------------------------------------------------------
install swap space

https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-20-04#step-6-tuning-your-swap-settings



sudo swapon --show
free -h
df -h
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
ls -lh /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon --show
free -h
sudo cp /etc/fstab /etc/fstab.bak
sudo nano /etc/fstab
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
cat /proc/sys/vm/swappiness
sudo sysctl vm.swappiness=10
sudo nano/etc/sysctl.conf
at the bottom add vm.swappiness=10
vm.vfs_cache_pressure=50

sudo sysctl vm.vfs_cache_pressure=50
cat /proc/sys/vm/vfs_cache_pressure





-------------------------------------------------------------------------

download tar.gz newapi backend files from gitlab
take backup of humhum.work storage and DB and upload to server
copy .env file
install composer ---https://getcomposer.org/download/
Steps to install a composer:

1. sudo apt install wget php-cli php-zip unzip
2. php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    1. php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    2. HASH="$(wget -q -O - https://composer.github.io/installer.sig)"
    3. php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Out put: Installer verified
    4. sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
Out put: All settings correct for using Composer
Downloading...
Composer (version 2.0.14) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer


--------------------------------------------------------------------------
sudo api.domain.com

cp .env.prod .env
copy public/.htaccess
copy storage

sudo chmod 777 -R storage
sudo chmod 777 -R storage
sudo ln -s /var/www/html/api.medicalfactory.org/storage/app/public /var/www/html/api.medicalfactory.org/public/storage
sudo ln -s /var/www/html/api.sqdesignz.com/storage/app/public /var/www/html/api.sqdesignz.com/public/storage

sudo chown www-data:www-data -R storage

composer install
----showing php extension errors------

sudo a2enmod php8.1

systemctl restart apache2

$ sudo update-alternatives --set php /usr/bin/php8.1
-----------------------------------------
mysql -u root -p;
fabrica@mysupply
create database api;

/var/www/html/newapi/database/seeders/DatabaseSeeder.php , uncomment all seeders
please comment this line
Permission::truncate();

php artisan migrate --seed
---------------------------------------------------------------------------------
sudo nano public/.htaccess


cron job automation documentation

----------------------------------------------------------------------------------------
Front end: supplier portal angularjs

# Build Instructions (node version 16)

sudo rm -rf node
sudo npm install

- change `src/environments/environment.prod.ts`
  ```json
  {
    "baseURL": "https://{{api_domain}}/api/v1/",
    "baseStorage": "https://{{api_domain}}/storage/",
    "baseHREF": "{{base for front domain}}"
  }
 
"ng build -c production --prod --base-href https://supplier.domain.work"
ng build -c production --configuration production --base-href https://supplier.domain.com
ng build -c production --configuration production --base-href https://supplier.domain.com
ng build -c production --configuration production --base-href https://supplier.domain.org
run `npm run build {{base_href for front domain}}`
- upload `dist` folder content to server
--------------------------------------------------
copy to server
sudo nano .htaccess
<IfModule mod_rewrite.c>
        RewriteEngine On

        # -- REDIRECTION to https (optional):
        # If you need this, uncomment the next two commands
        # RewriteCond %{HTTPS} !on
        # RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
        # --

        RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
        RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d

        RewriteRule ^.*$ - [NC,L]
        RewriteRule ^(.*) index.html [NC,L]
</IfModule>

-------------------------------------------------------------
Front end: admin portal angularjs

# Build Instructions (node version 16)

sudo rm -rf node
sudo npm install

- change `src/environments/environment.prod.ts`
  ```json
  {
    "baseURL": "https://{{api_domain}}/api/v1/",
    "baseStorage": "https://{{api_domain}}/storage/",
    "baseHREF": "{{base for front domain}}"
  }
 
  export const environment = {
  production: true,
  baseURL: 'https://api.domain.com/api/v1/',
  // baseURL: 'https://domain.work/newapi/public/api/v1/',
  baseStorage: 'https://api.domain.com/storage/',
  baseHREF: '/humhum/',
  firebase: {
    apiKey: 'AIzaSyBvDfgkv2VnrIMbrT9oJYgtlL6XGthURdY',
    projectId: 'humhum-d8850',
    messagingSenderId: '569896873041',
    appId: '1:569896873041:web:9551d54e2e7056fcacdc70',
    vapidKey:
      'BCg19OadFV9lZNChEu1nhKI9zW2HRqiVls8U_4UVQyRLz5rVf3-2qzUSBWdTB7U0nqa-O7lho69FM8VdRsQW970',
  },
  defaultPerPage: 20,
};

 
"ng build -c production --prod --base-href https://supplier.domain.work"
ng build -c production --configuration production --base-href https://dashboard.domain.com
ng build -c production --configuration production --base-href https://dashboard.domain.org
run `npm run build {{base_href for front domain}}`
- upload `dist` folder content to server
---------------------------------------------------------------------------------------------------------------
Front end: admin portal vuejs

# Build Instructions (node version 16)

sudo rm -rf node_modules/
sudo npm install
npm run build

- change .env
-find and remove humhum-user/
  --------------------------------------------------


copy to server
sudo nano .htaccess
<IfModule mod_rewrite.c>
        RewriteEngine On

        # -- REDIRECTION to https (optional):
        # If you need this, uncomment the next two commands
        # RewriteCond %{HTTPS} !on
        # RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
        # --

        RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
        RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d

        RewriteRule ^.*$ - [NC,L]
        RewriteRule ^(.*) index.html [NC,L]
</IfModule>
-------------------------------------------------------------
Solution for all npm ERR! code EINTEGRITY errors 🙏

$ cd <project_directory>
$ rm -rf package-lock.json npm-shrinkwrap.json node_modules
$ npm cache clean --force
$ npm cache verify
$ npm install
---------------------------------------------------------------

FIXING MYSQL ISSUES:

show columns from tokens;
show column_name from table_name;

Admin login , tokens table error:
ALTER TABLE tokens MODIFY client_id bigint UNSIGNED;
ALTER TABLE tokens MODIFY user_id bigint UNSIGNED;



Admin login , after login popup error:
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

-------------------------------------------------------------------------

git pull then run
php artisan migrate:fresh --seed
then
php artisan permission:cache-reset


------------------------------------------------------------------------------



No comments:

Post a Comment