CentOS7.3 搭建LAMP及FTP服务器完整教程

命令行进入centOS7.3 系统 [[email protected] ~]#(使用putty登录)。

一、升级系统yum源

[1] 首先备份

[[email protected] ~]# cd /etc/yum.repos.d/CentOS-Base.repo

[[email protected] yum.repos.d]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

[2] 进入yum源配置文件所在文件夹

[[email protected] yum.repos.d]# cd /etc/yum.repos.d/

[3] 下载163的yum源配置文件,放入/etc/yum.repos.d/(操作前请做好相应备份)

[[email protected] yum.repos.d]# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

wget -O /etc/yum.repos.d/CentOS-Base.repo

http://mirrors.aliyun.com/repo/Centos-7.repo

[4] 运行yum makecache生成缓存

[[email protected] yum.repos.d]# yum makecache

[5] 更新系统

[[email protected] yum.repos.d]# yum -y update

[6] 安装vim编辑器

[[email protected] yum.repos.d]# yum -y install vim*

 

yum提示Another app is currently holding the yum lock; waiting for it to exit

可以通过强制关掉yum进程:

[[email protected] yum.repos.d]# rm -f /var/run/yum.pid

如果yum安装软件包错误 HTTP Error 404 - Not Found Trying other mirror.

[[email protected] yum.repos.d]# yum clean all

[[email protected] yum.repos.d]# yum update

二、LAMP环境(Linux+Apache+Mysql+PHP)

[1] 安装Apache

1.1 [[email protected] ~]# yum -y install httpd httpd-manual mod_ssl mod_perl mod_auth_mysql

1.2 设置开机启动apache

[[email protected] ~]# systemctl enable httpd.service

1.3 启动apache

[[email protected] ~]# systemctl start httpd.service

[2] 安装Mysql

安装之前先删除以前版本,以免安装不成功。

2.1  查看mysql的rpm包

[[email protected] ~]# rpm -qa | gerp mysql

2.2 查到之后就删除

yum remove 文件名(可以一次多个名字,以空格分隔)

例如:[[email protected] ~]# yum remove -y   mysql mysql mysql-server mysql-libs compat-mysql51

 

2.3查看多余文件没删干净

[[email protected] ~]# find / -name mysql

删除多余文件

rm -rf 文件名

例如:[[email protected] ~]# rm -rf  /etc/my.cnf

2.3  开始安装

[[email protected] ~]# rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

[[email protected] ~]# yum install -y mysql-server

2.4 设置开机启动Mysql

[[email protected] ~]# systemctl enable mysqld.service

2.5 开启服务

[[email protected] ~]# systemctl start mysqld.service

2.6 查看Mysql5.7默认密码

[[email protected] ~]# grep 'temporary password' /var/log/mysqld.log

登陆Mysql,输入用户名root,复制粘贴密码

[[email protected] ~]# mysql -u root -p

2.7 修改密码

用该密码登录到服务端后,必须马上修改密码,不然会报如下错误:

mysql> select @@log_error; ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. mysql>

[[email protected] ~]# ALTER USER 'root'@'localhost' IDENTIFIED BY 'root123';

 CentOS7.3 搭建LAMP及FTP服务器完整教程

如何解决ERROR 1819 (HY000): Your password does not satisfy the current policy requirements呢?

必须修改两个全局参数:

首先,修改validate_password_policy参数的值

mysql> set global validate_password_policy=0; 

再修改密码的长度

set global validate_password_length=1;

再次执行修改密码就可以了

ALTER USER 'root'@'localhost' IDENTIFIED BY 'root123';

 

2.8 授权其他机器登陆

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

FLUSH  PRIVILEGES;

 

[3] 安装PHP 5

3.1 使用yum安装php

[[email protected] ~]# yum install php

3.2 重启apache服务

[[email protected]~]# systemctl restart httpd

3.3 测试Apache调用PHP

为了测试Apache能不能正常调用PHP,在/var/www/html目录下新建一个phpinfo.php文档(vim /var/www/html/phpinfo.php),内容如下所示:

<?php phpinfo();?>

3.4 浏览器输入 公网IP/phpinfo.php

CentOS7.3 搭建LAMP及FTP服务器完整教程

[4] etc/httpd/vhost-conf.d/vhost-name.conf配置多站点

4.1 修改httpd.conf文件

[[email protected] ~]# vi /etc/httpd/conf/httpd.conf

4.2 如下位置修改:

<IfModule dir_module>

    DirectoryIndex index.html index.php

</IfModule>

<Directory "/var/www/html">

    AllowOverride All

    # Allow open access:

    Require all granted

</Directory>

4.3 在文件末尾添加

NameVirtualHost *:80

Include vhost-conf.d/*.conf

4.4 新建文件夹vhost-conf.d,在这个文件夹里面新建文件vhost-name.conf

编辑:[[email protected] ~]#  vi /etc/httpd/vhost-conf.d/vhost-name.conf

<VirtualHost *:80>

        DocumentRoot /var/www/html/test/

        ServerName www.test.com

        DirectoryIndex index.html index.php

</VirtualHost>

<Directory "/var/www/html/test/">

        Options FollowSymLinks

        AllowOverride All

        Order deny,allow

        allow from all

        Satisfy all

</Directory>

*配置多个站点只需要将上面的代码复制一份即可,注意路径

以上是LAMP的完整搭建过程,本人在搭建过程中遇到了很多问题,并一一解决,希望大伙能顺利搭建,少走弯路。

三、VSFTP 服务以及如何远程登录,上传网站,其中较易出现的问题在于:

1. centos7将防火墙改为了firewall 所以我们要改为iptables

2. 用户创建时候设置根目录并赋予权限

3. ftp远程登录时出现的拒绝访问问题,或者提示oop错误

安装配置Vsftp服务器

4. 配置防火墙,开启FTP服务器需要的端口

CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙。

4.1 关闭firewall;

[[email protected] ~]# systemctl stop firewalld.service #停止firewall

[[email protected] ~]# systemctl disable firewalld.service #禁止firewall开机启动

4.2 安装iptables防火墙

[[email protected] ~]# yum install iptables-services #安装

[[email protected] ~]# vi /etc/sysconfig/iptables #编辑防火墙配置文件

# Firewall configuration written by system-config-firewall

# Manual customization of this file is not recommended.

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

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

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

-A INPUT -m state --state NEW -m tcp -p tcp --dport 10060:10090 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT

:wq! #保存退出

#最后重启防火墙使配置生效

[[email protected] ~]# systemctl restart iptables.service systemctl enable

#设置防火墙开机启动

[[email protected] ~]# iptables.service

说明:21端口是ftp服务端口;10060到10090是Vsftpd被动模式需要的端口,可自定义一段大于1024的tcp端口。

5. 关闭SELINUX

[[email protected] ~]# vi /etc/selinux/config

#SELINUX=enforcing #注释掉

#SELINUXTYPE=targeted #注释掉

SELINUX=disabled #增加

:wq! #保存退出

#使配置立即生效

[[email protected] ~]# setenforce 0

6. 安装配置vsftpd

6.1 使用yum命令安装ftp

[[email protected] ~]# yum install -y vsftpd

6.2 安装vsftpd虚拟用户配置依赖包

[[email protected] ~]# yum install -y psmisc net-tools systemd-devel libdb-devel perl-DBI  

6.3启动ftp服务

[[email protected] ~]# systemctl start vsftpd.service

6.4 设置开机启动

[[email protected] ~]# systemctl enable vsftpd.service

7. 配置vsftp服务器

7.1 备份默认配置文件

[[email protected] ~]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf-bak

7.2 执行以下命令进行设置

sed -i "s/anonymous_enable=YES/anonymous_enable=NO/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#anon_upload_enable=YES/anon_upload_enable=NO/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#anon_mkdir_write_enable=YES/anon_mkdir_write_enable=YES/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#chown_uploads=YES/chown_uploads=NO/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#async_abor_enable=YES/async_abor_enable=YES/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#ascii_upload_enable=YES/ascii_upload_enable=YES/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#ascii_download_enable=YES/ascii_download_enable=YES/g" '/etc/vsftpd/vsftpd.conf'

sed -i "s/#ftpd_banner=Welcome to blah FTP service./ftpd_banner=Welcome to FTP service./g" '/etc/vsftpd/vsftpd.conf'

echo -e "use_localtime=YES\nlisten_port=21\nchroot_local_user=YES\nidle_session_timeout=300

\ndata_connection_timeout=1\nguest_enable=YES\nguest_username=vsftpd

\nuser_config_dir=/etc/vsftpd/vconf\nvirtual_use_local_privs=YES

\npasv_min_port=10060\npasv_max_port=10090

\naccept_timeout=5\nconnect_timeout=1" >> /etc/vsftpd/vsftpd.conf

8. 建立虚拟用户名单文件

[[email protected] ~]# touch /etc/vsftpd/virtusers

编辑虚拟用户名单文件:(第一行账号,第二行密码,注意:不能使用root做用户名,系统保留)

[[email protected] ~]# vi /etc/vsftpd/virtusers

web1

123456

web2

123456

web3

123456

:wq! #保存退出

9. 生成虚拟用户数据文件

[[email protected] ~]# db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

9.1 设定PAM验证文件,并指定对虚拟用户数据库文件进行读取

[[email protected] ~]# chmod 600 /etc/vsftpd/virtusers.db

9.2 在/etc/pam.d/vsftpd的文件头部加入以下信息(在后面加入无效)

修改前先备份

[[email protected] ~]# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpdbak

[[email protected] ~]# vi /etc/pam.d/vsftpd

auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers

account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers

注意:如果系统为32位,上面改为lib,否则配置失败

9.3 新建系统用户vsftpd,用户目录为/home/wwwroot, 用户登录终端设为/bin/false(即使之不能登录系统)

[[email protected] ~]# useradd vsftpd -d /home/wwwroot -s /bin/false

[[email protected] ~]# chown vsftpd:vsftpd /home/wwwroot -R

如果虚拟用户的宿主用户为www,需要这样设置。

[[email protected] ~]# chown www:www /home/wwwroot -R

9.4 建立虚拟用户个人Vsftp的配置文件

[[email protected] ~]# mkdir /etc/vsftpd/vconf

[[email protected] ~]# cd /etc/vsftpd/vconf

这里创建三个虚拟用户配置文件

[[email protected] ~]# touch web1 web2 web3

[[email protected] ~]# mkdir -p /home/wwwroot/web1/http/

编辑用户web1配置文件,其他的跟这个配置文件类似

[[email protected] ~]# vi web1

local_root=/home/wwwroot/web1/http/

write_enable=YES

anon_world_readable_only=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

allow_writeable_chroot=YES

9.5 最后重启vsftpd服务器

[[email protected] ~]# systemctl restart vsftpd.service

备注:guest_username=vsftpd,指定虚拟用户的宿主用户(就是我们前面新建的用户)guest_username=www,如果ftp目录是指向网站根目录,用来上传网站程序,可以指定虚拟用户的宿主用户为apache运行账户www,可以避免很多权限设置问题。至此,CentOS 7.0安装配置Vsftp服务器配置完成。

10. 被限制路径为/home/test

10.1 建用户,命令行状态下,在root用户下:

增加用户test,并制定test用户的主目录为/var/www/html

[[email protected] ~]# useradd -d /var/www/html test

test设置密码,运行后输入两次相同密码

[[email protected] ~]# passwd test

10.2 更改用户相应的权限设置:

限定用户test不能telnet,只能ftp

[[email protected] ~]# usermod -s /sbin/nologin test

用户test恢复正常

[[email protected] ~]# usermod -s /sbin/bash test

更改用户test的主目录为/var/www/html

[[email protected] ~]# usermod -d /var/www/html test

10.3 限制用户只能访问/var/www/html,不能访问其他路径

[[email protected] ~]# vi /etc/vsftpd/vsftpd.conf

chroot_list_enable=YES

# (default follows)

chroot_list_file=/etc/vsftpd/vsftpd.chroot_list

编辑上面的内容

第一行:chroot_list_enable=YES  //限制访问自身目录

第三行:编辑vsftpd.chroot_list。根据第三行说指定的目录,找到chroot_list文件。(因主机不同,文件名也许略有不同)

编辑vsftpd.chroot_list,将受限制的用户添加进去,每个用户名一行

10.4 重启服务器

改完配置文件,不要忘记重启vsftpd服务器

[[email protected] ~]# systemctl restart httpd.service

10.5 如果需要允许用户修改密码,但是又没有telnet登录系统的权限:

[[email protected] ~]# usermod -s /usr/bin/passwd test”

注:以上设置完成之后如果出现oop错误,检查vsftpd.chroot_list文件是否创建正确,包括文件的目录是否正确。

11. 使用winscp远程登录

如果出现ftp登录成功但是根目录为<root> /或者提示拒绝访问,那么需要修改根目录

[[email protected] ~]# vi /etc/passwd

root:x:0:0:root:/root:/bin/bash

t:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

games:x:12:100:games:/usr/games:/sbin/nologin

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

nobody:x:99:99:Nobody:/:/sbin/nologin

systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin

dbus:x:81:81:System message bus:/:/sbin/nologin

polkitd:x:999:997:User for polkitd:/:/sbin/nologin

libstoragemgmt:x:998:996:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin

abrt:x:173:173::/etc/abrt:/sbin/nologin

rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin

ntp:x:38:38::/etc/ntp:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

chrony:x:997:995::/var/lib/chrony:/sbin/nologin

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

tcpdump:x:72:72::/:/sbin/nologin

syslog:x:996:994::/home/syslog:/bin/false

centos:x:1000:1000:Cloud User:/home/centos:/bin/bash

apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin

mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin

test:x:1001:1001::/var/www/html:/bin/nologin

再修改 /etc/vsftpd/vsftpd.conf  

[[email protected] ~]# vi /etc/vsftpd/vsftpd.conf

假设要把 vsftpd 服务的登录根目录调整为 /var/www/html,可加入如下三行:

local_root=/var/www/html

chroot_local_user=YES

anon_root=/var/www/html

注解:local_root 针对系统用户;anon_root 针对匿名用户。

 

大功告成了,小伙伴们如果途中遇到什么问题可以留言,以上内容是通过网上各种方法测试之后的总结,希望能帮到各位。