CentOS 7搭建LAMP环境(二)

前面已经讲过了CentOS 7下LAMP环境的配置过程,一台简单的WEB服务器已搭建完成,但后期在网站部署的过程中也许会碰到各种各样头疼的问题。下面我们来讲讲怎么解决这些问题,以及如何高效地管理服务器和部署网站。


表单上传文件限制

为了防止服务器遭到恶意攻击,以及用户上传非法的文件,导致服务器异常和带宽占用,我们必须对用户上传的文件进行过滤,Apache和PHP都默认在这方面进行了限制。那如何修改默认配置呢?接下来给大家讲讲CentOS7+LAMP下(其它LAMP环境的配置过程也类似)上传文件限制的修改过程。

首先,修改PHP的上传文件限制,只需修改php.ini配置文件即可。

1
# vi /etc/php.ini

根据你的需要修改以下内容:

1
2
3
4
upload_max_filesize = 允许上传的最大文件大小
post_max_size = 允许post的最大文件大小(一般与上面一项保持一致)
max_file_uploads = 允许单次文件上传个数
upload_tmp_dir = 上传临时文件目录(最好修改为“/var/www/tmp”,方便以后的权限配置)

注意:“upload_max_filesize”和“post_max_size”两项都需要进行配置

然后保存修改,如果修改了临时文件目录,别忘了给指定目录赋权限。

1
# chmod 777 临时文件目录

接下来,修改Apache的上传文件限制。

在 Fedora 和 Red Hat Enterprise Linux 上默认安装了SELinux,0SELinux是一种基于“域-类型”模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略。任何程序对其资源享有完全的控制权。假设某个程序打算把含有潜在重要信息的文件扔到/tmp目录下,那么在DAC情况下没人能阻止他。SELinux提供了比传统的UNIX权限更好的访问控制。

为了安全考虑,SELinux会禁止Apache向系统中创建文件,那Apache怎样才能上传文件呢?关闭SELinux可以实现,但不建议这样做,这会大大削弱服务器的安全性。我们可以使用chcon命令修改SELinux安全上下文。修改方式如下:

  • 步骤1:
    1
    # ls –Zd 上传文件目录(如“/var/www/html/upload”)

会看到以下内容:

1
drwxr-xr-x root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/upload

  • 步骤二:使用chcon命令进行修改
    1
    # chcon –R –t httpd_sys_content_t_rw /var/www/html/upload
  • 步骤三:使用第一步的命令,查看修改结果,如果内容如下则表示修改成功

    1
    drwxr-xr-x root root system_u:object_r:httpd_sys_rw_content_t:s0 /var/www/html/upload
  • 步骤四:修改上传文件目录主人和用户组

    1
    # chown –R apache.apache /var/www/html/upload

到此,限制上传文件的配置就结束了,现在你就可以通过表单方式上传文件了,如果还是不能上传,可以通过以下命令查看你上传的文件类型是否被支持,并修改使其支持你的文件类型。

1
# vi /etc/mime.types

通过SecureCRT管理服务器

SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件。
在上一篇文章中已经对CentOS的SSH进行了配置,我们只须在Windows下使用SecureCRT进行连接即可。步骤如下:

  • 步骤一:下载和安装SecureCRT(请自行谷歌下载安装)

  • 步骤二:打开软件,点击“快速连接”

  • 步骤三:填写连接服务器信息

注意:这里的用户名须填写在上一篇文章中ssh配置文件里你允许访问的用户名,其它选项默认即可。

  • 步骤四:输入密码,完成连接

现在你就可以更便捷地访问你的远程服务器或虚拟机了,SecureCRT还默认提供上传文件的功能,但体验不是很好,下面介绍一种更方便快捷的文件上传方式:FTP文件上传。

使用FTP上传文件

FTP 是File Transfer Protocol(文件传输协议)的英文简称,用于Internet上的控制文件的双向传输。与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。
首先我们需要在CentOS上安装VSFTP服务器,VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,命令如下:

1
2
3
# yum –y install vsftp
# systemctl start vsftpd
# systemctl enable vsftpd

接着需要创建一个专门用于ftp上传文件的用户,该用户属于root用户组

1
2
3
4
5
# useradd -g root -M -d /var/www/html -s /sbin/nologin 用户名
// 一般以WEB根目录为FTP上传目录,用于部署网站
# passwd 密码
# chown -R 用户名.root /var/www/html
// 将html目录主人修改为指定FTP用户

注意:如果html目录中包含表单上传文件目录,需将该目录主人修改为apache,用户组为apache

配置vsftp

1
# vi /etc/vsftpd/vsftpd.conf

禁用匿名登录,将“anonymous_enable”设为“NO”,保存修改,同样需要使SELinux允许FTP上传文件到服务器,命令如下:

1
2
# getsebool -a | grep ftp
# setsebool -P ftpd_full_access on

FTP是一个C/S系统,用户机需要从外部访问FTP服务器,所以需要让FTP服务通过防火墙

1
2
# firewall-cmd --permanent --zone=public --add-service=ftp
# firewall-cmd –reload

这样一台FTP服务器就配置好了,可以通过各种FTP客户端软件进行访问,以Windows下的FileZilla为例,只需填写服务器IP、FTP用户名和密码就能成功连接,可以直接用拖拽方式上传/下载服务器文件了。

总结

以上是一些CentOS 7的常见问题解决方案以及对服务器的一些优化,都是博主在使用CentOS过程中总结出来的经验,这些内容都是沧海一粟,要想让你的服务器更安全稳定,还需要更多系统运维方面的知识。

本文为作者kMacro原创,转载请注明来源:https://zkhdev.github.io/2016/11/20/centos7-lamp2/