Довольно избитая уже тема, однако, я все же считаю нужным написать об этом.
Итак, вдруг вам внезапно понадобилось организовать доступ к своему серверу по http протоколу, а так же разместить на нем сайты. Для этого нужно поставить web-сервер, самым распространенным на данный момент является сервер Apache2, помимо него мы поставим базу данных MySQL и PHP5, а потом веб сервер nginx, который будет отдавать клиентам статику, а php проксировать apache, ну и для быстродействия eAccelerator который будет сжимать контент. Все описанное в статье работает и в ubuntu и в Debian
Ставим apache2, php5, MySQL
sudo apt-get install apache2 php5 libapache2-mod-php5 mysql-server mysql-client php5-mysql nginx
При установке нас попросят вести пароль пользователь root для MySQL, не оставляйте эти поля пустыми, так как это влияет на безопасность.
Настраиваем nginx и apache
Идем в /etc/nginx/nginx.conf и приводим файл к следующему виду:
user www-data;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
# multi_accept on;
}
http {
include /etc/nginx/mime.types;
access_log /var/log/nginx/access.log;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
gzip on;
gzip_static on;
gzip_comp_level 6;
gzip_types application/x-javascript text/css;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
client_max_body_size 100m;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Затем открываем /etc/apache2/ports.conf и изменяем порт который слушает apache2
NameVirtualHost 127.0.0.1:81
Listen 81
IP 127.0.0.1 мы указали для того, чтобы сервер не слушал внешние интерфейсы, ни к чему это.
Так, серверы мы между собой подружили, теперь настроим сайты идем в /etc/nginx/sites-enabled/ и добавляем наш сайт example.com
в файл записываем следующее
upstream backend {
server 127.0.0.1:81;
}
server {
listen 80;
server_name www.example.com example.com;
access_log /var/log/nginx/example.com.access.log;
location / {
root /var/www/example.com;
index index.php;
}
location ~ \.php($|\/) {
proxy_pass http://backend;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
}
location ~* \.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx)$ {
root /var/www/example.com;
}
}
Эти настройки делают так,что nginx отдает всю статику, а apache обрабатывает php.
Так же настраиваем apache2 идем в /etc/apache2/sites-enabled/ и создаем наш example.com
DocumentRoot "/var/www/example.com/"
ServerName isurgut.net
ServerAlias www.isurgut.net
ErrorLog /var/log/apache2/example.com.error.log
Перезапускаем nginx и apache2
/etc/init.d/apache2 restart
/etc/init.d/nginx restart
Проверяем как работает с php наш сервер создаем файл index.php и пишем в нем:
если вдруг php отобразился как обычный текст, не расстраиваемся, а идем в /etc/apache2/apache2.conf и добавляем в секции <IfModule mod_mime.c> такую запись:
AddType application/x-httpd-php .php
После чего перезапускаем apache
/etc/init.d/apache2 restart
Вот и все, наш сервер практически готов осталось поставить eAccelerator и научит его верно определять IP, так как сейчас из-за проксирования запросов IP всех пользователей будут 127.0.0.1, как это сделать я расскажу в следующей статье.
Кстати о создании пользователей и баз данных в MySQL можно почитать в статье Как добавить пользователя в MySQL
Последнее время я использую Valentina Studio для работы с MySQL на UBUNTU. Очень хороший и бесплатный инструмент, рекомендую посмотреть.http://www.valentina-db.com/en/valentina-studio-overview
Да ну, так слишком просто :)
Но за ссылку спасибо, будем иметь ввиду.