Установка и настройка Ubuntu Server 13.04, редактирование конфигов для нашего сервера
После того как мы закончили работу по установке сервера Ubuntu 13.04, поставили на него php5-fpm + все необходимые модули, установили nginx на сервер, поставили MariaDB + phpMyAdmin, мы можем смело приступать к редактированию конфигурационных файлов и тестовым запускам различных php скриптов, например с выводом информации об текущей версии php и установленных модулях. Ну что же давайте приступим :
Настройка Ubuntu Server 13.04
Для начала нам необходимо добавить нового пользователя на сервер, для того что бы в будущем мы могли реализовать все задуманное нами. Для этого заходим на сервер по SSH под пользователем root, и создаем нового пользователя, ограничив его при этом доступом к шеллу :
useradd darelvc -b /home/ -m -U -s /bin/false |
Далее нам необходимо задать новый пароль для созданного нами пользователя darelvc :
passwd darelvc |
Далее создаем необходимую для нас директорию, в которой мы в дальнейшем и будем работать :
mkdir /home/darelvc/public_html |
Я выбрал именно такой путь, так как директория public_html считается каталогом по умолчанию для панели управления Cpanel, с которой я продолжительное время работал.
Теперь нам необходимо добавить новосозданного пользователя для данной директории :
chown -R darelvc: /home/darelvc/public_html |
Далее предоставим доступ к каталогу для nginx :
cd /home/darelvc/ usermod -a -G darelvc www-data |
Теперь можно приступать к созданию нашего первого конфигурационного файла, создадим мы его для nginx, для этого выполним несколько команд :
touch /etc/nginx/conf.d/darelvc.vn.ua.conf |
Обратите внимание, что все новосозданные конфигурационные файлы должны иметь расширение .conf, для начала приведем в порядок основной конфигурационный файл, для этого создадим его дубликат, на всякий случай :
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf_old |
Открываем и заменяем его содержимое на новое :
vim /etc/nginx/nginx.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
user www-data; # As a thumb rule: One per CPU. If you are serving a large amount # of static files, which requires blocking disk reads, you may want # to increase this from the number of cpu_cores available on your # system. # # The maximum number of connections for Nginx is calculated by: # max_clients = worker_processes * worker_connections worker_processes 1; # Maximum file descriptors that can be opened per process # This should be > worker_connections worker_rlimit_nofile 8192; events { # When you need > 1000 * cpu_cores connections, you start optimizing # your OS, and this is probably the point at where you hire people # who are smarter than you, this is *a lot* of requests. worker_connections 1000; } error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; http { charset utf-8; # Set the mime-types via the mime.types external file include mime.types; # And the fallback mime-type default_type application/octet-stream; # Click tracking! access_log /var/log/nginx/access.log; # Upstream to abstract back-end connection(s) for PHP upstream php { server unix:/tmp/php5-fpm.sock; } # Hide nginx version server_tokens off; # ~2 seconds is often enough for HTML/CSS, but connections in # Nginx are cheap, so generally it's safe to increase it keepalive_timeout 20; # You usually want to serve static files with Nginx sendfile on; tcp_nopush on; # off may be better for Comet/long-poll stuff tcp_nodelay off; # on may be better for Comet/long-poll stuff server_name_in_redirect off; types_hash_max_size 2048; gzip on; gzip_http_version 1.0; gzip_comp_level 5; gzip_min_length 512; gzip_buffers 4 8k; gzip_proxied any; gzip_types # text/html is always compressed by HttpGzipModule text/css text/plain text/x-component application/javascript application/json application/xml application/xhtml+xml application/x-font-ttf application/x-font-opentype application/vnd.ms-fontobject image/svg+xml image/x-icon; # This should be turned on if you are going to have pre-compressed copies (.gz) of # static files available. If not it should be left off as it will cause extra I/O # for the check. It would be better to enable this in a location {} block for # a specific directory: # gzip_static on; gzip_disable "msie6"; gzip_vary on; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } |
cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default_old vim /etc/nginx/sites-available/default |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
server { listen 80 default; ## listen for ipv4; this line is default and implied listen [::]:80 default ipv6only=on; ## listen for ipv6 # Make site accessible from http://localhost/ or server IP-address server_name localhost; server_name_in_redirect off; charset utf-8; access_log /usr/share/nginx/access.log; error_log /usr/share/nginx/error.log; root /usr/share/nginx/www; index index.php index.html index.htm; location / { # First attempt to serve request as file, then # as directory, then trigger 404 try_files $uri $uri/ =404; } # pass the PHP scripts to FPM socket location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini fastcgi_pass php; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/share/nginx/www$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT /usr/share/nginx/www; # send bad requests to 404 fastcgi_intercept_errors on; include fastcgi_params; } } |
Теперь мы можем приступить к созданию нашего 1 конфигурационного файла :
vim /etc/nginx/conf.d/darelvc.vn.ua.conf |
В нем прописываем :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
server { listen 91.223.223.108:80; root /home/darelvc/public_html; access_log /home/darelvc/logs/nginx.access.log; server_name darelvc.vn.ua www.darelvc.vn.ua; index index.php index.htm index.html; location ~ \.(gif|jpeg|jpg|txt|png|css|js|htm|html|csv|doc|xls|xml|sql|ico)$ { access_log off; expires max; } location / { try_files $uri $uri/ @rewrite; } location @rewrite { rewrite ^/(.*)$ /index.php?q=$1; } location ~ \.php$ { fastcgi_pass unix:/tmp/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } 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; } } |
После проделанной работы обязательно перезагружаем nginx и проверяем не вылезут ли ошибки при перезагрузке :
service nginx restart |
Как видим ошибок нет, теперь нам нужно с конфигурировать конфиг для нашего сайта под php-fpm, открываем файл :
vim /etc/php5/fpm/pool.d/darelvc.conf |
И прописываем в него :
1 2 3 4 5 6 7 8 9 10 11 |
listen = /tmp/php5-fpm.sock listen.mode = 0666 user = darelvc group = darelvc php_admin_value[upload_tmp_dir] = /home/darelvc/tmp php_admin_value[soap.wsdl_cache_dir] = /home/darelvc/tmp php_admin_value[date.timezone] = Europe/Kiev pm = static pm.max_children = 1 pm.max_requests = 250 |
Затем перезапускаем наш php-fpm
service php5-fpm restart |
Теперь настало время протестировать наши сайты php5.4 на нашем сервере, а так же произвести тестовый запуск phpMyAdmin
Для начала зайдем еще раз в каталог pool.d и отредактируем файл www.conf
cd /etc/php5/fpm/pool.d vim www.conf |
Заменим строку :
listen = /var/run/php5-fpm.sock |
На :
listen = /tmp/php5-fpm.sock |
После чего создадим каталог :
mkdir /usr/share/nginx/www/ |
В нем уже создадим наш файл index.php с таким содержанием :
vim /usr/share/nginx/www/inex.php |
1 |
<?php phpinfo(); ?> |
Юхуу, все работает просто замечательно :), теперь протестируем наш phpMyAdmin
cd /usr/share/nginx/www/ sudo ln -s /usr/share/phpmyadmin |
Для того что бы протестировать переходим по ссылке :
http://IP_сервера/phpmyadmin/ |
Как видим все так же работает чудесно (при 1 запуске страница может открываться длительное время, не переживайте это нормально). Далее попробуем авторитизироваться вводим те же данные, что и вводили при установки phpMyAdmin
Теперь можно так же проверить новосозданный нами домен, как он отдает php:
vim /home/darelvc/public_html/i.php |
1 |
<?php phpinfo(); ?> |
IP_сервера darelvc.vn.ua www.darelvc.vn.ua
Сохраняем и проверяем. Все чудесно 🙂
Мой совет использовать nginx-boilerplate вместо станд. конфигов.
Что-то конфигурация php-fpm не работает
Здравствуйте Евгений,
Какую именно ошибку Вы получаете ?
Просто не запускается с описанной конфигурацией. Пишет [FAIL]
Предоставьте пожалуйста, Ваш конфигурационный файл и логи с ошибками апача на email – [email protected]
[…] kalpa orals […]