Arch Linux提供了一个灵活的切割年龄系统环境,并且是在小型非关键系统上开发Web应用程序的强大最佳解决方案,因为它是一个完整的开放源代码,并提供了最新的Kernels版本和Web软件服务器和数据库。
在Arch Linux中安装LAMP
本教程的这个范围主要是来指导你通过步说明一个完整的步骤,最终会导致安装在Web开发中最常用的软件组合之一:LAMP(Linux操作系统,Apache,MySQL和/ MariaDB的,和PHP / phpMyAdmin的),它会为你展示一些不错的功能(快速和肮脏的bash脚本)是不存在于Arch Linux的系统,但可以缓解创建多个虚拟主机的工作,产生所需的安全HTTS交易的SSL证书和密钥 。
要求
- 上一页Arch Linux的安装过程-跳过带有DHCP的最后一部分。
- 上一页LEMP安装在Arch Linux的 -只有在配置静态IP地址和远程SSH访问的部分。
第1步:安装基本软件LAMP
1.最小系统安装使用静态IP地址,并使用SSH远程系统访问后,用豆子工具升级Arch Linux的盒子。
$ sudo pacman -Syu
2.当升级过程完成从安装LAMP件,首先安装Apache Web Server和启动/验证每个服务器进程守护进程。
$ sudo pacman -S apache $ sudo systemctl start httpd $ sudo systemctl status httpd
安装Apache Web服务器
3.安装PHP动态服务器端脚本语言和Apache模块。
$ sudo pacman -S php php-apache
4.在最后一步安装MySQL数据库,选择1(MariaDB的 )社区数据库叉然后开始检查进程的状态。
$ sudo pacman -S mysql $ sudo systemctl start mysqld $ sudo systemctl status mysqld
安装MySQL数据库
启动MySQL数据库
现在,你已经安装了基本的LAMP软件 ,到目前为止,开始与默认配置。
第2步:保护MySQL数据库
5.下一步是通过设置root帐号密码以保护MySQL数据库,删除匿名用户帐户,删除test数据库,并禁止远程登录用户root(按[Enter]为root帐户的当前密码钥匙和所有有回答安全问题)。
$ sudo mysql_secure_installation
安全MySQL数据库
设置MySQL root密码
6.运行以下命令验证MySQL数据库的连接,然后离开数据库壳退出或退出声明。
$ mysql -u root -p
验证MySQL数据库连接
第3步:修改Apache主配置文件
7.下列配置其中大部分涉及到的Apache Web服务器 ,以提供与PHP脚本语言,SSL或者非SSL虚拟主机虚拟主机动态界面,可以通过修改httpd服务配置文件来完成。
首先使用您喜欢的文本编辑器打开主要的Apache文件配置。
$ sudo nano /etc/httpd/conf/httpd.conf
在文件的最底部,附加以下两行。
IncludeOptional conf/sites-enabled/*.conf IncludeOptional conf/mods-enabled/*.conf
包括虚拟主机配置
这里包含语句的作用是告诉Apache,从现在开始,就应该驻留在所有文件中读取进一步配置的/ etc / httpd的/ conf目录/ /( 虚拟主机 ) 启用站点,和/ etc / httpd的/ conf目录/在一个扩展的.conf结尾/(已启用服务器模块)系统路径启用MODS - 。
8.经过Apache已经指示与此两项指令,创造必要的系统目录发出以下命令。
$ sudo mkdir /etc/httpd/conf/sites-available $ sudo mkdir /etc/httpd/conf/sites-enabled $ sudo mkdir /etc/httpd/conf/mods-enabled
该网站可用的路径认为,没有在Apache激活,但接下来的Bash脚本将使用该目录链接,并启用了位于那里的网站所有虚拟主机配置文件。
第4步:创建a2eniste和a2diste Apache命令
9.现在是时候创建a2ensite和a2dissite Apache的脚本,将作为命令来启用或禁用虚拟主机配置文件。 键入cd命令返回到您的$ HOME用户路径,并创建您的bash a2eniste,并使用您喜欢的编辑a2dissite脚本。
$ sudo nano a2ensite
在此文件上添加以下内容。
#!/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
创建a2eniste Apache脚本
现在创建a2dissite bash脚本文件。
$ sudo nano a2dissite
附加以下内容。
#!/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
创建a2dissite Apache脚本
10.已创建的文件后分配执行权限,并将其复制到$ PATH可执行文件目录,使它们全系统可用。
$ sudo chmod +x a2ensite a2dissite $ sudo cp a2ensite a2dissite /usr/local/bin/
设置执行权限
第5步:在Apache中创建虚拟主机
对Arch Linux的Apache Web服务器11.虚拟主机默认的配置文件是由位于/ etc / httpd的/ conf目录/额外/路径的httpd-vhosts.conf文件中提供的,但如果你有一个使用了很多虚拟主机可以是系统非常难以跟踪什么网站被激活和不和。 如果你想关闭一个网站,你必须注释或删除其所有指令,如果你的系统提供了大量的网站和你的网站有更多的配置指令,可以是一个艰巨的任务。
使用网站可用的和使能的站点路径 ,极大地简化了启用或禁用网站的作业并还保留,即使它们被激活与否所有网站的配置文件。
在下一步,我们要建立一个指向默认使用默认的DocumentRoot路径为本地主机服务的网站文件(/ SRV / HTTP的第一个虚拟主机。
$ sudo nano /etc/httpd/conf/sites-available/localhost.conf
在此处添加以下Apache指令。
<VirtualHost *:80> DocumentRoot "/srv/http" ServerName localhost ServerAdmin you@example.com 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>
在Apache中创建虚拟主机
这里最重要的语句港和服务器名称指示,指示Apache将打开80端口的网络连接和重定向所有的查询与本地主机名担任位于/ SRV / HTTP /路径文件。
本地主机文件已创建12后,激活然后重新启动httpd后台查看变化。
$ sudo a2ensite localhost $ sudo systemctl restart httpd
活动a2ensite脚本
13.然后将浏览器指向到http://本地主机 ,如果从凯旋门系统或http运行它:// Arch_IP如果你使用一个远程系统。
浏览Apache
第6步:在LAMP上使用虚拟主机启用SSL
SSL( 安全套接字层 )是设计用来加密通过网络或因特网,这使得可以使用对称/非对称加密密钥通过安全通道发送的数据流与在Arch Linux的由OpenSSL软件包提供HTTP连接的协议。
14.默认情况下SSL模块没有在Arch Linux的Apache的启用,可以通过取消注释从主配置文件httpd.conf mod_ssl.so模块被激活, 包括位于额外的httpd路径的httpd-ssl.conf中的文件。
但是,为了简单起见,我们将创建启用MODS路径的SSL一个新的模块文件,离开主Apache配置文件不变。 为SSL模块创建以下文件,并添加以下内容。
$ sudo nano /etc/httpd/conf/mods-enabled/ssl.conf
附加以下内容。
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
使用虚拟主机启用SSL
15.现在创建一个指向同一个本地主机名称此时虚拟主机文件,但使用SSL服务器配置,并稍微更改其名称要提醒你,它代表了与SSL本地主机。
$ sudo nano /etc/httpd/conf/sites-available/localhost-ssl.conf
在此文件上添加以下内容。
<VirtualHost *:443> DocumentRoot "/srv/http" ServerName localhost ServerAdmin you@example.com 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>
创建SSL虚拟主机
除了港口和服务器名指令,其他重要指示这里是那些指着其中尚未创建的,所以不要重新启动Apache Web服务器或你会得到一些错误的SSL证书文件和SSL密钥文件。
16.要创建所需的SSL证书文件,并安装密钥OpenSSL软件包发出以下命令。
$ sudo pacman -S openssl
17.然后创建一个自动创建以下的Bash脚本和存储所有你的Apache证书和密钥在/ etc / httpd的/ conf目录/ SSL /系统路径。
$ sudo nano apache_gen_ssl
添加以下文件内容,然后保存并使其可执行。
#!/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
存储Apache证书和密钥
$ sudo chmod +x apache_gen_ssl
如果你想脚本可用系统范围内将其复制到一个可执行的$ PATH。
$ sudo cp /apache_gen_ssl /usr/local/bin/
18.现在,通过运行该脚本生成的证书和密钥 。 提供您的SSL选项,不要忘记证书名称和通用名称 ,以配合您的官网域(FQDN)。
$ sudo ./apache_gen_ssl
创建Apache证书和密钥
输入证书详细信息
在创建证书和密钥后,不要忘记修改您的SSL虚拟主机证书和密钥配置以匹配此证书的名称。
19.最后一步是新激活SSL虚拟主机,然后重新启动服务器以应用配置。
$ sudo a2ensite localhost-ssl $ sudo systemctl restart httpd
激活SSL虚拟主机
而已! 为了验证它打开浏览器,并使用HTTPS协议的URL添加拱门IP:https://开头本地主机或https:// system_IP。
通过SSL浏览Apache
第7步:在Apache上启用PHP
20.默认的Apache仅提供不带动态脚本语言的支持在Arch Linux的HTML静态文件的内容。 要激活PHP首先打开Apache的主配置文件,然后搜索并取消以下LoadMolude表达式(PHP,Apache不与Arch Linux的mod_mpm_event工作)。
$ sudo nano /etc/httpd/conf/httpd.conf
使用[按Ctrl] + [W]搜索和注释以下行看起来是这样。
#LoadModule mpm_event_module modules/mod_mpm_event.so
启用PHP模块
21.然后为PHP模块中启用了MODS路径的新文件,内容如下。
$ sudo nano /etc/httpd/conf/mods-enabled/php.conf
添加正好以下内容(必须使用mod_mpm_prefork)。
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so LoadModule php5_module modules/libphp5.so Include conf/extra/php5_module.conf
启用mod_mpm_prefork模块
22.要验证设置创建一个PHP在DocumnetRoot名为info.php的文件(/ SRV / HTTP /),然后重新启动Apache和浏览器指向info.php的文件:HTTPS://localhost/info.php。
<?php phpinfo(); ?>
$ sudo systemctl restart httpd
验证PHP信息
而已! 如果一切看起来就像上图中,你现在有在Apache支持PHP动态服务器端的脚本语言,你现在可以开发使用开源CMS像WordPress例如网站。
如果要验证Apache语法配置并查看加载的模块的列表,而不重新启动httpd守护程序,请运行以下命令。
$ sudo apachectl configtest $ sudo apachectl -M
第8步:安装和配置PhpMyAdmin
23.如果你没有掌握MySQL命令行,并希望通过web界面提供了MySQL数据库的简单的远程访问,那么你需要安装在拱箱phpMyAdmin套件。
$ sudo pacman -S phpmyadmin php-mcrypt
24.已安装的软件包后,您需要启用一些PHP扩展(mysqli.so,mcrypt.so -内部认证),你可以,也为需要为未来的CMS平台,如openssl.so,IMAP使其他模块。所以还是iconv.so等。
$ sudo nano /etc/php/php.ini
找到并取消注释以上扩展名。
extension=mcrypt.so extension=mssql.so extension=mysqli.so extension=openssl.so extension=iconv.so extension=imap.so extension=zip.so extension=bz2.so
安装和配置PhpMyAdmin
此外,在同一个文件,搜索和定位open_basedir的语句,然后添加phpMyAdmin的系统路径( 在/ etc / webapps /目录和/ usr /共享/ webapps /下 ),以确保PHP可以在这些目录访问和读取文件(如果你还,更改虚拟主机的DocumentRoot从/ SRV / HTTP /路径到另一个位置,你需要在这里添加新路径太)。
启用open_basedir
25.你需要以访问phpMyAdmin的Web界面做的最后一件事是添加虚拟主机的Apache的phpMyAdmin声明。 作为安全措施,将确保PhpMyAdmin Web界面只能从本地主机(或系统IP地址)使用HTTPS协议,而不是从其他不同的虚拟主机访问。 因此,打开底部本地主机-ssl.conf中的Apache文件,前年 语句添加以下内容。
$ 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>
创建PhpMyAdmin虚拟主机配置
26.然后重新启动Apache后台程序和浏览器指向以下地址,你应该能够进入phpMyAdmin的Web界面:https://开头本地主机/ phpMyAdmin的或https:// system_IP / phpMyAdmin的 。
访问PhpMyAdmin Web界面
27.如果您登录到phpMyAdmin之后,你看到一个底部错误关于一个blowfish_secret,打开和编辑/etc/webapps/phpmyadmin/config.inc.php文件,插入随机字符串像在下面的语句,然后刷新页。
$cfg['blowfish_secret'] = ‘{^QP+-(3mlHy+Gd~FE3mN{gIATs^1lX+T=KVYv{ubK*U0V’ ;
修复blowfish_secret错误
第9步:启用LAMP系统宽
28.如果你想的LAMP后重新启动系统运行以下命令自动启动。
$ sudo systemctl enable httpd mysqld
启用LAMP系统宽
这是一些主要的配置设置到Arch Linux的系统转变成一个简单但功能强大,快速和强大的网络平台与先进的年龄服务器软件用于小型非关键环境所需LAMP,但如果你固执,仍然想使用它在大型生产环境中,您应该充分的耐心,并额外关注软件包更新,并定期系统备份映像,以便在系统故障时快速恢复系统。