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
- Installazione e configurazione di php 7.4
- Installazione e configurazione del server Ms Sql
- Configurazione del driver php mssql
- 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.