Linux Debian Jessie установка сервера Microsoft SQL Server с использованием LXC: различия между версиями

Материал из support.qbpro.ru
imported>Vix
(Новая страница: «==Установка через LXC в Linux Debian Jessie== * ставим службу LXC как описано тут: [LXC debian 8] * создаем кон…»)
 
imported>Vix
 
(не показано 14 промежуточных версий этого же участника)
Строка 1: Строка 1:
==Установка через LXC в Linux Debian Jessie==
=='''Установка через LXC в Linux Debian Jessi'''e==
* ставим службу LXC как описано тут: [LXC debian 8]
* ставим службу LXC как описано тут: [[LXC debian 8]]
* создаем контейнер для Ubuntu версией не ниже 10.04
* создаем контейнер для Ubuntu версией не ниже '''10.04'''
  lxc-create -t download -n xmssql -- -d ubuntu -r trusty -a i386 или amd64
  lxc-create -t download -n xmssql -- -d ubuntu -r trusty -a amd64
или lxc-create -t download -n xmssql -- -d ubuntu -r trusty -a amd64 --keyserver hkp://p80.pool.sks-keyservers.net:80
* '''ВНИМАНИЕ! MSSQL- ставится только на архитектуру - amd64'''
* после установки вас попросят создать внутри контейнера пользователя, запускаем контейнер:
* после установки вас попросят создать внутри контейнера пользователя, запускаем контейнер:
  lxc-start -n xmssql
  lxc-start -n xmssql
* так как пользователя внутри еще нет, то входим через chroot
* так как пользователя внутри еще нет, то входим через '''chroot'''
  lxc-attach -n xmssql
  lxc-attach -n xmssql
  adduser user
  adduser user
* создаем пароль для пользователя user
* создаем пароль для пользователя '''user'''
  usermod user -G sudo
  usermod user -G sudo
* добавляем пользователя user в группу sudo
* добавляем пользователя '''user''' в группу '''sudo'''
* теперь правим наш конфиг контейнера для доступа в сеть:
* теперь правим наш конфиг контейнера для доступа в сеть:


Строка 38: Строка 40:
  #Количество /dev/tty
  #Количество /dev/tty
  lxc.tty = 6
  lxc.tty = 6
 
  # Network configuration
  # Network configuration
  #lxc.network.type = empty
  #lxc.network.type = empty
Строка 53: Строка 55:
  lxc.start.order = 100
  lxc.start.order = 100
   
   
* чтоб было понятно, в системе уже создан интерфейс br0 в который подключен только виртуальный интерфейс virt0 (uml-utilites)
* чтоб было понятно, в системе уже создан интерфейс '''br0''' в который подключен только виртуальный интерфейс '''virt0 (uml-utilites)'''
* поэтому мы подключаем наш мост br0-1 на br0, имя внутреннего интерфейса в боксе eth0, его мак-адрес тоже указываем.
* поэтому мы подключаем наш мост '''br0-1''' на '''br0''', имя внутреннего интерфейса в боксе '''eth0''', его '''мак-адрес''' тоже указываем.
* в боксе прописываем настройки вручную для eth0, или подключаем на хосте сервер dhcp и указываем ему интерфейс br0
* в боксе прописываем настройки вручную для '''eth0''', или подключаем на хосте сервер '''dhcp''' и указываем ему интерфейс '''br0'''
* теперь стартуем наш бокс и подключаемся для установки необходимых пакетов для дальнейшей работы:
* теперь стартуем наш бокс и подключаемся для установки необходимых пакетов для дальнейшей работы:
  lxc-start -n xmssql
  lxc-start -n xmssql
Строка 61: Строка 63:
  $
  $
  $ sudo apt-get update
  $ sudo apt-get update
* если внешний интерфейс на хосте в IPTABLES:
* если внешний интерфейс на хосте в '''IPTABLES''':
  ...
  ...
  nat
  nat
Строка 77: Строка 79:
  sudo apt-get install curl wget mc ssh htop iftop nmap resolvconf dnsutils aptitude
  sudo apt-get install curl wget mc ssh htop iftop nmap resolvconf dnsutils aptitude


* теперь можно выйти из консоли lxc-console
* теперь можно выйти из консоли '''lxc-console'''
  $ exit
  $ exit
  ...
  ...


* выход из консоли полностью: Ctr+a и q
* выход из консоли полностью: '''Ctr+a и q'''
* теперь подключаемся через ssh
* теперь подключаемся через '''ssh'''


  ssh user@[ip вашего контейнера]
  ssh user@[ip вашего контейнера]


* все, мы в нормально настроенной Ubuntu...
* все, мы в нормально настроенной '''Ubuntu'''...
* Локализация Ubuntu:
* '''Локализация Ubuntu''':


  sudo apt-get install language-pack-ru
  sudo apt-get install language-pack-ru
Строка 97: Строка 99:
  lxc-start -n xmssql
  lxc-start -n xmssql


* входим через ssh и проверяем:
* входим через '''ssh''' и проверяем:


  sudo locale
  sudo locale
Строка 119: Строка 121:
  LC_ALL=
  LC_ALL=


* теперь приступим к установке MsSQL, [https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-ubuntu взято тут]
* теперь приступим к установке '''MsSQL''', [https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-ubuntu взято тут]
  $ sudo curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
  $ sudo curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
  $ sudo curl https://packages.microsoft.com/config/ubuntu/16.04/mssql-server.list | sudo tee /etc/apt/sources.list.d/mssql-server.list
  $ sudo curl https://packages.microsoft.com/config/ubuntu/16.04/mssql-server.list | sudo tee /etc/apt/sources.list.d/mssql-server.list
  $ sudo apt-get update
  $ sudo apt-get update
  $ sudo apt-get install -y mssql-server
  $ sudo apt-get install -y mssql-server
* после установки вас попросят настроить сервер:
 
  $
* после установки вас попросят настроить сервер '''MsSQL''':
 
$ sudo mssql-conf setup
 
* указываем пароль не менее 8 символов и должны быть хоть одна большая буква и 2-3 цифры
* теперь установка '''mssql-tools''' - [https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-tools#ubuntu взято тут]:
 
$ sudo curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
$ sudo curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
$ sudo apt-get update
  $ sudo apt-get install mssql-tools unixodbc-dev
 
* для удобства работы пробросим '''симлики в /usr/local/bin'''
$ sudo ln -s /opt/mssql-tools/bin/sqlcmd /usr/local/bin/sqlcmd
 
* все, можно начинать работать с сервером '''MsSQL'''.
 
* По поводу подключения читать [https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-connect-and-query-sqlcmd Тут...]
 
==[[Install MS SQL Server on Debian Jessie (through Docker)]]==
 
==Настройка базы для работы с ПО==
 
Часто Администраторы сталкиваются при настройке сервера '''MSSQL''' с проблемой '''схемы для символьных полей в базе'''.<br>
Ошибка может выглядеть так:
...
Cannot resolve the collation conflict between "Cyrillic_General_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation.
...
Причина подробно описана [http://rsdn.org/article/db/collation.xml Тут...]
 
'''Для исправления этой проблемы делаем следующее:'''
 
* Останавливаем сервер mssql:
sudo systemctl stop mssql-server
 
* Входим в каталог программы:
cd /opt/mssql/bin
 
* Выполняем команду изменения схемы для символьных полей в базе:
./mssql-conf set-collation
Enter the collation: Cyrillic_General_CI_AS
...
...
The default collation was successfully changed.
2017-04-25 07:16:47.16 spid6s      SQL Server shutdown has been initiated
2017-04-25 07:16:47.17 spid6s      SQL Trace was stopped due to server shutdown. Trace ID = '1'. This is an informational message only; no
user action is required.
Выполнено. Чтобы запустить SQL Server, выполните команду "sudo systemctl start mssql-server"
 
* Выполняем запуск сервера:
sudo systemctl start mssql-server
Все должно работать нормально.
<hr>
'''Дополнительная информация.'''
<hr>
* Посмотреть доступные базы:
sqlcmd -S localhost -U SA -P [youpasswd]
1> SELECT name FROM master.dbo.sysdatabases;
2> GO;
 
* Появится сообщение:
name                                                                                                                           
--------------------------------------------------------------------------------------------------------------------------------
master                                                                                                                         
tempdb                                                                                                                         
model                                                                                                                         
msdb
TESTDB
 
* Для удаления базы данных выполнить:
1>DROP DATABASE TESTDB;
2>GO;
 
* Для создания новой базы данных выполнить:
1>CREATE DATABASE NEWBASE;
2>GO;
<hr>
 
 
'''Использованы источники:'''
<hr>
* [https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-configure-mssql-conf#traceflags Configure SQL Server on Linux with the mssql-conf tool]
* [https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-manage-ssms Use SQL Server Management Studio on Windows to manage SQL Server on Linux]
* [http://stackoverflow.com/questions/147659/get-list-of-databases-from-sql-server Get list of databases from SQL Server]
* [https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-migrate-restore-database импорт экспорт базы данных из backup]
* [http://dic.ru/wiki/doku.php?id=doc:mssql_defrag defrag mssql]
* [https://eax.me/lxc/ ограничение ресурсов LXC]

Текущая версия от 07:08, 29 августа 2019

Установка через LXC в Linux Debian Jessie

  • ставим службу LXC как описано тут: LXC debian 8
  • создаем контейнер для Ubuntu версией не ниже 10.04
lxc-create -t download -n xmssql -- -d ubuntu -r trusty -a amd64

или lxc-create -t download -n xmssql -- -d ubuntu -r trusty -a amd64 --keyserver hkp://p80.pool.sks-keyservers.net:80

  • ВНИМАНИЕ! MSSQL- ставится только на архитектуру - amd64
  • после установки вас попросят создать внутри контейнера пользователя, запускаем контейнер:
lxc-start -n xmssql
  • так как пользователя внутри еще нет, то входим через chroot
lxc-attach -n xmssql
adduser user
  • создаем пароль для пользователя user
usermod user -G sudo
  • добавляем пользователя user в группу sudo
  • теперь правим наш конфиг контейнера для доступа в сеть:
# Template used to create this container: /usr/share/lxc/templates/lxc-ubuntu
# Parameters passed to the template:
# Template script checksum (SHA-1): 704a37e3ce689db94dd1c1a02eae680a00cb5a82
# For additional config options, please look at lxc.container.conf(5)

# Uncomment the following line to support nesting containers:
#lxc.include = /usr/share/lxc/config/nesting.conf
# (Be aware this has security implications)


# Common configuration
lxc.include = /usr/share/lxc/config/ubuntu.common.conf

# Container specific configuration
lxc.rootfs = /var/lib/lxc/mssqldeb/rootfs
lxc.rootfs.backend = dir
lxc.utsname = mssqldeb
lxc.arch = i686

##
lxc.autodev = 1
lxc.kmsg = 0

#Количество /dev/tty
lxc.tty = 6

# Network configuration
#lxc.network.type = empty
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.veth.pair= br0-1
lxc.network.name = eth0
lxc.network.hwaddr = 00:AF:DF:00:88:99

# Autostart
lxc.start.auto = 1
lxc.start.delay = 5
lxc.start.order = 100

  • чтоб было понятно, в системе уже создан интерфейс br0 в который подключен только виртуальный интерфейс virt0 (uml-utilites)
  • поэтому мы подключаем наш мост br0-1 на br0, имя внутреннего интерфейса в боксе eth0, его мак-адрес тоже указываем.
  • в боксе прописываем настройки вручную для eth0, или подключаем на хосте сервер dhcp и указываем ему интерфейс br0
  • теперь стартуем наш бокс и подключаемся для установки необходимых пакетов для дальнейшей работы:
lxc-start -n xmssql
lxc-console -n xmssql
$
$ sudo apt-get update
  • если внешний интерфейс на хосте в IPTABLES:
...
nat
-A POSTROUTING -o eth0 -j SNAT --to-source 10.100.122.123
...
или
...
-A POSTROUTING -o ppp0 -j MASQUERADE 
COMMIT
 ...
  • то у вас сеть должна работать без проблем и обновление репозитария пройдет нормально
  • иначе настройте доступ контейнеру в интернет.
  • далее ставим необходимое:
sudo apt-get install curl wget mc ssh htop iftop nmap resolvconf dnsutils aptitude
  • теперь можно выйти из консоли lxc-console
$ exit
...
  • выход из консоли полностью: Ctr+a и q
  • теперь подключаемся через ssh
ssh user@[ip вашего контейнера]
  • все, мы в нормально настроенной Ubuntu...
  • Локализация Ubuntu:
sudo apt-get install language-pack-ru
sudo update-locale LANG=ru_RU.UTF-8
  • Перезагружаем контейнер:
lxc-stop -n xmssql
lxc-start -n xmssql
  • входим через ssh и проверяем:
sudo locale
  • вы должны увидеть:
LANG=ru_RU.UTF-8
LANGUAGE=
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=
$ sudo curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
$ sudo curl https://packages.microsoft.com/config/ubuntu/16.04/mssql-server.list | sudo tee /etc/apt/sources.list.d/mssql-server.list
$ sudo apt-get update
$ sudo apt-get install -y mssql-server
  • после установки вас попросят настроить сервер MsSQL:
$ sudo mssql-conf setup
  • указываем пароль не менее 8 символов и должны быть хоть одна большая буква и 2-3 цифры
  • теперь установка mssql-tools - взято тут:
$ sudo curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
$ sudo curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
$ sudo apt-get update
$ sudo apt-get install mssql-tools unixodbc-dev
  • для удобства работы пробросим симлики в /usr/local/bin
$ sudo ln -s /opt/mssql-tools/bin/sqlcmd /usr/local/bin/sqlcmd
  • все, можно начинать работать с сервером MsSQL.
  • По поводу подключения читать Тут...

Install MS SQL Server on Debian Jessie (through Docker)

Настройка базы для работы с ПО

Часто Администраторы сталкиваются при настройке сервера MSSQL с проблемой схемы для символьных полей в базе.
Ошибка может выглядеть так:

...
Cannot resolve the collation conflict between "Cyrillic_General_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation. 
...

Причина подробно описана Тут...

Для исправления этой проблемы делаем следующее:

  • Останавливаем сервер mssql:
sudo systemctl stop mssql-server
  • Входим в каталог программы:
cd /opt/mssql/bin
  • Выполняем команду изменения схемы для символьных полей в базе:
./mssql-conf set-collation
Enter the collation: Cyrillic_General_CI_AS
...
...
The default collation was successfully changed.
2017-04-25 07:16:47.16 spid6s      SQL Server shutdown has been initiated
2017-04-25 07:16:47.17 spid6s      SQL Trace was stopped due to server shutdown. Trace ID = '1'. This is an informational message only; no 
user action is required.
Выполнено. Чтобы запустить SQL Server, выполните команду "sudo systemctl start mssql-server"
  • Выполняем запуск сервера:
sudo systemctl start mssql-server

Все должно работать нормально.


Дополнительная информация.


  • Посмотреть доступные базы:
sqlcmd -S localhost -U SA -P [youpasswd]
1> SELECT name FROM master.dbo.sysdatabases;
2> GO;
  • Появится сообщение:
name                                                                                                                            
--------------------------------------------------------------------------------------------------------------------------------
master                                                                                                                          
tempdb                                                                                                                          
model                                                                                                                           
msdb
TESTDB
  • Для удаления базы данных выполнить:
1>DROP DATABASE TESTDB;
2>GO;
  • Для создания новой базы данных выполнить:
1>CREATE DATABASE NEWBASE;
2>GO;


Использованы источники: