如何在Debian Linux 8(Jessie)上设置LAMP服务器

时间:2020-01-09 10:39:44  来源:igfitidea点击:

如何使用命令行选项在Debian Linux版本8(Jessie)上设置LAMP(Linux,Apache,MySql,PHP)堆栈?
在Debian 8服务器上设置LAMP堆栈将允许托管用PHP,Perl和Python编写的网站和Web应用程序。
您需要在Debian Linux 8上安装以下软件包:

  • apache2:Apache HTTP服务器

  • mysql-server:MySQL服务器

  • php5:PHP 5

  • php-pear:PHP 5梨软件包

  • php5-mysql:PHP 5 mysql支持

在本教程中,您将学习在Debian 8服务器上安装LAMP。

更新系统

执行以下命令:

# apt-get update
# apt-get upgrade

安装Apache 2软件包

输入以下apt-get命令以安装Apache httpd服务器版本2:

# apt-get install apache2

安装MySQL服务器软件包

执行以下apt-get命令以安装Mysql服务器版本5.x:

# apt-get install mysql-server

安装PHP包

输入以下apt-get命令以安装php5:

# apt-get install php5 php-pear libapache2-mod-php5

安装PHP模块

执行以下apt-get命令以安装php模块:

# apt-get install php5-mysql php5-gd

要查找其他PHP5模块,请执行:

# apt-cache search php5

可选:为Perl应用程序安装Perl

在Apache 2的Perl模块中输入以下apt-get命令:

# apt-get install perl libapache2-mod-perl2

可选:为python应用安装Python

执行以下apt-get命令为Apache 2安装Python模块:

# apt-get install python libapache2-mod-python

LAMP配置

在此阶段,已安装必需的软件包。
要找到您的服务器IP地址,请运行:

# ifconfig eth0

或者

# ip addr show eth0

输出示例:

2: eth0:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:08:9b:c4:30:30 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.10/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::208:9bff:fec4:3030/64 scope link 
       valid_lft forever preferred_lft forever

打开浏览器并通过输入服务器IP地址对其进行测试:

http://192.168.1.10/

输出示例:
Debian Linux 8上的默认Apache 2页面

配置Apache

编辑/etc/apache2/apache2.conf文件,执行:

# vi /etc/apache2/apache2.conf

确保根据需要设置端口,IP地址和其他信息。
最后,重新启动服务器:

# systemctl restart apache2

如何为名为theitroad.local的域配置基于名称的虚拟主机?

首先,创建目录,如下所示:

# D="theitroad.local"
# mkdir -p /var/www/html/$D/html_root
# mkdir -p /var/log/apache2/$D/

创建/etc/apache2/sites-available/$D.conf文件:

# vi /etc/apache2/sites-available/$D.conf

追加以下指令:

<VirtualHost *:80> 
     ServerAdmin [email protected]
     ServerName theitroad.local
     ServerAlias www.theitroad.local
     DocumentRoot /var/www/html/theitroad.local/html_root
     ErrorLog  /var/log/apache2/theitroad.local/logs/error.log 
     CustomLog  /var/log/apache2/theitroad.local/logs/access.log combined
</VirtualHost>

保存并关闭文件。
打开配置:

# a2ensite $D.conf

再次,重新启动apache服务器:

# systemctl restart apache2

配置MySQL服务器

首先,保护您的mysql服务器,执行:

# mysql_secure_installation

创建一个名为wordpress的示例mysql数据库。
首先,登录如下:

# mysql -u root -p

在mysql>提示符下执行以下sql命令:

mysql> create database wordpress;
mysql> grant all on wordpress.* to 'Hyman' identified by '1SfFAi9$';
mysql> quit

上面的代码将创建一个名为wordpress的数据库,并使用用户名Hyman和密码1SfFAi9 $授予您的用户访问权限。
有关更多信息,请参见如何在MySQL上创建和使用数据库/用户。

配置PHP

编辑/etc/php5/apache2/php.ini,执行:

# vi /etc/php5/apache2/php.ini

追加或修改如下:

;
; *******************************************************************************************************
; NOTE: These settings are good starting points, but should be adjusted to best suite your requirements.*
; *******************************************************************************************************

; Set error reporting to a log file
display_errors=Off
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
error_log = /var/log/apache2/php-error.log  

; Again set this as per your needs - Anit DoS settings
max_execution_time =  30
max_input_time = 30
memory_limit = 40M

; No exposing is allowed 
expose_php=Off

; Disable file uploads 
file_uploads=Off

; Turn off remote execution 
allow_url_fopen=Off
allow_url_include=Off

; Block dangerous php functions 
disable_functions =exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

注意:请参阅我们的php 5安全提示指南和阻止使用php函数,以获取更多信息。

再次,重新启动apache 2服务器:

# systemctl restart apache2

接下来,创建/var/www/html/info.php文件以测试PHP:

# echo '<?php phpinfo(); ?>' > /var/www/html/info.php

测试网址:

http://192.168.1.10/info.php

输出示例:
Debian Linux 8上的Apache 2 php测试页

安全性:防火墙设置

您需要打开端口80:

/sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

有关更多信息,请参见Debain上的防火墙设置指南。

安全性:/var/www/html/DocumentRoot目录的权限

确保按以下步骤设置文件和目录权限:

## Must run as root user ##
# Make sure Apache user owns /var/www/html/
chown -R www-data:www-data /var/www/html
 
# Make sure it is read-only 
chmod -R 0444 /var/www/html/
 
# Make sure Apache can read files in sub-dirs to avoid HTTP/403 status errors 
find /var/www/html/ -type d -print0 | xargs -0 -I {} chmod 0445 "{}"
 
# Do you need to give write permission to certain directories like $D/blog/wp-cache/?
# Edit as per needs :)
# chmod -R 0775 /var/www/html/theitroad.local/blog/wp-cache/
# echo 'Deny from all' >> '/var/www/html/theitroad.local/blog/wp-cache/'
# EOF

重要命令

要启动/停止/重启并查看Apache 2的状态,请执行:

# systemctl start apache2
# systemctl stop apache2
# systemctl restart apache2
# systemctl status apache2

要启动/停止/重启并查看MySQL服务器的状态,请执行:

# systemctl start mysql
# systemctl stop mysql
# systemctl restart mysql
# systemctl status mysql

验证端口80是否打开:

# netstat -tulpn | grep :80
# ss -t -a
# ss -t -a | grep http
# ss -o state established '( dport = :http or sport = :http )'
# iptable -L -n -v | less

重要的日志文件

要查看Apache 2日志文件,请执行:

tail -f /var/log/apache2/access.log
tail -f /var/log/apache2/error.log
grep something /var/log/apache2/error.log
### PHP ##
tail -f /var/log/apache2/php-error.log
### Vhost theitroad.local ##
tail -f /var/log/apache2/theitroad.local/logs/error.log 
tail -f /var/log/apache2/theitroad.local/logs/access.log
grep something /var/log/apache2/theitroad.local/logs/error.log

现在,您已经在Debian v8.x服务器上安装了LAMP堆栈。