GNU/Linux >> Linux Esercitazione >  >> Cent OS

Installa e configura php per la connessione a MsSQL Server Centos 8

Microsoft SQL Server è un sistema di gestione di database relazionali sviluppato da Microsoft. In quanto server di database, è un prodotto software con la funzione principale di archiviare e recuperare dati come richiesto da altre applicazioni software, che possono essere eseguite sullo stesso computer o su un altro computer in rete.

Controlla anche:

  • Come eseguire MsSQL Server 2019 con Docker e Docker-Compose
  • Come installare Ms SQL Server 2019 su Ubuntu 20.04

Prerequisiti

  • Server Centos 8 aggiornato
  • Accesso root al server o utente con accesso sudo

Indice

  1. Installazione e configurazione di php 7.4
  2. Installazione e configurazione del server Ms Sql
  3. Configurazione del driver php mssql
  4. Utilizzare un sito semplice con nginx

Prima di procedere assicurati che il tuo sistema operativo sia aggiornato.

sudo dnf -y update

1. Installazione e impostazione di php

I repository Centos 8 predefiniti contengono una versione precedente di PHP. Remi fornisce un repository più recente per php in Centos Linux e derivati ​​​​di Red Hat Linux. Installiamolo.

Prima installa dnf-utils

sudo dnf install -y dnf-utils

Quindi installa questo pacchetto per abilitare la versione remi:

dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm

Per assicurarci che non sia installata nessun'altra versione di php, resettiamo il modulo php:

dnf module reset php -y

Ora dobbiamo abilitare la versione di php che vogliamo installare. In questa guida useremo 7.4, quindi abilitiamolo con questo comando:

dnf module enable -y php:remi-7.4

Conferma che php 7.4 è abilitato:

# dnf module list php

Last metadata expiration check: 0:00:34 ago on Fri 10 Sep 2021 05:13:49 AM UTC.
CentOS Linux 8 - AppStream
Name Stream Profiles Summary
php 7.2 [d] common [d], devel, minimal PHP scripting language
php 7.3 common [d], devel, minimal PHP scripting language
php 7.4 common [d], devel, minimal PHP scripting language

Remi's Modular repository for Enterprise Linux 8 - x86_64
Name Stream Profiles Summary
php remi-7.2 common [d], devel, minimal PHP scripting language
php remi-7.3 common [d], devel, minimal PHP scripting language
php remi-7.4 [e] common [d], devel, minimal PHP scripting language
php remi-8.0 common [d], devel, minimal PHP scripting language
php remi-8.1 common [d], devel, minimal PHP scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Ora che è installata la versione richiesta di php, installiamo php e i pacchetti richiesti:

dnf install -y \
    php \
    php-fpm \
    php-pdo \
    php-pear \
    php-devel

Al termine dell'installazione, utilizzare questo comando per confermare la versione php:

# php -v

PHP 7.4.23 (cli) (built: Aug 24 2021 16:33:30) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.23, Copyright (c), by Zend Technologies

Installazione e configurazione del server mssql

In questa sezione, configureremo il server del database.

Il pacchetto Ms SQL non si trova nei repository predefiniti. Aggiungiamo il repository usando questo comando:

sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2019.repo

Quindi installa mssql usando questo comando:

sudo dnf install -y mssql-server

Il passaggio successivo consiste nel configurare il servizio in modo da poterlo utilizzare. Usa questo comando e rispondi alle richieste in modo da creare l'utente predefinito (sa ) password:

sudo /opt/mssql/bin/mssql-conf setup

Uscita:

# sudo /opt/mssql/bin/mssql-conf setup

usermod: no changes
Choose an edition of SQL Server:
1) Evaluation (free, no production use rights, 180-day limit)
2) Developer (free, no production use rights)
3) Express (free)
4) Web (PAID)
5) Standard (PAID)
6) Enterprise (PAID) - CPU Core utilization restricted to 20 physical/40 hyperthreaded
7) Enterprise Core (PAID) - CPU Core utilization up to Operating System Maximum
8) I bought a license through a retail sales channel and have a product key to enter.

Details about editions can be found at https://go.microsoft.com/fwlink/?LinkId=2109348&clcid=0x409

Use of PAID editions of this software requires separate licensing through a Microsoft Volume Licensing program.
By choosing a PAID edition, you are verifying that you have the appropriate number of licenses in place to install and run this software.

Enter your edition(1-8): 2
The license terms for this product can be found in
/usr/share/doc/mssql-server or downloaded from:
https://go.microsoft.com/fwlink/?LinkId=2104294&clcid=0x409

The privacy statement can be viewed at:

https://go.microsoft.com/fwlink/?LinkId=853010&clcid=0x409

Do you accept the license terms? [Yes/No]:Yes
Enter the SQL Server system administrator password:
Confirm the SQL Server system administrator password:
Configuring SQL Server...

ForceFlush is enabled for this instance.
ForceFlush feature is enabled for log durability.

Created symlink /etc/systemd/system/multi-user.target.wants/mssql-server.service → /usr/lib/systemd/system/mssql-server.service.

Setup has completed successfully. SQL Server is now starting.

Avvia e abilita il server mssql

systemctl start mssql-server
systemctl enable mssql-server

systemctl status mssql-server

Dovresti vedere Active: active (running) quando tutto è impostato correttamente.

# systemctl status mssql-server

● mssql-server.service - Microsoft SQL Server Database Engine
Loaded: loaded (/usr/lib/systemd/system/mssql-server.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2021-09-10 05:24:51 UTC; 1min 22s ago
Docs: https://docs.microsoft.com/en-us/sql/linux
Main PID: 264891 (sqlservr)
Tasks: 136
Memory: 703.6M
CGroup: /system.slice/mssql-server.service
├─264891 /opt/mssql/bin/sqlservr
└─264918 /opt/mssql/bin/sqlservr

Sep 10 05:24:56 test-db-server sqlservr[264891]: [158B blob data]

3. Configurazione del driver php mssql

Ora che php e il server mssql sono installati e impostati come previsto, dobbiamo configurare il sistema in modo che sappia dei driver.

Per fare ciò, dobbiamo aggiungere i repository mssql e installare alcune dipendenze:

curl https://packages.microsoft.com/config/rhel/8/prod.repo > /etc/yum.repos.d/mssql-release.repo
sudo ACCEPT_EULA=Y dnf -y install msodbcsql17

# Install this for unixODBC development headers
sudo dnf -y install unixODBC-devel

Installa sqlcmd client della riga di comando

sudo dnf install -y mssql-tools

echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc

source ~/.bashrc

Crea database

Creiamo un database di test a cui ci collegheremo.

Innanzitutto, accedi al server mssql usando questo:

sqlcmd -S localhost -U SA -P 'goK7GBU4Cp4UPYz'

Quindi usalo per creare un database:

CREATE DATABASE TestDB
GO

Verifichiamo che il nostro database sia stato creato elencando i database:

1> SELECT Name from sys.Databases
2> GO

Name
--------------------------------------------------------------------------------------------------------------------------------
master
tempdb
model
msdb
TestDB

(5 rows affected)
1>

Configurazione del driver

Installiamo le dipendenze del server sql. Il pecl il comando è fornito da php-pear

sudo pecl install sqlsrv
pecl install pdo_sqlsrv

Quindi aggiungi l'estensione al file ini

echo extension=pdo_sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/30-pdo_sqlsrv.ini
echo extension=sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/20-sqlsrv.ini

Infine riavvia php-fpm:

systemctl restart php-fpm
systemctl status php-fpm

Uscita:

# systemctl status php-fpm

● php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2021-09-10 05:39:41 UTC; 884ms ago
Main PID: 275734 (php-fpm
Status: "Ready to handle connections"
Tasks: 6 (limit: 23800)
Memory: 29.7M
CGroup: /system.slice/php-fpm.service
├─275734 php-fpm: master process (/etc/php-fpm.conf)
├─275735 php-fpm: pool www
├─275736 php-fpm: pool www
├─275737 php-fpm: pool www
├─275738 php-fpm: pool www
└─275739 php-fpm: pool www

Sep 10 05:39:41 test-db-server systemd[1]: Starting The PHP FastCGI Process Manager...
Sep 10 05:39:41 test-db-server systemd[1]: Started The PHP FastCGI Process Manager.

4. Servire un sito semplice con nginx

Ora che tutto è stato impostato, creiamo un semplice script php per verificare che la configurazione funzioni.

Installa nginx

Usa questo comando per installare nginx:

sudo dnf install -y nginx

Avvia e abilita il servizio nginx:

sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx

Dovresti vedere

# sudo systemctl status nginx

● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Drop-In: /usr/lib/systemd/system/nginx.service.d
└─php-fpm.conf
Active: active (running) since Fri 2021-09-10 05:52:17 UTC; 323ms ago
Main PID: 277633 (nginx)
Tasks: 3 (limit: 23800)
Memory: 8.0M
CGroup: /system.slice/nginx.service
├─277633 nginx: master process /usr/sbin/nginx
├─277634 nginx: worker process
└─277635 nginx: worker process

Sep 10 05:52:17 test-db-server systemd[1]: Starting The nginx HTTP and reverse proxy server...
Sep 10 05:52:17 test-db-server nginx[277630]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Sep 10 05:52:17 test-db-server nginx[277630]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Sep 10 05:52:17 test-db-server systemd[1]: Started The nginx HTTP and reverse proxy server.

Creazione di un sito semplice

Ora che nginx è installato, creiamo un semplice script per testare la connessione db.

Crea una struttura di directory

sudo mkdir /var/www/site1
cd /var/www/site1
chown nginx.nginx -R /var/www/site1

Crea questo file index.php all'interno della directory che abbiamo appena creato con questo contenuto:

<?php
$serverName = "127.0.0.1,1433";
$dbUser = 'sa';
$pwd = "goK7GBU4Cp4UPYz";
$dbName = "TestDB";

$connInfo = array("Database"=>$dbName, "UID"=>$dbUser, "PWD"=>$pwd);

$conn = sqlsrv_connect( $serverName, $connInfo);

if( $conn ) {
    echo "Connection established.<br />";
} else {
    echo "Connection could not be established to $serverName.<br />";
    die( print_r( sqlsrv_errors(), true));
}

/* Close the connection. */
sqlsrv_close( $conn);
?>

Crea file di configurazione Nginx:

sudo vim /etc/nginx/conf.d/php-site.conf

Aggiungi questo contenuto:

    server {
    listen 80;
    server_name php.citizix.com;
    server_tokens off;
    client_max_body_size 10M;

    root /var/www/site1;
    index index.php;
    charset utf-8;

    location / {
        index index.php;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_intercept_errors on;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass php-fpm;
    }
}

Ora prova la configurazione con questo comando:

sudo nginx -t

Se tutto è a posto, riavvia il server nginx:

systemctl restart nginx

Mappa il nome DNS per il tuo dominio sul server. Conferma con il comando dig:

➜ dig -t A php.citizix.com

; <<>> DiG 9.10.6 <<>> -t A php.citizix.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16605
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1280
;; QUESTION SECTION:
;php.citizix.com. IN A

;; ANSWER SECTION:
php.citizix.com. 300 IN A 172.67.197.111
php.citizix.com. 300 IN A 104.21.82.63

;; Query time: 225 msec
;; SERVER: 192.168.16.175#53(192.168.16.175)
;; WHEN: Fri Sep 10 09:42:52 EAT 2021
;; MSG SIZE rcvd: 76

Ora aggiorna php fpm config per consentire a nginx di servire gli script php. Nel file /etc/php-fpm.d/www.conf aggiorna l'utente e il gruppo su Nginx:

user = nginx
group = nginx

Quindi per verificare che tutto funzioni, esegui curl usando questo comando:

➜ curl -iL http://php.citizix.com/

Connection established.<br />

Conclusione

In questa guida, siamo riusciti a installare PHP, installare Mssql e quindi installare il driver che ci ha consentito di server contenuto php connettendoci a un database msssql.


Cent OS
  1. Come installare o aggiornare a PHP 7 su CentOS 7 Linux Server

  2. Come installare e utilizzare TeamSpeak Server su CentOS 7

  3. Installa PHP 7.4 su CentOS 8

  4. Installa Zenario con Apache, PHP e MariaDB su CentOS 7

  5. Installa Apache e PHP su CentOS 7

Come installare PHP 7.4, 7.3, 7.2 su CentOS 7 e RHEL 7 Server

Come installare Jenkins su CentOS e collegarlo a GitHub

Installa e configura FreeIPA Server su CentOS 8

Come installare e configurare il server VNC su CentOS 7

Installa e configura Check_MK Server su CentOS 7

Come installare e configurare Gitlab CE Server su Centos 8