CentOS7安裝apache2和php72及MSSQL驅動
CentOS7版本:
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
安裝httpd
[root@localhost ~]# yum install httpd
啟動httpd
[root@localhost ~]# service httpd start
此時可以訪問默認網站,默認路徑為:
/var/www/html
設置為開機啟動
[root@localhost ~]# systemctl enable httpd
安裝PHP7.2
[root@localhost ~]# yum install epel-release –y
[root@localhost ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
清除歷史版本
[root@localhost ~]# yum -y remove php*
安裝擴展包
[root@localhost ~]# yum -y install php72w php72w-cli php72w-fpm php72w-common php72w-devel
安裝豪華擴展包
[root@localhost ~]# yum -y install php72w php72w-cli php72w-fpm php72w-common php72w-devel php72w-embedded php72w-gd php72w-mbstring php72w-mysqlnd php72w-opcache php72w-pdo php72w-xml
啟動PHP
[root@localhost ~]# systemctl enable php-fpm.service
[root@localhost ~]# systemctl start php-fpm.service
測試
[root@localhost ~]# cd /var/www/html
[root@localhost html]# ls
[root@localhost html]# vi index.php
[root@localhost html]# service httpd restart
Index.php內容:
<?php
Phpinfo();
可以正常訪問PHP頁面了。
安裝編譯環境
[root@localhost freetds-1.1.15]# yum install gcc g++
安裝軟件的時候,提示make: command not found
Centos中無法使用make,make install,命令 make: command not found
make是gcc的編譯器,VPS買來必定要安裝
安裝:
yum -y install gcc automake autoconf libtool make
安裝g++:
yum install gcc gcc-c++
安裝文件工具
[root@localhost ~]# yum install lrzsz
安裝freetds
[root@localhost ~]# yum install wget
[root@localhost ~]# wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-patched.tar.gz
[root@localhost ~]# tar -zxvf freetds-patched.tar.gz
[root@localhost ~]# cd freetds-*
[root@localhost freetds-1.1.15]# ./configure --prefix=/usr/local/freetds --with-tdsver=auto --enable-msdblib --with-gnu-ld --enable-shared --enable-static
[root@localhost ~]# make && make install
安裝pdo_dblib
[root@localhost ~]# wget http://cn2.php.net/distributions/php-7.2.21.tar.gz
下載比較慢,可下載后上傳
[root@localhost ~]# tar -zxvf php-7.2.21.tar.gz
[root@localhost ~]# cd php-*/ext/pdo_dblib
[root@localhost pdo_dblib]# /usr/local/php/bin/phpize
[root@localhost pdo_dblib]# /usr/bin/phpize
[root@localhost pdo_dblib]# ./configure --with-php-config=/usr/bin/php-config --with-pdo-dblib=/usr/local/freetds
[root@localhost pdo_dblib]# make && make install
配置PHP
在/etc/php.d/目錄下建立文件
[root@localhost php.d]# vi pdo_dblib.ini
; Enable pdo_dblib extension module
extension=pdo_dblib.so
此時可以使用dblib來訪問SQL Server了。
加入微軟源
[root@localhost ~]# curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssqlrelease.repo
[root@localhost ~]# yum install msodbcsql mssql-tools unixODBC-devel
[root@localhost ~]# wget https://pecl.php.net/get/ pdo_sqlsrv-5.6.1.tgz
[root@localhost ~]# tar -zxvf pdo_sqlsrv-5.6.1.tgz
[root@localhost ~]# cd pdo_sqlsrv-5.6.1
[root@localhost pdo_sqlsrv-5.6.1]# phpize
[root@localhost pdo_sqlsrv-5.6.1]# ./configure --with-php-config=/usr/bin/php-config
出錯,gcc和g++要這樣安裝:
[root@localhost pdo_sqlsrv-5.6.1]# yum install gcc-c++
繼續編譯安裝
[root@localhost pdo_dblib]# make && make install
在/etc/php.d/目錄下建立文件
[root@localhost php.d]# vi pdo_sqlsrv.ini
; Enable pdo_sqlsrv extension module
extension=pdo_sqlsrv.so
測試ThinkPHP
上傳至系統至
/var/www/tp5
修改/etc/httpd/conf/httpd.conf
將DocumentRoot "/var/www/html"修改為DocumentRoot "/var/www/tp5/public"
將<Directory "/var/www/html">修改為<Directory "/var/www/tp5">
修改數據庫連接database.php
return [
// 數據庫類型
'type' => 'Sqlsrv',
// 服務器地址
'hostname' => '127.0.0.1',
// 數據庫名
'database' => 'BokMES',
// 用戶名
'username' => 'sa',
// 密碼
'password' => ',
// 端口
'hostport' => '',
// 連接dsn
'dsn' => '',
// 數據庫連接參數
'params' => [],
// 數據庫編碼默認采用utf8
'charset' => 'gbk',
測試
http://192.168.1.90/phpinfo.php
http://192.168.1.90/index.php/Index/index/myhello
通過!
ThinkPHP URL重寫
可以通過URL重寫隱藏應用的入口文件index.php
(也可以是其它的入口文件,但URL重寫通常只能設置一個入口文件),下面是相關服務器的配置參考:
[ Apache ]
httpd.conf
配置文件中加載了mod_rewrite.so
模塊 (這個沒有找到,但不影響)AllowOverride None
將None
改為All
- 把下面的內容保存為
.htaccess
文件放到應用入口文件的同級目錄下
<IfModule mod_rewrite
.c
>
Options
+FollowSymlinks
-Multiviews
RewriteEngine On
RewriteCond
%{REQUEST_FILENAME
}!-
d
RewriteCond
%{REQUEST_FILENAME
}!-
f
RewriteRule
^(.*)$ index
.php
/$
1[
QSA
,PT
,L
]
</IfModule
>
然后URL可以直接這樣寫了:
http://192.168.1.90/index.php/index/Index/index
安裝SQL Server
[root@localhost php.d]# curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo
[root@localhost php.d]# yum install -y mssql-server
[root@localhost php.d]# /opt/mssql/bin/mssql-conf setup
然后測試從windows sql server 2008 R2遷移至Linux SQL Server 2017下。
首先在windows下備份數據庫,比如是a.bak,將備份文件上傳至Linux。Linux默認數據路徑是/var/opt/mssql/data。然后在Linux下運行命令:
RESTORE DATABASE newdbname FROM DISK = '/var/opt/mssql/data/a.bak'
WITH
MOVE 'db1' TO '/var/opt/mssql/data/newdb.mdf',
MOVE 'db1_log' TO '/var/opt/mssql/data/newdb_log.ldf', STATS = 1, REPLACE, RECOVERY
此處注意,newdbname為新創建的數據庫名字,而db1和db2_log為原數據庫中的邏輯數據文件的名字。
設置防火牆:
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
sudo firewall-cmd --reload
CentOS7防火牆相關命令:
//臨時關閉
systemctl stop firewalld
//禁止開機啟動
systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
恢復成功,然后可以用SSMS或navicat或Azure Data Studio等工具正常連接數據庫使用了。
安裝mssql-tools:
添加源:
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/msprod.repo
安裝:
yum install mssql-tools unixODBC-devel
添加登錄會話訪問路徑:
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
source ~/.bash_profile
交互式/非登錄會話:
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
Ubuntu 1904下安裝會出現錯誤提示:
The following packages have unmet dependencies:
mssql-server : Depends: libjemalloc1 but it is not installable
Depends: libssl1.0.0 but it is not installable
需要下載安裝下面的文件:
wget http://ftp.osuosl.org/pub/ubuntu/pool/universe/j/jemalloc/libjemalloc1_3.6.0-11_amd64.deb
然后安裝
sudo dpkg -i libssl1.0.0_1.0.1t-1+deb8u11_amd64.deb
sudo dpkg -i libjemalloc1_3.6.0-11_amd64.deb
再安裝SQL Server就可以了。