发表主题 回复主题
  • 3168阅读
  • 3回复

[数据库]在 Linux 上搭建基于 SQL Server vNext 和 PHP7.1 的LNMP

级别: 论坛版主
发帖
9078
云币
12667
— 本帖被 不靠谱贝贝 设置为精华(2017-02-20) —
前言 wajhFBJ  
1OS3Gv8jc~  
cNv c pv  
其实 SQL Server 2016 本身已经非常的划时代了,是一个非常强大的关系型数据库,不过微软为了更佳适应云时代,因此推出了基于 SQL Server 2016 的 SQL Server vNext,支持在 Windows 、Linux 和 Docker 容器的部署,对云计算的弹性伸缩更好的适应,可以显着降低成本、提高性能,以及在不添加更多硬件的情况下轻松扩展和部署额外存储和计算资源的能力。更多的特性可以在 MSDN 查看。 3&:fS|L~c  
*&MkkI#  
这里介绍一下如何在  Ubuntu 16.04 安装 Nginx + PHP 7.1 + SQL Server vNext 安装 phpBB。 `vBa.)u  
- mXr6R?  
提醒1:安装 SQL Server vNext 在 Linux 平台至少需要 3.25G内存,使用 Docker 容器则至少需要 4G内存,最高不可大于256G。RHEL 系统支持XFS 或 EXT4 两种文件系统,Ubuntu 则只支持 EXT4 一种文件系统。 I/|n ma/ $  
hKYPH?b%  
提醒2:SQL Server vNext 虽然提供了 Linux 的支持,但依旧是一个闭源软件,且商业用途需要购买授权。 ;Bi{;>3  
Gjr2]t;E  
eQj/)@B:V  
安装 SQL Server vNext Wno5B/V  
net9K X4\  
h (2k;M^s  
软件源(推荐) )FPbE^s(  
$S{j}74[  
s6uAF(4,  
使用微软的软件源可以获得及时的更新,但是国内的速度非常不理想,也期待有相关组织提供相关国内镜像。 4pv :u:Z  
P#PQ4uK \  
一、安装密钥 Eq{TZV  
  1. curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
Y1IlH8+0  
'"^JNb^I  
二、下载库文件并更新软件源 O!tD1^O!1}  
  1. curl https://packages.microsoft.com/config/ubuntu/16.04/mssql-server.list | sudo tee /etc/apt/sources.list.d/mssql-server.list
  2. apt-get update
W9"I++~f  
~O-8h0d3  
9v0|lS!-  
三、安装 SQL Server Y[4B{  
  1. apt-get install -y mssql-server
#J_i 5KmXJ  
软件包安装 T:$_1I $  
%\0 Y1!Hw  
因为软件源的速度问题,在国内如果真的忍不了那个下载速度,我们还可以用二进制包安装。 v'tk: Hm1  
vKf=t&gqr  
版本下载地址
Debian package14.0.1.246-6mssql-server 14.0.1.246-6 Engine Debian package f'dI"o&^/d  
mssql-server 14.0.1.246-6 High Availability Debian package
#C^m>o~R  
u7d]%<~'$F  
ZI7<E  
Sqs`E[G*  
例如我安装的是 mssql-server 14.0.1.246-6 Engine Debian package,那么运行: xJCpWU3wM  
a 2TC,   
}T,uw8?f!  
  1. apt-get install libc++1 libjemalloc1 resource-agents
  2. curl https://packages.microsoft.com/ubuntu/16.04/mssql-server/pool/main/m/mssql-server/mssql-server_14.0.1.246-6_amd64.deb
  3. curl https://packages.microsoft.com/ubuntu/16.04/mssql-server/pool/main/m/mssql-server-ha/mssql-server-ha_14.0.1.246-6_amd64.deb
  4. dpkg -i mssql-server_14.0.1.246-6_amd64.deb mssql-server-ha_14.0.1.246-6_amd64.deb
v &n &i?  
kns]P<g  
<X?F :?Mk  
初始配置 q]x@q  
?F/3]lsggT  
"|if<hx+  
无论是软件源还是软件包,安装好后都会出现: /7^~*  
  1. +-------------------------------------------------------------------+
  2. | Please run /opt/mssql/bin/sqlservr-setup to complete the setup of |
  3. | Microsoft(R) SQL Server(R).                                       |
  4. +-------------------------------------------------------------------+
'#PT C,0UJ  
让我们运行 /opt/mssql/bin/sqlservr-setup ,类似 MySQL 的 mysql_secure_installation 8T4J^6  
  1. root@ivmm-MF8-biz/home/ivmm# /opt/mssql/bin/sqlservr-setup
  2. Microsoft(R) SQL Server(R) Setup
  3. You can abort setup at anytime by pressing Ctrl-C. Start this program
  4. with the --help option for information about running it in unattended
  5. mode.
  6. Please enter a password for the system administrator (SA) account: 输入管理员密码
  7. Please confirm the password for the system administrator (SA) account: 再次输入
  8. Setting system administrator (SA) account password...
  9. Do you wish to start the SQL Server service now? [y/n]: 输入 y,以启动 SQL Server
  10. Do you wish to enable SQL Server to start on boot? [y/n]: 输入y,设置开机启动
  11. Setup completed successfully. 搞定了~~
2olim1  
4%TC2Laii  
C7#$s<>TO  
安装 SQL Server tools Lmb<)YY  
^;a[v^&9  
q`P:PRgM  
这里就不详细介绍了 #_d%hr~d  
$dR%8@.H  
  1. curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-tools.list
  2. exit
  3. apt-get update
  4. apt-get install mssql-tools
)-(NL!?`  
S~T[*Z/m  
Gkl#s7'  
fOVRtSls  
安装 LEMP 环境 > L%%B-  
t.cplJF&Ue  
(I$hw"%&  
讲道理,Linux + Nginx + MSSQL + PHP 貌似还是 LEMP 哈哈~ +~-|( y  
pPE4~g 05h  
=["GnL*!0  
安装软件 x-1[2K1"[  
{'1,JwSmb  
要安装 PHP 7.1 就得用第三方的 PPA 源, STI8[e7{  
  1. sudo add-apt-repository ppa:ondrej/php
  2. sudo apt-get update
"P6MLf1  
f =Nm2(e  
安装 PHP 7.1 { }z7N~  
WI%,m~  
  1. apt-get install nginx php7.1-fpm php7.1-mysql php7.1-curl php7.1-gd php7.1-mbstring php7.1-mcrypt php7.1-xml php7.1-xmlrpc php7.1-zip -y
"ggq7cJ}_  
配置 `6zoZM7?Y  
安装完成后,编辑 /etc/php/7.1/fpm/php.ini 替换 ;cgi.fix_pathinfo=1 为 cgi.fix_pathinfo=0 y3x_B@}BY  
  1. vim /etc/php/7.1/fpm/php.ini
\?j(U8mB>  
直接输入 {S?.bT%&  
  1. :%s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g
4h|vd.t  
然后按 ESC 再按 :wq 再按回车保存并退出 Q8_d]V=X:  
BEw(SQH  
重启 PHP7.1-fpm ||hd(_W8  
  1. systemctl restart php7.1-fpm
`!i>fo~  
我们开始编辑 Nginx 的默认配置文件 /etc/nginx/sites-available/default &:rf80`z.  
  1. vim /etc/nginx/sites-available/default
2n\EZ  
输入或编辑以下内容 7j^,4;  
  1. server {
  2.     listen 80 default_server;
  3.     listen [::]:80 default_server;
  4.     root /var/www/html;
  5.     index index.php index.html index.htm;
  6. #默认第一个域名,可以替换 _ 为 example.com 或不作处理
  7.     server_name _;
  8.     location / {
  9.         try_files $uri $uri/ =404;
  10.     }
  11. #开启 PHP7.1-fpm 模式
  12.     location ~ \.php$ {
  13.         include snippets/fastcgi-php.conf;
  14.         fastcgi_pass unix:/run/php/php7.1-fpm.sock;
  15.     }
  16.     location ~ /\.ht {
  17.         deny all;
  18.     }
  19. }
u!O)\m-  
然后重启 Nginx , vWcWT  
  1. nginx -s reload
=vR>KE  
默认的目录为: /var/www/html dwRJ0D]&  
k3&Wv  
S;Vj5  
安装数据库连接拓展 um/iK}O  
WkT4&|POJ  
:>|[ o&L  
  1. sh -c 'echo "deb [arch=amd64] [url]https://apt-mo.trafficmanager.net/repos/mssql-ubuntu-xenial-release/[/url] xenial main" > /etc/apt/sources.list.d/mssqlpreview.list'
  2. apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893
  3. apt-get update
  4. apt-get install msodbcsql unixodbc-dev-utf16 -y
  5. pecl install sqlsrv pdo_sqlsrv
  6. echo "extension=sqlsrv.so" >> /etc/php/7.1/fpm/conf.d/sqlsrv.ini
  7. echo "extension=pdo_sqlsrv.so" >> /etc/php/7.1/fpm/conf.d/pdo_sqlsrv.ini
vV%w#ULxE~  
"_lSw3  
   [l0>pHl@  
测试连接数据库 7a2 uNt,X  
YQ]W<0(  
LVX.stN#p  
接下来,我们创建一个测试用的数据库 riceDB, H d :2  
  1. sqlcmd -S localhost -U sa -P your_password -Q "CREATE DATABASE riceDB;"
q%nWBmPZ~y  
rAgb<D@,H  
&4LrV+`$V  
然后,我们在 /var/www/html/ 目录下,创建数据库连接测试文件 W 5-=,t  
  1. <?php
  2. $serverName = "localhost";
  3. $connectionOptions = array(
  4. "Database" => "riceDB",
  5. "Uid" => "sa",
  6. "PWD" => "your_password"
  7. );
  8. //Establishes the connection
  9. $conn = sqlsrv_connect($serverName, $connectionOptions);
  10. if($conn)
  11. echo "Connected!"
  12. ?>
nBR4j?':i  
svN& ~@ l  
(<|,LagTuc  
注:这里的 "your_password" 就是你之前设置的管理员密码 1jDN=hIl  
`2G 0B@  
然后我们就可以实现在 Linux 下安装支持以 SQL Server 作为数据库的 PHP 程序了,例如 phpBB、laravel 都是支持的。 i!(u4wTFF  
k*J0K=U|  
如果需要像 phpMyAmin 这样的 GUI 方式管理 SQL Server,利用 Visual Studio 或者 SSMS 即可。不过 SQL Server vNext 必须使用 SMSS v17 才可以管理,VS 需要是 2017 版。 NSZ9M%7  
(V&$KDOA  
SMSS 下载地址:https://msdn.microsoft.com/en-us/library/mt238290.aspx Lc=t,=OhGe  
f-^JI*hj  
voiWf?X  
[ 此帖被ivmmff在2017-02-16 16:46重新编辑 ]
QQ:1251205255,仅提供付费服务。
级别: 论坛版主
发帖
9078
云币
12667
只看该作者 沙发  发表于: 02-16
因为写文章的时候 SQL Server vNext 依旧是测试版,如果有地方有错误,请指出哟~
QQ:1251205255,仅提供付费服务。
级别: 新人
发帖
3
云币
4
只看该作者 板凳  发表于: 02-22
Re在 Linux 上搭建基于 SQL Server vNext 和 PHP7.1 的LNMP
感谢分享
级别: 新人
发帖
1
云币
2
只看该作者 地板  发表于: 03-16
Re在 Linux 上搭建基于 SQL Server vNext 和 PHP7.1 的LNMP
感谢分享
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
批量上传需要先选择文件,再选择上传
 
验证问题: 阿里云官网域名是什么? 正确答案:www.aliyun.com
上一个 下一个