最新的php安装,当前是7.3.6

安装依赖库

yum -y install gd zlib libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel openssl openssl-devel curl-devel libxslt-devel prec-devel bzip2 bzip2-devel autoconf

安装libiconv

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz
tar zxf libiconv-1.15.tar.gz
cd libiconv-1.15
./configure --prefix=/usr/local/libiconv
make && make install

下载最新稳定版php

wget https://www.php.net/distributions/php-7.3.6.tar.gz

解压

tar -zvxf php-7.3.6.tar.gz`

添加用户

adduser www

配置编译文件

cd php-7.3.6
./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--with-curl \
--with-bz2 \
--with-freetype-dir \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-gettext \
--with-iconv-dir \
--with-kerberos \
--with-libdir=lib \
--with-libxml-dir \
--with-mysqli=mysqlnd \
--with-openssl \
--with-pcre-regex \
--with-pdo-mysql=mysqlnd \
--with-pdo-sqlite \
--with-pear \
--with-xmlrpc \
--with-xsl \
--with-zlib \
--with-iconv=/usr/local/libiconv \
--enable-mysqlnd \
--enable-fpm \
--enable-bcmath \
--enable-libxml \
--enable-inline-optimization \
--enable-mbregex \
--enable-mbstring \
--enable-opcache \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvsem \
--enable-xml \
--enable-zip \
--enable-fileinfo

编译

make && make install

编译报如下错

/usr/local/include/zip.h:59:21: 致命错误:zipconf.h:没有那个文件或目录

查找zipconf.h文件,复制到/usr/local/lib/libzip/include目录,之后再次尝试make

find / -name "zipconf.h"
cp /usr/local/lib/libzip/include/zipconf.h /usr/local/include/zipconf.h
make && make install

看到如下提示即编译成功

You may want to add: /usr/local/php/lib/php to your php.ini include_path
/download/php-7.3.5/build/shtool install -c ext/phar/phar.phar /usr/local/php/bin
ln -s -f phar.phar /usr/local/php/bin/phar
Installing PDO headers:           /usr/local/php/include/php/ext/pdo/

配置文件

cp php.ini-production /usr/local/php/lib/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
mv /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
ln -s /usr/local/php/bin/php /usr/local/bin/php
ln -s /usr/local/php/sbin/php-fpm /usr/local/sbin/php-fpm

最新的nginx安装,当前版本是1.16.0

安装gcc

yum install gcc-c++

PCRE pcre-devel 安装

yum install -y pcre pcre-devel

zlib 安装

yum install -y zlib zlib-devel

OpenSSL 安装

yum install -y openssl openssl-devel

以上依赖库部分可能在安装php时安装过了,会有提示
接下来下载最新的nginx源码

wget https://nginx.org/download/nginx-1.16.0.tar.gz

解压

tar -zxf nginx-1.16.0.tar.gz
cd nginx-1.16.0

配置

./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module

安装

make && make install

启动

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

修改nginx.conf配置文件使支持php-fpn

vim /usr/local/nginx/conf/nginx.conf

将location部分注释去掉

location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi_params;
        }
        

重新加载配置

/usr/local/nginx/sbin/nginx -s reload

生成一个test.php来测试

vim /usr/local/nginx/html/test.php

编辑如下

<?php
    phpinfo();
?>

此时访问xx.xx.xx.xx/test.phpfile not found错误
修改vim /usr/local/nginx/conf/nginx.conf中的location配置,将scripts改为$document_root,如下

location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

此时再访问可正常显示php信息

安装mysql以进一步安装wordpress和typecho

因为centos内置Mariadb所以直接使用yum install mysql并不会成功,使用以下方法安装

下载mysql的repo源

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

安装

rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-server

启动

service mysqld start

该版本为5.6.44,并没有生成root初始随机密码,直接mysql -u root -p回车登录,输入密码时继续回车即可

设置root密码

set password for 'root'@'localhost' =password('password');

退出

exit;

wordpress安装

wget https://wordpress.org/latest.tar.gz

解压

tar xzvf latest.tar.gz

移动到nginx目录下

cp -r wordpress /usr/local/nginx/html/

修改配置文件中的root路径为/usr/local/nginx/html/wordpress

在wordpress目录从模板生成一个wp配置

cp wp-config-sample.php wp-config.php

配置之前创建的数据库信息,注意将localhost改为127.0.0.1

OK,搞定

安装typecho

下载

wget http://typecho.org/downloads/1.1-17.10.30-release.tar.gz

解压

tar xzvf 1.1-17.10.30-release.tar.gz

复制到html目录下命名为typecho

cp -r build /usr/local/nginx/html/typecho

修改nginx.conf将之前的两处wordpress改为typecho

重新加载

sbin/nginx -s reload

配置完成打开访问,如果卡在数据库配置界面确认您的配置 数据库配置
按以下方式操作

在install.php文件的第56行加入 ob_start(); 代码;
还有另外一个办法是修改php.ini文件,加入 output_buffering =on 代码;
如果是阿里云,应该是启用含有“缓冲”的那个选项就可以了。

之后成功进入首页,但是在进入后台就报404,只能访问首页..
在nginx.conf中添加地址重写配置,参考如下

location / {
    root   /xxx/xxx/xxx/xxx;
    index  index.html index.htm index.php;

    if (-f $request_filename/index.html){
        rewrite (.*) $1/index.html break;
    }
    if (-f $request_filename/index.php){
        rewrite (.*) $1/index.php;
    }
    if (!-f $request_filename){
        rewrite (.*) /index.php;
    }
    # First attempt to serve request as file, then
    # as directory, then fall back to displaying a 404.
    try_files $uri $uri/ =404;
    # Uncomment to enable naxsi on this location
    # include /etc/nginx/naxsi.rules
}

the "http2" parameter requires ngx_http_v2_module错误需要添加该模块重新编译nginx使增加新模块.

先查看之前编译的模块参数

/usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.16.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module

重新编译,在参数后面添加新参数模块--with-http_v2_module

./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_v2_module

之后进行make并不要make install,因为不需要覆盖安装

查看新编译出来的nginx文件

cd objs
ll
-rw-r--r-- 1 root root   17835 6月   7 16:30 autoconf.err
-rw-r--r-- 1 root root   44655 6月   7 16:30 Makefile
-rwxr-xr-x 1 root root 6593232 6月   7 16:31 nginx
-rw-r--r-- 1 root root    5341 6月   7 16:31 nginx.8
-rw-r--r-- 1 root root    7443 6月   7 16:30 ngx_auto_config.h
-rw-r--r-- 1 root root     657 6月   7 16:30 ngx_auto_headers.h
-rw-r--r-- 1 root root    6569 6月   7 16:30 ngx_modules.c
-rw-r--r-- 1 root root   88016 6月   7 16:31 ngx_modules.o
drwxr-xr-x 9 root root    4096 6月   6 22:27 src

将其替换/usr/local/nginx/sbin/nginx

cp objs/nginx /usr/local/nginx/sbin/nginx

如果报无法创建普通文件"/usr/local/nginx/sbin/nginx": 文本文件忙,需要使用kill杀掉nginx进程

ps -ef|grep nginx
kill -QUIT 2072

如果因为域名的变化,导致之前的wordpress页面显示异常,或者登录等二次跳转跳到了之前的地址,有两种解决办法,一种是使用原来IP登录,在后台修改ip为新的域名.不过一般出现异常,可能直接用IP登录已经指向其他的服务(比如我就指向了另一个typecho站),此时可以直接修改数据库,将wordpress中保存的之前的IP修改为新的域名

UPDATE wp_options SET option_value = replace( option_value, ‘ xx.xx.xx.xx ’, ’ newhost.com ’) WHERE option_name = ‘home’  OR option_name =’siteurl’;

wordpress上传验证ftp权限问题解决

因为之前的操作都是在root连接ssh操作的.所以wordpress的用户组是root:root,这会影响到我们在线的上传,插件下载等操作,所以查看nginx权限

ps -ef | grep nginx 

将wordpress目录owner改为nginx

chown -R  nginx ./wordpress/

修改 Nginx 服务器 WordPress 上传文件大小限制

nginx.conf配置文件 http{} 字段中添加以下内容:

client_max_body_size 50M;

标签: nginx, wordpress, typecho, php, php7, 博客搬家

添加新评论