在Centos 7下搭建Apache + PHP运行环境

在Centos 7下搭建Apache + PHP运行环境

六月 29, 2018

运行环境

之前都是在 windows 下搭建 PHP 运行环境,使用的是 phpstudy。

在 Centos 7 下搭建 Apache + PHP 运行环境,在这里我采用最简单的 yum install 安装法,能够用 yum 安装搞定的事情我都会优先选择。

安装 apache

在 Centos 中,Apache 的名称叫 httpd,因此我们要安装的是 httpd

1
yum install httpd

安装完成后,默认的 Apache 配置文件路径是:/etc/httpd/conf/httpd.conf

安装 PHP

1
yum install php

安装完成后,默认的 php 配置文件路径是:/etc/php.ini

测试 Apache 是否安装成功

apache 默认的项目目录位置在/var/www/html,因此

使用 FPM

1
2
3
4
5
6
#安装
yum install ruby-devel gcc make rpm-build rubygems
gem install --no-ri --no-rdoc fpm

# 测试fpm是否安装成功
fpm --version

nginx 与 php 的关系

apache 比 nginx 更占用资源,目前用的很少了,使用 nginx。

nginx 本身不能处理 PHP,它只是个 web 服务器,当接收到请求后,如果是 php 请求,则发给 php 解释器处理,并把结果返回给客户端。

nginx 一般是把请求发 fastcgi 管理进程处理,fascgi 管理进程选择 cgi 子进程处理结果并返回被 nginx。

额外指令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# centos7 启动httpd
systemctl start httpd
# 重启Apache 服务
systemctl restart httpd
# 停止Apache 服务
systemctl stop httpd
# 设置 apache 服务开机启动
systemctl enable httpd.service
# 查看80端口使用情况
netstat -lnp|grep 80



下面我们以安装php5.6为例说明一下,如果你的yum安装的php版本够高或者满足自己的意愿,此步骤可直接略过。
#CentOs 6.x
rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
#CentOs 7.X
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

# /var/www/html 是apach默认存放项目文职

安装 php,使用源码方式安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 下载php源码
wget http://cn2.php.net/get/php-5.6.36.tar.gz/from/jp2.php.net/mirror
# 解压
tar -zvxf php-5.6.36.tar.gz
# 进入该目录
cd php-5.6.36

# [root@vultr php-5.6.36]# 目录下编译
./configure
--prefix=/usr/local/php #指定php安装目录
--with-config-file-path=/usr/local/php/etc #指定php配置目录
--enable-fpm --enable-pcntl --enable-mysqlnd --enable-opcache --enable-sockets --enable-sysvmsg --enable-sysvsem \
--enable-sysvshm --enable-shmop --enable-zip --enable-ftp --enable-soap --enable-xml --enable-mbstring \
--disable-rpath --disable-debug --disable-fileinfo --with-mysql --with-mysqli --with-pdo-mysql \
--with-pcre-regex --with-iconv --with-zlib --with-mcrypt --with-gd --with-openssl --with-mhash --with-xmlrpc --with-curl --with-imap-ssl

# prefix是安装目录,-with-mysql是mysql的安装目录,由于我是用yum装的,所以不需要写-with-mysql=**。
# 编译成功后,执行正式安装
make && make install
## 没有报错就表示安装完成。
  1. 配置 php 配置环境变量
1
2
3
4
5
6
7
8
# 修改文件/etc/profile,在末尾追加
# 这一步类似windows设置环境变量,添加path。也就是将指令添加到路径中方便使用
PATH=$PATH:/usr/local/php/bin
export PATH
# 执行命令使得改动立即生效
source /etc/profile
# 查看环境变量
echo $PATH
  1. 配置 php-fpm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 确认php的解压缩目录 /tang/download/php-5.6.36
# 在php-5.6.36目录下 依次执行这几句,复制配置
cp php.ini-production /etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

# 默认是没有生成php-fpm.pid文件得,修改php-fpm.conf文件,设置pid,去掉封号。重启生成php-fpm.pid文件
# php-fpm.pid文件得位置设置在php-fpm中查看,此处位于/usr/local/php/var/run/php-fpm.pid

# php-fpm添加到service服务中
cp /tang/download/php-5.6.36/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

# 设置权限,并添加服务
chmod +x /etc/init.d/php-fpm
chkconfig --add php-fpm

# 检查php-fpm语法错误
/usr/local/php/sbin/php-fpm -t

以后可以使用如下命令管理php-fpm了
service php-fpm start
service php-fpm stop
service php-fpm restart
service php-fpm reload
  1. 启动php-fpm
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    service php-fpm start
    # 查看php-fpm服务状态
    systemctl status php-fpm.service
    #查看一下php-fpm是否启动成功
    ps aux | grep php-fpm


    systemctl restart php-fpm.service
    systemctl restart nginx.service

    # 卸载PHP
    # 列出PHP所有得安装包
    rpm -qa | grep php
    #根据列出得目录依次卸载
    rpm -e php-common-5.4.16-45.el7.x86_64
    php -m

查看nginx状态

ps aux | grep nginx

修改pgp-fpm配置

修改php-fpm.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 修改用户组
user = root
group = root


a),查看当前登录用户

[root@krlcgcms01 ~]# w
[root@krlcgcms01 ~]# who

b),查看自己的用户名
[root@krlcgcms01 ~]# whoami

c),查看单个用户信息
[root@krlcgcms01 ~]# finger apacheuser
[root@krlcgcms01 ~]# id apacheuser

d),查看用户登录记录
[root@krlcgcms01 ~]# last 查看登录成功的用户记录
[root@krlcgcms01 ~]# lastb 查看登录不成功的用户记录

e),查看所有用户
[root@krlcgcms01 ~]# cut -d : -f 1 /etc/passwd
[root@krlcgcms01 ~]# cat /etc/passwd |awk -F \: '{print $1}'

nginx配置fastcgi访问PHP文件注意事项

必须要有root这项参数,并且末尾不带斜杠

1
2
3
4
5
6
7
8
9
10
location ~ \.php$ {
root /tang/testphp/;
#default root page
fastcgi_index index.php;
# default port 9000
fastcgi_pass 127.0.0.1:9000;
#set php proxy_programe path
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

宝塔面板

宝塔面板操作指令
https://www.bt.cn/btcode.html

linux16
ro 改为 rorw init=/sysroot/bin/sh

#修改 root用户密码

https://www.jianshu.com/p/327e3a716c95
https://www.thevultr.org/xiao_tie_shi_ru_he_xiu_gai_vultr_de_root_mi_ma/
密码修改为: qscrdz:3823

ALTER USER ‘root‘@’localhost’ IDENTIFIED BY ‘MyNewPass4!’;

原来为ro

修改文件拥有者

1
2
3
4
5
6

# 更改文件所有组,递归 :-Rv 用户名:www 文件绝对地址: /tang/cms
chgrp -Rv staff testchgrp

# 更改文件所有者,递归 :-Rv 用户名:www 文件绝对地址: /tang/cms
chown -Rv www /tang/cms

php-fpm.conf

1
2
3
4
5
6
7
8
修改user和 group

# 修改前
user = nobody
group = nobody
# 修改后
user = www
group = www

nginx.conf

修改前

user nginx

修改后

user www

安装MySQl

https://qizhanming.com/blog/2017/05/10/centos-7-yum-install-mysql-57
https://segmentfault.com/a/1190000012703513
安装
配置 /etc/my.conf

mysql密码: De#&9e:6wYBJ

查看mysql服务
rpm -qa | grep mysql

mysqld.log文件创建并设置权限和用户用户组

chown -R mysql mysql/
chgrp -R mysql mysql/

mysql指令找不到解决办法

mysql mysqladmin: command not found解决方法
有时候安装好MySQL程序的时候,直接输入命令mysql或mysqladmin会发现提示命令不存在,这是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令,我们需要做的就是映射一个链接到/usr/bin目录下,相当于建立一个链接文件。

首先得知道mysql命令或mysqladmin命令的完整路径,比如mysql的路径是:/usr/local/mysql/bin/mysql,我们则可以这样执行命令:

ln -s /usr/local/mysql/bin/mysql /usr/bin
ln -s /usr/local/mysql/bin/mysqladmin /usr/bin
当提示mysqldump: command not found时同样可以通过此方法来解决。
或者直接修改/etc/profile文件,末尾添加路径,问号分割

查找mysql.sock文件

find / -name mysql.sock

mysqld –initialize-insecure –user=mysql –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data –lc_messages_dir=/usr/local/mysql/share –lc_messages=en_US

卸载mysql

源码编译方式安装,卸载
rm -rf /var/lib/mysql
rm /etc/my.cnf
.将分散的文件/文件夹删除
whereis mysql

查看mysql密码

最终修改为了123456

grep ‘temporary password’ /var/log/mysqld.log

登录 MySQL 并修改密码
Enter password:
mysql> ALTER USER ‘root‘@’localhost’ IDENTIFIED BY ‘MyNewPass4!’;