Как да подкараме html и php сайт на CentOS


3
Ще опиша с няколко стъпки всички неща, които са нужни. Предварително се извинявам ако пропусна нещо, тъй като го настройвах миналата седмица, но може да питате тук и да ви обясня. Мога да ви сложа целия код, който съм изписал, но имах доста странични проблеми през които минах и проба/грешка, само ще ви объркам. Тези настройки са за 64 битов CentOS.
 
Като начало трябва да проверим дали работи сървъра. При мен поне той беше настроен.
 
service sshd status 
openssh-daemon (pid 2463) is running... - това значи, че работи и може да продължим напред.
 
Също много важа стъпка са хората с рутери, за да не се чудят после, httpd is runnig... а пък не ми отваря сайта:
 
ifconfig
 
eth0 Link encap:Ethernet HWaddr 54:04:A6:7E:F0:3A
     inet adr:192.168.1.100 ..... (другото на татък не ви интересува в момента)
 
Така 192.168.1.100 (или каквото ви е изписало на вас) го позволявате в рутера с порт 80 (аз съм го позволил и на порт 22, за да мога да влизам във машината от вън, така че според нуждите си избирате.)
 
Останаха още няколко настройки:
 
nano /etc/ssh/sshd_config
#port 22 (намираме този ред и махаме #)
#PermitRootLogin yes (тук също махаме #)
#UseDNS yes (тук махаме # или променяме yes на no)
AllowUsers jigolo (тук добавяме този ред, като вместо jigolo си слагате юзера, който ще ползвате)
 
Ако сте го редактирали с nano - control + o за save и control +x съответно за изход. След това един рестарт:
 
service sshd restart (/etc/init.d/sshd reload)
 
До тук с настройките, сега да инсталираме малко:
 
Така да започнем с apache
 
yum install httpd
 
След което мисля ви е нужно и едно php5
 
yum install php
yum install php php-mysql 
yum install php-common php-cli php-devel php-fpm php-gd php-imap php-intl php-mysql php-process php-xml php-xmlrpc php-zts (малко модули, които ще са ви нужни)
 
И един рестарт:
 
service httpd restart
Stopping httpd: FAILED (О ГОСПОДИ, прееба се нещо, ама всъщност си е ОК, така че без паника)
 
И отново идва ред на доадните настройки:
 
nano /etc/httpd/conf/httpd.conf
 
Намирате този ред:
#ServerName www.example.com:80 (и под него добавяте - ServerName localhost и control+o + control+x)
 
След което, не е зле да го пуснем:
 
chkconfig httpd on
 
Ако всичко е коректно когато напишем http://192.168.1.100 (или ip-то което ви дава с ifconfig) трябва да се появи страница "Apache 2 Test Page powered by CentOS. До тук добре, но когато напишете вашето истинско ip, това няма да излиза. Тук трябва да си поиграем с firewall.
 
service iptables stop (тази команда ще трябва да я пишете всеки път когато рестартирате CentOS, за да може външно да отварят вашия сайт. НО ТОВА НЕ Е ПРАВИЛНО!!! При тестова машина няма проблем, но ако ще държите линукса за ежедневно ползване, това не е начина. В момента се боря с това да не се налага всеки път тази команда и да се настрой firewall така, че да пусне само вашия сайт, като се оправя с този проблем ще го допълня тук, за да е коректно всичко.
 
Правилния начин е (благодаря на колегата samvimes):
iptables -I INPUT -p tcp -m tc --dport 80 -j ACCEPT
service iptables save
service iptables restart
 
Така вече спокойно може да сложите index.html във /var/www/html/ с примерен текст (Hello World) и когато напишат вашето IP ще им излиза този текст, от тук на татък оставям вашето въображение да работи. 
 
Малко по-късно ще обясня как да настройм MySQL и как да подкараме prestashop, joomla или нещо подобно.
 
Има вероятност по време на инсталацията на някои от нещата да ви даде грешки за липсващи библиотеки. Понеже не помня дали всичко мина коректно, то ако покаже някакъв error, просто го копирате в google и четете. Ако не се оправите питайте, ще се порбвам да помогна.
 

в Linux системна администрация от Николай Матев (0 точки)


Отговори



0
Добра работа. Като гледам и броя на таговете явно посещаваш и SEO курса :D

от Eagle (233 точки)


2
За да спреш iptables да не се пуска със стартирането на ОС-а.
chkconfig iptables off
Което е изключителна лоша практика!!!
За да разрешиш port 80 на машината, в iptables:
iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
service iptables save
service iptables restart
Още една забележка. Прави виртуални хостове с отделни директории за всеки сайт, вместо да блъскаш всичко във /var/www/html.
Иначе след време много ще те боли главата.

от samvimes (60 точки)


1
Ако всичко по-горе работи коректно е ред да настроим MySQL, за да "разчупим" нашия сайт.
 
Няма да е зле първо да го инсталриаме, след което и да го стартираме:
 
yum install mysql-server
service mysqld star (вчера ми прекъсна тока и след стартиране на CentOS пробвах да отворя сайта, но ми даде следната грешка "Link to database cannot be established: SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)" което оправих със същата команда, просто се беше спряло.)
 
След което трябва да сложим парола на root на MySQL (това е различно от root на CentOS)
 
/usr/bin/mysql_secure_installation (след като напишете командата ще ви пита за парола. Тъй като до момента не е настройван, просто натискате enter.)
 
След това ще ви пита искате ли да сложите парола на root и още няколко въпроса:
 
Set root password? [Y/n] y
Remove anonymous users? [Y/n] y                                            
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
 
До тук добре. Сега трябва да си създадем база данни и потрбител с парола, които ще се изискват по-късно от вашия php сайт.
 
Влизаме в "базата":
 
mmysql -p (-p е за да ви поиска парола)
create database shop; (shop е името на базата данни, която съм решил, че ще използвам за prestashop, т.е. при вас е както си го кръстите)
 
GRANT USAGE ON *.* TO 'userzashop'@'%' IDENTIFIED BY 'parola-za-usera';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON `imeto-na-bazata-danni`.* TO 'userzashop'@'%';
flush privileges;
 
quit + enter
 
Хубаво е да видите дали не сте "осрали" нещо при копирането/преписването (или аз при писането в момента):
 
mysql -u usershop -p imeto-na-bazata-danni
 
Би трябвало всичко да е коректно.
 
Сега да си поиграем с настройките на съответния сайт. Слагате го в папка по избор във /var/www/html/shop/ (вашето IP/shop и започва инсталацията според зависи от това, което инсталирате, но честите проблеми са при правата на папките) При мен всичко светна в червено:
 
ops! Please correct the item(s) below, and then click "Refresh information" to test the compatibility of your new system.
Recursive write permissions on files and folders:
~/config/
~/cache/
~/log/
~/img/
~/mails/
~/modules/
~/themes/default/lang/
~/themes/default/cache/
~/translations/
~/upload/
~/download/
~/sitemap.xml
PHP parameters:
Mcrypt extension is not enabled
Mbstring extension is not enabled
 
Кво да правим, освен да попишем малко... 
 
Почвата като олигофрени да пишете chmod 777 papka и така за всяка папка (както аз се пребах или прочитате някъде и го правите по лесния начин)
 
chmod 777 -R config cache log img mails modules themes/default/lang/ themes/default/cache/ translations upload download sitemap.xml (хубаво е да сте в диекторията къде се намират посочените папки :D)
 
Сега идва малко по-досадно:
 
php-v (хубаво е да си проверите версията, за да не свалите нещо грешно)
 
PHP 5.3.3 (cli) (built: Jul 3 2012 16:53:21)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
with the ionCube PHP Loader v4.0.14, Copyright (c) 2002-2011, by ionCube Ltd.
 
cd /tmp/
wget http://museum.php.net/php5/php-5.3.3.tar.gz
tar -zxf php-5.3.3.tar.gz
cd php-5.3.3/ext/mcryp
 
phpize
 
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
 
aclocal
./configure
 
Тук обаче одарих на камъ (configure: error: mcrypt.h not found. Please reinstall libmcrypt.) Затова:
rpm -ivh “http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm&#8221 ;
#yum install libmcrypt libmcrypt-devel 
 
Надявам се да е точно, защото тук вече губя спомени.
 
make
make install
echo "extension=mcrypt.so" >> /etc/php.d/mcrypt.ini
php -i | grep -i "mcrypt support"
mcrypt support => enabled 
 
Така Mcrypt вече трябва да е зелен, но за целта е нужен рестарт: service httpd restart
 
При mbstring е по-лесно:
yum install php-mbstring
 
Отново service httpd restart и вече спокойно може да си настроите сайта (в случая prestashop) 
 
Поздрави.
 

от Николай Матев (0 точки)


0
За това е много готино човек да вземе и да си изкомпилира php-то ръчно като си му зададе необходимите опции в configure line-a :) Не ми стана ясно защо слагаш php-fpm? Аз знам за какво се ползва, но ми е интересно твоята цел каква е била :) А за mysql, аз поне бих го инсталирал така:
yum install mysql mysql-server mysql-devel

от samvimes (60 точки)

0
Айде още малко спам от мен :)
Забележка относно задаването на права на user-a върху базата: GRANT USAGE ON *.* TO 'userzashop'@'%' Защо даваш права на достъп за всички хостове? Това е друга изключително лоша практика откъм security. В 99% от случаите скриптовете ще се връзват с базата от localhost, а и така като гледам освен това на един user ще връчиш права върху всички бази. Още една крайно лоша практика. Може да го направиш така: GRANT ALL ON ime_na_bazata.* TO imeto_na_usera@localhost IDENTIFIED BY 'parolata';

от samvimes (60 точки)



0
Така 192.168.1.100 (или каквото ви е изписало на вас) го позволявате в рутера с порт 80 (аз съм го позволил и на порт 22, за да мога да влизам във машината от вън, така че според нуждите си избирате.)
При мен вместо да описвам поотделно портовете, съм разрешил за адреса на сървъра DMZ опцията на рутера (въпреки, че по форумите не се препоръчва). Така сървърът има свобода да ползва всички портове, напр. ако инсталирам torrent клиент, който всеки път променя порта, на който слуша.
Тъй като външният ми адрес се води динамичен, но на практика не е променян последните 5 години, съм направил регистрация в dyndns.com, така че при избор на blah-blah.dyndns,info се пренасочвам директно към сървъра.
 

от angie_bg (214 точки)


0
Вместо да пускаш DMZ и по този начин да си отваряш дупка, може да ползваш NAT/PAT. В съвременните рутери даже не ти трябва да знаеш какво е маскарадинг и т.н. всичко е цъкане на отметки.

от samvimes (60 точки)