LADP(使用源码)环境搭建并发布一个Wordpress个人博客系统


借鉴博客:http://mamicode.com/info-detail-2147971.html

借鉴博客:https://www.cnblogs.com/mython/p/10845296.html

一、环境准备:

系统:CentOS7.4

安装环境:LAMP搭建
       安装Apache服务、mysql5.7数据库、PHP运行环境

实现目的:发布一个Wordpress个人博客系统

  1.0、lamp环境的所有安装包地址:

安装httpd(Apache服务)前要先安装apr、apr-util、pcre三个依赖

wget http://oss.aliyuncs.com/aliyunecs/onekey/apache/apr-1.5.0.tar.gz wget http://oss.aliyuncs.com/aliyunecs/onekey/apache/apr-util-1.5.3.tar.gz wget http://zy-res.oss-cn-hangzhou.aliyuncs.com/pcre/pcre-8.38.tar.gz wget http://zy-res.oss-cn-hangzhou.aliyuncs.com/apache/httpd-2.4.23.tar.gz wget http://zy-res.oss-cn-hangzhou.aliyuncs.com/mysql/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz 这个mysql解压报错好像有问题
中途换了另一个 wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
  apr、apr-util、pcre三个依赖的作用:
1)apr-1.5.2.tar.bz2

Apache可移植运行时(APR)是Apache web服务器的支持库。它提供了一组映射到底层操作系统(OS)的应用程序编程接口(api)。如果操作系统不支持特定的功能,APR将提供一个仿真。因此,程序员可以使用APR使程序跨不同平台进行移植。APR对于Tomcat最大的作用就是socket调度。


2)apr-util-1.5.4.tar.bz2

apr-util和apr都是为上层应用提供的运行库。为没有stl库的C语言提供了一些数据结构和操作系统封装接口。显然apache的许多软件都是以apr/apr-util为基础库进行开发的。apr-util只是在apr的基础上提供了更多的数据结构和操作系统封装接口而已。


3)pcre-8.43.tar.gz

PCRE(PerlCompatibleRegularExpressions)是一个Perl库,包括perl兼容的正则表达式库。这些在执行正规表达式模式匹配时用与Perl5同样的语法和语义是很有用的。httpd编译过程需要依赖于pcre-devel软件包。


4)httpd-2.4.41.tar.gz

httpd为Apache HTTP服务器程序。直接执行程序可启动服务器的服务。
  1.1、我把所有源码包都放在了/usr/local/src目录下:

  关闭防火墙:

防火墙设置
centos7.2系统默认开启了防火墙,需关闭外部才能访问到80端口

systemctl status firewalld.service    # 查看防火墙服务状态
systemctl stop firewalld.service      # 关闭防火墙
systemctl disable firewalld.service   # 关闭防火墙开机自启动

二、开始安装httpd(Apache服务):

  2.0、先安装gcc、c++环境

yum -y install gcc gcc-c++ make 

  2.1开始安装apr、apr-util、pcre三个依赖

    安装apr

tar zxvf apr-1.5.0.tar.gz
cd apr-1.5.0
./configure --prefix=/usr/local/apr
make && make install

    安装apr-util

tar zxvf apr-util-1.5.3.tar.gz
cd apr-util-1.5.3
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install

    安装pcre

tar zxvf pcre-8.38.tar.gz
cd pcre-8.38
./configure --prefix=/usr/local/pcre
make && make install
  2.2、最后安装httpd
tar zxvf httpd-2.4.23.tar.gz
cd httpd
-2.4.23
./configure --prefix=/usr/local/httpd --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre
make && make install

  2.3、配置一下httpd的配置

 ln -s /usr/local/httpd/bin/* /usr/sbin/                        #将安装路径/usr/local/httpd/bin/下的所有命令创建一个软链接到环境变量/usr/sbin/
 cp -a  /usr/local/httpd/bin/apachectl /etc/init.d/httpd        #将脚本控制文件拷贝到/etc/init.d/下并命名为httpd,一般我们可以通过/etc/init.d/httpd restart/start/stop来控制httpd服务的重启等。
 chmod +x /etc/init.d/httpd                                     #赋予执行权限       
 vim /etc/init.d/httpd

  上面命令:vim /etc/init.d/httpd打开这个配置文件后,配置以下两个地方:

   2.4、修改apache主配置文件/usr/local/httpd/conf/httpd.conf

    使用vim编辑命令:/ServerName找到这行,修改为自己服务器的ip地址(如果配置了域名则用自己的域名)

   2.5、启动httpd服务,并配置为开机自启

重启httpd服务命令:
/etc/init.d/httpd restart


将httpd设置为开机启动
chkconfig --add httpd

查看httpd服务是否开机启动
chkconfig --list httpd

  我的效果如下:

借鉴博客效果图:

  查看httpd服务是否已启动:

  ps -aux | grep httpd

   

  2.6、浏览器访问服务器的httpd服务是否成功

    在/usr/local/httpd/htdocs目录下创建一个index.html文件,写上内容,然后客户端访问查看效果
[root@server1 httpd-2.4.29]# cat < /usr/local/httpd/htdocs/index.html
> 

欢迎来到刺激战场,飞机就要起飞了,请准备。 >

哎呀妈呀!落地成盒了! > END

以上命令是通过输出重定向和输入追加重定向的方式将html脚本语言写入到index.html文件中。

  最终效果图如下:啊西巴,乱码哈哈

    2.7、有两个方法解决上面显示的中文乱码问题:

      1、打开 /usr/local/httpd/conf/httpd.conf 配置文件,在里面随便找个地方加一条内容:重启即可

IndexOptions Charset=UTF-8

      2、再搞个index.html文件,在头部指定文件的编码为utf-8,然后把这个index.html文件覆盖掉刚才2.6节点写入的html文件内容

/usr/local/httpd/htdocs/index.html目录下的index.html



    "utf-8">
    测试index.html
 
    

 

    
class="box1"> "red">

欢迎来到刺激战场,飞机就要起飞了,请准备。

"blue">

哦豁,落地成盒了

最后结果如下:

三、开始安装mysql5.7

上面那个借鉴博客,到安装mysql这里解压tar.gz包就报错进行不下去,换了下面这个  

安装mysql借鉴博客:https://blog.csdn.net/weixin_28994357/article/details/114977411


3.0、mysql介绍
  mysql和oracle都是关系型数据库

  mysql是一个中小型数据库,建议单表超过600万条记录或2G以上数据,就分表,不然会出现IO性能瓶颈

(淘宝用mysql是因为电商类业务的数据可以拆开分化,像移动、电信这些数据业务没法拆,所以用Oracle)

 

  非关系型数据库(noSql):redis

 

  关系型数据库:就是表与表之间有关系连接

  非关系型数据库:就是表与表之间没有建立任何关系

 3.1、mysql安装依赖环境准备:

yum install -y libaio-*

 检测系统中是否已存在mysql或mariadb

rpm -qa | grep mysql
rpm -qa | grep mariadb


查出mariadb安装包有一个,卸载它,如下操作
1 # 检查mariadb安装包
2   [root@wing ~]# rpm -qa | grep -i mysql
3  [root@wing ~]# rpm -qa | grep -i mariadb
4   mariadb-libs-5.5.50-1.el7_2.x86_64
5 # 卸载查找到的mariadb安装包
6  [root@wing ~]# rpm -e mariadb-libs-5.5.50-1.el7_2.x86_64
7 #注:如上命令删除不成功,有别的软件依赖无法删除时,如下操作:
8 [root@wing ~]# yum remove  mariadb-libs-5.5.50-1.el7_2.x86_64

  3.2、把解压内容放在/usr/local/mysql目录

mkdir -p /usr/local/mysql

tar -zxvf mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz

#把mysql解压后的内容全移到/usr/local/mysql目录中
mv mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz/* /usr/local/mysql

在/usr/local/mysql目录下补全一个data目录、logs,pids,tmp目录:用于存放日志文件,进程id文件
mkdir -p /usr/local/mysql/data
mkdir /usr/local/mysql/{logs,pids,tmp}
建立mysql用户和组命令:
groupadd mysql
useradd -g mysql -s /sbin/nologin mysql
sudo chown -R mysql:mysql /usr/local/mysql   #将/usr/local/mysql的所属组和所属主改为mysql用户,mysql这个用户才用读写的权限

安装成功显示:

  3.3、配置/etc/my.cnf

[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
pid-file=/usr/local/mysql/data/mysql.pid
log-error=/usr/local/mysql/logs/error.log
tmpdir=/usr/local/mysql/tmp
socket=/usr/local/mysql/data/mysql.sock
user=mysql
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect='SET NAMES utf8mb4'
lower_case_table_names = 1
port = 3306

  3.4、初始化安装mysql命令:

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/mysql.pid --tmpdir=/usr/local/mysql/tmp

  3.5、映射mysql命令完整路径到/usr/bin目录下,不然直接打mysql -uroot -p登录会报找不到mysql命令:

ln -s /usr/local/mysql/bin/mysql /usr/bin

  3.6、添加系统服务:其实就是把mysql.server启动服务复制到系统服务命令中

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

没添加系统服务之前只能用./mysql.server start 启动mysql
添加后可以使用:
  service mysql start 或 service mysql stop 启动或停止mysql

  或systemctl start mysql systemctl stop mysql



设置mysql开机启动:
  chkconfig --add mysql
  chkconfig --list mysql
  chkconfig mysql on

  mysql启动成功,效果如下:

   查看mysql的3306端口是否在运行:ss -tunlp | grep 3306

   3.8、启动成功后修改一下mysql数据库的登录密码:

初始化时MySQL提供了一个密码,要是没有记录的话,
在/root/.mysql_secret文件中也有临时密码可以使用。

【注意:由于上面写的my.cnf配置文件,把所有日志都打印到了/usr/local/mysql/logs/error.log,
  所以我们要查看mysql的初始密码,在error.log文件中找,可以使用命令:cat /usr/local/mysql/logs/error.log |grep password
  找出密码为:o/k9-FhwI+FX

登录mysql,设置密码:
mysql -uroot -p'临时密码'

[注意:输入正确的密码,却报错:ERROR 2002 :Can't connect to local MySQL server through socket '/tmp/mysql.sock'
请看3.9小节
]
登录成功设置root密码: set password=password('123456'); 设置远程连接 GRANT ALL PRIVILEGES ON *.* TO root@'%' identified by '123456'; flush privileges;

  3.9、登录mysql,输入正确的密码报错:ERROR 2002 :Can't connect to local MySQL server through socket '/tmp/mysql.sock' 

    解决办法:打开 vim /etc/my.cnf配置文件,加入下面配置内容:成功解决此报错

[mysql]
socket=/usr/local/mysql/data/mysql.sock

[client]
socket=/usr/local/mysql/data/mysql.sock

[mysqldump]
socket=/usr/local/mysql/data/mysql.sock

[mysqladmin]
socket=/usr/local/mysql/data/mysql.sock

 ===================上面apache服务和mysql数据库分别完成安装,下面安装php环境=======================

 四、安装php环境

    4.0、安装php的依赖环境:

yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses curl gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel expat-devel xmlrpc-c xmlrpc-c-devel libicu-devel libmcrypt-devel libmemcached-deve zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses curl gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel expat-devel xmlrpc-c xmlrpc-c-devel libicu-devel libmcrypt-devel libmemcached-devel

  4.1、php安装

下载php源码包
wget http://ca1.php.net/distributions/php-7.1.12.tar.gz
tar -zxvf
php-7.1.12.tar.gz
cd php-7.1.12

进入解压后的php文件目录后,复制下面代码并执行,进行编译安装
./configure \
--prefix=/usr/local/php \
--with-config-file-path=/etc \
--enable-fpm \
--enable-inline-optimization \
--disable-debug \
--disable-rpath \
--enable-shared \
--enable-soap \
--with-libxml-dir \
--with-xmlrpc \
--with-openssl \
--with-mcrypt \
--with-mhash \
--with-pcre-regex \
--with-sqlite3 \
--with-zlib \
--enable-bcmath \
--with-iconv \
--with-bz2 \
--enable-calendar \
--with-curl \
--with-cdb \
--enable-dom \
--enable-exif \
--enable-fileinfo \
--enable-filter \
--with-pcre-dir \
--enable-ftp \
--with-gd \
--with-openssl-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib-dir \
--with-freetype-dir \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--with-gettext \
--with-gmp \
--with-mhash \
--enable-json \
--enable-mbstring \
--enable-mbregex \
--enable-mbregex-backtrack \
--with-libmbfl \
--with-onig \
--enable-pdo \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-zlib-dir \
--with-pdo-sqlite \
--with-readline \
--enable-session \
--enable-shmop \
--enable-simplexml \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--with-libxml-dir \
--with-xsl \
--enable-zip \
--enable-mysqlnd-compression-support \
--with-pear \
--enable-opcache



【如果上面执行完出现报错:configure: error: mcrypt.h not found. Please reinstall libmcrypt.
解决办法:执行下面代码,再执行一遍上面的编译代码,亲测成功解决
  yum install -y epel-release
  yum install -y libmcrypt-devel


编译安装完成,并没有出现报错,再执行下面代码安装:

make && make install

  4.2、安装成功后复制配置文件到php目录:

cp /usr/local/php-7.1.12/php.ini-production /usr/local/php/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

  4.3、设置php的环境变量:

vim /etc/profile

#在文件的最后添加:
PATH=$PATH:/usr/local/php/bin:
export PATH

  如图:

   

  然后重置加载profile配置文件,使刚才的配置生效:

source /etc/profile

  4.4、设置php-fpm开机自启

vi /etc/systemd/system/php-fpm.service

#添加如下代码,保存退出:
[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target
 
[Service]
Type=simple
PIDFile=/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -SIGINT $MAINPID
 
[Install]
WantedBy=multi-user.target

  启动php-fpm:

systemctl start php-fpm.service

  设置开机自启:

systemctl enable php-fpm.service

  4.5、查看php环境是否安装成功:php -v

  如果显示php命令不存在,就是php没有安装设置成功,成功如下:

   4.6、配置apache的httpd.conf配置文件,使apache支持php

从此博客前面找到安装apache服务时的httpd.conf文件地址在:/usr/local/httpd/conf/httpd.conf

vim /usr/local/httpd/conf/httpd.conf
# 找到AddType application/x-gzip .gz .tgz 在其下面添加一行AddType:【注意.php前面是空格】   AddType application
/x-httpd-php .php


然后再找到这一行,修改为:

  #DirectoryIndex index.html
  DirectoryIndex index.php index.html

  如图:

   4.3、然后在/usr/local/httpd/htdocs/目录下,建一个test.php文件,测试apache服务是否能正常解析php文件

vim /usr/local/httpd/htdocs/test.php

<?php
phpinfo();
?>

保存退出文件后,重启apache服务:
/etc/init.d/httpd restart


然后访问服务器ip地址:192.168.89.130/test.php,如果直接把代码全输出则说明没成功,
但TM的直接把test.php文件下载?啊西吧,百度了一下原因,问题出现在apache没有加载php模块

解决办法:
  命令查看httpd.conf有没有libphp7.so:
LoadModule php7_module modules/libphp7.so

如果用的php5,则是:LoadModule php5_module modules/libphp5.so

  很明显libphp7.so没有,有是不可能出现这个问题的,解决办法就是编译的时候没有将:--with-apxs2 这个参数写上,所以php编译时

没有生成关联apache对应的libphp.so模块,编译的时候加上:

--with-apxs2=/usr/local/httpd/bin/apxs


相关