GNU/Linux >> Tutoriales Linux >  >> Cent OS

Instale y configure php para conectarse a MsSQL Server Centos 8

Microsoft SQL Server es un sistema de gestión de bases de datos relacionales desarrollado por Microsoft. Como servidor de base de datos, es un producto de software con la función principal de almacenar y recuperar datos solicitados por otras aplicaciones de software, que pueden ejecutarse en la misma computadora o en otra computadora a través de una red.

Compruebe también:

  • Cómo ejecutar MsSQL Server 2019 con Docker y Docker-Compose
  • Cómo instalar MS SQL Server 2019 en Ubuntu 20.04

Requisitos

  • Servidor Centos 8 actualizado
  • Acceso raíz al servidor o usuario con acceso sudo

Índice

  1. Instalación y configuración de php 7.4
  2. Instalación y configuración del servidor Ms Sql
  3. Configuración del controlador php mssql
  4. Sirviendo un sitio simple con nginx

Antes de continuar, asegúrese de que su sistema operativo esté actualizado.

sudo dnf -y update

1. Instalación y configuración de php

Los repositorios predeterminados de Centos 8 contienen una versión anterior de PHP. Remi proporciona un repositorio más reciente para php en derivados de Centos Linux y Red Hat Linux. Vamos a instalarlo.

Primero instale dnf-utils

sudo dnf install -y dnf-utils

Luego instale este paquete para habilitar la versión remi:

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

Para asegurarnos de que no se instale ninguna otra versión de php, restablezcamos el módulo de php:

dnf module reset php -y

Ahora necesitamos habilitar la versión de php que queremos instalar. En esta guía usaremos 7.4, así que habilitémoslo con este comando:

dnf module enable -y php:remi-7.4

Confirme que php 7.4 está habilitado:

# 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

Ahora que la versión requerida de php está instalada, instalemos php y los paquetes requeridos:

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

Una vez finalizada la instalación, utilice este comando para confirmar la versión 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

Instalación y configuración del servidor mssql

En esta sección, configuraremos el servidor de la base de datos.

El paquete Ms SQL no se encuentra en los repositorios predeterminados. Agreguemos el repositorio usando este comando:

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

Luego instale mssql usando este comando:

sudo dnf install -y mssql-server

El siguiente paso es configurar el servicio para que podamos usarlo. Use este comando y responda las indicaciones para crear el usuario predeterminado (sa ) contraseña:

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

Salida:

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

Inicie y habilite el servidor mssql

systemctl start mssql-server
systemctl enable mssql-server

systemctl status mssql-server

Debería ver Active: active (running) cuando todo esté configurado correctamente.

# 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. Configuración del controlador php mssql

Ahora que php y el servidor mssql están instalados y configurados como se esperaba, necesitamos configurar el sistema para que conozca los controladores.

Para hacer esto, necesitamos agregar los repositorios mssql e instalar algunas dependencias:

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

Instalar sqlcmd cliente de línea de comandos

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

Crear base de datos

Vamos a crear una base de datos de prueba a la que nos conectaremos.

Primero, inicie sesión en el servidor mssql usando esto:

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

Luego use esto para crear una base de datos:

CREATE DATABASE TestDB
GO

Comprobemos que nuestra base de datos se creó enumerando bases de datos:

1> SELECT Name from sys.Databases
2> GO

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

(5 rows affected)
1>

Configuración del controlador

Instalemos las dependencias del servidor sql. El pecl el comando es proporcionado por php-pear

sudo pecl install sqlsrv
pecl install pdo_sqlsrv

Luego agregue la extensión al archivo 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

Finalmente reinicie php-fpm:

systemctl restart php-fpm
systemctl status php-fpm

Salida:

# 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. Sirviendo un sitio simple con nginx

Ahora que todo se ha configurado, creemos un script php simple para probar que la configuración funciona.

Instalar nginx

Use este comando para instalar nginx:

sudo dnf install -y nginx

Inicie y habilite el servicio nginx:

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

Deberías ver

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

Crear un sitio simple

Ahora que nginx está instalado, creemos un script simple para probar la conexión db.

Crear estructura de directorios

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

Crea este archivo index.php dentro del directorio que acabamos de crear con este contenido:

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

Crear archivo de configuración de Nginx:

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

Añade este contenido:

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

Ahora prueba la configuración con este comando:

sudo nginx -t

Si todo está bien, reinicie el servidor nginx:

systemctl restart nginx

Asigne el nombre DNS de su dominio al servidor. Confirme con el comando de excavación:

➜ 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

Ahora actualice la configuración de php fpm para permitir que nginx sirva los scripts de php. En el archivo /etc/php-fpm.d/www.conf actualice el usuario y el grupo a Nginx:

user = nginx
group = nginx

Luego, para probar que todo funciona, haz curl usando este comando:

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

Connection established.<br />

Conclusión

En esta guía, logramos instalar PHP, instalar Mssql y luego instalar el controlador que nos permitió conectar el contenido php del servidor a una base de datos msssql.


Cent OS
  1. Cómo instalar o actualizar a PHP 7 en CentOS 7 Linux Server

  2. Cómo instalar y usar TeamSpeak Server en CentOS 7

  3. Instalar PHP 7.4 en CentOS 8

  4. Trabajando con el servidor Php 7x y mssql en Centos 8

  5. Instale Zenario con Apache, PHP y MariaDB en CentOS 7

Cómo instalar PHP 7.4, 7.3, 7.2 en el servidor CentOS 7 y RHEL 7

Cómo instalar Jenkins en CentOS y conectarlo a GitHub

Instalar y configurar el servidor FreeIPA en CentOS 8

Cómo instalar y configurar el servidor VNC en CentOS 7

Instalar y configurar Check_MK Server en CentOS 7

Cómo instalar y configurar Gitlab CE Server en Centos 8