== УСТАНОВКА == Устанавливаем Debian Linux (amd64) с параметрами по умолчанию - по обыкновению протыкиваем всё всквозную... Нюансы: 1. При выборе языка - выбираем по умолчанию и ищем своё расположение при выборе страны размещения сервера. 2. При настройке пользователя: а) root дозволено логиниться б) пароль root (потом смените) в) нормальных пользователей НЕ добавляем (пока не надо) г) по умолчанию локаль ввода en_US.UTF-8 плюс ваша родная локаль, как дополнительная. 3. При разметке диска указываете Manual Внутри: Если диск чистый (нет строки FREE SPACE, выбираем корневую запись нашего жёсткого диска => Yes => msdos Если диск не пустой - желательно зачистить его таким же способом, дабы избежать побочных телодвижений по дозачистке от того, чем не пользуетесь, и место кончилось... Далее, первым ставим swap-раздел равный размеру оперативной памяти+256мб. Если у Вас 2 гига памяти на машине - swap = 2048+256 = вводите "2304 mb"; На виртуалках swap размещается в конце диска, чтобы не мешал. На физических машинах желательно в центр диска. Потом ставим корневую партицию с файловой системой ext4. Если у Вас высокие или аггресивные нагрузки на файловую систему, то выделяете отдельную партицию /home с файловой системой xfs 4. Конфигурирование Package Manager Use a Network Mirrir: Yes Use non-free software: Yes Выберите все сервиса для использования, когда спросит (надо довыбрать backports) 5. Select and Install Software Должно быть выбрано SSH Server + standard system utilities FINISH == УСТАНОВКА СОФТА И НАСТРОЙКА == Если это виртуалка то ставим open-vm-tools apt-get install open-vm-tools Это позволит Хосту виртуализации видеть нашу гостевую машину (обычно актуально для vSphere / Workstation / Xen Server ) Обязательный набор софта для комфортной жизни: (для боевого хоста 99% не нужно, так как его функция отнюдь не удобства предоставлять) %%(sh) apt-get install mc zip unzip rar unrar arj putty-tools %% запускаем mc и по желанию настраиваем как нужно. для удобства правим файл .profile добавляя в конце mc === НАСТРОЙКА ПОЛЬЗОВАТЕЛЕЙ === !!! ИЗ ПОД ROOT'А НИЧЕГО НЕ КРУТИМ И НЕ ВЕРТИМ НА СЕРВЕРЕ ! НИКОГДА ! добавляем папки %%(sh) mkdir /etc/skel/logs mkdir /etc/skel/tmp mkdir /etc/skel/www %% Обязательно выходим из mc (F10) исполняем (passphrase оставляем пустым - прокликиваем ENTER'ом): %%(sh) ssh-keygen -t dsa cd ~/.ssh # создаём публичный пул ключей cat id_dsa.pub > authorized_keys # генерим ключи для путти puttygen id_dsa -O private -o id_dsa.ppk rm *.pub chmod 0600 * cd ~ %% запускаем mc ЭТУ ЖЕ САМУЮ ОПЕРАЦИЮ НЕОБХОДИМО ВЫПОЛНИТЬ ИЗ ПОД КАЖДОГО НОВОГО ПОЛЬЗОВАТЕЛЯ - СГЕНЕРИТЬ КЛЮЧИ ДОСТУПА К МАШИНЕ ИЗВНЕ (ЕСЛИ ТРЕБУЕТСЯ). ДОСТУПА ПО ПАРОЛЮ НЕ БУДЕТ ! ЗАБУДЬТЕ ! пароли воруют. Особенно при передаче скайпом в кафе на бесплатном вайфай :-). Настраиваем SSHd /etc/ssh/sshd_config %%(conf) PermitRootLogin yes PasswordAuthentication yes %% исполняем: %%(sh) service ssh restart %% Настраиваем putty для входа и входим. Если удачно, то идём /etc/ssh/sshd_config и отключаем парольный доступ PasswordAuthentication no === УСТАНОВКА ВЕБ СЕРВЕРА, СЕРВЕРОВ БД И PHP5 === (php7 в дебиан 8 пока нет) # NGINX %%(sh) apt-get install nginx-full mcrypt memcached %% # PHP5 %%(sh) apt-get install php5-fpm php-pear php5-imagick php5-mcrypt php5-memcache php5-memcached php5-dev php5-curl php5-apcu php5-json php5-gd %% # MySQL %%(sh) apt-get install mysql-server %% #PostgreSQL %%(sh) apt-get install postgresql-server %% У нас не будет апача - к чёрту его. У нас будет Nginx+PHP5-FPM === COMPOSER === Согласно инструкции https://getcomposer.org/download/ %%(sh) cd ~ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('SHA384', 'composer-setup.php') === 'e115a8dc7871f15d853148a7fbac7da27d6c0030b848d9b3dc09e2a0388afed865e6a3d6b3c0fad45c48e2b5fc1196ae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');" mv composer.phar /usr/bin/composer %% === СОЗДАНИЕ ПОЛЬЗОВАТЕЛЯ ДЛЯ ПРОЕКТА НА LARAVEL === исполняем: %%(sh) adduser lara %% пароль укажите тоже lara для удобства, потом смените. В папке /home появится папка lara - домашняя директория пользователя === НАСТРАИВАЕМ ВЕБ СЕРВЕР, БД, РНР ДЛЯ ПОЛЬЗОВАТЕЛЯ lara === PHP5 Повышаем безопасность CGI согласно статье https://habrahabr.ru/post/100961/ /etc/php5/fpm/php.ini ищем ;cgi.fix_pathinfo=1 меняем на cgi.fix_pathinfo=0 /etc/php5/fpm/pool удаляем всё создаём файл lara.conf ( USERNAME.conf ) %%(sh) touch /etc/php5/fpm/pool/lara.conf %% с содержимым %%(conf) [lara] user = $pool group = www-data listen = /var/run/php5-fpm.$pool.sock listen.owner = $pool listen.group = www-data listen.mode = 0660 pm = dynamic pm.max_children = 5 pm.start_servers = 1 pm.min_spare_servers = 1 pm.max_spare_servers = 3 pm.status_path = /fpmstat php_admin_value[display_errors] = Off php_admin_value[log_errors] = On php_admin_value[upload_tmp_dir] = /home/$pool/tmp php_admin_value[session.save_path] = /home/$pool/tmp php_admin_value[sendmail_path] = "/usr/sbin/sendmail -t -i -f $pool@localhost" request_slowlog_timeout = 3s slowlog = /home/$pool/logs/php5-fpm.$pool.slow.log chdir = / security.limit_extensions = .php %% В итоге: - все файлы php создаёт от пользователя lara и группы www-data, что позволит владельцу владеть файлами, а вебсерверу их крутить и вертеть, как тому надо. - собственная папка tmp для временных файлов - собственные логи web-сервера и php (донастроете если надо будет) - отправка почты через php mail() Исполняем: %%(sh) service php5-fpm restart %% === НАСТРОЙКА NGINX === сразу конфиги выложу, а то статья уже резиновая /etc/nginx/nginx.conf %%(conf) user www-data; worker_processes 3; # по единичке на ядро проца pid /var/run/nginx.pid; events { worker_connections 1024; # multi_accept on; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 200; types_hash_max_size 2048; server_tokens off; server_name_in_redirect off; server_names_hash_bucket_size 64; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; gzip on; gzip_disable "msie6"; limit_conn_zone $binary_remote_addr zone=download_c:10m; limit_req_zone $binary_remote_addr zone=search_r:10m rate=1r/s; include /etc/nginx/mime.types; default_type application/octet-stream; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; include /etc/nginx/vhosts/*; include /etc/nginx/vhosts/*/*; } %% /etc/nginx/vhosts/lara.com %%(conf) server { listen 80; server_name lara.comm www.lara.com; charset UTF-8; disable_symlinks if_not_owner from=$root_path; index index.html index.php; root $root_path; set $root_path /home/lara/www/lara.com/public; access_log /home/lara/logs/lara.com.access.log; error_log /home/lara/logs/lara.com.error.log notice; include /etc/nginx/vhosts-includes/*.conf; location ~ \.php$ { try_files $uri =404; include fastcgi_params; fastcgi_pass unix:/var/run/php5-fpm.lara.sock; #тот, который мы в php5-fpm pool создавали fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } %% SSL сами настроете, там не сложно, но долго его генерить, а лучше его получать у https://www.startssl.com/ /etc/nginx/vhosts-includes/locations.conf %%(conf) location / { index index.html index.php index.htm; try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } location ~ /\.ht { deny all; } %% исполняем %%(sh) service nginx restart %% если ругнётся, то читайте логи. в отдельных ситуациях ему надо видеть все директории, куда указывает document_root (у нас ещё нет lara.com/public в /home/lara/www) === ПОЛЬЗОВАТЕЛЬ И ВСЁ ИЗ ПОД НЕГО === выходим из mc (F10) если запущен исполняем: %%(sh) su - lara mc %% настраиваем ключи для доступа по ключу, как настраивали для root'а забираем ключи и логинимся через putty этим пользователем. === COMPOSER И LARAVEL === исполняем: %%(sh) composer global require "laravel/installer" composer global require "laravel/lumen-installer" %% затем добавляем в файл ~/.profile %%(shell) PATH="~/.composer/vendor/bin:$PATH" %% после чего мы можем крафтить приложение laravel куда угодно в рамках директории пользователя. %%(sh) cd ~/www laravel new lara.com service nginx restart %% вот и всё. технически вам останется настроить сервера БД и кастомизировать архитектуру системы как нужно проекту. ЗАПОМНИТЕ! НИЧЕГО! НИКОГДА! НЕ ИСПОЛНЯЙТЕ ОТ РУТА, ЕСЛИ ТОГО НЕ ТРЕБУЕТ СИСТЕМА. САМОВОЛЬНЫЕ ПОПЫТКИ ЗАПУСТИТЬ ВЕБСЕРВЕР ИЛИ РНР ОТ РУТА ВЕДУТ К САМЫМ ЖЕСТОКИМ ПОСЛЕДСТВИЯМ ! === КРОН === Ваш кронтаб ещё не существует. Из под рута создайте файл /var/spool/cron/crontabs/lara %%(sh) touch /var/spool/cron/crontabs/lara chown lara:lara /var/spool/cron/crontabs/lara chmod 0600 /var/spool/cron/crontabs/lara %% запуск задач от лары %%(t) * * * * php /home/lara/www/lara.com/artusan scheduler:run %%