Pag-instalar sa LAMP (Linux, Apache, MySQL/MariaDB, ug PHP/PhpMyAdmin) sa Arch Linux


Ang Arch Linux naghatag og usa ka flexible cutting age system environment ug usa ka gamhanan nga labing haum nga solusyon alang sa pagpalambo sa mga aplikasyon sa web sa gagmay nga mga non-kritikal nga mga sistema tungod sa kamatuoran nga usa ka kompleto nga Open Source ug naghatag sa katapusan nga pinakabag-o nga pagpagawas sa Kernels ug web software alang sa mga server ug mga database.

Kini nga nag-unang sakup niini nga panudlo mao ang paggiya kanimo sa usa ka kompleto nga lakang sa lakang nga mga panudlo nga sa katapusan manguna sa pag-install sa usa sa labing gigamit nga kombinasyon sa software sa Web Development: LAMP (Linux, Apache, MySQL/MariaDB, ug PHP/PhpMyAdmin )ug kini magpakita kanimo og pipila ka nindot nga mga feature (dali ug hugaw nga Bash scripts) nga wala diha sa Arch Linux system, apan makapagaan sa trabaho sa paghimo og daghang Virtual Hosts , paghimo og SSL Certificates ug Keys nga gikinahanglan alang sa luwas nga HTTS nga mga transaksyon.

  1. Nakaagi nga proseso sa Pag-install sa Arch Linux – laktawan ang kataposang bahin gamit ang DHCP.
  2. Nakaagi nga pag-install sa LEMP sa Arch Linux – ang bahin lang nga adunay pag-configure sa Static IP Address ug layo nga SSH access.

Lakang 1: I-install ang Basic Software LAMP

1. Human sa gamay nga pag-instalar sa sistema nga adunay static IP address ug remote system access gamit ang SSH, i-upgrade ang imong Arch Linux box gamit ang pacman utility.

$ sudo pacman -Syu

2. Sa diha nga ang proseso sa pag-upgrade mahuman i-install ang LAMP gikan sa mga piraso, una nga i-install ang Apache Web Server ug sugdi/verify ang matag server nga proseso daemon.

$ sudo pacman -S apache 
$ sudo systemctl start httpd 
$ sudo systemctl status httpd

3. I-install ang PHP dynamic nga server-side scripting language ug ang Apache module niini.

$ sudo pacman -S php php-apache

4. Sa kataposang lakang i-install ang MySQL database, pilia ang 1 (MariaDB) community database fork unya sugdi ug susiha ang status sa daemon.

$ sudo pacman -S mysql 
$ sudo systemctl start mysqld 
$ sudo systemctl status mysqld

Karon naa na nimo ang batakang LAMP software nga na-install ug nagsugod sa default nga mga pag-configure hangtod karon.

Lakang 2: I-secure ang MySQL Database

5. Ang sunod nga lakang mao ang pag-secure sa database sa MySQL pinaagi sa pagbutang og password para sa root account, pagtangtang sa anonymous nga user accounts, pagtangtang sa test database ug dili pagtugot sa remote login para sa user root ( press [Enter] yawe para sa root account nga kasamtangang password ug tubag og Oo sa tanang pangutana sa seguridad).

$ sudo mysql_secure_installation

6. I-verify ang MySQL database connectivity pinaagi sa pagpadagan sa mosunod nga command unya ibilin ang database shell nga adunay quit o exit nga pahayag.

$ mysql -u root -p

Lakang 3: Usba ang Apache Main Configuration File

7. Ang mosunod nga mga pag-configure kasagaran niini may kalabutan sa Apache Web Serveraron makahatag ug dinamikong interface para sa Virtual Hosting nga adunay PHP scripting language, SSL o non-SSL Virtual Hosts ug mahimo buhaton pinaagi sa pag-usab sa httpd service file configurations.

Una ablihi ang nag-unang Apache file configuration sa imong paborito nga text editor.

$ sudo nano /etc/httpd/conf/httpd.conf

Sa pinakaubos nga bahin sa file, idugang ang mosunod nga duha ka linya.

IncludeOptional conf/sites-enabled/*.conf
IncludeOptional conf/mods-enabled/*.conf

Ang tahas sa Ilakip nga mga pahayag dinhi mao ang pagsulti sa Apache nga sugod karon, kinahanglan nga basahon ang dugang nga mga pag-configure gikan sa tanan nga mga file nga nagpuyo sa /etc/httpd/conf/sites-enabled/ (para sa Virtual Hosting) ug /etc/httpd/conf/mods-enabled/ ( para sa enabled server modules) system paths nga matapos sa usa ka .conf nga extension.

8. Human matudloan ang Apache niining duha ka mga direktiba, paghimo sa gikinahanglan nga mga direktoryo sa sistema nga nag-isyu sa mosunod nga mga sugo.

$ sudo mkdir /etc/httpd/conf/sites-available
$ sudo mkdir /etc/httpd/conf/sites-enabled
$ sudo mkdir /etc/httpd/conf/mods-enabled

Ang sites-available nga dalan nagkupot sa tanang Virtual Hosts configurations files nga wala gi-activate sa Apache pero ang sunod nga Bash script mogamit niini nga direktoryo aron masumpay ug makapahimo sa mga website nga anaa didto.

Lakang 4: Paghimo a2eniste ug a2diste Apache Commands

9. Karon na ang panahon sa paghimo og a2ensite ug a2dissite nga mga script sa Apache nga magsilbi nga mga sugo aron mahimo o ma-disable ang Virtual Host configuration file. Isulat ang cd nga sugo aron mobalik sa imong $HOME nga agianan sa user ug paghimo sa imong bash a2eniste ug a2dissite nga mga script gamit ang imong paborito nga editor.

$ sudo nano a2ensite

Idugang ang mosunod nga sulod niini nga file.

#!/bin/bash
if test -d /etc/httpd/conf/sites-available && test -d /etc/httpd/conf/sites-enabled  ; then
echo "-------------------------------"
else
mkdir /etc/httpd/conf/sites-available
mkdir /etc/httpd/conf/sites-enabled
fi

avail=/etc/httpd/conf/sites-available/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-available/`

if [ "$#" != "1" ]; then
        echo "Use script: n2ensite virtual_site"
        echo -e "\nAvailable virtual hosts:\n$site"
        exit 0
else
if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Success!! Now restart Apache server: sudo systemctl restart httpd"
else
echo  -e "Virtual host $avail does not exist!\nPlease see avail virtual hosts:\n$site"
exit 0
fi
fi

Karon paghimo og a2dissite bash script file.

$ sudo nano a2dissite

Idugang ang mosunod nga sulod.

#!/bin/bash
avail=/etc/httpd/conf/sites-enabled/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-enabled`

if [ "$#" != "1" ]; then
        echo "Use script: n2dissite virtual_site"
        echo -e "\nAvailable virtual hosts: \n$site"
        exit 0
else
if test -e $avail; then
sudo rm  $avail
else
echo -e "$avail virtual host does not exist! Exiting"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo  -e "Success! $avail has been removed!\nsudo systemctl restart httpd"
exit 0
fi
fi

10. Human mabuhat ang mga payl igahin ang execute permiso ug kopyaha kini sa PATH executable nga direktoryo aron kini magamit sa tibuok sistema.

$ sudo chmod +x a2ensite a2dissite
$ sudo cp a2ensite a2dissite /usr/local/bin/

Lakang 5: Paghimo Virtual Host sa Apache

11. Virtual Host default configuration file para sa Apache Web server sa Arch Linux gihatag sa httpd-vhosts.conf file nga nahimutang sa /etc/httpd/conf/extra/ nga dalan apan kung ikaw adunay usa ka sistema nga naggamit sa daghang mga Virtual Host mahimong lisud kaayo nga masubay kung unsang website ang gi-aktibo o wala ug. Kung gusto nimo nga pagana ang usa ka website kinahanglan nimo nga ikomento o papason ang tanan nga mga direktiba niini ug mahimo kana usa ka lisud nga misyon kung ang imong sistema naghatag daghang mga website ug ang imong website adunay daghang mga direktiba sa pag-configure.

Gamit ang sites-available ug sites-enabled nga mga agianan, labi nga gipasimple ang trabaho sa enable o disable nga mga website ug nagpreserbar usab ang tanan nimong mga file sa pag-configure sa website bisan kung kini gi-aktibo o wala.

Sa sunod nga lakang atong tukuron ang una nga Virtual Host nga nagpunting sa default localhost nga adunay default DocumentRoot nga agianan alang sa pagserbisyo sa mga file sa website (/srv/http.

$ sudo nano /etc/httpd/conf/sites-available/localhost.conf

Idugang ang mosunod nga mga direktiba sa Apache dinhi.

<VirtualHost *:80>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email 
        ErrorLog "/var/log/httpd/localhost-error_log"
        TransferLog "/var/log/httpd/localhost-access_log"

<Directory />
    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>

Ang labing importante nga mga pahayag dinhi mao ang Port ug ServerName nga mga direktiba nga nagmando sa Apache sa pag-abli sa koneksyon sa network sa port 80 ug pag-redirect sa tanang pangutana nga adunay localhost nga ngalan ngadto sa pag-alagad sa mga file nga nahimutang sa /srv/http/ dalan.

12. Human mabuhat ang localhost file, i-activate kini unya i-restart ang httpd daemon aron makita ang mga kausaban.

$ sudo a2ensite localhost
$ sudo systemctl restart httpd

13. Dayon itudlo ang imong browser sa http://localhost, kon imo kining gipadagan gikan sa Arch system o http://Arch_IP kon mogamit ka og remote system.

Lakang 6: I-enable ang SSL gamit ang Virtual Hosting sa LAMP

Ang SSL (Secure Sockets Layer) maoy usa ka protocol nga gidesinyo sa pag-encrypt sa mga koneksyon sa HTTP sa mga network o Internet, nga naghimo sa pagdagayday sa datos nga mapasa sa usa ka luwas nga channel gamit ang simetriko/asymmetric nga mga yawe sa kriptograpiya ug gihatag sa Arch Linux pinaagi sa OpenSSL package.

14. Pinaagi sa default SSL module wala ma-enable sa Apache sa Arch Linux ug mahimong ma-activate pinaagi sa uncommenting mod_ssl.so module gikan sa main httpd.conf configuration file ug Include httpd-ssl.conf nga payl nga nahimutang sa extra httpd path.

Apan aron mapasayon ang mga butang maghimo kami og bag-ong module file para sa SSL sa mods-enabled nga dalan ug ibilin ang nag-unang Apache configuration file nga wala matandog. Paghimo sa mosunod nga file alang sa SSL module ug idugang ang ubos nga sulod.

$ sudo nano /etc/httpd/conf/mods-enabled/ssl.conf

Idugang ang mosunod nga sulod.

LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

Listen 443

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:/run/httpd/ssl_scache(512000)"
SSLSessionCacheTimeout  300

15. Karon paghimo ug Virtual Host file nga nagpunting sa parehas nga localhost nga ngalan apan gamit ang SSL server configurations karong panahona, ug gamay nga usba ang ngalan niini aron mapahinumdoman ka nga kini nagpasabut sa localhost nga adunay SSL.

$ sudo nano /etc/httpd/conf/sites-available/localhost-ssl.conf

Idugang ang mosunod nga sulod niini nga file.

<VirtualHost *:443>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email 
        ErrorLog "/var/log/httpd/localhost-ssl-error_log"
        TransferLog "/var/log/httpd/localhost-ssl-access_log"

SSLEngine on

SSLCertificateFile "/etc/httpd/conf/ssl/localhost.crt"
SSLCertificateKeyFile "/etc/httpd/conf/ssl/localhost.key"

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>

<Directory "/srv/http/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

CustomLog "/var/log/httpd/ssl_request_log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

<Directory />

    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>

Gawas sa Port ug ServerName nga mga direktiba, ang ubang importante nga mga direktiba dinhi mao kadtong nagpunting sa SSL Certificate file ug SSL Key file nga wala pa mabuhat busa ayaw i-restart ang Apache Web Server o makakuha ka pipila ka mga sayup.

16. Aron makahimo og gikinahanglan nga SSL Certificate file ug Keys i-install ang OpenSSL package nga nag-isyu sa sugo sa ubos.

$ sudo pacman -S openssl

17. Dayon buhata ang mosunod nga Bash script nga awtomatik nga maghimo ug magtipig sa tanan nimong Apache Certificates ug Keys sa /etc/httpd/conf /ssl/ agianan sa sistema.

$ sudo nano apache_gen_ssl

Idugang ang mosunud nga sulud sa file unya i-save kini ug himoa kini nga ma-executable.

#!/bin/bash
mkdir /etc/httpd/conf/ssl
cd /etc/httpd/conf/ssl

echo -e "Enter your virtual host FQDN: \nThis will generate the default name for Nginx  SSL certificate!"
read cert

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out $cert.key
chmod 600 $cert.key
openssl req -new -key $cert.key -out $cert.csr
openssl x509 -req -days 365 -in $cert.csr -signkey $cert.key -out $cert.crt

echo -e " The certificate "$cert" has been generated!\nPlease link it to Apache SSL available website!"

ls -all /etc/httpd/conf/ssl
exit 0
$ sudo chmod +x apache_gen_ssl

Kung gusto nimo nga magamit ang script sa system wide kopyaha kini sa usa ka executable PATH.

$ sudo cp /apache_gen_ssl  /usr/local/bin/

18. Karon paghimo sa imong Certificate ug Keys pinaagi sa pagpadagan sa script. Ihatag ang imong mga kapilian sa SSL ug ayaw kalimti ang ngalan sa sertipiko ug Komon nga Ngalan aron ipares sa imong opisyal nga dominyo (FQDN).

$ sudo ./apache_gen_ssl

Human mabuhat ang sertipiko ug mga yawe ayaw kalimti ang pag-usab sa imong sertipiko sa SSL Virtual Host ug mga pag-configure sa mga yawe aron mohaum sa ngalan niini nga sertipiko.

19. Ang katapusan nga lakang mao ang pagpaaktibo sa bag-ong SSL Virtual Host ug i-restart ang imong server aron magamit ang mga configuration.

$ sudo a2ensite localhost-ssl
$ sudo systemctl restart httpd

Mao na! Aron mapamatud-an kini ablihi ang browser ug idugang ang Arch IP sa URL gamit ang HTTPS protocol: https://localhost o https://system_IP.

Lakang 7: I-enable ang PHP sa Apache

20. Sa default ang Apache nag-alagad lamang sa HTML static files content sa Arch Linux nga walay suporta sa dinamikong scripting nga mga pinulongan. Aron ma-activate ang PHP, ablihi una ang Apache main configuration file dayon pangitaa ug i-uncomment ang mosunod nga LoadModule nga pahayag (php-apache wala magamit sa mod_mpm_event sa Arch Linux ).

$ sudo nano /etc/httpd/conf/httpd.conf

Gamit ang [Ctrl]+[w] pangitaa ug ikomentaryo ang mosunod nga linya aron kini tan-awon.

#LoadModule mpm_event_module modules/mod_mpm_event.so

21. Dayon paghimo ug bag-ong file para sa PHP module sa mods-enabled nga dalan nga adunay mosunod nga sulod.

$ sudo nano /etc/httpd/conf/mods-enabled/php.conf

Idugang ang eksaktong mosunod nga sulod (kinahanglan nimong gamiton ang mod_mpm_prefork).

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule php5_module modules/libphp5.so

Include conf/extra/php5_module.conf

22. Aron mapamatud-an ang setting paghimo og PHP og file nga ginganlag info.php sa imong DocumnetRoot (/srv/http/), unya i-restart ang Apache ug itudlo ang imong browser sa info .php file: https://localhost/info.php.

<?php

phpinfo();

?>
$ sudo systemctl restart httpd

Mao na! Kung ang tanan sama sa imahe sa ibabaw, naa na nimo ang PHP dinamikong server-side scripting nga lengguwahe nga gipagana sa Apache ug mahimo ka na nga maghimo mga website gamit ang Open Source CMS sama sa WordPress pananglitan.

Kung gusto nimo nga pamatud-an ang mga configuration sa Apache syntax ug tan-awa ang usa ka lista sa gikarga nga mga module nga wala i-restart ang httpd daemon padagana ang mosunod nga mga sugo.

$ sudo apachectl configtest
$ sudo apachectl -M

Lakang 8: Pag-instalar ug Pag-configure sa PhpMyAdmin

23. Kung dili ka hawod sa MySQL command line ug gusto ug simple nga remote access sa MySQL database nga gihatag pinaagi sa web interface nan kinahanglan nimo ang PhpMyAdmin nga package nga na-install sa imong Arch box.

$ sudo pacman -S phpmyadmin php-mcrypt

24. Human ma-install ang mga package kinahanglan nimo nga i-enable ang pipila ka mga extension sa PHP (mysqli.so, mcrypt.so – para sa internal authentication) ug mahimo nimo, usab, makapahimo sa uban modules nga gikinahanglan para sa umaabot nga mga CMS nga plataporma sama sa openssl.so, imap.so o iconv.so ug uban pa.

$ sudo nano /etc/php/php.ini

Pangitaa ug uncomment ang mga extension sa ibabaw.

extension=mcrypt.so
extension=mssql.so
extension=mysqli.so
extension=openssl.so
extension=iconv.so
extension=imap.so
extension=zip.so
extension=bz2.so

Usab, sa samang file, pangitaa ug pangitaa ang open_basedir nga pahayag ug idugang ang PhpMyAdmin system path (/etc/webapps/ ug /usr/share/webapps/) aron masiguro nga ang PHP maka-access ug makabasa sa mga file ubos sa maong mga direktoryo (Kon ikaw, usab, mag-usab sa Virtual Hosts DocumentRoot nga agianan gikan sa /srv/http/ ngadto sa laing lokasyon kinahanglan nimo nga idugang ang bag-ong dalan dinhi usab ).

25. Ang katapusang butang nga kinahanglan nimong buhaton aron ma-access ang PhpMyAdmin Web Interface mao ang pagdugang sa PhpMyAdmin Apache nga mga pahayag sa Virtual Hosts. Isip usa ka sukod sa seguridad siguraduhon nga ang PhpMyAdmin Web Interface ma-access lamang gikan sa localhost (o system IP address) gamit ang HTTPS protocol ug dili gikan sa ubang lain-laing Virtual Hosts. Busa, ablihi ang imong localhost-ssl.conf Apache file ug sa ubos, sa dili pa ang katapusang nga pahayag idugang ang mosunod nga sulod.

$ sudo nano /etc/httpd/conf/sites-enabled/localhost-ssl.conf
Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"

<Directory "/usr/share/webapps/phpMyAdmin">
    DirectoryIndex index.html index.php
    AllowOverride All
    Options FollowSymlinks
    Require all granted
</Directory>

26. Pagkahuman i-restart ang Apache daemon ug itudlo ang imong browser sa mosunod nga adres ug kinahanglan nimo nga ma-access ang imong PhpMyAdmin Web Interface: https://localhost/phpmyadmin o https://system_IP/ phpmyadmin.

27. Kon, human ka maka-log in sa PhpMyAdmin, makakita kag ubos nga sayop mahitungod sa blowfish_secret, ablihi ug i-edit ang /etc/webapps/phpmyadmin/config.inc.php file ug isulod ang random string sama sa naa sa musunod nga statement, unya i-refresh ang page.

$cfg['blowfish_secret'] = ‘{^QP+-(3mlHy+Gd~FE3mN{gIATs^1lX+T=KVYv{ubK*U0V’ ;

Lakang 9: I-enable ang LAMP System Wide

28. Kung gusto nimo nga awtomatikong magsugod ang LAMP stack pagkahuman sa pag-reboot sa sistema padagana ang mosunod nga mga sugo.

$ sudo systemctl enable httpd mysqld

Kini ang pipila sa mga nag-unang setting sa pag-configure sa LAMP nga gikinahanglan aron mabag-o ang Arch Linux nga sistema ngadto sa usa ka yano apan gamhanan, paspas ug lig-on nga plataporma sa web nga adunay cutting-age nga server software alang sa gagmay nga dili -kritikal nga mga palibot, apan kung gahi ka ug gusto pa nga gamiton kini sa usa ka dako nga palibot sa produksiyon kinahanglan nimo nga armado ang imong kaugalingon nga adunay daghang pagpailub ug hatagan dugang nga pagtagad ang mga pag-update sa mga pakete ug maghimo regular nga mga imahe sa backup sa sistema alang sa usa ka paspas nga pagpahiuli sa sistema kung adunay mga kapakyasan sa sistema.