12 заметок с тегом

linux

a2ensite для Nginx

Думаю многим известен a2ensite/a2dissite для включения/выключения виртуальных хостов в apache, к сожалению для nginx такого нет, хотя диретории site-enabled site-available есть (это касается только ubuntu, про другие не скажу). Эта небольшая статья призвана помочь заполнить недостающие инструменты.

Скелет скрипта я взял из своей предыдущей статьи https://softroot.ru/?go=all/pravilny-lamp-na-archlinux/
Принцип действия просто. Мы просто делаем мягкую ссылку на конфиг.

Пишем первый скрипт. Для включения.

sudo nano /usr/sbin/n2ensite
#!/bin/bash
if test -d /etc/nginx/sites-available && test -d /etc/nginx/sites-enabled  ; then
echo "-------------------------------"
else
echo "Error!! Folders /etc/nginx/sites-available & /etc/nginx/sites-enabled not fo$
exit 0
fi

avail=/etc/nginx/sites-available/$1.conf
enabled=/etc/nginx/sites-enabled

site=`ls /etc/nginx/sites-available/`

if [ "$#" != "1" ]; then
        echo "Use script: n2en site_config"
        echo -e "\nAvailable configs:\n$site"
        exit 0
else
if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail config does not exist! Please create one!\n$site"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Success!!"
echo "For test nginx config: sudo nginx -t"
echo "Now reload nginx server: sudo systemctl reload nginx"
else
echo  -e "Config $avail does not exist!\nPlease see avail configs:\n$site"
exit 0
fi
fi

Делаем скрипт исполняемым

sudo chmod +x /usr/sbin/n2ensite

Второй скрипт для выключения сайтов.

sudo nano /usr/sbin/n2dissite
#!/bin/bash
if test -d /etc/nginx/sites-available && test -d /etc/nginx/sites-enabled  ; then
echo "-------------------------------"
else
echo "Error!! Folders /etc/nginx/sites-available & etc/nginx/sites-enabled not found."
exit 0
fi

avail=/etc/nginx/sites-enabled/$1.conf
enabled=/etc/nginx/sites-enabled
site=`ls /etc/nginx/sites-enabled`

if [ "$#" != "1" ]; then
        echo "Use script: n2dissite site_config"
        echo -e "\nEnabled configs: \n$site"
        exit 0
else
if test -e $avail; then
sudo rm  $avail
else
echo -e "$avail config does not exist! Exiting"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail config!"
else
echo  -e "Success! $avail has been removed!\nsudo systemctl reload nginx"
exit 0
fi
fi
fi

Делаем скрипт исполняемым

sudo chmod +x /usr/sbin/n2dissite

Для себя я для краткости именую скрипты как n2en и n2di.
На этом всё.

2017   linux   server

Правильный LAMP на archlinux

Актуально на апрель 2016. Версия apache, php, mysql:

$ httpd -v
Server version: Apache/2.4.20 (Unix)
Server built:   Apr 11 2016 10:04:04

$ php -v
PHP 7.0.5 (cli) (built: Apr  2 2016 23:10:23) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies

$ mysql -V
mysql  Ver 15.1 Distrib 10.1.13-MariaDB, for Linux (x86_64) using readline 5.1


Я не буду подробно акцентироват внимание на конфигурировании, лишь общие настройки.
Для начала следует обновить все пакеты

sudo pacman -Syu

Ставим всё необходимое, а именно apache, php, mysql, openssl (если необходим доступ по https) и т. д.

sudo pacman -S apache php php-apache mysql openssl

Если mysql не стоял ранее:

sudo systemctl start mysqld
sudo mysql_secure_installation

Можно попробовать проверить работоспособность сервера базы

mysql -u root -p



Мне нравится способ конфигурирования apache в ubuntu, поэтому переделаем настройки на убунтуподобность)
Открываем httpd.conf

sudo nano /etc/httpd/conf/httpd.conf

и в конец файла добавляем:

IncludeOptional conf/sites-enabled/*.conf
IncludeOptional conf/mods-enabled/*.conf

Это позволит подхватывать все конфиги из {sites, mods}-enabled директорий.


Теперь создадим указанные каталоги:

sudo mkdir /etc/httpd/conf/{sites-available,sites-enabled,mods-available,mods-enabled}

Для включения/выключения сайтов создадим скрипт.
Я не стал брать скрипты из ubuntu из-за их монстроузости, вместо этого в интернете нашёл вполне подходящие для наших целей.

Первый скрипт. «Включает» выбранный конфиг сайта.

sudo nano /usr/sbin/a2ensite
#!/bin/bash
if test -d /etc/httpd/conf/sites-available && test -d /etc/httpd/conf/sites-enabled  ; then
echo "-------------------------------"
else
echo "Error!! Folders /etc/httpd/conf/sites-available & etc/httpd/conf/sites-enabled not found."
exit 0
fi

avail=/etc/httpd/conf/sites-available/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-available/`

if [ "$#" != "1" ]; then
        echo "Use script: a2ensite site_config"
        echo -e "\nAvailable virtual hosts:\n$site"
        exit 0
else
if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Success!! Now restart Apache server: sudo systemctl restart httpd"
else
echo  -e "Virtual host $avail does not exist!\nPlease see avail virtual hosts:\n$site"
exit 0
fi
fi

Делаем скрипт выполняемым.

sudo chmod +x /usr/sbin/a2ensite



Второй скрипт. «Выключает» выбранный конфиг сайта.

sudo nano /usr/sbin/a2dissite
#!/bin/bash
if test -d /etc/httpd/conf/sites-available && test -d /etc/httpd/conf/sites-enabled  ; then
echo "-------------------------------"
else
echo "Error!! Folders /etc/httpd/conf/sites-available & etc/httpd/conf/sites-enabled not found."
exit 0
fi

avail=/etc/httpd/conf/sites-enabled/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-enabled`

if [ "$#" != "1" ]; then
        echo "Use script: a2dissite site_config"
        echo -e "\nEnabled virtual hosts: \n$site"
        exit 0
else
if test -e $avail; then
sudo rm  $avail
else
echo -e "$avail virtual host does not exist! Exiting"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo  -e "Success! $avail has been removed!\nsudo systemctl restart httpd"
exit 0
fi
fi

Делаем скрипт выполняемым.

sudo chmod +x /usr/sbin/a2dissite


Теперь создадим скрипты включения/отключения модулей

sudo nano /usr/sbin/a2enmod
#!/bin/bash
if test -d /etc/httpd/conf/mods-available && test -d /etc/httpd/conf/mods-enabled  ; then
echo "-------------------------------"
else
echo "Error!! Folders /etc/httpd/conf/mods-available & etc/httpd/conf/mods-enabled not found."
exit 0
fi

avail=/etc/httpd/conf/mods-available/$1.conf
enabled=/etc/httpd/conf/mods-enabled
mods=`ls /etc/httpd/conf/mods-available/`

if [ "$#" != "1" ]; then
        echo "Use script: a2enmod mod_name"
        echo -e "\nAvailable mods config:\n$mods"
        exit 0
else
if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail mod not exist! Please create one!\n$mods"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Success!! Now restart Apache server: sudo systemctl restart httpd"
else
echo  -e "Mod $avail does not exist!\nPlease see avail mods:\n$mods"
exit 0
fi
fi

Делаем скрипт выполняемым.

sudo chmod +x /usr/sbin/a2enmod



И второй скрипт (ну или 4 =) )

sudo nano /usr/sbin/a2dismod
#!/bin/bash
if test -d /etc/httpd/conf/mods-available && test -d /etc/httpd/conf/mods-enabled  ; then
echo "-------------------------------"
else
echo "Error!! Folders /etc/httpd/conf/mods-available & etc/httpd/conf/mods-enabled not found."
exit 0
fi

avail=/etc/httpd/conf/mods-enabled/$1.conf
enabled=/etc/httpd/conf/mods-enabled
mods=`ls /etc/httpd/conf/mods-enabled`

if [ "$#" != "1" ]; then
        echo "Use script: a2dismod mod_config"
        echo -e "\nEnabled mods: \n$mods"
        exit 0
else
if test -e $avail; then
sudo rm  $avail
else
echo -e "$avail mod does not exist! Exiting"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail mod!"
else
echo  -e "Success! $avail has been removed!\nsudo systemctl restart httpd"
exit 0
fi
fi

Делаем скрипт выполняемым.

sudo chmod +x /usr/sbin/a2dismod


Создаём виртуальный хост

sudo nano /etc/httpd/conf/sites-available/localhost.conf

Пример конфигурации:

<VirtualHost *:80>
    DocumentRoot "/mnt/srv/www/localhost/public"
    <Directory "/mnt/srv/www/localhost/public">
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    ServerName localhost
    ErrorLog "/mnt/srv/www/logs/localhost.error.log"
    CustomLog "/mnt/srv/www/logs/localhost.access.log" combined
</VirtualHost>

Теперь его можно включить

sudo a2ensite localhost
$ sudo a2ensite localhost
-------------------------------
Success!! Now restart Apache server: sudo systemctl restart httpd

и добавить в /ets/hosts адрес если это требуется, попробовать запустить/перезапустить apache (как подсказывает скрипт)


Я попробовал перезапустить apache, и на данном этапе у меня всё работает.
Нужно уже браться за мод ssl. Но сначала напишем скрипт создания сертификатов, и создадим их.

sudo nano /usr/sbin/agenssl
#!/bin/bash
if test -d /etc/httpd/conf/ssl ; then
echo "..."
else
echo "make dir..."
mkdir /etc/httpd/conf/ssl
fi

cd /etc/httpd/conf/ssl

echo -e "Enter your virtual host FQDN"
read cert

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out $cert.key
chmod 600 $cert.key
openssl req -new -key $cert.key -out $cert.csr
openssl x509 -req -days 365 -in $cert.csr -signkey $cert.key -out $cert.crt

echo -e " The certificate "$cert" has been generated!\nPlease link it to Apache SSL available website!"

ls -all /etc/httpd/conf/ssl
exit 0

Сделаем скрипт выполняемым

sudo chmod +x /usr/sbin/agenssl



Можно смело запускать. Из обязательного нужно заполнить «Common Name (e. g. server FQDN or YOUR name) []», указав в качестве имени адрес сайта.

sudo agenssl
$ sudo agenssl
...
Enter your virtual host FQDN
localhost
.....................+++
..............................................................................+++
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:localhost
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Signature ok
subject=/C=RU/ST=Some-State/O=Internet Widgits Pty Ltd/CN=localhost
Getting Private key
The certificate localhost has been generated!

Please link it to Apache SSL available website!
drwxr-xr-x 2 root root 4096 апр 19 23:43 .
drwxr-xr-x 8 root root 4096 апр 19 21:27 ..
-rw-r--r-- 1 root root 1164 апр 19 23:43 localhost.crt
-rw-r--r-- 1 root root  985 апр 19 23:43 localhost.csr
-rw------- 1 root root 1704 апр 19 23:42 localhost.key


Мод ssl

sudo nano /etc/httpd/conf/mods-enabled/ssl.conf
LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
Listen 443
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:/run/httpd/ssl_scache(512000)"
SSLSessionCacheTimeout  300

Включаем его

sudo a2enmod ssl
$ sudo a2enmod ssl
-------------------------------
Success!! Now restart Apache server: sudo systemctl restart httpd



Попробуем добавить конфигурацию виртуального хоста с ssl

sudo nano /etc/httpd/conf/sites-available/localhost-ssl.conf
<VirtualHost *:443>
    ServerAdmin webmaster@localhost
    ServerName localhost
    DocumentRoot /mnt/srv/www/localhost/public

    LogLevel info ssl:warn

    <Directory "/mnt/srv/www/localhost/public">
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog "/mnt/srv/logs//localhost.error.log"
    CustomLog "/mnt/srv/logs/localhost.access.log" combined

    SSLEngine on
    SSLCertificateFile      /etc/httpd/conf/ssl/localhost.crt
    SSLCertificateKeyFile   /etc/httpd/conf/ssl/localhost.key

    <FilesMatch "\.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
    </FilesMatch>

    BrowserMatch "MSIE [2-6]" \
        nokeepalive ssl-unclean-shutdown \
        downgrade-1.0 force-response-1.0

    BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>

Перезапускаем apach и пробуем наш https

sudo systemctl restart httpd

Пост о локали, кедах, арче и забытом методе KISS

Вот уже битый час я не мог понять с какого перепугу моя локаль установлена в cu_RU.US-ASCII
Да и чёрт бы с ней, но ведь некоторые программы из под юзера мешает запускать.
Перечитал все мануалы, облазил форумы, но ни о этой локале не о багах связанных с этим толком ничего не написано. Перерыл все возможные системные файлы, прошелестел в домашней директории, но ничего.

Я уже было отчаялся и пошёл по самому простому пути (хотя это было логичней), поискать cu_RU.US-ASCII

Через минуту grep весело моргнул строчкой на экране.

~/.config/plasma-localerc

с содержимым

[Formats]
LANG=cu_RU.US-ASCII

[Translations]
LANGUAGE=ru

«Тьфу ты...», подумал я. Поправил кодировку, удалил ~/.config/plasma-locale-settings.sh и ушёл в ребут для верности...

2016   archlinux   kde   linux   locale

Ставим tomcat, настраиваем apache + jk коннектор

Предупреждение

Данный текст написан новичком в настройке tomcat да и в целом Java.

Установка

Установка достаточно простая, заходим в консоль и ставим tomcat. Надеюсь у вас стоит Java и apache? ;)

sudo pacman -Suy tomcat8 tomcat-native

Включаем сервис

systemctl enable tomcat8.service

Стартуем ...

sudo systemctl start tomcat8.service

Коннектор JK я буду ставить из aur:

yaourt -S mod_jk

На этом собственно всё. Заходим на http://localhost:8080 проверять работает ли tomcat.
Если всё в порядке, то вы должны увидеть что-то вроде этого

Настройка

Тут я напишу о простой настройке, не вникая в подробности.

По умолчанию файлы конфигурации хранятся в /etc/tomcat8/.
Первым делом настроим пользователей. А то вы наверное уже потыкали кнопочки Server Status, Manager App, а там просят какой то пароль? =)

Открываем tomcat-users.xml

sudo nano /etc/tomcat8/tomcat-users.xml

И приводи его к такому виду:

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">

  <role rolename="manager-gui"/>
  <role rolename="admin-gui"/>
  <user username="tomcat" password="tomcatpswd" roles="manager-gui,admin-gui"/>
</tomcat-users>

И не забываем сменить username и password!

//Вот теперь можно пробежаться по кнопочкам Server Status, Manager App, Host Manager. Но перед этим лучше рестартонуть сервер.

sudo systemctl restart tomcat8.service

хотя пока рано. Но вдруг не терпится)//

Теперь некоторые настройки сервера. Лучше предварительно сделать бэкап файла server.xml

И заменить его содержимое следующими настройками:

sudo nano /etc/tomcat8/server.xml
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>

  <Service name="Catalina">

    <Connector port="8487" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

    <Engine name="Catalina" defaultHost="localhost">

      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

      </Host>

      <Host name="java.local" appBase="/mnt/raid/domains/java.local">
        <Context path="" docBase="html"/>
      </Host>

    </Engine>
  </Service>
</Server>

В этом файле я поменял порт коннектора HTTP с 8080 на 8487, т. к. 8080 достаточно популярный и часто бывает занят. Так же добавил ещё один тег Host, в котором указал путь до папки. Т. е. localhost остался, и до панели можно достучаться по адресу localhost:8487

Настроим коннектор jk.

Добавляем в файл /etc/httpd/conf/httpd.conf строчку

Include conf/extra/java-jk.conf

Теперь

LoadModule jk_module modules/mod_jk.so

к директиве LoadModule

Создадим и заполним java-jk.conf

sudo nano /etc/httpd/conf/extra/java-jk.conf

Приводим к такому виду

<IfModule jk_module>
  JkWorkersFile "/etc/httpd/conf/extra/workers.properties"
  JkLogFile "/var/log/tomcat8/mod_jk.log"
  JkLogLevel info
  JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
</IfModule>

А рядом положим worker.properties

sudo nano /etc/httpd/conf/extra/workers.properties
workers.tomcat_home=/usr/share/tomcat8
workers.java_home=/usr/lib/jvm/java-8-openjdk/

# unix stile
ps=/

worker.list=ajp13

# ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1

Пока не знаю по какой причине, но jk мне выдавал ошибку (спасибо логам), что не может найти директорию log
в /etc/httpd/. Я ещё не разбирался, и просто создал требуемую директорию.

Настроим vhost у apache.

<VirtualHost java.local:80>
  ServerAdmin admin@java.local
  ServerName java.local
  DocumentRoot /mnt/raid/domains/java.local/html
  ErrorLog /mnt/raid/domains/java.local/logs/error.log
  CustomLog /mnt/raid/domains/java.local/logs/access.log common
  JkMount /* ajp13
</VirtualHost>

Пропишем имя в hosts

sudo nano /etc/hosts
127.0.0.1 java.local

И перезапускаем apache и tomcat

sudo systemctl restart httpd.service
sudo systemctl restart tomcat8.service

Размещаем в нашей директории (в моём случае /mnt/raid/domains/java.local/html) тестовый html файл с именем index.html. К примеру такой:

<html>
<head>
  <title>example static</title>
</head>
<body>
  <h2>Hello, Java!</h2>
</body>
</html>

Теперь пробуем перейти на java.local

И если всё правильно, то увидим нашу надпись.

Видим? Значит статика работает. На этом пока всё. Кстати, не стоит забывать менять пути на свои ;)

2015   kde   kubuntu   linux

Цветовые настройки терминала

Цветовые настройки для konsole и urxvt, можно прикрутить и к гномовскому терминалу, да к чему угодго.

Не забудьте сделать резервные копии заменяемых файлов. Либо можно не заменять, а просто скопировать содержимое, особенно если у вас что-то специфическое в .Xdefaults и .bashrc

Кстати, в настройки bash добавлены некоторые команды (взято на просторах интернета)

  1. mkcd создаёт папку и сразу в неё переходит (mkcd myfolder)
  2. b переходит на указанное количество директорий вверх. К примеру, вы были в директории /home/myname/other/goodfolder пишите b 3 и вас перекидывает в папку /home
  3. cd это конечно стандартная команда, но тут добавлен вывод списка файлов при переходе в директорию
  4. extract мой лучший помошник. Извлекает файлы простой командой из разных типов архивов (extract archive.tar.gz)
    .tar.bz2, .tar.gz, .bz2, .rar, .gz, .tar, .tbz2, .tgz, .zip, .Z, .7z

После того как извлекли из архива и закинули в нужные папки (разархивируется всё в домашнюю директорию), перезапустите konsole и выберите в настройках профиля «Тёплая консоль»

2015   kde   konsole   linux

Archlinux, KDE, Dvorak и клавиатура DNS

Dvorak, KDE, Archlinux

Пишу эту статью на раскладке Дворака. Пока это даётся с большим трудом, но уже немного начинаю привыкать.
В иксах нет Русской раскладки Дворака, или может быть просто я её не нашёл, но это уже не важно, так как я подготовил файлы которые её добавляют.
Скачать файлы можно, с github https://github.com/LightAir/DvorakRus

Хоть я и подготовил бэкапы, но всё же рекомендую это сделать и Вам.

Теперь нужно скопировать (заменить) файлы base.xml, base.lst, evdev.xml, evdev.lst в папку /usr/share/X11/xkb/rules/ a файл ru в папку /usr/share/X11/xkb/symbols/

Далее идём в настройки -> устройства ввода -> раскладки -> добавить и добавляем Английскую и Русскую раскладки дворака.

Для удобства, я назвал их usd и rud

Теперь изменим дествие на правом Alt

Готово.

Клавиатура DNS

Я откопал пыльную клавиатуру, которую потрепала жизнь, хотя ей пользовались раза 3, не больше. Что поделать, Китай.

Приступаем к трепанации. Отвёртка...

В 90х каждый шерпотрепный Китайский магнитофон был с такой пайкой.

Снимаем плёнку.

Снимаем часть клавиш

Собираем вот по этой картинке

Вауля

Собираем обратно

Тут я убрал ножом риски

И сделал выемки на U и H

За дело берётся шкурка

Благо Русский алфавит нанесён обычной печатью. Спасибо Китаю за это))

Осталось только почистить её

Заключение

Остались некоторые проблемы с горячими клавишами, но в скором времени я их решу

Тренироваться можно тут http://klava.org

2015   archlinux   dvorak   kde   linux
2014   dwm   linux

Почему сайт называется softroot.ru

Когда то были планы делать и развивать сайт, на котором бы был обзор различных программ для linux.
Так сложилось, что ничего не получилось, а домен softroot.ru был выбран из-за игры слов софт ру тру, софт рут ру =)

2014   linux   softroot.ru   Новости

h5ai — a modern HTTP web server index

Вчера ночью, пока отдыхал 5 минут от работы за чашечкой кофе развернул такую вот прелесть. Теперь большую часть файлов я буду скидывать именно туда.

http://dl.softroot.ru/

Плюсы на лицо. Красивое отображение директорий, предпросмотр (поддерживает много форматов, в т.ч. и видео), подсветка синтаксиса, QR-код при наведении курсора на файл.

Офф. сайт h5ai

Демо каталог

2014   h5ai   linux   Новости
Ctrl + ↓ Ранее