从源码编译N(ginx)+M(ySQL)+P(HP)并安装WordPress
By HKL, , 评论

[ Linux  Opensource  Firefox  Office  ]

实习项目

过程

1.下载nginx-1.11.3源码包并且编译。

因为nginx HTTP rewrite module 需要PCRE包,同时其依赖的zlib本机也没有安装。所以一并下载源码包编译。

其中遇到过一次错误,就是nginx依赖的是PCRE而不是PCRE2,在下载的时候需要区分清楚。

PCRE和zlib编译安装过程比较简单,只需./configure好然后make && make install即可。

然后可以进入nginx编译过程。

在./configure时需要添加好参数 –with-pcre=PATH/TO/pcre  –with-zlib=PATH/TO/zlib

执行make && make install 编译安装 因为没有设定路径,所以安装在/usr/local/nginx目录

修改conf目录下的nginx.conf文件

要对公网开放,所以不能只监听localhost,将listen改成0.0.0.0:80

经过测试,发现也是只有通过本地loop能访问,公网其它主机依然不能访问。初步判断是防火墙设定问题,为iptables添加80端口的ACCEPT规则之后问题解决。

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

2.下载php 7.0.9源码包并进行编译

因为从php7开始,./configure参数中已经删除了”–with-mysql”,换成了”–enable-mysql”,所以./configure 添加了--enable-mysql--enable-fpm

然后编译安装

安装后需要修改/usr/local/etc下的php-fpm.conf,将include参数设定为php-fpm.d下的所有.conf文件,并且修改php-fpm.d目录下的www.conf

再通过修改nginx配置文件nignx.conf以支持fastcgi,期间遇到错误就是通过URL访问php文件时没有执行而是直接下载。通过查阅配置文件以及文档,确定是nginx配置文件中fastcgi中的项参数SCRIPT_FILENAME配置不正确,将其修改成绝对路径+脚本名字的形式/usr/local/nginx/html$fastcgi_script_name问题解决。

3.编译安装MySQL5.7.14

MySQL的编译安装应该是最麻烦的一步,因为本机已经运行了一个mysqld实例,所以需要额外设定一些参数以避免冲突。

首先,编译安装MySQL需要使用cmake,所以先编译安装好cmake,过程比较简单,不过要执行的是./bootstrap 而不是./configure make过程使用gmake && gmake install

然后编译安装好依赖包ncurses即可开始配置MySQL

第一次编译安装的时候就是因为参数配置失误,使得安装之后执行mysql遇到了"segmentation fault (core dumped)"的问题。第一次是因为只设定了<span class="pun">-</span><span class="pln">DDEFAULT_CHARSET</span><span class="pun">=</span><span class="pln">utf8mb4而没有设定DDEFAULT_COLLATION参数,在initialize过程中遇到"collation 'latin1_swedish_ci' is not valid for character set 'utf8mb4'"错误,然后强行修改my.cnf文件之后initialize通过,能开启mysqld服务,但是客户端每次登录都会报错。</span>

所以第二次重装编译安装,将参数设定好。

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql57 \
-DMYSQL_UNIX_ADDR=/usr/local/mysql5714/mysql57.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/var/mysql/data \
-DMYSQL_TCP_PORT=23306 \
-DWITH_BOOST=boost

然后mysqld以及mysql均正常。

4.安装WordPress

本来导师要求是要安装知识库类的php软件,但是发现似乎这类型的软件还不支持PHP7.0 ,所以只好安装支持PHP7.0的WordPress了。

安装前先在MySQL中新建wordpress数据库,并且授权好

因为MySQL使用的不是默认的3306端口,所以需要修改wp-config.php文件,将

/** MySQL主机 **/一项直接修改成socket口

define('DB_HOST', 'localhost:/usr/local/mysql5714/mysql57.sock');

然后访问install.php安装

最终效果:本站

 

参考:

1.WordPress安装不使用MySQL数据库默认端口(MySQL默认端口3306)

2.MySQL5.7 的编译安装

3.建立 MySQL 資料庫

4.lnmp(linux+nginx+mysql+php)源码安装

等等