GNU/Linux >> Belajar Linux >  >> Cent OS

Instal dan atur php untuk terhubung ke MsSQL Server Centos 8

Microsoft SQL Server adalah sistem manajemen basis data relasional yang dikembangkan oleh Microsoft. Sebagai server basis data, ini adalah produk perangkat lunak dengan fungsi utama menyimpan dan mengambil data seperti yang diminta oleh aplikasi perangkat lunak lain—yang dapat dijalankan di komputer yang sama atau di komputer lain di seluruh jaringan.

Cek juga:

  • Cara menjalankan MsSQL Server 2019 dengan Docker dan Docker-Compose
  • Cara menginstal Ms SQL Server 2019 di Ubuntu 20.04

Prasyarat

  • Server Centos 8 yang diperbarui
  • Akses root ke server atau pengguna dengan akses sudo

Daftar isi

  1. Memasang dan menyiapkan php 7.4
  2. Menginstal dan menyiapkan server Ms Sql
  3. Menyiapkan driver php mssql
  4. Menyajikan situs sederhana dengan nginx

Sebelum melanjutkan, pastikan OS Anda mutakhir.

sudo dnf -y update

1. Memasang dan Mengatur php

Repo Centos 8 default berisi versi PHP yang lebih lama. Remi menyediakan repo terbaru untuk php di Centos Linux dan turunan Red Hat Linux. Mari kita instal.

Pertama instal dnf-utils

sudo dnf install -y dnf-utils

Kemudian instal paket ini untuk mengaktifkan rilis remi:

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

Untuk memastikan bahwa tidak ada versi php lain yang diinstal, mari kita reset modul php:

dnf module reset php -y

Sekarang kita perlu mengaktifkan versi php yang ingin kita instal. Dalam panduan ini kita akan menggunakan 7.4, jadi mari kita aktifkan dengan perintah ini:

dnf module enable -y php:remi-7.4

Konfirmasikan bahwa php 7.4 diaktifkan:

# 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

Sekarang setelah versi php yang diperlukan terinstal, mari kita instal php dan paket yang diperlukan:

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

Setelah instalasi selesai, gunakan perintah ini untuk mengkonfirmasi versi 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

Menginstal dan menyiapkan server mssql

Di bagian ini, kita akan menyiapkan server database.

Paket Ms SQL tidak ditemukan di repo default. Mari tambahkan repo menggunakan perintah ini:

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

Kemudian instal mssql menggunakan perintah ini:

sudo dnf install -y mssql-server

Langkah selanjutnya adalah mengkonfigurasi layanan agar kita dapat menggunakannya. Gunakan perintah ini dan jawab perintahnya sehingga Anda membuat pengguna default (sa ) kata sandi:

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

Keluaran:

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

Mulai dan aktifkan server mssql

systemctl start mssql-server
systemctl enable mssql-server

systemctl status mssql-server

Anda akan melihat Active: active (running) ketika semuanya sudah diatur dengan benar.

# 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. Menyiapkan driver php mssql

Sekarang setelah php dan server mssql terinstal dan diatur seperti yang diharapkan, kita perlu mengkonfigurasi sistem agar mengetahui tentang driver.

Untuk melakukan ini, kita perlu menambahkan repo mssql dan menginstal beberapa dependensi:

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

Instal sqlcmd klien baris perintah

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

Buat basis data

Mari kita buat database pengujian yang akan kita sambungkan.

Pertama, login ke server mssql menggunakan ini:

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

Kemudian gunakan ini untuk membuat database:

CREATE DATABASE TestDB
GO

Mari kita periksa apakah database kita dibuat dengan membuat daftar database:

1> SELECT Name from sys.Databases
2> GO

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

(5 rows affected)
1>

Mengatur driver

Mari kita instal dependensi server sql. pecl perintah disediakan oleh php-pear

sudo pecl install sqlsrv
pecl install pdo_sqlsrv

Kemudian tambahkan ekstensi ke 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

Terakhir restart php-fpm:

systemctl restart php-fpm
systemctl status php-fpm

Keluaran:

# 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. Melayani situs sederhana dengan nginx

Sekarang setelah semuanya telah diatur, mari buat skrip php sederhana untuk menguji apakah pengaturan tersebut berfungsi.

Instal nginx

Gunakan perintah ini untuk menginstal nginx:

sudo dnf install -y nginx

Mulai dan aktifkan layanan nginx:

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

Anda akan melihat

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

Membuat situs sederhana

Sekarang setelah nginx terinstal, mari buat skrip sederhana untuk menguji koneksi db.

Buat struktur direktori

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

Buat file ini index.php di dalam direktori yang baru saja kita buat dengan konten ini:

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

Buat file konfigurasi Nginx:

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

Tambahkan konten ini:

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

Sekarang uji konfigurasi dengan perintah ini:

sudo nginx -t

Jika semuanya OK, restart server nginx:

systemctl restart nginx

Petakan nama DNS untuk domain Anda ke server. Konfirmasikan dengan perintah 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

Sekarang perbarui konfigurasi php fpm untuk mengizinkan nginx melayani skrip php. Dalam file /etc/php-fpm.d/www.conf perbarui pengguna dan grup ke Nginx:

user = nginx
group = nginx

Kemudian untuk menguji apakah semuanya berfungsi, lakukan curl menggunakan perintah ini:

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

Connection established.<br />

Kesimpulan

Dalam panduan ini, kami berhasil Menginstal PHP, Menginstal Mssql, dan kemudian menginstal driver yang memungkinkan kami untuk menghubungkan konten php server ke database msssql.


Cent OS
  1. Bekerja Dengan Php 7x dan server mssql di Centos 8

  2. Instal Zenario dengan Apache, PHP dan MariaDB di CentOS 7

  3. Instal Apache dan PHP di CentOS 7

  1. Cara menginstal atau meningkatkan ke PHP 7 di CentOS 7 Linux Server

  2. Cara Menginstal dan Menggunakan Server TeamSpeak di CentOS 7

  3. Instal PHP 7.4 di CentOS 8

  1. Cara Menginstal dan Menggunakan Komposer PHP di CentOS 7

  2. Instal PHP 7 di CentOS 7

  3. Cara Menginstal dan Mengkonfigurasi VNC di CentOS 7