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
- Instalación y configuración de php 7.4
- Instalación y configuración del servidor Ms Sql
- Configuración del controlador php mssql
- 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.