среда, 11 апреля 2012 г.

Apache2+SSL+MySQL+PHP+phpMyAdmin

Подключим репозитории:
# rpm -Uvh http://mirror.yandex.ru/epel//6/i386/epel-release-6-5.noarch.rpm
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
Ставим Apache 2, mod_ssl и mysql-server:
# yum -y --enablerepo=remi install httpd mod_ssl mysql-server
Добавим Apache и MySQL в автозагрузку:
# chkconfig --levels 235 mysqld on
# chkconfig --levels 235 httpd on
Запустим MySQL:
# service mysqld start
Делаем первоначальную настройку mysql:
# mysql_secure_installation
Если нужно, то отключим возможность подключаться по сети к нашему MySQL
Для этого добавим опцию skip-networking в /etc/my.cnf

Генерируем ssl сертификат и приват ключ:
# cd /etc/httpd/conf.d

# openssl req -new -x509 -nodes -out server.crt -keyout server.key
В вопросе Common Name нужно указать доменное имя которое будет юзаться для сайта.
Далее рихтуем ssl.conf
SSLCertificateFile /etc/httpd/conf.d/server.crt

SSLCertificateKeyFile /etc/httpd/conf.d/server.key
Приводим httpd.conf примерно к такому знаменателю:
# vi /etc/httpd/conf/httpd.conf
### Section 1: Global Environment

ServerTokens OS
ServerRoot "/etc/httpd"
PidFile run/httpd.pid
Timeout 60
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 15

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>

<IfModule worker.c>
StartServers         4
MaxClients         300
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>

Listen 80

LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_alias_module modules/mod_authn_alias.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
#LoadModule ldap_module modules/mod_ldap.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
#LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
#LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
LoadModule usertrack_module modules/mod_usertrack.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
#LoadModule dav_module modules/mod_dav.so
#LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
#LoadModule info_module modules/mod_info.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule actions_module modules/mod_actions.so
LoadModule speling_module modules/mod_speling.so
#LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule substitute_module modules/mod_substitute.so
LoadModule rewrite_module modules/mod_rewrite.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule cache_module modules/mod_cache.so
LoadModule suexec_module modules/mod_suexec.so
LoadModule disk_cache_module modules/mod_disk_cache.so
#LoadModule cgi_module modules/mod_cgi.so
LoadModule version_module modules/mod_version.so

Include conf.d/*.conf

#ExtendedStatus On

User apache
Group apache

### Section 2: 'Main' server configuration

ServerName 127.0.0.1
ServerAdmin root@localhost

UseCanonicalName Off

DocumentRoot "/var/www/html"

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

<IfModule mod_userdir.c>
    UserDir disabled
</IfModule>

DirectoryIndex index.html

AccessFileName .htaccess

<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</Files>

TypesConfig /etc/mime.types

DefaultType text/plain

<IfModule mod_mime_magic.c>
    MIMEMagicFile conf/magic
</IfModule>

HostnameLookups Off

ErrorLog logs/error_log

LogLevel warn

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

CustomLog logs/access_log combined

ServerSignature On

Alias /icons/ "/var/www/icons/"

<Directory "/var/www/icons">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

#<IfModule mod_dav_fs.c>
#    DAVLockDB /var/lib/dav/lockdb
#</IfModule>

#ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

#<Directory "/var/www/cgi-bin">
#    AllowOverride None
#    Options None
#    Order allow,deny
#    Allow from all
#</Directory>

IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable Charset=UTF-8

AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip

AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*

AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core

AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^

DefaultIcon /icons/unknown.gif

ReadmeName README.html
HeaderName HEADER.html

IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

AddLanguage en .en
AddLanguage ru .ru

LanguagePriority ru en

ForceLanguagePriority Prefer Fallback

AddDefaultCharset UTF-8

AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz

AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl

#AddHandler cgi-script .cgi
#AddHandler type-map var

#AddType text/html .shtml
#AddOutputFilter INCLUDES .shtml

Alias /error/ "/var/www/error/"

<IfModule mod_negotiation.c>
<IfModule mod_include.c>
    <Directory "/var/www/error">
        AllowOverride None
        Options IncludesNoExec
        AddOutputFilter Includes html
        AddHandler type-map var
        Order allow,deny
        Allow from all
        LanguagePriority en es de fr
        ForceLanguagePriority Prefer Fallback
    </Directory>

</IfModule>
</IfModule>

BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0

BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "MS FrontPage" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully
BrowserMatch "^gnome-vfs/1.0" redirect-carefully
BrowserMatch "^XML Spy" redirect-carefully
BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully

#<Location /server-status>
#    SetHandler server-status
#    Order deny,allow
#    Deny from all
#    Allow from .example.com
#</Location>

#<Location /server-info>
#    SetHandler server-info
#    Order deny,allow
#    Deny from all
#    Allow from .example.com
#</Location>
А virt.conf
# vi /etc/httpd/conf.d/virt.conf
NameVirtualHost *:80
NameVirtualHost *:443

<Directory /var/sites/>
   AllowOverride All
   Options All
</Directory>

<VirtualHost *:80>
    ServerAdmin root@localhost
    DocumentRoot /var/sites/rus.net/html
    ServerName rus.net
    ServerAlias www.rus.net
    DirectoryIndex index.php
    ErrorLog /var/sites/rus.net/logs/error_log
    CustomLog /var/sites/rus.net/logs/access_log common
    RewriteLog /var/sites/rus.net/rewrite.log
    RewriteLogLevel 1
</VirtualHost>

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateKeyFile /etc/httpd/conf.d/server.key
    SSLCertificateFile /etc/httpd/conf.d/server.crt
    ServerAdmin root@localhost
    DocumentRoot /var/sites/rus.net/html
    ServerName rus.net
    ServerAlias www.rus.net
    DirectoryIndex index.php
    ErrorLog /var/sites/rus.net/logs/error_log
    CustomLog /var/sites/rus.net/logs/access_log common
    RewriteLog /var/sites/rus.net/rewrite.log
    RewriteLogLevel 1
</VirtualHost>
Установим Php, phpMyAdmin, он в свою очередь затянет и всю необходимую приблуду и до кучи ImageMagick.
# yum -y --enablerepo=remi install php phpmyadmin ImageMagick
Далее /usr/share/phpMyAdmin/config.sample.inc.php копируем в config.inc.php и в нем меняем тип аунтификации на http, $cfg['Servers'][$i]['auth_type'] = 'http'; было cookie.

В /etc/httpd/conf.d/ phpMyAdmin.conf сократим алиас и разрешим доступ только для нашей локалки, ибо некуй в него ходить из инета.
Alias /pma /usr/share/phpMyAdmin

Alias /phpmyadmin /usr/share/phpMyAdmin

<Directory /usr/share/phpMyAdmin/>

   order deny,allow
   allow from 192.168.1.0/24
   deny from all

#   allow from ::1

</Directory>
Открываем 80 и 443 порты
# vi /etc/sysconfig/iptables
и туда добавим
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
Перезапустим фаервол
# service iptables restart
И никуя у нас не работает, в еррорлоге апач пишет, что нету прав доступа и т.д. к указанной директории, где мы разместили наш контент для виртуал хоста. Я долго чесал череп, а вся проблема в SELinux.
# chcon -R -t httpd_sys_content_t /var/sites
Т.е. пометить данную папку как объект разрешенный апачу.

Комментариев нет:

Отправить комментарий