PHP环境如何搭建?PHP环境搭建(详解)

来源:小白 发布时间:2018-10-25 14:04:16 阅读量:1033

PHP环境如何搭建?本篇文章给大家带来的内容是PHP环境如何搭建?PHP环境搭建(详解)。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所助。

按照文章的步骤操作,可以帮助你在CentOS6.*系统上搭建一个LNMP环境或者LAMP环境。这些环境可以作为服务器的线上运行环境。

LNMP

准备工作

安装wget

wget 是一个从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三个最常见的TCP/IP协议下载,并可以可以使用HTTP代理。

1

sudo yum install wget

安装net-tools

最小化安装CentOS7时如果无法使用ifconfig命令,则需要安装net-tools(如果是安装的CentOS6版本则无需安装)

1

sudo yum install net-tools

更新yum源

1

yum -y update

安装vim

1

sudo yum install vim

配置显示行号

1

2

vim ~/.vimrc

输入: set nu 后退出保存

安装Nginx

安装依赖

(1) 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装gcc-c++。

(2) PCRE是一个Perl库,中文"Perl兼容的正则表达式库"。安装Nginx是为了使Nginx支持具备URI重写功能的rewrite模块,如果不安装pcre库,则Nginx无法使用rewrite模块功能,Nginx的Rewrite模块功能几乎是企业应用必须。

(3) zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。

(4) OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。 nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要安装 OpenSSL 库 。

1

2

yum -y install gcc gcc-c++ zlib zlib-devel

yum -y install pcre pcre-devel openssl openssl-devel

说明:yum安装方式安装的pcre版本比较低,不过基本不影响使用

检查基础依赖包

1

2

3

4

rpm -qa pcre pcre-devel

rpm -qa zlib zlib-devel

rpm -qa openssl openssl-devel

rpm -qa pcre pcre-devel

编译安装Nginx

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

cd ~

这里我们默认把安装包都放在了/usr/src目录下

cd /usr/src  #切换到软件包目录

wget https://nginx.org/download/nginx-1.14.0.tar.gz   #下载nginx源码包

useradd nginx -s /sbin/nologin -M   #创建nginx用户用于管理nginx程序

tar zxvf nginx-1.14.0.tar.gz  #解压nginx源码包

cd nginx-1.14.0

#预编译

./configure \

--user=nginx \

--group=nginx \

--prefix=/usr/local/nginx-1.14.0 \

--with-http_stub_status_module \

--with-http_ssl_module

make #编译

make install #安装

 

cd /usr/local

ln -s nginx-1.14.0 nginx  #创建nginx的软链接

配置环境变量

1

2

3

vim /etc/profile

export PATH="/usr/local/nginx/sbin:$PATH"

source /etc/profile

开机自启

1

2

3

vim /etc/rc.local

# Nginx开机自启

/usr/local/nginx/sbin/nginx &

安装说明

编译Nginx软件时,可以使用configure--help查看相关帮助。下面是本次编译时指定的参数及简单说明:

1

2

3

4

5

--prefix=PATH    #设置安装路劲

--user=USER      #进程用户权限

--group=GROUP    #进程用户组权限

--with-http_stub_status_module   #激活状态信息

--with-http_ssl_module  #激活ssl功能

语法检查

安装完Nginx后,并不能直接对外提供服务,需要先启动Nginx服务才行,具体操作如下。

1

/usr/local/nginx/sbin/nginx -t

Nginx命令

1

2

3

4

5

/usr/local/nginx/sbin/nginx  #启动

/usr/local/nginx/sbin/nginx -s stop  #立即停止

/usr/local/nginx/sbin/nginx -s quit  #平滑停止

/usr/local/nginx/sbin/nginx -s reload #重载配置

/usr/local/nginx/sbin/nginx -s reopen #重开日志

服务启动检查

1

2

sudo yum install lsof

lsof -i :80

关闭防火墙

1

2

3

4

5

6

7

8

CentOS6:

service iptables stop   临时关闭

chkconfig --level 2345 iptables off 永久关闭

 

CentOS7:

systemctl stop firewalld.service  #令关闭防火墙

systemctl disable firewalld.service  #关闭防火墙开机自启动

通过浏览器输入IP测试是否成功

安装MySQL

安装依赖

(1)cmake是新版MySQL的编译工具

1

2

3

sudo yum install gcc gcc-c++ cmake ncurses-devel

如下的几个依赖在CentOS7中需要安装,CentOS6不需要

sudo yum install perl perl-devel autoconf

编译安装MySQL

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

useradd -s /sbin/nologin -M mysql  # 添加MySQL用户

wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.41.tar.gz

 

tar zxvf mysql-5.6.41.tar.gz

 

cd mysql-5.6.41

 

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.41 \

-DMYSQL_UNIX_ADDR=/usr/local/mysql-5.6.41/tmp/mysql.sock \

-DMYSQL_DATADIR=/usr/local/mysql-5.6.41/data \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_EXTRA_CHARSETS=all \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_MEMORY_STORAGE_ENGINE=1 \

-DWITH_READLINE=1 \

-DWITH_INNODB_MEMCACHED=1 \

-DWITH_DEBUG=OFF \

-DWITH_ZLIB=bundled \

-DENABLED_LOCAL_INFILE=1 \

-DENABLED_PROFILING=ON \

-DMYSQL_MAINTAINER_MODE=OFF \

-DMYSQL_TCP_PORT=3306

 

make && make install

配置

1

2

3

4

5

6

7

cd /usr/local/mysql-5.6.41

chown mysql.mysql /usr/local/mysql-5.6.41/data

mkdir tmp

chown mysql.mysql /usr/local/mysql-5.6.41/tmp

rm -f /etc/my.cnf

cp support-files/my-default.cnf /etc/my.cnf

scripts/mysql_install_db --defaults-file=/etc/my.cnf --user=mysql

加入守护进程

1

2

3

4

5

cd /usr/local

ln -s mysql-5.6.41 mysql

cd /usr/local/mysql

cp support-files/mysql.server /etc/init.d/mysqld

chkconfig --add mysqld

配置环境变量

1

2

3

vim /etc/profile

export PATH="/usr/local/mysql/bin"

source /etc/profile

启动MySQL

1

2

3

service mysqld start

mysql -u root -p #第一次登陆不需要密码,回车即可

set password for root@localhost = password('root');  #修改密码

安装PHP

安装依赖

1

sudo yum install gcc gcc-c++ zip unzip libxml2 libxml2-devel curl-devel autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel  zlib zlib-devel glibc glibc-devel glib2 glib2-devel gd-devel bzip2 bzip2-devel

编译安装PHP

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

cd ~/package

wget http://hk1.php.net/get/php-7.2.10.tar.gz/from/this/mirror -O php-7.2.10.tar.gz

 

tar zxvf php-7.2.10.tar.gz

cd  php-7.2.10

./configure \

--prefix=/usr/local/php-7.2.10 \

--enable-fpm \

--with-fpm-user=nginx \

--with-fpm-group=nginx \

--with-zlib \

--enable-mysqlnd \

--with-pdo-mysql=mysqlnd \

--with-mysqli=mysqlnd \

--with-mysql-sock=/usr/local/mysql/tmp/mysql.sock \

--with-gd \

--with-png-dir \

--with-jpeg-dir \

--with-freetype-dir \

--with-iconv-dir \

--with-openssl \

--with-curl \

--enable-mbstring \

--enable-static \

--enable-zip \

--enable-sockets \

--enable-xml

 

 

make && make install

编译参数详解

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

./configure \

--prefix=/usr/local/php-7.2.7 \ # 指定安装路径

--enable-fpm \             # 表示激活PHP-FPM方式服务,即FactCGI方式运行PHP服务。

--with-fpm-user=nginx \    # 指定PHP-FPM进程管理的用户为www,此处最好和Nginx服务用户统一。

--with-fpm-group=nginx \   # 指定PHP-FPM进程管理用户组为www,此处最好和Nginx服务用户组统一。

--with-zlib \ # 打开zlib库的支持,用于http压缩传输

--enable-mysqlnd \

--with-pdo-mysql=mysqlnd \

--with-mysqli=mysqlnd \

--with-mysql-sock=/usr/local/mysql/tmp/mysql.sock \

--with-gd \        # 打开gd库的支持

--with-png-dir \

--with-jpeg-dir \

--with-freetype-dir \

--with-openssl \   # 打开openssl,加密传输时用到

--with-curl \      # 打开curl浏览工具的支持

--enable-mbstring \ # 多字节,字符串的支持

--enable-static \ # 生成静态链接库

--enable-zip \ # 打开对zip的支持

--enable-sockets \ # 打开 sockets 支持

--enable-xml

配置

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

cd /usr/local

 

ln -s php-7.2.10 php

 cp  /usr/src/php-7.2.10/php.ini-development /usr/local/php-7.2.10/lib/php.ini

  

 vim /usr/local/php/lib/php.ini

 date.timezone = PRC  (大约在932行)

 expose_php = Off  #避免PHP信息暴露在http头中(大约369行)

  

 display_errors = Off(生产环境设置为off,开发环境就设置为On,便于调试)

 说明:设置了dispaly_errors为off后,需要在php-fpm.conf中开启错误日志记录路径error_log = log/php-fpm.log

  

cd php

cp etc/php-fpm.conf.default etc/php-fpm.conf

 

cd /usr/local/php/etc/php-fpm.d/

cp www.conf.default www.conf

cd /usr/local/php

sbin/php-fpm

ps -e | grep php-fpm

 

如果在编译PHP时指定了--with-mysql=mysqlnd和--with-pdo-mysql=mysqlnd的参数,那么在生产中可能会遇到socket连接问题,解决办法是在php.ini里加入命令: pdo_mysql.default_socket=/usr/local/mysql/tmp/mysql.sock

 

最好是在编译PHP的时候,指定mysql.socket的位置:

--with-mysql-sock=/usr/local/mysql/tmp/mysql.sock

开机自启

1

2

3

vim /etc/rc.local

# PHP-FPM自动启动

/usr/local/php/sbin/php-fpm &

管理PHP-FPM

记录pid

1

2

3

4

5

6

7

8

9

vi /usr/local/php/etc/php-fpm.conf

pid = run/php-fpm.pid

error_log = log/php-fpm.log #24行这个在php.ini设置display_errors = Off时启用

设置完之后重启服务器

向进程发送信号,就可以完成进程管理

停止: kill -INT `cat /usr/local/php/var/run/php-fpm.pid`

平滑停止: kill -QUIT `cat /usr/local/php/var/run/php-fpm.pid`

重启:kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

重新打开日志:kill -USR1 `cat /usr/local/php/var/run/php-fpm.pid`

配置Nginx和PHP关联

nginx.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

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

#user  nobody;

worker_processes  1;

 

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

 

#pid        logs/nginx.pid;

 

 

events {

    use epoll;

    worker_connections  1024;

}

 

 

http {

    include       mime.types;

    default_type  application/octet-stream;

     

    #隐藏Nginx软件版本号

    server_tokens off;

     

    #激活tcp_nodelay功能,提高I/O性能

    tcp_nodelay on;

 

    # 设置读取客户端请求头数据的超时时间。此处的数值为15,其单位是秒,为经验参考值

    client_header_timeout 15;

 

    # 设置读取客户端请求体的超时时间

    client_body_timeout 15;

 

    # 指定响应客户端的超时时间

    send_timeout 25;

 

    # 上传文件大小限制

    client_max_body_size 8m;

     

    #压缩配置

    gzip on;

    gzip_min_length 1k;

    gzip_buffers 4 16k;

    gzip_http_version 1.0;

    gzip_comp_level 2;

    gzip_types text/css text/xml application/javascript;

    gzip_vary on;

    #include extra/gzip.config;

 

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

    #                  '$status $body_bytes_sent "$http_referer" '

    #                  '"$http_user_agent" "$http_x_forwarded_for"';

 

    #access_log  logs/access.log  main;

 

    sendfile        on;

    #tcp_nopush     on;

 

    #keepalive_timeout  0;

    keepalive_timeout  65;

 

    include extra/*.conf;

}

在conf目录下新建一个extra目录,专门用于配置虚拟机;

例如,我们想配置一个www.nginx.con的域名,我们可以在extra下新建一个nginx.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

25

26

27

28

29

30

31

32

33

server {

     listen       80;

     server_name  www.nginx.com;

     root html/blog/public;

     #access_log  logs/host.access.log  main;

 

     location / {

        index  index.php index.html index.htm;

        if (!-e $request_filename) {

            rewrite ^/(.*)$ /index.php/$1 last;

        }

     }

 

     #error_page  404              /404.html;

 

     # redirect server error pages to the static page /50x.html

     #

     error_page   500 502 503 504  /50x.html;

     location = /50x.html {

        root   html;

     }

 

     # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

     #

     location ~ \.php {

        fastcgi_pass   127.0.0.1:9000;

        fastcgi_index  index.php;

        fastcgi_split_path_info ^(.+\.php)(.*)$;

        fastcgi_param PATH_INFO $fastcgi_path_info;

        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

        include        fastcgi_params;

     }

}

Nginx优化

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

# 开启gzip压缩功能

gzip on;

 

# 设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。默认是0,表示不管页面多大都进行压缩。建议设置成1K,如果小于1K可能会越压越大。

gzip_min_length 1k;

 

# 压缩缓冲区大小。表示申请4个单位为32k的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存来存储gzip压缩结果

gzip_buffers 4 32k;

 

# 压缩版本(默认1.1,前端为squid2.5时使用1.0),用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持GZIP解压,使用默认即可

gzip_http_version 1.1;

 

# 压缩比率。用来指定gzip压缩比,1压缩比最小,处理速度最快; 9压缩比最大,传输速度快,但处理最慢,也比较消耗CPU资源。

gzip_comp_level 2;

 

# 指定压缩类型

gzip_types text/css text/xml application/javascript;

 

# header支持。该选项可以让前端的缓存服务器缓存经过gzip压缩的页面,例如用Squid缓存经过Nginx压缩的数据

gzip_vary on;

LAMP

安装依赖

1

sudo yum install gcc gcc-c++ perl perl-devel expat expat-devel autoconf libtool openssl openssl-devel

安装apr

1

2

3

4

5

下载地址:https://apr.apache.org

tar -zxvf apr-1.6.3.tar.gz

cd apr-1.6.3

./configure --prefix=/usr/local/apr

make && make install

安装apr-util

1

2

3

4

5

下载地址:https://apr.apache.org/

tar -zxvf apr-util-1.6.1.tar.gz

cd apr-util-1.6.1

./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

make && make install

安装pcre

1

2

3

4

5

下载地址:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

tar zxvf pcre-8.42.tar.gz

cd pcre-8.42

./configure --prefix=/usr/local/pcre

make && make install

安装Apache

1

2

3

4

5

6

7

8

9

10

tar zxvf httpd-2.4.33.tar.gz

cd httpd-2.4.33

./configure \

--prefix=/usr/local/apache \

--enable-ssl \

--enable-so \

--with-apr=/usr/local/apr \

--with-apr-util=/usr/local/apr-util \

--with-pcre=/usr/local/pcre

make && make install

配置环境变量

1

2

3

vi /etc/profile

export PATH="$PATH:/usr/local/apache/bin"

source /etc/profile

开机自启

1

2

vim /etc/rc.d/rc.local

/usr/local/apache/bin/apachectl start

配置

1

2

3

4

5

6

7

8

9

10

11

cp /usr/local/apache/conf/httpd.conf /usr/local/apache/conf/httpd.conf.bak

cp /usr/local/apache/conf/extra/httpd-vhosts.conf /usr/local/apache/conf/extra/httpd-vhosts.conf.bak

 

vi  /usr/local/apache/conf/httpd.conf

 

去掉152行前面的#号,开启重写模块

去掉194行前面的#号,去除错误信息

239行允许重写 AllowOverride All

 

开启Apache:

apachectl -k start

关闭防火墙

1

2

3

4

5

6

7

8

CentOS6:

service iptables stop   临时关闭

chkconfig --level 2345 iptables off 永久关闭

 

CentOS7:

systemctl stop firewalld.service  #令关闭防火墙

systemctl disable firewalld.service  #关闭防火墙开机自启动

通过浏览器输入IP测试成功

安装MySQL

安装依赖

(1)cmake是新版MySQL的编译工具

1

2

3

sudo yum install gcc gcc-c++ cmake ncurses-devel

如下的几个依赖在CentOS7中需要安装,CentOS6不需要

sudo yum install perl perl-devel autoconf

编译安装MySQL

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

useradd -s /sbin/nologin -M mysql  # 添加MySQL用户

cd mysql-5.6.40

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.40 \

-DMYSQL_UNIX_ADDR=/usr/local/mysql-5.6.40/tmp/mysql.sock \

-DMYSQL_DATADIR=/usr/local/mysql-5.6.40/data \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_EXTRA_CHARSETS=all \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_MEMORY_STORAGE_ENGINE=1 \

-DWITH_READLINE=1 \

-DWITH_INNODB_MEMCACHED=1 \

-DWITH_DEBUG=OFF \

-DWITH_ZLIB=bundled \

-DENABLED_LOCAL_INFILE=1 \

-DENABLED_PROFILING=ON \

-DMYSQL_MAINTAINER_MODE=OFF \

-DMYSQL_TCP_PORT=3306

 

make

 

make install

配置

1

2

3

4

5

6

7

cd /usr/local/mysql-5.6.40

chown mysql.mysql /usr/local/mysql-5.6.40/data

mkdir tmp

chown mysql.mysql /usr/local/mysql-5.6.40/tmp

rm -f /etc/my.cnf

cp support-files/my-default.cnf /etc/my.cnf

scripts/mysql_install_db --defaults-file=/etc/my.cnf --user=mysql

加入守护进程

1

2

3

4

5

cd /usr/local

ln -s mysql-5.6.40 mysql

cd //usr/local/mysql

cp support-files/mysql.server /etc/init.d/mysqld

chkconfig --add mysqld

配置环境变量

1

2

3

vi /etc/profile

export PATH="/usr/local/mysql/bin"

source /etc/profile

启动MySQL

1

2

3

service mysqld start

mysql -u root -p #第一次登陆不需要密码,回车即可

set password for root@localhost = password('root');  #修改密码

安装PHP

编译安装PHP

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

tar zxvf php-7.2.3.tar.gz

cd  php-7.2.3

 

./configure \

--prefix=/usr/local/php \

--enable-mysqlnd \

--with-mysqli=mysqlnd \

--with-pdo-mysql=mysqlnd \

--with-mysql-sock=/usr/local/mysql/tmp/mysql.sock \

--with-apxs2=/usr/local/apache/bin/apxs \

--with-zlib \

--with-gd \

--with-png-dir \

--with-jpeg-dir \

--with-freetype-dir \

--with-openssl \

--enable-mbstring \

--enable-xml \

--enable-zip \

--enable-sockets \

--with-curl

 

make && make install

配置Apache与PHP关联

1

2

3

4

5

6

vi /usr/local/apache/conf/httpd.conf

# 加入 在 加载了PHP模块之后

<FilesMatch "\.php$">

    SetHandler application/x-httpd-php

</FilesMatch>

# 保存,退出,重启

配置环境变量

1

2

3

4

5

6

7

8

vi /etc/profile

export PATH="$PATH:/usr/local/php/bin"

source /etc/profile

 

cp /root/package/php-7.2.3/php.ini-development /usr/local/php/lib/php.ini

vi /usr/local/php/lib/php.ini

 

date.timezone = PRC  (大约在932行)

配置虚拟主机

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

vi /usr/local/apache/conf/httpd.conf

258行,默认首页加入index.php

483行,开启虚拟主机支持

vi /usr/local/apache/conf/extra/httpd-vhosts.conf

 

vi /usr/local/apache/conf/extra/httpd-vhosts.conf

<VirtualHost *:80>

    ServerAdmin www.huiwan.com

    DocumentRoot "/mnt/hgfs/web/huiwan"

    ServerName www.huiwan.com

    #ErrorLog "logs/dummy-host2.example.com-error_log"

    #CustomLog "logs/dummy-host2.example.com-access_log" common

    <Directory "/mnt/hgfs/web/huiwan">

        Options indexes Multiviews

        AllowOverride All

        Require all granted

    </Directory>

</VirtualHost>

PHP环境如何搭建?本篇文章给大家带来的内容是PHP环境如何搭建?PHP环境搭建(详解)。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所助。

按照文章的步骤操作,可以帮助你在CentOS6.*系统上搭建一个LNMP环境或者LAMP环境。这些环境可以作为服务器的线上运行环境。

LNMP

准备工作

安装wget

wget 是一个从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三个最常见的TCP/IP协议下载,并可以可以使用HTTP代理。

1

sudo yum install wget

安装net-tools

最小化安装CentOS7时如果无法使用ifconfig命令,则需要安装net-tools(如果是安装的CentOS6版本则无需安装)

1

sudo yum install net-tools

更新yum源

1

yum -y update

安装vim

1

sudo yum install vim

配置显示行号

1

2

vim ~/.vimrc

输入: set nu 后退出保存

安装Nginx

安装依赖

(1) 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装gcc-c++。

(2) PCRE是一个Perl库,中文"Perl兼容的正则表达式库"。安装Nginx是为了使Nginx支持具备URI重写功能的rewrite模块,如果不安装pcre库,则Nginx无法使用rewrite模块功能,Nginx的Rewrite模块功能几乎是企业应用必须。

(3) zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。

(4) OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。 nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要安装 OpenSSL 库 。

1

2

yum -y install gcc gcc-c++ zlib zlib-devel

yum -y install pcre pcre-devel openssl openssl-devel

说明:yum安装方式安装的pcre版本比较低,不过基本不影响使用

检查基础依赖包

1

2

3

4

rpm -qa pcre pcre-devel

rpm -qa zlib zlib-devel

rpm -qa openssl openssl-devel

rpm -qa pcre pcre-devel

编译安装Nginx

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

cd ~

这里我们默认把安装包都放在了/usr/src目录下

cd /usr/src  #切换到软件包目录

wget https://nginx.org/download/nginx-1.14.0.tar.gz   #下载nginx源码包

useradd nginx -s /sbin/nologin -M   #创建nginx用户用于管理nginx程序

tar zxvf nginx-1.14.0.tar.gz  #解压nginx源码包

cd nginx-1.14.0

#预编译

./configure \

--user=nginx \

--group=nginx \

--prefix=/usr/local/nginx-1.14.0 \

--with-http_stub_status_module \

--with-http_ssl_module

make #编译

make install #安装

 

cd /usr/local

ln -s nginx-1.14.0 nginx  #创建nginx的软链接

配置环境变量

1

2

3

vim /etc/profile

export PATH="/usr/local/nginx/sbin:$PATH"

source /etc/profile

开机自启

1

2

3

vim /etc/rc.local

# Nginx开机自启

/usr/local/nginx/sbin/nginx &

安装说明

编译Nginx软件时,可以使用configure--help查看相关帮助。下面是本次编译时指定的参数及简单说明:

1

2

3

4

5

--prefix=PATH    #设置安装路劲

--user=USER      #进程用户权限

--group=GROUP    #进程用户组权限

--with-http_stub_status_module   #激活状态信息

--with-http_ssl_module  #激活ssl功能

语法检查

安装完Nginx后,并不能直接对外提供服务,需要先启动Nginx服务才行,具体操作如下。

1

/usr/local/nginx/sbin/nginx -t

Nginx命令

1

2

3

4

5

/usr/local/nginx/sbin/nginx  #启动

/usr/local/nginx/sbin/nginx -s stop  #立即停止

/usr/local/nginx/sbin/nginx -s quit  #平滑停止

/usr/local/nginx/sbin/nginx -s reload #重载配置

/usr/local/nginx/sbin/nginx -s reopen #重开日志

服务启动检查

1

2

sudo yum install lsof

lsof -i :80

关闭防火墙

1

2

3

4

5

6

7

8

CentOS6:

service iptables stop   临时关闭

chkconfig --level 2345 iptables off 永久关闭

 

CentOS7:

systemctl stop firewalld.service  #令关闭防火墙

systemctl disable firewalld.service  #关闭防火墙开机自启动

通过浏览器输入IP测试是否成功

安装MySQL

安装依赖

(1)cmake是新版MySQL的编译工具

1

2

3

sudo yum install gcc gcc-c++ cmake ncurses-devel

如下的几个依赖在CentOS7中需要安装,CentOS6不需要

sudo yum install perl perl-devel autoconf

编译安装MySQL

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

useradd -s /sbin/nologin -M mysql  # 添加MySQL用户

wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.41.tar.gz

 

tar zxvf mysql-5.6.41.tar.gz

 

cd mysql-5.6.41

 

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.41 \

-DMYSQL_UNIX_ADDR=/usr/local/mysql-5.6.41/tmp/mysql.sock \

-DMYSQL_DATADIR=/usr/local/mysql-5.6.41/data \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_EXTRA_CHARSETS=all \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_MEMORY_STORAGE_ENGINE=1 \

-DWITH_READLINE=1 \

-DWITH_INNODB_MEMCACHED=1 \

-DWITH_DEBUG=OFF \

-DWITH_ZLIB=bundled \

-DENABLED_LOCAL_INFILE=1 \

-DENABLED_PROFILING=ON \

-DMYSQL_MAINTAINER_MODE=OFF \

-DMYSQL_TCP_PORT=3306

 

make && make install

配置

1

2

3

4

5

6

7

cd /usr/local/mysql-5.6.41

chown mysql.mysql /usr/local/mysql-5.6.41/data

mkdir tmp

chown mysql.mysql /usr/local/mysql-5.6.41/tmp

rm -f /etc/my.cnf

cp support-files/my-default.cnf /etc/my.cnf

scripts/mysql_install_db --defaults-file=/etc/my.cnf --user=mysql

加入守护进程

1

2

3

4

5

cd /usr/local

ln -s mysql-5.6.41 mysql

cd /usr/local/mysql

cp support-files/mysql.server /etc/init.d/mysqld

chkconfig --add mysqld

配置环境变量

1

2

3

vim /etc/profile

export PATH="/usr/local/mysql/bin"

source /etc/profile

启动MySQL

1

2

3

service mysqld start

mysql -u root -p #第一次登陆不需要密码,回车即可

set password for root@localhost = password('root');  #修改密码

安装PHP

安装依赖

1

sudo yum install gcc gcc-c++ zip unzip libxml2 libxml2-devel curl-devel autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel  zlib zlib-devel glibc glibc-devel glib2 glib2-devel gd-devel bzip2 bzip2-devel

编译安装PHP

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

cd ~/package

wget http://hk1.php.net/get/php-7.2.10.tar.gz/from/this/mirror -O php-7.2.10.tar.gz

 

tar zxvf php-7.2.10.tar.gz

cd  php-7.2.10

./configure \

--prefix=/usr/local/php-7.2.10 \

--enable-fpm \

--with-fpm-user=nginx \

--with-fpm-group=nginx \

--with-zlib \

--enable-mysqlnd \

--with-pdo-mysql=mysqlnd \

--with-mysqli=mysqlnd \

--with-mysql-sock=/usr/local/mysql/tmp/mysql.sock \

--with-gd \

--with-png-dir \

--with-jpeg-dir \

--with-freetype-dir \

--with-iconv-dir \

--with-openssl \

--with-curl \

--enable-mbstring \

--enable-static \

--enable-zip \

--enable-sockets \

--enable-xml

 

 

make && make install

编译参数详解

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

./configure \

--prefix=/usr/local/php-7.2.7 \ # 指定安装路径

--enable-fpm \             # 表示激活PHP-FPM方式服务,即FactCGI方式运行PHP服务。

--with-fpm-user=nginx \    # 指定PHP-FPM进程管理的用户为www,此处最好和Nginx服务用户统一。

--with-fpm-group=nginx \   # 指定PHP-FPM进程管理用户组为www,此处最好和Nginx服务用户组统一。

--with-zlib \ # 打开zlib库的支持,用于http压缩传输

--enable-mysqlnd \

--with-pdo-mysql=mysqlnd \

--with-mysqli=mysqlnd \

--with-mysql-sock=/usr/local/mysql/tmp/mysql.sock \

--with-gd \        # 打开gd库的支持

--with-png-dir \

--with-jpeg-dir \

--with-freetype-dir \

--with-openssl \   # 打开openssl,加密传输时用到

--with-curl \      # 打开curl浏览工具的支持

--enable-mbstring \ # 多字节,字符串的支持

--enable-static \ # 生成静态链接库

--enable-zip \ # 打开对zip的支持

--enable-sockets \ # 打开 sockets 支持

--enable-xml

配置

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

cd /usr/local

 

ln -s php-7.2.10 php

 cp  /usr/src/php-7.2.10/php.ini-development /usr/local/php-7.2.10/lib/php.ini

  

 vim /usr/local/php/lib/php.ini

 date.timezone = PRC  (大约在932行)

 expose_php = Off  #避免PHP信息暴露在http头中(大约369行)

  

 display_errors = Off(生产环境设置为off,开发环境就设置为On,便于调试)

 说明:设置了dispaly_errors为off后,需要在php-fpm.conf中开启错误日志记录路径error_log = log/php-fpm.log

  

cd php

cp etc/php-fpm.conf.default etc/php-fpm.conf

 

cd /usr/local/php/etc/php-fpm.d/

cp www.conf.default www.conf

cd /usr/local/php

sbin/php-fpm

ps -e | grep php-fpm

 

如果在编译PHP时指定了--with-mysql=mysqlnd和--with-pdo-mysql=mysqlnd的参数,那么在生产中可能会遇到socket连接问题,解决办法是在php.ini里加入命令: pdo_mysql.default_socket=/usr/local/mysql/tmp/mysql.sock

 

最好是在编译PHP的时候,指定mysql.socket的位置:

--with-mysql-sock=/usr/local/mysql/tmp/mysql.sock

开机自启

1

2

3

vim /etc/rc.local

# PHP-FPM自动启动

/usr/local/php/sbin/php-fpm &

管理PHP-FPM

记录pid

1

2

3

4

5

6

7

8

9

vi /usr/local/php/etc/php-fpm.conf

pid = run/php-fpm.pid

error_log = log/php-fpm.log #24行这个在php.ini设置display_errors = Off时启用

设置完之后重启服务器

向进程发送信号,就可以完成进程管理

停止: kill -INT `cat /usr/local/php/var/run/php-fpm.pid`

平滑停止: kill -QUIT `cat /usr/local/php/var/run/php-fpm.pid`

重启:kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

重新打开日志:kill -USR1 `cat /usr/local/php/var/run/php-fpm.pid`

配置Nginx和PHP关联

nginx.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

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

#user  nobody;

worker_processes  1;

 

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

 

#pid        logs/nginx.pid;

 

 

events {

    use epoll;

    worker_connections  1024;

}

 

 

http {

    include       mime.types;

    default_type  application/octet-stream;

     

    #隐藏Nginx软件版本号

    server_tokens off;

     

    #激活tcp_nodelay功能,提高I/O性能

    tcp_nodelay on;

 

    # 设置读取客户端请求头数据的超时时间。此处的数值为15,其单位是秒,为经验参考值

    client_header_timeout 15;

 

    # 设置读取客户端请求体的超时时间

    client_body_timeout 15;

 

    # 指定响应客户端的超时时间

    send_timeout 25;

 

    # 上传文件大小限制

    client_max_body_size 8m;

     

    #压缩配置

    gzip on;

    gzip_min_length 1k;

    gzip_buffers 4 16k;

    gzip_http_version 1.0;

    gzip_comp_level 2;

    gzip_types text/css text/xml application/javascript;

    gzip_vary on;

    #include extra/gzip.config;

 

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

    #                  '$status $body_bytes_sent "$http_referer" '

    #                  '"$http_user_agent" "$http_x_forwarded_for"';

 

    #access_log  logs/access.log  main;

 

    sendfile        on;

    #tcp_nopush     on;

 

    #keepalive_timeout  0;

    keepalive_timeout  65;

 

    include extra/*.conf;

}

在conf目录下新建一个extra目录,专门用于配置虚拟机;

例如,我们想配置一个www.nginx.con的域名,我们可以在extra下新建一个nginx.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

25

26

27

28

29

30

31

32

33

server {

     listen       80;

     server_name  www.nginx.com;

     root html/blog/public;

     #access_log  logs/host.access.log  main;

 

     location / {

        index  index.php index.html index.htm;

        if (!-e $request_filename) {

            rewrite ^/(.*)$ /index.php/$1 last;

        }

     }

 

     #error_page  404              /404.html;

 

     # redirect server error pages to the static page /50x.html

     #

     error_page   500 502 503 504  /50x.html;

     location = /50x.html {

        root   html;

     }

 

     # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

     #

     location ~ \.php {

        fastcgi_pass   127.0.0.1:9000;

        fastcgi_index  index.php;

        fastcgi_split_path_info ^(.+\.php)(.*)$;

        fastcgi_param PATH_INFO $fastcgi_path_info;

        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

        include        fastcgi_params;

     }

}

Nginx优化

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

# 开启gzip压缩功能

gzip on;

 

# 设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。默认是0,表示不管页面多大都进行压缩。建议设置成1K,如果小于1K可能会越压越大。

gzip_min_length 1k;

 

# 压缩缓冲区大小。表示申请4个单位为32k的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存来存储gzip压缩结果

gzip_buffers 4 32k;

 

# 压缩版本(默认1.1,前端为squid2.5时使用1.0),用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持GZIP解压,使用默认即可

gzip_http_version 1.1;

 

# 压缩比率。用来指定gzip压缩比,1压缩比最小,处理速度最快; 9压缩比最大,传输速度快,但处理最慢,也比较消耗CPU资源。

gzip_comp_level 2;

 

# 指定压缩类型

gzip_types text/css text/xml application/javascript;

 

# header支持。该选项可以让前端的缓存服务器缓存经过gzip压缩的页面,例如用Squid缓存经过Nginx压缩的数据

gzip_vary on;

LAMP

安装依赖

1

sudo yum install gcc gcc-c++ perl perl-devel expat expat-devel autoconf libtool openssl openssl-devel

安装apr

1

2

3

4

5

下载地址:https://apr.apache.org

tar -zxvf apr-1.6.3.tar.gz

cd apr-1.6.3

./configure --prefix=/usr/local/apr

make && make install

安装apr-util

1

2

3

4

5

下载地址:https://apr.apache.org/

tar -zxvf apr-util-1.6.1.tar.gz

cd apr-util-1.6.1

./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

make && make install

安装pcre

1

2

3

4

5

下载地址:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

tar zxvf pcre-8.42.tar.gz

cd pcre-8.42

./configure --prefix=/usr/local/pcre

make && make install

安装Apache

1

2

3

4

5

6

7

8

9

10

tar zxvf httpd-2.4.33.tar.gz

cd httpd-2.4.33

./configure \

--prefix=/usr/local/apache \

--enable-ssl \

--enable-so \

--with-apr=/usr/local/apr \

--with-apr-util=/usr/local/apr-util \

--with-pcre=/usr/local/pcre

make && make install

配置环境变量

1

2

3

vi /etc/profile

export PATH="$PATH:/usr/local/apache/bin"

source /etc/profile

开机自启

1

2

vim /etc/rc.d/rc.local

/usr/local/apache/bin/apachectl start

配置

1

2

3

4

5

6

7

8

9

10

11

cp /usr/local/apache/conf/httpd.conf /usr/local/apache/conf/httpd.conf.bak

cp /usr/local/apache/conf/extra/httpd-vhosts.conf /usr/local/apache/conf/extra/httpd-vhosts.conf.bak

 

vi  /usr/local/apache/conf/httpd.conf

 

去掉152行前面的#号,开启重写模块

去掉194行前面的#号,去除错误信息

239行允许重写 AllowOverride All

 

开启Apache:

apachectl -k start

关闭防火墙

1

2

3

4

5

6

7

8

CentOS6:

service iptables stop   临时关闭

chkconfig --level 2345 iptables off 永久关闭

 

CentOS7:

systemctl stop firewalld.service  #令关闭防火墙

systemctl disable firewalld.service  #关闭防火墙开机自启动

通过浏览器输入IP测试成功

安装MySQL

安装依赖

(1)cmake是新版MySQL的编译工具

1

2

3

sudo yum install gcc gcc-c++ cmake ncurses-devel

如下的几个依赖在CentOS7中需要安装,CentOS6不需要

sudo yum install perl perl-devel autoconf

编译安装MySQL

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

useradd -s /sbin/nologin -M mysql  # 添加MySQL用户

cd mysql-5.6.40

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.40 \

-DMYSQL_UNIX_ADDR=/usr/local/mysql-5.6.40/tmp/mysql.sock \

-DMYSQL_DATADIR=/usr/local/mysql-5.6.40/data \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_EXTRA_CHARSETS=all \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_MEMORY_STORAGE_ENGINE=1 \

-DWITH_READLINE=1 \

-DWITH_INNODB_MEMCACHED=1 \

-DWITH_DEBUG=OFF \

-DWITH_ZLIB=bundled \

-DENABLED_LOCAL_INFILE=1 \

-DENABLED_PROFILING=ON \

-DMYSQL_MAINTAINER_MODE=OFF \

-DMYSQL_TCP_PORT=3306

 

make

 

make install

配置

1

2

3

4

5

6

7

cd /usr/local/mysql-5.6.40

chown mysql.mysql /usr/local/mysql-5.6.40/data

mkdir tmp

chown mysql.mysql /usr/local/mysql-5.6.40/tmp

rm -f /etc/my.cnf

cp support-files/my-default.cnf /etc/my.cnf

scripts/mysql_install_db --defaults-file=/etc/my.cnf --user=mysql

加入守护进程

1

2

3

4

5

cd /usr/local

ln -s mysql-5.6.40 mysql

cd //usr/local/mysql

cp support-files/mysql.server /etc/init.d/mysqld

chkconfig --add mysqld

配置环境变量

1

2

3

vi /etc/profile

export PATH="/usr/local/mysql/bin"

source /etc/profile

启动MySQL

1

2

3

service mysqld start

mysql -u root -p #第一次登陆不需要密码,回车即可

set password for root@localhost = password('root');  #修改密码

安装PHP

编译安装PHP

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

tar zxvf php-7.2.3.tar.gz

cd  php-7.2.3

 

./configure \

--prefix=/usr/local/php \

--enable-mysqlnd \

--with-mysqli=mysqlnd \

--with-pdo-mysql=mysqlnd \

--with-mysql-sock=/usr/local/mysql/tmp/mysql.sock \

--with-apxs2=/usr/local/apache/bin/apxs \

--with-zlib \

--with-gd \

--with-png-dir \

--with-jpeg-dir \

--with-freetype-dir \

--with-openssl \

--enable-mbstring \

--enable-xml \

--enable-zip \

--enable-sockets \

--with-curl

 

make && make install

配置Apache与PHP关联

1

2

3

4

5

6

vi /usr/local/apache/conf/httpd.conf

# 加入 在 加载了PHP模块之后

<FilesMatch "\.php$">

    SetHandler application/x-httpd-php

</FilesMatch>

# 保存,退出,重启

配置环境变量

1

2

3

4

5

6

7

8

vi /etc/profile

export PATH="$PATH:/usr/local/php/bin"

source /etc/profile

 

cp /root/package/php-7.2.3/php.ini-development /usr/local/php/lib/php.ini

vi /usr/local/php/lib/php.ini

 

date.timezone = PRC  (大约在932行)

配置虚拟主机

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

vi /usr/local/apache/conf/httpd.conf

258行,默认首页加入index.php

483行,开启虚拟主机支持

vi /usr/local/apache/conf/extra/httpd-vhosts.conf

 

vi /usr/local/apache/conf/extra/httpd-vhosts.conf

<VirtualHost *:80>

    ServerAdmin www.huiwan.com

    DocumentRoot "/mnt/hgfs/web/huiwan"

    ServerName www.huiwan.com

    #ErrorLog "logs/dummy-host2.example.com-error_log"

    #CustomLog "logs/dummy-host2.example.com-access_log" common

    <Directory "/mnt/hgfs/web/huiwan">

        Options indexes Multiviews

        AllowOverride All

        Require all granted

    </Directory>

</VirtualHost>


标签: PHP
分享:
评论:
你还没有登录,请先