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