注明:以下知识点皆为网上搜索诸多网友无私分享得来,此处唯有一并感谢。另:不要告我侵权哈。
一、 搭建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 即可
暂时记录这些,如遇到问题,会继续补充