GNU/Linux >> Tutoriels Linux >  >> Cent OS

Installez et configurez php pour vous connecter à MsSQL Server Centos 8

Microsoft SQL Server est un système de gestion de base de données relationnelle développé par Microsoft. En tant que serveur de base de données, il s'agit d'un produit logiciel dont la fonction principale est de stocker et de récupérer les données demandées par d'autres applications logicielles, qui peuvent s'exécuter sur le même ordinateur ou sur un autre ordinateur sur un réseau.

Vérifiez également :

  • Comment exécuter MsSQL Server 2019 avec Docker et Docker-Compose
  • Comment installer Ms SQL Server 2019 sur Ubuntu 20.04

Prérequis

  • Serveur Centos 8 mis à jour
  • Accès root au serveur ou utilisateur avec accès sudo

Table des matières

  1. Installation et configuration de php 7.4
  2. Installation et configuration du serveur Ms Sql
  3. Configuration du pilote php mssql
  4. Servir un site simple avec nginx

Avant de continuer, assurez-vous que votre système d'exploitation est à jour.

sudo dnf -y update

1. Installation et configuration de php

Les référentiels Centos 8 par défaut contiennent une ancienne version de PHP. Remi fournit un dernier référentiel pour php dans les dérivés Centos Linux et Red Hat Linux. Installons-le.

Installez d'abord dnf-utils

sudo dnf install -y dnf-utils

Installez ensuite ce package pour activer la version de remi :

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

Pour vous assurer qu'aucune autre version de php n'est installée, réinitialisons le module php :

dnf module reset php -y

Maintenant, nous devons activer la version de php que nous voulons installer. Dans ce guide, nous utiliserons 7.4, alors activons-le avec cette commande :

dnf module enable -y php:remi-7.4

Confirmez que php 7.4 est activé :

# 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

Maintenant que la version requise de php est installée, installons php et les packages requis :

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

Une fois l'installation terminée, utilisez cette commande pour confirmer la version de 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

Installation et configuration du serveur mssql

Dans cette section, nous allons configurer le serveur de base de données.

Le package Ms SQL est introuvable dans les référentiels par défaut. Ajoutons le référentiel à l'aide de cette commande :

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

Ensuite, installez mssql à l'aide de cette commande :

sudo dnf install -y mssql-server

L'étape suivante consiste à configurer le service afin que nous puissions l'utiliser. Utilisez cette commande et répondez aux invites afin de créer l'utilisateur par défaut (sa ) mot de passe :

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

Sortie :

# 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.

Démarrer et activer le serveur mssql

systemctl start mssql-server
systemctl enable mssql-server

systemctl status mssql-server

Vous devriez voir Active: active (running) quand tout est correctement configuré.

# 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. Configuration du pilote php mssql

Maintenant que php et le serveur mssql sont installés et configurés comme prévu, nous devons configurer le système afin qu'il connaisse les pilotes.

Pour ce faire, nous devons ajouter les dépôts mssql et installer quelques dépendances :

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

Installer sqlcmd client en ligne de commande

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

Créer une base de données

Créons une base de données de test à laquelle nous nous connecterons.

Tout d'abord, connectez-vous au serveur mssql en utilisant ceci :

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

Utilisez ensuite ceci pour créer une base de données :

CREATE DATABASE TestDB
GO

Vérifions que notre base de données a bien été créée en listant les bases de données :

1> SELECT Name from sys.Databases
2> GO

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

(5 rows affected)
1>

Configuration du pilote

Installons les dépendances du serveur sql. Le pecl la commande est fournie par php-pear

sudo pecl install sqlsrv
pecl install pdo_sqlsrv

Ajoutez ensuite l'extension au fichier 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

Redémarrez enfin php-fpm :

systemctl restart php-fpm
systemctl status php-fpm

Sortie :

# 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. Servir un site simple avec nginx

Maintenant que tout a été configuré, créons un simple script php pour tester que la configuration fonctionne.

Installer nginx

Utilisez cette commande pour installer nginx :

sudo dnf install -y nginx

Démarrez et activez le service nginx :

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

Vous devriez voir

# 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.

Créer un site simple

Maintenant que nginx est installé, créons un script simple pour tester la connexion à la base de données.

Créer une structure de répertoire

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

Créez ce fichier index.php dans le répertoire que nous venons de créer avec ce contenu :

<?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);
?>

Créez le fichier de configuration Nginx :

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

Ajoutez ce contenu :

    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;
    }
}

Testez maintenant la configuration avec cette commande :

sudo nginx -t

Si tout va bien, redémarrez le serveur nginx :

systemctl restart nginx

Mappez le nom DNS de votre domaine sur le serveur. Confirmez avec la commande 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

Maintenant, mettez à jour la configuration php fpm pour permettre à nginx de servir les scripts php. Dans le fichier /etc/php-fpm.d/www.conf mettre à jour l'utilisateur et le groupe vers Nginx :

user = nginx
group = nginx

Ensuite, pour tester que tout fonctionne, faites curl en utilisant cette commande :

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

Connection established.<br />

Conclusion

Dans ce guide, nous avons réussi à installer PHP, à installer Mssql, puis à installer le pilote qui nous a permis de serveur le contenu php se connectant à une base de données msssql.


Cent OS
  1. Comment installer ou mettre à niveau vers PHP 7 sur CentOS 7 Linux Server

  2. Comment installer et utiliser TeamSpeak Server sur CentOS 7

  3. Installer PHP 7.4 sur CentOS 8

  4. Travailler avec Php 7x et le serveur mssql sur Centos 8

  5. Installer Apache et PHP sur CentOS 7

Comment installer PHP 7.4, 7.3, 7.2 sur CentOS 7 et RHEL 7 Server

Comment installer Jenkins sur CentOS et le connecter à GitHub

Installer et configurer le serveur FreeIPA sur CentOS 8

Comment installer et configurer le serveur VNC sur CentOS 7

Installer et configurer Check_MK Server sur CentOS 7

Comment installer et configurer Gitlab CE Server sur Centos 8