Я зараз перевстановлюю ОС на машину, яка буде використовуватися для розміщення пари додатків для нашого бізнесу. Заявки будуть лише локальними; доступ від зовнішніх клієнтів здійснюватиметься лише через VPN.
Попередня установка використовувала панель управління хостингом (Plesk) для більшості адміністратора, і я переглядав використання іншої аналогічної програми для перевстановлення - але я зрозумів, що нарешті я повинен дізнатися, як це все працює. Я можу зробити більшість речей, які зробило б програмне забезпечення для мене, але мені не зрозуміло щодо симбіозу всього цього. Це все спроба далі відійти від землі програміста / програміста конфігурації , якщо це взагалі можливо.
Я не можу ніде знайти повну інструкцію для того, що шукаю, тому я подумав, що поставлю це питання, і якщо люди зможуть допомогти мені в дорозі, я відредагую це з відповідями та задокументую свій прогрес / підводні камені. Сподіваємось, що колись це допоможе комусь вниз.
Деталі:
- CentOS 5.5 x86_64
- httpd: Apache / 2.2.3
- MySQL: 5.0.77 (оновлено)
- PHP: 5.1 (оновлено)
Вимоги:
- БЕЗПЕКА !!
- Безпечна передача файлів
- Безпечний доступ клієнта (SSL-сертифікати та CA)
- Безпечне зберігання даних
- Безпечне підключення до іншої локальної машини (MySQL)
- Віртуальні хости / кілька субдоменів
- Місцева електронна пошта буде приємною, але не критичною
Сходи:
Під час встановлення я перевірив параметр Серверні компоненти, думаючи, що буду використовувати іншого адміністратора, схожого на Plesk. Заднім числом, враховуючи, що я вирішив спробувати піти власним шляхом, це, мабуть, було не найкращою ідеєю.
налаштування користувачів, мережа / IP-адреса тощо. Оновлення / оновлення.
Щоб оновити PHP та MySQL до останніх версій, мені довелося звернутися до іншого репо за межами CentOS. IUS виглядає чудово, і я щасливий, що знайшов його!
Додайте сховище IUS до нашого менеджера пакунків
cd /tmp
wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/epel-release-1-1.ius.el5.noarch.rpm
rpm -Uvh epel-release-1-1.ius.el5.noarch.rpm
wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/ius-release-1-4.ius.el5.noarch.rpm
rpm -Uvh ius-release-1-4.ius.el5.noarch.rpm
yum list | grep -w \.ius\. # list all the packages in the IUS repository; use this to find PHP/MySQL version and libraries you want to install
Видаліть стару версію PHP та встановіть нову версію з IUS
rpm -qa | grep php # to list all of the installed php packages we want to remove
yum shell # open an interactive yum shell
remove php-common php-mysql php-cli #remove installed PHP components
install php53 php53-mysql php53-cli php53-common #add packages you want
transaction solve #important!! checks for dependencies
transaction run #important!! does the actual installation of packages.
[control+d] #exit yum shell
php -v
PHP 5.3.2 (cli) (built: Apr 6 2010 18:13:45)
Оновіть MySQL з сховища IUS
/etc/init.d/mysqld stop
rpm -qa | grep mysql # to see installed mysql packages
yum shell
remove mysql mysql-server #remove installed MySQL components
install mysql51 mysql51-server mysql51-devel
transaction solve #important!! checks for dependencies
transaction run #important!! does the actual installation of packages.
[control+d] #exit yum shell
service mysqld start
mysql -v
Server version: 5.1.42-ius Distributed by The IUS Community Project
Оновлення інструкцій люб’язно надано вікі IUS: http://wiki.iuscommunity.org/Doc/ClientUsageGuide .
scp
та sftp
доступу, не дозволяючи ssh
входити в системуcd /tmp
wget http://dag.wieers.com/rpm/packages/rssh/rssh-2.3.2-1.2.el5.rf.x86_64.rpm
rpm -ivh rssh-2.3.2-1.2.el5.rf.x86_64.rpm
useradd -m -d /home/dev -s /usr/bin/rssh dev
passwd dev
Редагувати, /etc/rssh.conf
щоб надати доступ до SFTP користувачам rssh.
vi /etc/rssh.conf
Скасувати коментар або додати:
allowscp
allowsftp
Це дозволяє мені підключитися до машини через протокол SFTP в програмі Transmit (моя програма FTP на вибір; я впевнений, що це аналогічно з іншими програмами FTP).
rssh інструкції, присвоєні (з вдячністю!) від http://www.cyberciti.biz/tips/linux-unix-restrict-shell-access-with-rssh.html .
ifconfig eth1:1 192.168.1.3 up #start up the virtual interface
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth1 ifcfg-eth1:1 #copy default script and match name to our virtual interface
vi ifcfg-eth1:1 #modify eth1:1 script
# ifcfg-eth1: 1 | змінити так, що це виглядає приблизно так:
DEVICE = eth1: 1
IPADDR = 192.168.1.3
NETMASK = 255.255.255.0
NETWORK = 192.168.1.0
ONBOOT = так
NAME = eth1: 1
Додайте більше віртуальних інтерфейсів, якщо потрібно, повторивши. Через ONBOOT=yes
рядок у файлі ifcfg-eth1: 1 цей інтерфейс буде виведений при завантаженні системи або запуску / перезапуску мережі.
service network restart
Вимкнення інтерфейс eth0: [OK]
Вимкнення інтерфейс eth1: [OK]
Вимкнення петлевого інтерфейсу: [OK]
Виховати петлевий інтерфейс: [OK]
Виховати інтерфейс eth0: [OK]
Виховати інтерфейс eth1: [OK]
ping 192.168.1.3
64 байти з 192.168.1.3: icmp_seq = 1 ttl = 64 час = 0,105 мс
У розділі rssh вище я додав користувача для використання для SFTP. У домашньому каталозі цього користувача я створив папку під назвою "https". Тут будуть жити документи для цього сайту, тому мені потрібно додати віртуальний хост, який буде вказувати на нього. Я буду використовувати вищевказаний віртуальний інтерфейс для цього сайту (тут називається dev.site.local).
vi /etc/http/conf/httpd.conf
Додайте наступне до кінця httpd.conf:
<VirtualHost 192.168.1.3:80>
ServerAdmin dev@site.local
DocumentRoot /home/dev/https
ServerName dev.site.local
ErrorLog /home/dev/logs/error_log
TransferLog /home/dev/logs/access_log
</VirtualHost>
Я помістив фіктивний файл index.html в каталог https, щоб перевірити все. Я спробував перейти до нього, і мені було дозволено помилки, на які було відмовлено. Журнали давали лише незрозуміле посилання на те, що відбувається:
[Пн. 17 травня 14:57:11 2010] [помилка] [клієнт 192.168.1.100] (13) Дозвіл відхилено: доступ до /index.html відхилений
Я спробував chmod 777 et. ін., але безрезультатно. Виявляється, мені потрібно було chmod + x каталог https та його "батьківські каталоги".
chmod +x /home
chmod +x /home/dev
chmod +x /home/dev/https
Це вирішило цю проблему.
Я обробляю DNS через наш локальний вікно Windows Server 2003. Однак документацію CentOS для BIND можна знайти тут: http://www.centos.org/docs/5/html/Deployment_Guide-en-US/ch-bind.html
Щоб працювати з SSL, я змінив наступне в httpd.conf:
NameVirtualHost 192.168.1.3:443 #make sure this line is in httpd.conf
<VirtualHost 192.168.1.3:443> #change port to 443
ServerAdmin dev@site.local
DocumentRoot /home/dev/https
ServerName dev.site.local
ErrorLog /home/dev/logs/error_log
TransferLog /home/dev/logs/access_log
</VirtualHost>
На жаль, я постійно намагаюся отримувати (код помилки: ssl_error_rx_record_too_long) помилки під час спроби отримати доступ до сторінки з SSL. Як вишукано зазначив Джеймс Ханна нижче , я не встановлював розташування сертів у httpd.conf, і, таким чином, отримував сторінку, викинуту на браузер, як cert, що змушує браузер працювати.
Тому спочатку мені потрібно було створити ЦС і зробити файли сертифікатів. Тут я знайшов чудовий посібник (якщо він старий): http://www.debian-administration.org/articles/284 .
Ось відповідні кроки, які я зробив із цієї статті:
mkdir /home/CA
cd /home/CA/
mkdir newcerts private
echo '01' > serial
touch index.txt #this and the above command are for the database that will keep track of certs
Створіть openssl.cnf
файл у /home/CA/
dir та відредагуйте його відповідно до вищевказаної інструкції. (Для довідки, мій готовий файл openssl.cnf виглядав так: http://pastebin.com/raw.php?i=hnZDij4T )
openssl req -new -x509 -extensions v3_ca -keyout private/cakey.pem -out cacert.pem -days 3650 -config ./openssl.cnf #this creates the cacert.pem which gets distributed and imported to the browser(s)
Змінено openssl.cnf
знову за інструкціями.
#generates certificate request, and key.pem which I renamed dev.key.pem.
openssl req -sha1 -new -nodes -out dev.req.pem -config ./openssl.cnf
Змінено openssl.cnf
знову за інструкціями.
#create and sign certificate.
openssl ca -out dev.cert.pem -md sha1 -config ./openssl.cnf -infiles dev.req.pem
ВАЖЛИВО!
Перемістіть файли та посилайте їх на httpd.conf у новому місці
cp dev.cert.pem /home/dev/certs/cert.pem
cp dev.key.pem /home/certs/key.pem
Я оновив httpd.conf, щоб відобразити certs і включити SSLEngine:
NameVirtualHost 192.168.1.3:443
<VirtualHost 192.168.1.3:443>
ServerAdmin dev@site.local
DocumentRoot /home/dev/https
SSLEngine on
SSLCertificateFile /home/dev/certs/cert.pem
SSLCertificateKeyFile /home/dev/certs/key.pem
ServerName dev.site.local
ErrorLog /home/dev/logs/error_log
TransferLog /home/dev/logs/access_log
</VirtualHost>
Помістіть CA cert.pem у доступне для Інтернету місце та завантажте / імпортуйте його у свій браузер. Тепер я можу відвідувати https: //dev.site.local без помилок чи попереджень.
І ось я тут. Я буду продовжувати редагувати це, коли я прогресую. Будемо вдячні будь-які поради щодо налаштування SSL-електронної пошти та / або налаштування безпечного з'єднання з іншим вікном, на якому буде MySQL-сервер.