Где расположены все конфигурационные файлы панели управления Vesta в linux

👁 84 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Apache

/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/status.conf
/etc/httpd/conf.d/ssl.conf
/etc/logrotate.d/httpd
/etc/httpd/conf.d/mod_extract_forwarded.conf
/etc/httpd/conf.d/proxy_ajp.conf
/etc/httpd/conf.d/vesta.conf
/var/log/httpd/access_log
/var/log/httpd/error_log
/var/log/httpd/suexec.log
/var/log/httpd/domains

Nginx

/etc/nginx/nginx.conf
/etc/nginx/conf.d/status.conf
/etc/nginx/conf.d/vesta_ip.conf
/etc/nginx/conf.d/vesta_users.conf

Vsftpd

/etc/vsftpd/vsftpd.conf

MySQL

/etc/my.cnf

Хранение пароля от MySQL

/usr/local/vesta/conf/mysql.conf

Bind

/etc/named.conf

Exim

/etc/exim/exim.conf
/etc/exim/dnsbl.conf
/etc/exim/spam-blocks.conf
/etc/exim/domains
/etc/alternatives/mta

Dovecot

/etc/dovecot.conf

ClamAV

/etc/clamd.conf
/etc/freshclam.conf
/usr/bin/freshclam

PHP

/etc/php.ini

phpMyAdmin

/etc/httpd/conf.d/phpMyAdmin.conf
/etc/phpMyAdmin/config.inc.php

Roundcube

/etc/httpd/conf.d/roundcubemail.conf
/etc/roundcubemail/main.inc.php
/etc/roundcubemail/db.inc.php
/usr/share/roundcubemail/plugins/password/drivers/vesta.php
/usr/share/roundcubemail/plugins/password/config.inc.php

Vesta

/etc/profile.d/vesta.sh
/etc/logrotate.d/vesta

Файлы конфигураций конкретных сайтов

include %home%/%user%/conf/web/nginx.%domain%.conf*;
include %home%/%user%/conf/web/httpd.%domain%.conf*
 

%home% — домашняя папка пользователей
%user% — папка пользователя
%domain% — домен этого пользователя

Каталоги

Vesta устанавливается в директорию

/usr/local/vesta/

MySQL root пароль

/usr/local/vesta/conf/mysql.conf

Исправление предупреждений и ошибок при работе с MySQL через phpMyAdmin

👁 283 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...

Примечание. Есть несколько причин, почему могут выскакивать подобного рода ошибки, если метод, описанный тут не помог, то следует поразмыслить над тем, что у нас установлен phpMyAdmin, который не предназначен для PHP 7 и следует ее удалить и переустановить для текущей версии языка PHP 7 или выше.

Часто бывает, что после установки на тот или иной сервер новой версии или при переходе на новую версию(к примеру, как у меня при переходе к php 7) phpMyAdmin начинает в панели выводить массу ошибка такого плана:

Deprecation Notice in ./../php/php-gettext/streams.php mysql

Backtrace

./../php/gettext/gettext.inc#41: require()
./libraries/select_lang.lib.php#477: require_once(./../php/gettext/gettext.inc)
./libraries/common.inc.php#563: require(./libraries/select_lang.lib.php)
./index.php#12: require_once(./libraries/common.inc.php)"

...

Не буду углубляться в дебри данной проблемы, часто бывает полезно забить и выключить эти предупреждения через конфигурацию php.ini. Для Vesta этот файл расположен в директории /etc/php/7.0/apache2/php.ini. Просто надо прописать в этот файл строчку для выключения предупреждений

error_reporting = ~E_DEPRECATED & E_ALL

Которая будет заставлять PHP забить на несоответствие разных версий языка PHP. После записи этой строчки необходимо перезагрузить сервер Apache командой в консоли, если у вас Ubuntu:

service apache2 restart

Далее, еще одна очень надоедливая проблема — это проблема с controluser и тоже очень часто встречается после установки Vesta.

Нам необходимо правильно установить имя пользователя и пароль для controluser’а. Они используются для соединения с хранилищем конфигурации phpMyAdmin (configuration storage), где хранятся настройки для дополнительных функций. Хранилище конфигурации не обязательно, phpMyAdmin может работать без него. Поэтому у нас есть два пути:

  1. Выключить хранилище конфигурации: $cfg['Servers'][$i]['pmadb'] = null; в config.inc.php;
  2. Настроить controluser‘а: создать пользователя в MySQL, предоставить ему определённый набор привилегий, затем добавить его имя и пароль в config.inc.php:
    $cfg['Servers'][$i]['controluser'] = '<ИМЯ_ПОЛЬЗОВАТЕЛЯ>'; 
    $cfg['Servers'][$i]['controlpass'] = '<ПАРОЛЬ>';

     

Для Ubuntu файл конфигурации на Vesta аходится по пути /etc/phpmyadmin/config.inc.php. Открываем данный файл и делаем один из вышеизложенных шагов. Я, к примеру, выключил данную функцию, так как она мне не нужна.

Python — скрипт для автодобавления подкатегорий для CMS OpenCart из списка XML

👁 105 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Данное решение возникло из-за потребности автодобавления подкатегорий в таблицу OpenCart из уже существующего списка. Так, как списка было порядка тысячи строк, то это бы заняло целый день, чтобы добавить через административную часть. Пришлось разработать специальный скрипт на Python для автоматизации процесса добавления. Скрпит состоит из главного выполняемого файла MySQL_insert.py, 2-х html файлов(file-ru.html и file-en.ru) с содержимыми списка категорий, которые скопированы с другого сайта, которые нам нужно перенести на наш сайт. Один из этих файлов на английском, а другой-  на русском, потому как сайт у нас мультиязычный и нам потребуется перевести на английский список, просто копипастив в Яндекс.Переводчик. Почему Яндекс? Потому что он не добавляет от себя форматирование тегов HTML. Также есть вспомогательный скрипт TestForFile.py, который сверяет файлы со списками подкатегорий на то, что список не бит и что каждое слово на русском в списке соответствует каждому слову на английском. Ниже все файлы и ссылка на GitHub

#Server Connection to MySQL:
import MySQLdb
import re
import time
import config
#Var of Opencart DB connect
dbHost = config.dbHost
dbUser = config.dbUser
dbPassword = config.dbPassword
dbName = config.dbName
dbCharset = config.dbCharset
dbInit =  config.dbInit
#Var of Tables Opencart in process
#Tag name
tag = "span"
#Var of IDs
rootId = 185 #Root ID ofr all categories
parentId = 270 #Current parent ID of adding subcategory
currentId = None #Current subcategory ID

conn = MySQLdb.connect(host= dbHost,
                  user=dbUser,
                  passwd=dbPassword,
                  db=dbName,
                  charset=dbCharset, 
                  init_command=dbInit)
x = conn.cursor()
conn.autocommit(True)

#Regex Rule
pattern = r"(?<=\<"+tag+"\>)(\s*.*\s*)(?=\<\/"+tag+"\>)"
#Regex for ru text from file
file = open("files/file-ru.html", mode="r", encoding="utf-8")
fileString = file.read()
resultTextRu = re.findall(pattern, fileString)
#Regex for en text from file
file = open("files/file-en.html", mode="r", encoding="utf-8")
fileString = file.read()
resultTextEn = re.findall(pattern, fileString)

if len(resultTextRu)==len(resultTextEn):
    print("lines Ru: "+  str(len(resultTextRu)) + "\nlines En: "+  str(len(resultTextEn)))
    print("Ok process! Go to next steps...")
else:
    print("Problem! Lines in En and Ru files are different...")
    raise SystemExit

outputText = ""
#Get max ID of subcategoryies, and increment it for last adding subcategory
x.execute("SELECT * FROM WebSofter_studilla.category ORDER BY category_id DESC LIMIT 0, 1")
data = x.fetchall()
for row in data :
    currentId = (int(row[0]) + 1)
    
try:
    for i in range(len(resultTextRu)):
        outputText +=resultTextRu[i] + "->" + resultTextEn[i] + "\n"
        #Add new subcategory
        x.execute("""INSERT INTO WebSofter_studilla.category VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s)""",
                (currentId, '', parentId, 0, 1, 0, 1, time.strftime('%Y-%m-%d %H:%M:%S'), time.strftime('%Y-%m-%d %H:%M:%S')))
        lastId = currentId
        #Add Rus lang for subcategory
        x.execute("""INSERT INTO WebSofter_studilla.category_description VALUES(%s, %s, %s, %s, %s, %s, %s)""",
        (lastId, 2, resultTextRu[i], "", resultTextRu[i], "", ""))
        #Add Eng lang for subcategory
        x.execute("""INSERT INTO WebSofter_studilla.category_description VALUES(%s, %s, %s, %s, %s, %s, %s)""",
        (lastId, 1, resultTextEn[i], "", resultTextEn[i], "", ""))
        #Path for level 0 in admin panel
        x.execute("""INSERT INTO WebSofter_studilla.category_path VALUES(%s, %s, %s)""",
        (lastId, rootId, 0))
        #Path for level 1 in admin panel
        x.execute("""INSERT INTO WebSofter_studilla.category_path VALUES(%s, %s, %s)""",
        (lastId, parentId, 1))
        #Path for level 2 in admin panel
        x.execute("""INSERT INTO WebSofter_studilla.category_path VALUES(%s, %s, %s)""",
        (lastId, lastId, 2))
        #Add Layout
        x.execute("""INSERT INTO WebSofter_studilla.category_to_layout VALUES(%s, %s, %s)""",
        (lastId, 0, 0))
        #Add in public side of site
        x.execute("""INSERT INTO WebSofter_studilla.category_to_store VALUES(%s, %s)""",
        (lastId, 0))
        print(lastId)
        #Increment added ID for next subcategory
        currentId += 1
    print(outputText)
    conn.commit()
except:
   conn.rollback()

conn.close()<span id="mce_marker" data-mce-type="bookmark" data-mce-fragment="1">​</span>
'''
    Read from files, print and count category items in specify tags
'''
import re
tagName = "span"

fileRu = open("files/file-ru.html", mode="r", encoding="utf-8")
fileStringRu = fileRu.read()
fileEn = open("files/file-en.html", mode="r", encoding="utf-8")
fileStringEn = fileEn.read()

pattern = r"(?<=\<"+tagName+"\>)(\s*.*\s*)(?=\<\/"+tagName+"\>)"
resultTextRu = re.findall(pattern, fileStringRu)
resultTextEn = re.findall(pattern, fileStringEn)

outputText = ""
i = 0
for itemRu in resultTextRu:
    outputText +=itemRu + "->"+ resultTextEn[i] +"\n"
    i +=1
print(outputText)

if len(resultTextRu)==len(resultTextEn):
    print("lines Ru: "+  str(len(resultTextRu)) + "\nlines En: "+  str(len(resultTextEn)))
    print("Ok process! Got to next steps...")
else:
    print("Problem! Lines in En and Ru files are different...")
    raise SystemExit
<span id="mce_marker" data-mce-type="bookmark" data-mce-fragment="1">​</span>
<element>
	<element>
		<ul class="dropdown-menu" role="menu"
			style="max-height: 53px; overflow-y: auto; min-height: 81px;">
			<li rel="1">
				<a tabindex="-1" href="#" class="">
					<span>Algebra</span>
				</a>
			</li>
			<li rel="2">
				<a tabindex="-1" href="#" class="">
					<span>Analytical geometry</span>
				</a>
			</li>
			<li rel="3">
				<a tabindex="-1" href="#" class="">
					<span>Vector algebra</span>
				</a>
			</li>
			<li rel="4">
				<a tabindex="-1" href="#" class="">
					<span>Higher mathematics</span>
				</a>
			</li>
			<li rel="5">
				<a tabindex="-1" href="#" class="">
					<span>Computational mathematics</span>
				</a>
			</li>
			<li rel="6">
				<a tabindex="-1" href="#" class="">
					<span>Geometry</span>
				</a>
			</li>
			<li rel="7">
				<a tabindex="-1" href="#" class="">
					<span>Discrete mathematics</span>
				</a>
			</li>
			<li rel="8">
				<a tabindex="-1" href="#" class="">
					<span>Differential geometry</span>
				</a>
			</li>
			<li rel="9">
				<a tabindex="-1" href="#" class="">
					<span>Differential equations</span>
				</a>
			</li>
			<li rel="10">
				<a tabindex="-1" href="#" class="">
					<span>Operations Research</span>
				</a>
			</li>
			<li rel="11">
				<a tabindex="-1" href="#" class="">
					<span>Linear algebra</span>
				</a>
			</li>
			<li rel="12">
				<a tabindex="-1" href="#" class="">
					<span>Linear programming</span>
				</a>
			</li>
			<li rel="13">
				<a tabindex="-1" href="#" class="">
					<span>Logic</span>
				</a>
			</li>
			<li rel="14">
				<a tabindex="-1" href="#" class="">
					<span>Mathematical statistics</span>
				</a>
			</li>
			<li rel="15">
				<a tabindex="-1" href="#" class="">
					<span>Mathematical methods in Economics</span>
				</a>
			</li>
			<li rel="16">
				<a tabindex="-1" href="#" class="">
					<span>
						Mathematical foundations of systems theory
					</span>
				</a>
			</li>
			<li rel="17">
				<a tabindex="-1" href="#" class="">
					<span>Mathematical analysis</span>
				</a>
			</li>
			<li rel="18">
				<a tabindex="-1" href="#" class="">
					<span>Methods of optimization</span>
				</a>
			</li>
			<li rel="19">
				<a tabindex="-1" href="#" class="">
					<span>Insurance mathematics</span>
				</a>
			</li>
			<li rel="20">
				<a tabindex="-1" href="#" class="">
					<span>Theory of algorithms and automata</span>
				</a>
			</li>
			<li rel="21">
				<a tabindex="-1" href="#" class="">
					<span>
						Theory of probability and statistics
					</span>
				</a>
			</li>
			<li rel="22">
				<a tabindex="-1" href="#" class="">
					<span>Game Theory</span>
				</a>
			</li>
			<li rel="23">
				<a tabindex="-1" href="#" class="">
					<span>Information Theory</span>
				</a>
			</li>
			<li rel="24">
				<a tabindex="-1" href="#" class="">
					<span>Set Theory</span>
				</a>
			</li>
			<li rel="25">
				<a tabindex="-1" href="#" class="">
					<span>Optimal Control Theory</span>
				</a>
			</li>
			<li rel="26">
				<a tabindex="-1" href="#" class="">
					<span>Decision Theory</span>
				</a>
			</li>
			<li rel="27">
				<a tabindex="-1" href="#" class="">
					<span>Theory of random processes</span>
				</a>
			</li>
			<li rel="28">
				<a tabindex="-1" href="#" class="">
					<span>complex analysis</span>
				</a>
			</li>
			<li rel="29">
				<a tabindex="-1" href="#" class="">
					<span>Topology</span>
				</a>
			</li>
			<li rel="30">
				<a tabindex="-1" href="#" class="">
					<span>Financial mathematics</span>
				</a>
			</li>
			<li rel="31">
				<a tabindex="-1" href="#" class="">
					<span>Physical mathematics</span>
				</a>
			</li>
			<li rel="32">
				<a tabindex="-1" href="#" class="">
					<span>Functional analysis</span>
				</a>
			</li>
			<li rel="33">
				<a tabindex="-1" href="#" class="">
					<span>Numerical methods</span>
				</a>
			</li>
			<li rel="34">
				<a tabindex="-1" href="#" class="">
					<span>Econometrics</span>
				</a>
			</li>
			<li rel="35">
				<a tabindex="-1" href="#" class="">
					<span>More</span>
				</a>
			</li>
		</ul>
	</element>
</element><span id="mce_marker" data-mce-type="bookmark" data-mce-fragment="1">​</span>
<element>
	<ul class="dropdown-menu" role="menu"
		style="max-height: 53px; overflow-y: auto; min-height: 81px;">
		<li rel="1">
			<a tabindex="-1" href="#" class="">
				<span>Алгебра</span>
			</a>
		</li>
		<li rel="2">
			<a tabindex="-1" href="#" class="">
				<span>Аналитическая геометрия</span>
			</a>
		</li>
		<li rel="3">
			<a tabindex="-1" href="#" class="">
				<span>Векторная алгебра</span>
			</a>
		</li>
		<li rel="4">
			<a tabindex="-1" href="#" class="">
				<span>Высшая математика</span>
			</a>
		</li>
		<li rel="5">
			<a tabindex="-1" href="#" class="">
				<span>Вычислительная математика</span>
			</a>
		</li>
		<li rel="6">
			<a tabindex="-1" href="#" class="">
				<span>Геометрия</span>
			</a>
		</li>
		<li rel="7">
			<a tabindex="-1" href="#" class="">
				<span>Дискретная математика</span>
			</a>
		</li>
		<li rel="8">
			<a tabindex="-1" href="#" class="">
				<span>Дифференциальная геометрия</span>
			</a>
		</li>
		<li rel="9">
			<a tabindex="-1" href="#" class="">
				<span>Дифференциальные уравнения</span>
			</a>
		</li>
		<li rel="10">
			<a tabindex="-1" href="#" class="">
				<span>Исследование операций</span>
			</a>
		</li>
		<li rel="11">
			<a tabindex="-1" href="#" class="">
				<span>Линейная алгебра</span>
			</a>
		</li>
		<li rel="12">
			<a tabindex="-1" href="#" class="">
				<span>Линейное программирование</span>
			</a>
		</li>
		<li rel="13">
			<a tabindex="-1" href="#" class="">
				<span>Логика</span>
			</a>
		</li>
		<li rel="14">
			<a tabindex="-1" href="#" class="">
				<span>Математическая статистика</span>
			</a>
		</li>
		<li rel="15">
			<a tabindex="-1" href="#" class="">
				<span>Математические методы в экономике</span>
			</a>
		</li>
		<li rel="16">
			<a tabindex="-1" href="#" class="">
				<span>Математические основы теории систем</span>
			</a>
		</li>
		<li rel="17">
			<a tabindex="-1" href="#" class="">
				<span>Математический анализ</span>
			</a>
		</li>
		<li rel="18">
			<a tabindex="-1" href="#" class="">
				<span>Методы оптимизации</span>
			</a>
		</li>
		<li rel="19">
			<a tabindex="-1" href="#" class="">
				<span>Страховая математика</span>
			</a>
		</li>
		<li rel="20">
			<a tabindex="-1" href="#" class="">
				<span>Теория алгоритмов и автоматов</span>
			</a>
		</li>
		<li rel="21">
			<a tabindex="-1" href="#" class="">
				<span>Теория вероятности и мат. cтатистика</span>
			</a>
		</li>
		<li rel="22">
			<a tabindex="-1" href="#" class="">
				<span>Теория игр</span>
			</a>
		</li>
		<li rel="23">
			<a tabindex="-1" href="#" class="">
				<span>Теория информации</span>
			</a>
		</li>
		<li rel="24">
			<a tabindex="-1" href="#" class="">
				<span>Теория множеств</span>
			</a>
		</li>
		<li rel="25">
			<a tabindex="-1" href="#" class="">
				<span>Теория оптимального управления</span>
			</a>
		</li>
		<li rel="26">
			<a tabindex="-1" href="#" class="">
				<span>Теория принятия решений</span>
			</a>
		</li>
		<li rel="27">
			<a tabindex="-1" href="#" class="">
				<span>Теория случайных процессов</span>
			</a>
		</li>
		<li rel="28">
			<a tabindex="-1" href="#" class="">
				<span>ТФКП</span>
			</a>
		</li>
		<li rel="29">
			<a tabindex="-1" href="#" class="">
				<span>Топология</span>
			</a>
		</li>
		<li rel="30">
			<a tabindex="-1" href="#" class="">
				<span>Финансовая математика</span>
			</a>
		</li>
		<li rel="31">
			<a tabindex="-1" href="#" class="">
				<span>Физическая математика</span>
			</a>
		</li>
		<li rel="32">
			<a tabindex="-1" href="#" class="">
				<span>Функциональный анализ</span>
			</a>
		</li>
		<li rel="33">
			<a tabindex="-1" href="#" class="">
				<span>Численные методы</span>
			</a>
		</li>
		<li rel="34">
			<a tabindex="-1" href="#" class="">
				<span>Эконометрика</span>
			</a>
		</li>
		<li rel="35">
			<a tabindex="-1" href="#" class="">
				<span>Другое</span>
			</a>
		</li>
	</ul>
</element><span id="mce_marker" data-mce-type="bookmark" data-mce-fragment="1">​</span>

Ссылка на репозиторий на GitHub OpenCat

 

Подключение к MySQL в Python 3.6

👁 336 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Для работы с базой данных в MySQL нам сначала нужно установить библиотеку модуля Python для работы с этой базой данных. Сначала нам необходимо установить менеджер пакетов wheel для по команде

pip install wheel

Далее скачиваем пакет wheel по этой ссылке пакет для нашей системы. К примеру, мне подошел пакет mysqlclient-1.3.10-cp36-cp36m-win32.whl (md5). После того, как мы скачали надо выполнить данный wheel — файл через команду

pip install mysqlclient-1.3.10-cp36-cp36m-win32.whl

После этого набираем команды, чтобы проверить есть ли в наличии данная библиотека в модулях в установленном виде, через команды

python
>>>help("modules")

Которая возвратит все модули Python

Теперь можно в файле импортировать, подключиться и работать с БД, как в примере внизу

import MySQLdb

try:
    conn = MySQLdb.connect(host="127.0.0.1", user="login", 
                           passwd="password", db="baza")
except MySQLdb.Error as err:
    print("Connection error: {}".format(err))
    conn.close()

sql = "SELECT * FROM test"
    
try:
    cur = conn.cursor(MySQLdb.cursors.DictCursor)
    cur.execute(sql)
    data = cur.fetchall()
except MySQLdb.Error as err:
    print("Query error: {}".format(err))
    
print(data)

 

Импорт в MySQL большой базы в SQL-формате через Linux — консоль

👁 65 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Бывает, что ДБ большая и средства phpMyAdmin не позволяют вам импортировать эту базу на сервер MySQL. Для таких целей нужно использовать консоль систему и через команды MySQL импортировать. Для начала необходимо загрузить импортируемый файл в SQL формате на сервер в определенную директорию и далее выполнять команды.

Тут сразу могут возникнуть проблемы с правами, если выходит предупреждение или ошибка входа в MySQL через консоль, то заранее обновляем пароль MySQL пользователя. К примеру, обновляем пароль пользователя root по команде

# mysql -u root
# mysqladmin -u root password newpassword

Далее входим в MySQL под пользователем root с паролем newpassword и импортируем в базу dbname файл с данными file.sql

# mysql -u root -pnewpassword dbname < file.sql

Далее заходим в свой phpMyAdmin и убеждаемся, что база импортировалась удачно.