| -- database_script.sql | |||||
| USE `{{DB_NAME}}`; | |||||
| -- Drop and create database if it does not exist | |||||
| DROP DATABASE IF EXISTS globaltempDB; | |||||
| CREATE DATABASE IF NOT EXISTS globaltempDB; | |||||
| USE `{{DB_NAME}}`; | |||||
| DROP PROCEDURE IF EXISTS nextsequence; | |||||
| DELIMITER // | |||||
| CREATE PROCEDURE nextsequence( | |||||
| IN sequencenames VARCHAR(255), | |||||
| IN node BINARY(16), | |||||
| IN cluster BINARY(16) | |||||
| ) | |||||
| BEGIN | |||||
| DECLARE _next TEXT DEFAULT NULL; | |||||
| DECLARE _nextlen INT DEFAULT NULL; | |||||
| DECLARE _value TEXT DEFAULT NULL; | |||||
| DECLARE EXIT HANDLER FOR SQLEXCEPTION | |||||
| BEGIN | |||||
| SHOW ERRORS; | |||||
| ROLLBACK; | |||||
| END; | |||||
| START TRANSACTION; | |||||
| IF (sequencenames IS null OR TRIM(sequencenames) = '') THEN | |||||
| SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Either a table name or a sequence name is required.'; | |||||
| END IF; | |||||
| SET @database = (SELECT DATABASE()); | |||||
| iterator: | |||||
| LOOP | |||||
| IF CHAR_LENGTH(TRIM(sequencenames)) = 0 OR sequencenames IS NULL THEN | |||||
| LEAVE iterator; | |||||
| END IF; | |||||
| SET _next = SUBSTRING_INDEX(sequencenames, ',', 1); | |||||
| SET _nextlen = CHAR_LENGTH(_next); | |||||
| SET @sequencename = TRIM(_next); | |||||
| SET sequencenames = INSERT(sequencenames, 1, _nextlen + 1, ''); | |||||
| SET @SQL = CONCAT('SELECT EXISTS(SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_name LIKE ''', @sequencename, ''' AND table_schema = ''globaltempdb'') INTO @e'); | |||||
| PREPARE stmt FROM @SQL; | |||||
| EXECUTE stmt; | |||||
| DEALLOCATE PREPARE stmt; | |||||
| IF @e = 0 THEN | |||||
| SET @SQL = CONCAT('CREATE TABLE globaltempDB.', @sequencename, ' ( ', @sequencename, 'iId bigint not null, ', @sequencename, 'CiId bigint null, seq_db VARCHAR(50) not null )'); | |||||
| PREPARE stmt FROM @SQL; | |||||
| EXECUTE stmt; | |||||
| DEALLOCATE PREPARE stmt; | |||||
| SET @SQL = CONCAT('INSERT globaltempDB.', @sequencename, ' (', @sequencename, 'iId, ', @sequencename, 'CiId, seq_db) VALUES(0, 0, ''', @database , ''')'); | |||||
| PREPARE stmt FROM @SQL; | |||||
| EXECUTE stmt; | |||||
| DEALLOCATE PREPARE stmt; | |||||
| END IF; | |||||
| SET @SQL = CONCAT('UPDATE globaltempDB.', @sequencename, ' SET ', @sequencename, 'iId = LAST_INSERT_ID(', @sequencename, 'iId + 1)'); | |||||
| PREPARE stmt FROM @SQL; | |||||
| EXECUTE stmt; | |||||
| DEALLOCATE PREPARE stmt; | |||||
| SET @SQL = CONCAT('SELECT LAST_INSERT_ID() AS ', @sequencename, 'iId, null AS ', @sequencename, 'CiId'); | |||||
| PREPARE stmt FROM @SQL; | |||||
| EXECUTE stmt; | |||||
| DEALLOCATE PREPARE stmt; | |||||
| END LOOP; | |||||
| COMMIT; | |||||
| END // | |||||
| DELIMITER ; | |||||
| -- Repeat for the second stored procedure 'receivablerequest' | |||||
| USE `{{DB_NAME}}`; | |||||
| DROP PROCEDURE IF EXISTS receivablerequest; | |||||
| DELIMITER // | |||||
| CREATE PROCEDURE receivablerequest( | |||||
| IN `PERIOD` INT | |||||
| ) | |||||
| BEGIN | |||||
| SET @PERIOD = 1; | |||||
| SET @BOD = (SELECT CONVERT_TZ(UTC_DATE(), @@session.time_zone, '+00:00')); | |||||
| SET @PBEGIN = (SELECT DATE_SUB(@BOD, INTERVAL DAYOFMONTH(@BOD) DAY)); | |||||
| SET @PEND = (SELECT DATE_ADD(DATE_SUB(@BOD, INTERVAL DAYOFMONTH(@BOD) DAY), INTERVAL 1 MONTH)); | |||||
| SELECT `receivablerequest`.`receivablerequestId`, | |||||
| `receivablerequest`.`comments`, | |||||
| `receivablerequest`.`from`, | |||||
| `receivablerequest`.`to`, | |||||
| `receivablerequest`.`quantity`, | |||||
| `receivablerequest`.`v1receivablerequestId`, | |||||
| `receivablerequest`.`receivablerequestCiId`, | |||||
| `receivablerequest`.`receivablerequestns`, | |||||
| `receivablerequest`.`receivablerequestiId`, | |||||
| `receivablerequest`.`datecreated`, | |||||
| `receivablerequest`.`timestamp`, | |||||
| `receivablerequest`.`migrationstate`, | |||||
| `receivablerequest`.`datemodified`, | |||||
| `receivablerequest`.`requestedbyId`, | |||||
| `receivablerequest`.`departmentId`, | |||||
| `receivablerequest`.`itemId`, | |||||
| `receivablerequest`.`receivablerequestnumber`, | |||||
| `statechange`.`state` | |||||
| FROM `receivablerequest` | |||||
| INNER JOIN statechange ON statechange.statechangeforId = `receivablerequest`.`receivablerequestId` | |||||
| WHERE `receivablerequest`.from >= @PBEGIN AND `receivablerequest`.from < @PEND | |||||
| UNION ALL | |||||
| SELECT uuid() AS `receivablerequestId`, | |||||
| 'system request for period' AS `comments`, | |||||
| CONVERT(@PBEGIN, DATETIME) AS `from`, | |||||
| CONVERT(@PEND , DATETIME) AS `to`, | |||||
| CASE WHEN consumption.qty IS NULL THEN item.max ELSE consumption.qty END AS `quantity`, | |||||
| NULL AS `v1receivablerequestId`, | |||||
| NULL AS `receivablerequestCiId`, | |||||
| 'sys_auto' AS `receivablerequestns`, | |||||
| NULL AS `receivablerequestiId`, | |||||
| UTC_TIMESTAMP() AS `datecreated`, | |||||
| UTC_TIMESTAMP() AS `timestamp`, | |||||
| 8 AS `migrationstate`, | |||||
| UTC_TIMESTAMP() AS `datemodified`, | |||||
| NULL AS `requestedbyId`, | |||||
| NULL AS `departmentId`, | |||||
| `item`.`itemId`, | |||||
| NULL AS `receivablerequestnumber`, | |||||
| 'yet to order' AS `state` | |||||
| FROM item | |||||
| LEFT JOIN ( | |||||
| SELECT AVG(saleitem.quantity) AS qty, receiveditem.itemId, department.departmentId | |||||
| FROM saleitem | |||||
| INNER JOIN receiveditem ON saleitem.billableId = receiveditem.receiveditemId | |||||
| INNER JOIN encounter ON encounter.encounterId = saleitem.encounterId | |||||
| INNER JOIN department ON encounter.departmentId = department.departmentId | |||||
| GROUP BY departmentId | |||||
| ) consumption ON item.itemId = `consumption`.`itemId` | |||||
| LEFT JOIN ( | |||||
| SELECT itemId FROM receivablerequest | |||||
| INNER JOIN statechange ON statechange.statechangeforId = receivablerequest.receivablerequestId | |||||
| WHERE receivablerequest.datecreated >= @PBEGIN AND receivablerequest.datecreated < @PEND | |||||
| ) requested ON requested.itemId = item.itemId | |||||
| WHERE requested.itemId IS NULL; | |||||
| END // | |||||
| DELIMITER ; | |||||
| # Get the current user (who is running this script) | # Get the current user (who is running this script) | ||||
| current_user=$(whoami) | current_user=$(whoami) | ||||
| # Determine the group to add the user to based on the OS | |||||
| if [ -f /etc/os-release ]; then | |||||
| . /etc/os-release | |||||
| OS_NAME=$NAME | |||||
| fi | |||||
| # Function to check the OS type | |||||
| is_centos() { | |||||
| # Check if the OS is CentOS | |||||
| if [ -f /etc/os-release ]; then | |||||
| . /etc/os-release | |||||
| if [[ "$NAME" == "CentOS Linux" ]] || [[ "$NAME" == "CentOS" ]]; then | |||||
| return 0 # It's CentOS | |||||
| fi | |||||
| fi | |||||
| return 1 # Not CentOS | |||||
| } | |||||
| # Set ROOT directory | |||||
| ROOT="./chess/production_A" | |||||
| # Check if the system is Ubuntu/Debian or CentOS/RHEL | |||||
| if [[ "$OS_NAME" == "Ubuntu" ]] || [[ "$OS_NAME" == "Debian" ]]; then | |||||
| GROUP_NAME="sudo" # Ubuntu/Debian systems typically use 'sudo' | |||||
| else | |||||
| GROUP_NAME="wheel" # CentOS/RHEL typically use 'wheel' | |||||
| fi | |||||
| # Trim whitespace from both current_user and username | |||||
| current_user=$(echo "$current_user" | xargs) | |||||
| username=$(echo "$username" | xargs) | |||||
| echo $current_user | |||||
| echo $username | |||||
| # 1. Check if the current user is the same as the username to create | # 1. Check if the current user is the same as the username to create | ||||
| if [ "$current_user" == "$username" ]; then | if [ "$current_user" == "$username" ]; then | ||||
| echo "Script launched from same user!" | echo "Script launched from same user!" | ||||
| echo $PWD | echo $PWD | ||||
| wget -q -O - http://git.bbh/chess/elxr/raw/branch/master/centosinit.sh > $ROOT/centosinit.sh | |||||
| sudo chmod u+x $ROOT/centosinit.sh | |||||
| sh $ROOT/centosinit.sh | |||||
| # Only run this block if it's CentOS | |||||
| if is_centos; then | |||||
| echo "This is CentOS. Running CentOS specific script..." | |||||
| # Download and run CentOS-specific script | |||||
| wget -q -O - http://git.bbh/chess/elxr/raw/branch/master/centosinit.sh > $ROOT/centosinit.sh | |||||
| sudo chmod u+x $ROOT/centosinit.sh | |||||
| sh $ROOT/centosinit.sh | |||||
| else | |||||
| echo "This is not CentOS. Skipping CentOS-specific setup." | |||||
| fi | |||||
| # Platform-specific installation | # Platform-specific installation | ||||
| if [ -f /etc/os-release ]; then | if [ -f /etc/os-release ]; then | ||||
| install_package "gcc-c++" | install_package "gcc-c++" | ||||
| fi | fi | ||||
| # Installing Node.js and NVM | |||||
| curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash | |||||
| sleep 2 | |||||
| # Install NVM (Node Version Manager) | |||||
| wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash | |||||
| sleep 2 | |||||
| # Add NVM configuration to .bash_profile | |||||
| # Add NVM configuration to .bash_profile if it's not already there | |||||
| if ! grep -q 'export NVM_DIR="$HOME/.nvm"' ~/.bash_profile; then | |||||
| echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.bash_profile | echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.bash_profile | ||||
| echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> ~/.bash_profile | echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> ~/.bash_profile | ||||
| echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"' >> ~/.bash_profile | echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"' >> ~/.bash_profile | ||||
| fi | |||||
| # Source .bash_profile to apply NVM setup | |||||
| source ~/.bash_profile | |||||
| # Source .bash_profile to apply NVM setup | |||||
| source ~/.bash_profile | |||||
| # Verify NVM installation | |||||
| command -v nvm | |||||
| # Install Node.js | # Install Node.js | ||||
| nvm install v16.19.1 | nvm install v16.19.1 | ||||
| # ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'cihsr'; | # ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'cihsr'; | ||||
| # FLUSH PRIVILEGES; | # FLUSH PRIVILEGES; | ||||
| # mysql -u root -p cihsr < cihsr_prod.sql | |||||
| bash elxr/load.mysql.init.sh | |||||
| bash elxr/load.mysql.sh | |||||
| bash elxr/i.sqlexpress.sh | |||||
| bash elxr/load.sqlexpress.sh |
| sudo apt update | |||||
| sudo apt install openssh-server |
| sudo /opt/mssql/bin/mssql-conf setup | sudo /opt/mssql/bin/mssql-conf setup | ||||
| # Check if SQL Server is running | # Check if SQL Server is running | ||||
| systemctl status mssql-server | |||||
| #systemctl status mssql-server | |||||
| # Enable SQL Server to start on boot | # Enable SQL Server to start on boot | ||||
| sudo systemctl enable mssql-server | sudo systemctl enable mssql-server | ||||
| # (Optional) Open SQL Server port for remote access | # (Optional) Open SQL Server port for remote access | ||||
| #sudo firewall-cmd --permanent --zone=public --add-port=1433/tcp | |||||
| #sudo firewall-cmd --reload | |||||
| sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent | |||||
| sudo firewall-cmd --reload | |||||
| # (Optional) Install SQL Server command-line tools | # (Optional) Install SQL Server command-line tools | ||||
| sudo dnf install -y mssql-tools | |||||
| #sudo dnf install -y mssql-tools | |||||
| # curl https://packages.microsoft.com/config/rhel/9/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo | |||||
| curl https://packages.microsoft.com/config/rhel/8/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo | |||||
| sudo yum remove mssql-tools unixODBC-utf16 unixODBC-utf16-devel | |||||
| sudo yum install -y mssql-tools18 unixODBC-devel | |||||
| sudo yum check-update | |||||
| sudo yum update mssql-tools18 | |||||
| sudo dnf install mssql-tools --assumeyes | |||||
| sudo dnf install -y msodbcsql18 | |||||
| echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bash_profile | |||||
| source ~/.bash_profile | |||||
| # Connect to SQL Server using sqlcmd | # Connect to SQL Server using sqlcmd | ||||
| sqlcmd --version | sqlcmd --version | ||||
| #sqlcmd -S localhost -U sa -P '<your_password>' | |||||
| #sqlcmd -C -S localhost -U sa -P '<your_password>' | |||||
| #sqlcmd -S localhost -U sa -C |
| # https://www.geeksforgeeks.org/how-to-install-sql-server-express-in-linux/ | |||||
| # https://learn.microsoft.com/en-us/answers/questions/1685683/how-to-install-sql-server-2022-on-ubuntu-server-24 | |||||
| #!/bin/bash | |||||
| curl -O http://debian.mirror.ac.za/debian/pool/main/o/openldap/libldap-2.5-0_2.5.13+dfsg-5_amd64.deb | |||||
| sudo dpkg -i libldap-2.5-0_2.5.13+dfsg-5_amd64.deb | |||||
| curl -O http://debian.mirror.ac.za/debian/pool/main/o/openldap/libldap-dev_2.5.13+dfsg-5_amd64.deb | |||||
| sudo dpkg -i libldap-dev_2.5.13+dfsg-5_amd64.deb | |||||
| #First upgrade ubuntu to fix libc packaging issues. | |||||
| #Then | |||||
| sudo apt upgrade libsasl2-2 | |||||
| sudo apt --fix-broken install | |||||
| sudo apt upgrade libldap-2.5-0 | |||||
| sudo apt --fix-broken install | |||||
| # Detect OS type | |||||
| if [ -f /etc/os-release ]; then | |||||
| . /etc/os-release | |||||
| OS_NAME=$NAME | |||||
| OS_VERSION=$VERSION_ID | |||||
| fi | |||||
| sudo apt update | |||||
| sudo apt install -y libldap-2.5-0 | |||||
| sudo apt install libldap-common | |||||
| echo "Detected OS: $OS_NAME $OS_VERSION" | |||||
| # Function to install SQL Server on Ubuntu | |||||
| install_sqlserver_ubuntu() { | |||||
| sudo apt update && sudo apt upgrade -y && sudo apt dist-upgrade -y | |||||
| sudo do-release-upgrade | |||||
| #curl -OL http://archive.ubuntu.com/ubuntu/pool/main/o/openldap/libldap-2.5-0_2.5.18+dfsg-0ubuntu0.22.04.1_amd64.deb | |||||
| #sudo apt-get install ./libldap-2.5-0_2.5.18+dfsg-0ubuntu0.22.04.1_amd64.deb | |||||
| sudo apt update && sudo apt install libc6 | |||||
| sudo apt install libgnutls30 libsasl2-2 | |||||
| wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - | |||||
| sudo apt upgrade libsasl2-2 | |||||
| sudo apt upgrade libgnutls30 | |||||
| sudo apt upgrade libc6 | |||||
| curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | sudo tee /etc/apt/sources.list.d/mssql-server-2022.list | |||||
| # sudo add-apt-repository “$(wget -qO- https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list)” | |||||
| # sudo add-apt-repository “$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2019.list)” | |||||
| # sudo apt install curl | |||||
| wget http://debian.mirror.ac.za/debian/pool/main/o/openldap/libldap-2.5-0_2.5.13+dfsg-5_amd64.deb | |||||
| sudo dpkg -i libldap-2.5-0_2.5.13+dfsg-5_amd64.deb | |||||
| wget http://debian.mirror.ac.za/debian/pool/main/o/openldap/libldap-dev_2.5.13+dfsg-5_amd64.deb | |||||
| sudo dpkg -i libldap-dev_2.5.13+dfsg-5_amd64.deb | |||||
| sudo apt upgrade libldap-2.5-0 | |||||
| sudo apt update && sudo apt install -y mssql-server | |||||
| sudo /opt/mssql/bin/mssql-conf setup | |||||
| # Add Microsoft SQL Server repository for Ubuntu using wget | |||||
| wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - | |||||
| wget -qO- https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | sudo tee /etc/apt/sources.list.d/mssql-server-2022.list | |||||
| #wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/prod.repo | sudo tee /etc/apt/sources.list.d/mssql-server.list | |||||
| #sudo systemctl status mssql-server.service | |||||
| sudo systemctl status mssql-server --no-pager | |||||
| sudo ldd /opt/mssql/bin/sqlservr | |||||
| # Update repository and install SQL Server | |||||
| sudo apt update && sudo apt install -y mssql-server | |||||
| curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list | |||||
| sudo apt update && sudo apt install -y mssql-tools unixodbc-dev | |||||
| sudo ln -s /opt/mssql-tools/bin/sqlcmd /usr/local/bin | |||||
| sqlcmd -S localhost -U SA | |||||
| # Run the setup to configure SQL Server | |||||
| sudo /opt/mssql/bin/mssql-conf setup | |||||
| setfacl -R -m u:mssql:rwx ~/elvt/pgsys/elixir-data/dbs/elixir/run | |||||
| # Enable SQL Server to start on boot | |||||
| sudo systemctl enable mssql-server | |||||
| SELECT OBJECT_SCHEMA_NAME(object_id) AS SchemaName, name AS TableName | |||||
| FROM master.sys.objects WHERE type_desc = 'USER_TABLE' AND is_ms_shipped = 0; | |||||
| # (Optional) Open SQL Server port for remote access | |||||
| sudo ufw allow 1433/tcp | |||||
| # (Optional) Install SQL Server command-line tools | |||||
| wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list | |||||
| sudo apt update && sudo apt install -y mssql-tools unixodbc-dev | |||||
| # Install redis | |||||
| # https://docs.vultr.com/how-to-install-redis-on-ubuntu-24-04 | |||||
| sudo apt install redis-server | |||||
| sudo systemctl enable redis-server.service | |||||
| sudo systemctl start redis | |||||
| # wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/prod.repo | sudo tee /etc/apt/sources.list.d/mssql-release.list | |||||
| # sudo apt update | |||||
| # sudo apt install -y mssql-tools unixodbc-dev | |||||
| # Add mssql-tools to PATH | |||||
| echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc | |||||
| source ~/.bashrc | |||||
| # sqlcmd -S localhost -U sa -Q "RESTORE DATABASE [ELIXIR_DEV] FROM DISK = N'/home/elvt/elvt/pgsys/elixir-data/dbdumps/reduced_elixir_backup' WITH FILE = 1, NOUNLOAD, REPLACE, NORECOVERY, STATS = 5" | |||||
| # Verify installation | |||||
| sqlcmd --version | |||||
| } | |||||
| cp /home/elvt/pgsys/elixir-data/dbdumps/reduced_elixir_backup' /tmp | |||||
| sqlcmd -S localhost -U sa -Q "RESTORE DATABASE ELIXIR FROM DISK = '/tmp/reduced_elixir_backup' WITH MOVE 'Elixir' TO '/var/opt/mssql/data/elixir.mdf', MOVE 'Elixir_log' TO '/var/opt/mssql/data/elixir_log.ldf'" | |||||
| # Function to install SQL Server on CentOS | |||||
| install_sqlserver_centos() { | |||||
| # Remove any existing mssql-server repo | |||||
| sudo rm -f /etc/yum.repos.d/mssql-server.repo | |||||
| # Add Microsoft SQL Server repository for CentOS using wget | |||||
| wget -qO /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2022.repo | |||||
| # Clean all dnf caches and make a new one | |||||
| sudo dnf clean all | |||||
| sudo dnf makecache | |||||
| # Install SQL Server Express | |||||
| sudo dnf install -y mssql-server | |||||
| # Run the setup to configure SQL Server | |||||
| sudo /opt/mssql/bin/mssql-conf setup | |||||
| # Enable SQL Server to start on boot | |||||
| sudo systemctl enable mssql-server | |||||
| # (Optional) Open SQL Server port for remote access | |||||
| sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent | |||||
| sudo firewall-cmd --reload | |||||
| # (Optional) Install SQL Server command-line tools | |||||
| wget -qO https://packages.microsoft.com/config/rhel/8/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo | |||||
| sudo yum remove -y mssql-tools unixODBC-utf16 unixODBC-utf16-devel | |||||
| sudo yum install -y mssql-tools18 unixODBC-devel | |||||
| sudo dnf install -y msodbcsql18 | |||||
| # Add mssql-tools to PATH | |||||
| echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bash_profile | |||||
| source ~/.bash_profile | |||||
| # Verify installation | |||||
| sqlcmd --version | |||||
| } | |||||
| # Check the OS type and call appropriate function | |||||
| if [[ "$OS_NAME" == "Ubuntu" || "$OS_NAME" == "Debian" ]]; then | |||||
| echo "Installing Microsoft SQL Server on Ubuntu..." | |||||
| install_sqlserver_ubuntu | |||||
| elif [[ "$OS_NAME" == "CentOS" || "$OS_NAME" == "Red Hat" || "$OS_NAME" == "Fedora" ]]; then | |||||
| echo "Installing Microsoft SQL Server on CentOS..." | |||||
| install_sqlserver_centos | |||||
| else | |||||
| echo "Unsupported OS. This script is designed for Ubuntu or CentOS." | |||||
| exit 1 | |||||
| fi | |||||
| # Finished | |||||
| echo "SQL Server installation completed successfully!" | |||||
| # # https://www.geeksforgeeks.org/how-to-install-sql-server-express-in-linux/ | |||||
| # # https://learn.microsoft.com/en-us/answers/questions/1685683/how-to-install-sql-server-2022-on-ubuntu-server-24 | |||||
| # curl -O http://debian.mirror.ac.za/debian/pool/main/o/openldap/libldap-2.5-0_2.5.13+dfsg-5_amd64.deb | |||||
| # sudo dpkg -i libldap-2.5-0_2.5.13+dfsg-5_amd64.deb | |||||
| # curl -O http://debian.mirror.ac.za/debian/pool/main/o/openldap/libldap-dev_2.5.13+dfsg-5_amd64.deb | |||||
| # sudo dpkg -i libldap-dev_2.5.13+dfsg-5_amd64.deb | |||||
| # #First upgrade ubuntu to fix libc packaging issues. | |||||
| # #Then | |||||
| # # sudo apt --fix-broken install | |||||
| # # sudo apt upgrade libsasl2-2 | |||||
| # sudo apt upgrade libgnutls30 | |||||
| # # sudo apt upgrade libldap-2.5-0 | |||||
| # # sudo apt --fix-broken install | |||||
| # sudo apt --fix-broken install | |||||
| # sudo apt upgrade libsasl2-2 | |||||
| # sudo apt update && sudo apt install -y libldap-2.5-0 | |||||
| # sudo apt install libldap-common | |||||
| # #curl -OL http://archive.ubuntu.com/ubuntu/pool/main/o/openldap/libldap-2.5-0_2.5.18+dfsg-0ubuntu0.22.04.1_amd64.deb | |||||
| # #sudo apt-get install ./libldap-2.5-0_2.5.18+dfsg-0ubuntu0.22.04.1_amd64.deb | |||||
| #SQL SERVER | |||||
| # wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - | |||||
| # wget -qO- https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | sudo tee /etc/apt/sources.list.d/mssql-server-2022.list | |||||
| # curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list | sudo tee /etc/apt/sources.list.d/mssql-server-2022.list | |||||
| # # sudo add-apt-repository “$(wget -qO- https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list)” | |||||
| # # sudo add-apt-repository “$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2019.list)” | |||||
| # sudo apt update && sudo apt install -y mssql-server | |||||
| # sudo /opt/mssql/bin/mssql-conf setup | |||||
| # #sudo systemctl status mssql-server.service | |||||
| # sudo systemctl status mssql-server --no-pager | |||||
| # sudo ldd /opt/mssql/bin/sqlservr | |||||
| # curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list | |||||
| # sudo apt update && sudo apt install -y mssql-tools unixodbc-dev | |||||
| # sudo ln -s /opt/mssql-tools/bin/sqlcmd /usr/local/bin | |||||
| # sqlcmd -S localhost -U SA | |||||
| # setfacl -R -m u:mssql:rwx ~/elvt/pgsys/elixir-data/dbs/elixir/run | |||||
| # SELECT OBJECT_SCHEMA_NAME(object_id) AS SchemaName, name AS TableName | |||||
| # FROM master.sys.objects WHERE type_desc = 'USER_TABLE' AND is_ms_shipped = 0; | |||||
| # # Install redis | |||||
| # # https://docs.vultr.com/how-to-install-redis-on-ubuntu-24-04 | |||||
| # sudo apt install redis-server | |||||
| # sudo systemctl enable redis-server.service | |||||
| # sudo systemctl start redis | |||||
| # # sqlcmd -S localhost -U sa -Q "RESTORE DATABASE [ELIXIR_DEV] FROM DISK = N'/home/elvt/elvt/pgsys/elixir-data/dbdumps/reduced_elixir_backup' WITH FILE = 1, NOUNLOAD, REPLACE, NORECOVERY, STATS = 5" | |||||
| # cp /home/elvt/pgsys/elixir-data/dbdumps/reduced_elixir_backup' /tmp | |||||
| # sqlcmd -S localhost -U sa -Q "RESTORE DATABASE ELIXIR FROM DISK = '/tmp/reduced_elixir_backup' WITH MOVE 'Elixir' TO '/var/opt/mssql/data/elixir.mdf', MOVE 'Elixir_log' TO '/var/opt/mssql/data/elixir_log.ldf'" |
| return any(tasks).then(() => { | return any(tasks).then(() => { | ||||
| gitRepos.push({ repo : 'chess-server-lib/server'}); | gitRepos.push({ repo : 'chess-server-lib/server'}); | ||||
| gitRepos.push({ repo : 'elixir-client/client'}); | |||||
| gitRepos = gitRepos.concat(elevatedRunasRepos); | gitRepos = gitRepos.concat(elevatedRunasRepos); | ||||
| // console.dir(gitRepos) | // console.dir(gitRepos) | ||||
| // throw "" | // throw "" | ||||
| ) | ) | ||||
| if (npmbuildrepos.indexOf(repodef.repo) < 0) { | if (npmbuildrepos.indexOf(repodef.repo) < 0) { | ||||
| // if(repodef.repo === 'elixir-client' || 'cihsr-client' === repodef.repo) { | |||||
| // // PB : TODO -- MAybe loop for sub folders with package.json | |||||
| // repotasks.push( | |||||
| // () => { | |||||
| // console.log(`--npm i for ${repodef.repo}/client--------------------`) | |||||
| // var p = nodeShellExec('npm', ['i', '--force'], { | |||||
| // inherit: true, shell: true | |||||
| // , cwd: instanceroot + '/' + repodef.repo + '/client' | |||||
| // , env | |||||
| // , title: `npm i for ${repodef.repo}/client` | |||||
| // }).then(Tasq.then).catch(Tasq.catch) | |||||
| // return p; | |||||
| // }) | |||||
| // } | |||||
| // } | |||||
| repotasks.push( | repotasks.push( | ||||
| () => { | () => { | ||||
| console.log(`--npm i for ${repodef.repo}--------------------`) | console.log(`--npm i for ${repodef.repo}--------------------`) |
| #!/bin/bash | |||||
| # Prompt for MySQL root password securely | |||||
| read -sp "Enter MySQL root password: " MYSQL_PASSWORD | |||||
| echo # Newline after password input | |||||
| DEFAULT_INSTANCENAME="cihsr" | |||||
| echo "Enter instance name (default: $DEFAULT_INSTANCENAME):" | |||||
| read instancename | |||||
| INSTANCENAME=${instancename:-$DEFAULT_INSTANCENAME} | |||||
| # Prompt for the database name with a default value | |||||
| read -p "Enter the database name (default: cihsr): " DB_NAME | |||||
| DB_NAME=${DB_NAME:-$INSTANCENAME} | |||||
| # Default the SQL file to 'create.mysql.db.sql' in the current directory | |||||
| SQL_FILE="elxr/create.mysql.db.sql" | |||||
| # Confirm if the SQL file exists | |||||
| if [[ ! -f "$SQL_FILE" ]]; then | |||||
| echo "SQL file '$SQL_FILE' does not exist in the current directory. Please check the file path and try again." | |||||
| exit 1 | |||||
| fi | |||||
| # MySQL user credentials | |||||
| MYSQL_USER="root" | |||||
| # Check if the database exists | |||||
| DB_EXISTS=$(mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES LIKE '$DB_NAME';") | |||||
| if [[ -z "$DB_EXISTS" ]]; then | |||||
| # Database does not exist, create it | |||||
| echo "Database '$DB_NAME' does not exist. Creating database..." | |||||
| mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -e "CREATE DATABASE IF NOT EXISTS $DB_NAME;" | |||||
| fi | |||||
| # Replace the placeholder {{DB_NAME}} in the SQL file with the database name | |||||
| TEMP_SQL_FILE=$(mktemp) | |||||
| sed "s/{{DB_NAME}}/$DB_NAME/g" "$SQL_FILE" > "$TEMP_SQL_FILE" | |||||
| # Run the SQL script with the provided database name | |||||
| mysql -u $MYSQL_USER -p$MYSQL_PASSWORD $DB_NAME < "$TEMP_SQL_FILE" | |||||
| # Clean up the temporary file | |||||
| rm "$TEMP_SQL_FILE" | |||||
| mysql -u $MYSQL_USER -p$MYSQL_PASSWORD $DB_NAME < $SQL_FILE -- Create Schema | |||||
| mysql -u $MYSQL_USER -p$MYSQL_PASSWORD $DB_NAME < $DB_NAME.sql -- Load data | |||||
| echo "SQL script executed successfully on database $DB_NAME" |
| #!/bin/bash | |||||
| # Prompt for MySQL root password securely | |||||
| read -sp "Enter MySQL root password: " MYSQL_PASSWORD | |||||
| echo # Newline after password input | |||||
| DEFAULT_INSTANCENAME="elixir" | |||||
| echo "Enter instance name (default: $DEFAULT_INSTANCENAME):" | |||||
| read instancename | |||||
| INSTANCENAME=${instancename:-$DEFAULT_INSTANCENAME} | |||||
| # Prompt for the database name with a default value | |||||
| read -p "Enter the database name (default: cihsr): " DB_NAME | |||||
| DB_NAME=${DB_NAME:-$INSTANCENAME} | |||||
| cp /home/elvt/pgsys/$INSTANCENAME-data/dbdumps/reduced_$INSTANCENAME_backup' /tmp | |||||
| sqlcmd -S localhost -U sa -Q "RESTORE DATABASE ELIXIR FROM DISK = '/tmp/reduced_$INSTANCENAME_backup' WITH MOVE 'Elixir' TO '/var/opt/mssql/data/$INSTANCENAME.mdf', MOVE '$INSTANCENAME_log' TO '/var/opt/mssql/data/$INSTANCENAME_log.ldf'" | |||||
| rm /tmp/reduced_$INSTANCENAME_backup |
| # Step 6: Change authentication plugin to mysql_native_password | # Step 6: Change authentication plugin to mysql_native_password | ||||
| echo "Changing authentication plugin for MySQL root user..." | echo "Changing authentication plugin for MySQL root user..." | ||||
| mysql -u root -p"$ROOT_PASSWORD" <<-EOF | mysql -u root -p"$ROOT_PASSWORD" <<-EOF | ||||
| USE mysql | |||||
| ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$ROOT_PASSWORD'; | ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$ROOT_PASSWORD'; | ||||
| FLUSH PRIVILEGES; | FLUSH PRIVILEGES; | ||||
| EOF | EOF |