centos下搭建phpweb环境所遇之诸坑

注明:以下知识点皆为网上搜索诸多网友无私分享得来,此处唯有一并感谢。另:不要告我侵权哈。

 

一、 搭建phpweb环境

安装之前,可以使用命令查看服务是否安装:

rpm -q ***

1、 安装apache:

yum install httpd httpd-devel 

启动apache:

/etc/init.d/httpd start 或者service httpd start

此时输入服务器的IP地址,应该看到apache的服务页面,端口不用输,apache默认就是使用80端口

 

2、安装mysql:

yum install mysql mysql-server

启动mysql:

/etc/init.d/mysqld start或者service mysqld start

 

安装好mysql后,第一次登陆root没有密码,可通过命令方式设置密码:

shell> mysqladmin -u root -h host_name password "newpwd"   

-h host_name可不填。   

password后面的双引号不是必须的,不过如果密码包含空格或者一些特殊的符号,需要用引号。

 

3、安装php

yum install php php-devel

 

重启apache使php生效:

/etc/init.d/httpd restart

 

此时可以在目录:/var/www/html/下建立一个PHP文件

代码:


然后访问这个文件,就能看到PHP的一些信息,php.ini配置文件的路径可以在这个页面上看到

 

安装php的扩展:

yum install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc

 

安装完扩展之后需要再次重启apache

/etc/init.d/httpd restart

 

4、安装vsftpd(推荐使用flashFXP工具)

a、yum install vsftpd

 

b、启动vsftpd服务:

service vsftpd start

 

c、修改vsftpd主配置文件

文件路径:/etc/vsftpd/vsftpd.conf

 

去掉注释,值改为NO,不允许匿名登陆

 

 

去掉注释

 

 

去掉注释,此处我没有使用chroot_list_enable,直接使用指令添加的ftp用户。

 

 

最后,添加改行代码,是为了之后的脱坑而作,稍后会有说明

 

d、创建ftp用户:

useradd -s /sbin/nologin -d /var/www/html test

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

 

设置密码:

passwd test

 

设置目录权限:

chmod —R 777 /var/www/html

 

e、修改selinux配置文件

文件路径:

/etc/selinux/config

 

 

取消注释,值设置为disabled。

修改selinu后需要重启服务,如果服务器暂时不可以重启可以执行以下命令,临时修改selinux的策略,无需重启:

setenforce 0

 

f、重启vsftpd服务,并且下次自动启动

service vsftpd restart 

chkconfig vsftpd on

 

g、然后用软件来链接ftp测试一下即可

 

5、iptables

如果是centos7,所使用防火墙是firewalld,但习惯于使用iptables,所以关闭firewalld,安装iptables

 

a、安装iptables iptables-service

先检查是否安装了iptables
service iptables status


安装iptables
yum install -y iptables


升级iptables(安装的最新版本则不需要)
yum update iptables 


安装iptables-services
yum install iptables-services

 

b、禁用/停止自带的firewalld服务

停止firewalld服务
systemctl stop firewalld


禁用firewalld服务
systemctl mask firewalld

c、添加规则

配置文件路径:/etc/sysconfig/iptables

 

添加红框内规则,基本就是httpd、mysqld和vsftpd的端口。

 

二、所遇到的问题

1、httpd

a、

问题描述:

httpd: Could not reliably determine the server's fully qualified domain name

 

解决办法:

找到http.conf配置文件

路径:/etc/httpd/conf/httpd.conf

 

添加下列代码:

 

 

重启httpd即可。

 

2、mysqld

a、

问题描述:

使用数据连接工具(我使用的是navicat),运行sql文件,过程中提示“MySQL server has gone away”

 

解决方法:

造成这样的原因一般是sql操作的时间过长,或者是传送的数据太大(例如使用insert ... values的语句过长, 这种情况可以通过修改max_allowed_packed的配置参数来避免,也可以在程序中将数据分批插入)。

 

网上有诸多原因分析,此处就不再一一列举,我的情况是插入语句过长:

Your SQL statement was too large.

当查询的结果集超过 max_allowed_packet 也会出现这样的报错。定位方法是打出相关报错的语句。

用select * into outfile 的方式导出到文件,查看文件大小是否超过 max_allowed_packet ,如果超过则需要调整参数,或者优化语句。

mysql> show global variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name      | Value   |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+
1 row in set (0.00 sec)

修改参数:

mysql> set global max_allowed_packet=1024*1024*16;
mysql> show global variables like 'max_allowed_packet';
+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| max_allowed_packet | 16777216 |
+--------------------+----------+
1 row in set (0.00 sec)

 

修改之后,sql脚本成功运行。

 

b、

问题描述:

Navicat软件连接数据库报错:2003-can't connect to MYSQL serve

 

解决方法:

执行下列命令:

GRANT ALL PRIVILEGES ON *.* TO 'itoffice'@'%' IDENTIFIED BY 'itoffice' WITH GRANT OPTION;
(第一个itoffice表示用户名,%表示所有的电脑都可以连接,也可以设置某个ip地址运行连接,第二个itoffice表示密码)。

 

执行下列命令:

flush privileges  

 

重启mysql。

 

3、php

a、

问题描述:

Call to undefined function mb_substr()

 

解决方法:

造成这种情况的原因是没有打开相应的php扩展,包括php连接mysql,都是需要打开扩展的。

服务器上有相关的so文件,可以直接将这些so文件所属目录添加到php.ini配置文件中。

 

本机的php.ini文件路径:/etc/php.ini

 

vi后,/extension_dir 查找命令所在位置,添加下列参数

 

该目录下都是一些so文件

 

保存后,重启httpd后,问题即解决。

 

b、

问题描述:

 

 

解决方法:

执行下列命令:

chmod -R 777 /var/www/html

 

问题即可解决

 

 

4、iptables

5、vsftpd

a、

问题描述:

连接的错误提示:
状态: 连接建立,等待欢迎消息...
返回: 220 (vsFTPd 2.0.1)
命令: USER xiaozhuren_user
返回: 331 Please specify the password.
命令: PASS **************
返回: 230 Login successful.
命令: SYST
返回: 215 UNIX Type: L8
命令: FEAT
返回: 211-Features:
返回: EPRT
返回: EPSV
返回: MDTM
返回: PASV
返回: REST STREAM
返回: SIZE
返回: TVFS
返回: 211 End
状态: 已连接
状态: 读取目录列表...
命令: PWD
返回: 257 "/home/xiaozhuren_user"
命令: TYPE I
返回: 200 Switching to Binary mode.
命令: PASV
返回: 227 Entering Passive Mode (60,29,225,54,125,229)
命令: LIST
错误: 连接超时
错误: 读取目录列表失败

有人说:
命令:        PASV
默认是pasv模式,因为服务端防火墙的设置,客户端不能用pasv模式,将设置中的pasv模式置为空,就正常了
返回:        227 Entering Passive Mode (58,X,X,X,0,1)
在ftp服务软件中设置指定端口地址范围,允许Passive Mode使用,比如60000-60020


解决办法:
在传输设置中:
修改传输模式为: 主动传输

 

b、

问题描述:

可以正常的连接,但是当上传文件时,总是报553 Could not create file错误信息

 

解决方法:

首先在/var/www的目录中创建一个目录(如果有,则不用创建,一般情况下会是html目录),然后设置权限为777
$ sudo mkdir /var/www/html
$sudo chmod -R 777 /var/www/html


然后修改vsftp的配置文件/etc/vsftpd.conf文件
在最后添加上
local_root=/var/www


保存,然后杀死vsftpd进程(这一步可能不需要,如果重启不成功再kill vsftpd进程),然后重启vsftpd服务器程序。
试试看,将文件上传到html目录,这个时候可以正常的上传文件了。

 

 

 

另:如果想让程序随系统启动,使用下列命令:

chkconfig XXX on 即可

 

暂时记录这些,如遇到问题,会继续补充

 

 

 

 

你可能感兴趣的:(linux)