centos 搭建 lamp+ftp过程下安装 LAMP环境及配置(php5.6,mysql5.7)

注意该教程只适合Centos7.4

一、连接服务器,检查当前系统环境

1.查看centos版本

[root@iZ2ze1z1rt2fvuh7divnv5Z ~]

# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
1
2
2.检查是否装相关应用
检查apache

httpd -v
1
检查mysql

service mysqld start
1
如果有安装过,清理下

yum remove mysql
rm -f /etc/my.cnf
rpm -qa | grep httpd
1
2
3
二、 安装apache

yum -y install httpd
1
安装apache扩展

yum -y install httpd-manual mod_ssl mod_perl mod_auth_mysql
1
(centos 7 才使用下面命令)

systemctl start httpd.service #启动apache
systemctl stop httpd.service #停止
systemctl restart httpd.service #重启
1
2
3
设置开机自启动

systemctl enable httpd.service
1
浏览器访问服务器,安装成功的话,会出现一个和Apache有关的页面

三、重头戏,安装php5.6

配置yum源,以下是CentOS 7.0的源。

yum install epel-release
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
1
2
使用yum list命令查看可安装的包(Packege)。

yum list –enablerepo=remi –enablerepo=remi-php56 | grep php
1
yum源配置好了,下一步就安装PHP5.6。

yum install –enablerepo=remi –enablerepo=remi-php56 php php-opcache php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof
1
用PHP命令查看版本。

php –version
1
安装PHP-fpm

yum install –enablerepo=remi –enablerepo=remi-php56 php-fpm
1
重启apache,然后建一个叫名叫 index.php 的文件,然后写入如下内容,并放入 /var/www/html/ 目录。


注意你要看你的pdo和gd开启没有,要是没有开启那你就快完蛋了,我从网上找了好多教程都没开启pdo成功,无奈用了最笨的办法,重置系统,再次安装,这个办法虽然笨,但是特别好使,嘻嘻嘻~~~~
开启pdo运行

yum install php-gd
1
安装php-gd扩展可能会报以下错:

Error: Package: php-gd-5.6.11-1.el6.remi.x86_64 (remi-php56) Requires:
gd-last(x86-64) >= 2.1.1 Error: Package:
php-gd-5.6.11-1.el6.remi.x86_64 (remi-php56) Requires:
libgd.so.3()(64bit) You could try using –skip-broken to work around
the problem You could try running: rpm -Va –nofiles –nodigest
报错的原因是因为PHP安装的版本是5.6.10 ,现在yum默认找的是php5.3版本。这个问题也是不好解决,我搞了两个小时都没能好,最后得到高人指点,运行

yum install php-gd –enablerepo=remi-php56
1
在运行一下

yum install php-gd
1
你会神奇的发现你的gd开启了O(∩_∩)O哈哈~

四、MYSQL安装

首先进入本机的源文件目录

cd /usr/local/src
1
如果以下三步你发现运行的特别慢那么,请马上Ctrl+c,删除刚刚下载的rpm包,按照这个教程来安装mysql
https://www.linuxidc.com/Linux/2016-09/135288.htm

使用wget下载官方yum源的rpm包:

wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
1
安装rpm包:

rpm -ivh mysql57-community-release-el7-11.noarch.rpm
1
再次使用yum来安装mysql-server:

yum install -y mysql-server
1
安装完成后,启动mysqld服务

systemctl start mysqld
1
重启mysqld服务

/bin/systemctl start mysqld.service
1
查看是否成功启动:

ps aux|grep mysqld
1
设置mysqld服务开机自启动:

systemctl enable mysqld
1
使用初始密码登录

由于MySQL从5.7开始不允许首次安装后,使用空密码进行登录,系统会随机生成一个密码以供管理员首次登录使用,这个密码记录在/var/log/mysqld.log文件中,使用下面的命令可以查看此密码:

cat /var/log/mysqld.log|grep ‘A temporary password’
1
出现下面代码

2017-11-12T13:35:37.013617Z 1 [Note] A temporary password is generated for root@localhost: bkv,dy,)o7Ss

最后一行冒号后面的部分就是初始密码,我的密码就是 bkv,dy,)o7Ss
连接数据库

mysql -u root -p
1
更改默认密码:
切换数据库:

use mysql;
1
如果这个时候出现 mysql 报错ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executin,直接修改root密码,就不用切换数据库了

修改root密码:

alter user ‘root’@’localhost’ identified by ‘your_password’;
1
将your_password替换成你自己的密码就可以了,当然,这个密码是强密码,要求密码包含大小写字母、数字及标点符号,长度应该在6位以上,不然就会失败。
重新使用新的密码登录,如果可以正常登录说明你的MySQL已经成功安装在CentOS 7.4上了

五、配置篇

第一步:配置Apache

修改Apache配置文件:vim /etc/httpd/conf/httpd.conf,并在文件中查找下面所在行,进行修改(查找可以在vi的一般模式下输入“/要查找的字符”进行查找):

AddHandler cgi-script .cgi  修改为: AddHandler cgi-script .cgi .pl (允许扩展名为.pl的CGI脚本运行)

AllowOverride None  修改为: AllowOverride All (允许.htaccess)

AddDefaultCharset UTF-8  修改为: AddDefaultCharset GB2312  (关于这个设置看你自己的开发时候你的文件编码设置,或者不动也行)

Options Indexes MultiViews FollowSymLinks 修改为 Options MultiViews FollowSymLinks (不在浏览器上显示树状目录结构)

DirectoryIndex index.html 修改为: DirectoryIndex index.html index.htm Default.html Default.htm index.php Default.php index.html.var (设置默认首页文件,增加index.php)

KeepAlive Off 修改为: KeepAlive On (允许程序性联机)

第二步:配置PHP

修改PHP配置文件:vim /etc/php.ini,以下需要修改的行的位置可以通过vi的查找命令来查找:

Options Indexes FollowSymLinks 修改为: Options Includes ExecCGI FollowSymLinks (允许服务器执行CGI及SSI,禁止列出目录)

date.timezone = PRC #把前面的分号去掉,改为date.timezone = PRC

disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru, stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname

列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。

expose_php = Off #禁止显示php版本的信息

display_errors = OFF #关闭错误提示

register_globals = OFF #关闭注册全局变量

open_basedir = (项目所在目录):/tmp/ #设置表示允许访问当前目录(即PHP脚本文件所在之目录)和/tmp/目录,可以防止php木马跨站,例如:open_basedir =usr/www/html/xianmgu:/tmp/

经过安装和配置之后,web服务器基本上已经搭建起来了,可以对其进行访问。

修改好之后保存配置,重新启动Apache,如果你和我一样是tp5使用者那你请看下面番外篇

六、番外篇

修改PHP配置文件:vim /etc/php.ini

always_populate_raw_post_data = On #把前面的分号去掉,改为 always_populate_raw_post_data = -1

session.auto_start = 0 改为 session.auto_start =1

如果你发现出现服务器500错误, 修改配置参数值:

display_errors = On

error_reporting = E_ALL | E_STRICT

修改好之后保存配置,记得启动Apache

添加数据出现MySQL 1364 错误提示:#1364 – Field “details” doesn’t have a default value。

(1)配置my.cnf,添加代码:

sql-mode=”NO_AUTO_Create_USER,NO_ENGINE_SUBSTITUTION”
1
(2) 登陆mysql,直接运行以下下代码(注:每次重启服务器都要运行以下代码,建议用第一种方法)

SET @@GLOBAL.sql_mode=”NO_AUTO_Create_USER,NO_ENGINE_SUBSTITUTION”;

下面主要是说如何在centos下面配置一个ftp服务器,我找了几个教程,每个教程都有各自的有点,我就结合了他们的优点来总结出一篇更好的教程啦,参考文章在末位给出,如有侵权,请联系我,谢谢。其中有一个经验教训就是在防火墙那里,如果其他都配置好了,通过ftp客户端还是连接不上的话,一般来说就是服务器的防火墙配置问题,可以直接把防火墙关闭来试一下,一般来说就可以了;但是确认了是防火墙的配置问题之后,防火墙还是要重新打开的(为了安全),然后再检查防火墙ftp的具体配置。
安装前准备

选用CentOS 7.2 64位的系统,阿里云在公共镜像中提供了该系统镜像,用户可直接在控制台中更换此系统。并通过远程链接进入到系统中。

vsftpd是linux下的一款小巧轻快,安全易用的FTP服务器软件,是一款在各个Linux发行版中最受推崇的FTP服务器软件。

1.安装vsftpd,直接yum 安装就可以了

yum install -y vsftpd
图片20

出现下图表示安装成功。

图片21

相关配置文件:

cd /etc/vsftpd
图片22

/etc/vsftpd/vsftpd.conf //主配置文件,核心配置文件

/etc/vsftpd/ftpusers //黑名单,这个里面的用户不允许访问FTP服务器

/etc/vsftpd/user_list //白名单,允许访问FTP服务器的用户列表

启动服务

chkconfig vsftpd on //设置开机自启动

service vsftpd restart //重新启动ftp服务

netstat -antup | grep ftp //查看ftp服务端口

图片23

2.安装完成之后就要重启vsftpd服务

到vsftpd的主配置文件里面

把这个改为NO 默认是YES (改为NO 就是禁止匿名用户登录,不需要注释)

同时按照下图配置,不可以让ftp用户跳出自己的家目录,否则太危险了,需要做限制,默认是注释掉的,把#号去掉 然后重启vsftpd。

(注意:这里也可以把chroot_list_file=/etc/vsftpd/chroot_list的注释打开)

3.创建ftp用户

(yuanfei这个用户智能连接ftp无法登录系统,默认家目录是在var/www/html 文件夹下面)

给yuanfei这个用户设置密码

然后给家目录修改权限,否则你无法上传文件

4.修改selinux

默认是enforcing  把他修改为disabled

因为修改selinu后需要重启服务,因为服务器不可以重启所以执行上面这个命令,临时修改selinux的策略,无需重启!

5.重启vsftpd服务,并且下次自动启动

6.配置防火墙(要打开21端口)

打开/etc/sysconfig/iptables文件
vi /etc/sysconfig/iptables

在REJECT行之前添加如下代码
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT

保存和关闭文件,重启防火墙
service iptables start

(ps.这一步也可以直接关闭防火墙,但是不建议这样做,关闭防火墙方法如下:

7.客户端测试。直接使用ftp://服务器ip地址:ftp端口(如果不填端口则默认访问21端口)

附录1:如果以上配置防火墙还是不行的话,就按照以下方法尝试:

基本的vsftpd服务配置好了。但是这样配置完成后客户端并不能连接上,主要应该是默认防火墙设置下,CentOS的防火墙是不开放ftp服务的,需要添加模块和开放21端口才能提供ftp访问。 
1.添加ip_conntrack_ftp 模块

[root@localhost ~]# vi /etc/sysconfig/iptables-config

添加下面一行

IPTABLES_MODULES="ip_conntrack_ftp"

2.打开21端口

[root@localhost ~]# vi /etc/sysconfig/iptables

添加(注意这里添加要在REJECT行之前添加)

    -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

3.重启iptables使新的规则生效

[root@localhost ~]# service iptables restart

到此,应该是可以了,若软件测试连接过程中,在用户验证的时候出现了错误503,应该是selinux设置的问题:可以用下面的命令检查

[root@localhost ~]#getsebool -a |grep ftp

allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
allow_tftp_anon_write --> off
ftp_home_dir --> off
ftpd_connect_db --> off
ftpd_disable_trans --> off
ftpd_is_daemon --> on
httpd_enable_ftp_server --> off

这是selinux的问题,我们只要打开ftp_home_dir的值开启为on:,allow_ftpd_full_access也一同开启即可。

[root@localhost ~]#setsebool -P ftp_home_dir 1
[root@localhost ~]#setsebool -P allow_ftpd_full_access 1