« 上一篇下一篇 »

LAMP架构下快速搭建开源wordpress内容管理系统Alexa排行前10上线运行

       WordPress是一个以PHP和MySQL为平台的自由开源的博客软件和内容管理系统。WordPress具有插件架构和模板系统。Alexa排行前100万的网站中有超过16.7%的网站使用WordPress。到了2017年8月,约22%的新网站采用了WordPress。WordPress是目前因特网上最流行的博客系统。

在zoomeye上可以搜索到的wordpress站点超过500万,毫不夸张的说,每时每刻都有数不清楚的人试图从wordpress上挖掘漏洞...

     Linux中LAMP架构主动布置就是写一个shell脚本(存指令行文件),里边存着咱们布置LAMP时的指令行,然后运转它。

一、LAMP搭建Wordpress:

搭建了wordpress,熟悉了LAMP架构的原理,其中遇到了几个问题,详细信息如下:
Centos——LAMP搭建Wordpress
平时有些博客的习惯,但是公司这边网络确实不太好,所以就想起了之前用过的Wordpress,不过确实挺好用,特别是在关键时刻总能派上用场,目前没有挂到外网,等工作不忙的时候在弄,先不捞了进入正题,这次搭建完遇到不少问题,包括权限、数据库、还有PHP无法启动,下面是总结:
1.安装所需软件:yum install httpd   :安装Apache
yum install mysql mysql-server   :安装Mysql
yum install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash   :安装php 并且使其支持Mysql
在/var/www/html    vim test.php 写下:<?php  phpinfo ?>   测试php是否能够正常显示web页面,(我在这里就没有成功,排错半天没找解决,只好全部冲洗安装,测试正常)
service httpd start;service mysqld start    :启动apache mysql服务
chkconfig httpd on;chkconfig mysqld on     :设置apache mysql 自启动
2、配置Mysql
mysql   :用root权限登陆mysql (切换到root权限下运行)
mysql> insert into mysql.user(Host,User,Password) values("localhost","qyt",password("qyt"));   :创建一个用户名为:qyt 密码为:qyt     (创建完后记得mysql>flush privileges;刷新系统权限表)
mysql>create database wordpressDB;  :创建wordpress 数据库
mysql>grant all privileges on wordpressDB.* to persi @localhost  identified by 'persi';给persi 用户授权wordpressDB 然后再mysql>flush privileges;刷新系统权限表
3、下载配置wordpress  :cn.wordpress.org(wordpress中文)
tar -zxvf *.tar.gz          :解压wordpress tar.gz
unzip *.zip                 :解压wordpress *.zip
mv wp-config-simple.php  wp-config.php    :更改wp-config-simple为wp-config
vim wp-config.php 修改以下内容
  define('DB_NAME', 'wordpressDB'这里是刚才建立的数据库的名称);
  define('DB_USER', 'persi'这个便是访问数据库的用户');
   define('DB_PASSWORD', '上述用户的密码');
 define('DB_HOST', 'localhost'); 
mv  wordpress /var/www/html/      :移动wordpress 到/var/www/html/
chown -R apache:apache wordpress    :更改用户,这步相当重要,文件解压出来的是nobody用户,开始安装不成功都错在这里了。
chmod -R 755 wordpress                   :更改权限
service httpd restart;service mysqld restart    :重启apache和mysql服务
至此,wordpress配置完成  进入 localhost/wordpress/wp-admin/install.php   进行安装就可以了。
USER:qiuyuetao
password:q1******
(1)Apache没有访问wordpress的权限
先用 ps -ef|grep httpd 查看当前的的apache应用运行的用户和组
在使用 chown apache:apache -R  wordpress
(2)在做配置文件修改之前一定要备份这个是肯定没错的
总体来看,还是有收获。

 

二、 修改wordpress配置文件

(1)进入WordPress目录(/var/www/wordpress/wordpress/)

[root@CentOS7 ~]# cd /var/www/wordpress/wordpress/
(2)复制cp wp-config-sample.php模板文件为 wp-config.php,然后编辑

[root@CentOS7 ~]# vim /var/www/wordpress/wordpress/wp-config.php
// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress数据库的名称 */
define('DB_NAME', 'wordpress');
/** MySQL数据库用户名 */
define('DB_USER', 'test1');
/** MySQL数据库密码 */
define('DB_PASSWORD', '123456');
/** MySQL主机 */
define('DB_HOST', 'localhost');
10 在数据库中创建数据库和用户

(1)创建数据库

MariaDB [(none)]> create database wordpress;
Query OK, 1 row affected (0.00 sec)
(2)创建用户

MariaDB [(none)]> create user 'test1'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
(3)给用户授权

MariaDB [(none)]> grant all on wordpress.* to 'test1'@'localhost';
Query OK, 0 rows affected (0.01 sec)

 

#!/usr/bin/env bash     【这一行称为she一声bang四声】【声明用哪个编译器】【这句话的意思是在/usr/bin/env途径下找bash的环境变量】
【还有其他写法,可是这么写是由于一切Linux版其他环境变量都在/usr/bin/env下,这种写法适用一切的linux版别】

【注:假如想写python程序也能够用这种写法,即榜首行写#!/usr/bin/env python,只要shell脚本和python能够这样用 】

[root@VM_0_11_centos ~]# vim test2.sh

在这个文件中写如下代码:

#!/usr/bin/env bash
cd /etc/a
if [ $? == 0 ];then   【留意:==两边有空格, [空格 空格],在脚本中"="  和"=="都表明等于】
        echo "true"
else
        echo "false"
fi


[root@VM_0_11_centos ~]# bash test2.sh

显现:

test2.sh: line 2: cd: /etc/a: No such file or directory

false

 

三.cat 文件名

1.cat 用于检查文件中的内容

比如:[root@VM_0_11_centos html]# cat index.php

2.cat有重定向的功用,它是对整个文件进行操作的

[root@VM_0_11_centos ~]# cat a.txt
1234
[root@VM_0_11_centos ~]# cat a.txt >> b.txt  【a.txt的整个文件都追加到了b.txt中,由于没来正本b.txt,这儿主动创立了b.txt】【>>和echo中相同,表明规范输入,即追加到末行】
[root@VM_0_11_centos ~]# cat b.txt
1234
[root@VM_0_11_centos ~]# cat a.txt >>b.txt  【又追加了一遍a.txt】
[root@VM_0_11_centos ~]# cat b.txt
1234
1234
[root@VM_0_11_centos ~]# cat a.txt > b.txt【>和echo中相同表明掩盖】
[root@VM_0_11_centos ~]# cat b.txt

1234

3.能够用cat创立一个文件并编写内容

[root@VM_0_11_centos ~]# cat 表掩盖,由于正本就没有这个文件所以这儿会重新创立】
>

> EOF

【这条指令的意思是:将两个EOF间的内容掩盖到a.php中】

比如:

[root@VM_0_11_centos ~]# cat > hahahahaha
> EOF
[root@VM_0_11_centos ~]# pwd
/root
[root@VM_0_11_centos ~]# cat q.txt
hahahahaha
[root@VM_0_11_centos ~]# cat <>q.txt
> bobibobi
> 1234
> EOF
[root@VM_0_11_centos ~]# cat q.txt
hahahahaha
bobibobi
1234

开端布置

1.重装效劳器体系 ,就填个暗码就行,其他默许就好

2. 【注,把指令行放在shell中,运转时相当在界面用手输入】

[root@VM_0_11_centos ~]# date

Wed Jul  4 13:27:08 CST 2018

[root@VM_0_11_centos ~]# echo date 
date

[root@VM_0_11_centos ~]# echo `date`  【这个点是F1下面的按键】

Wed Jul 4 13:26:55 CST 2018

[root@VM_0_11_centos ~]# date1=`date` 【界说变量date1】
[root@VM_0_11_centos ~]# echo $date1  【输出自己界说的变量要加$】
Wed Jul 4 17:05:45 CST 2018
[root@VM_0_11_centos ~]# echo $date1

Wed Jul 4 17:05:45 CST 2018  【两次输出相同的时刻】

为什么date1=`date` 要写两个点呢

[root@VM_0_11_centos ~]# a=date
[root@VM_0_11_centos ~]# echo $a
date 【这说明这两个点表明它把这个字符串封装为一个指令】

3.1编写lamp.sh

vim lamp.sh

在这个文件中写如下内容:

date1=`date`【要先写这句,否则$? 输出的是这句赋值句子的状况码】

yum -y install httpd mariadb-server mariadb php php-mysql php-gd gd

if [ $? == 0 ];  then

        echo "$date1-----yum install packages IS OK." >> /opt/lamp.log

【注:这儿要写绝对途径,这种东西一般都存在/opt/下,log表明日志】

else
        echo "$date1-----yum install packages IS NOT OK." >> /opt/lamp.log
fi

date2=`date` #这儿是全局变量,也能够在if和else下分别界说两个部分的变量

systemctl start httpd mariadb
systemctl enable httpd mariadb
if [ $? == 0 ];  then
        echo "$date2-----发动效劳成功." >> /opt/lamp.log
else
        echo "$date2-----发动效劳失利" >> /opt/lamp.log
fi
echo "" > /var/www/html/index.php  #测验httpd和php之间的合作联系
expect /root/expectd #更改数据库暗码,expectd这个文件中存的是修正数据库暗码的代码,这个文件我放在了下面
cat \$link=mysql_connect("localhost","root","onno799967"); 【\为转移字符,假如不写这个linux会以为这是一个linux变量,但它其实是php变量\取消了它是linux变量的意思】
if(!link)
        echo "this connect is false";
else
        echo "this connect is true";
?>
EOF
systemctl restart httpd mariadb

 


3.2写一个主动应答脚本

进入指令行,输入[root@VM_0_11_centos ~]# expect,看是否有这个指令,假如没有,用yum下载expect

【注:退出 expect用exit】

#vim expectd 【创立一个expectd脚本,起名为expectd,脚本不一定必须有后缀】

在内面写如下内容:

#!/usr/bin/expect 【榜首行she bang】

spawn mysqladmin -uroot -p password "onno799967" 【spawn后写需履行的指令】【这之后一般会让输入旧暗码】

expect "Enter password:" 【expect会主动识别这条指令】
send "旧暗码\r" 【send主动发送,\r表明回车,如榜首次设置暗码不必填写旧暗码】
interact【表明坚持这种状况,即回到敲代码的这种状况,也就是回到lamp.sh这个脚本中,这种写法便利二次调用这个expect】

写完这个expectd并保存后需要给它权限,在指令行中这样做:

#chomd a+x expectd 【chomd=change mod(权限),就是改动权限的意思,a=all一切,x为履行权限】

这时再#ls会发现expect变成了绿色

去拜访公网IP,假如显现this connect is true,就表明成功布置了LAMP

 

 wordpress主动上线:

[root@VM_0_11_centos ~]# vim wordpress_online 【创立wordpress_online,这个脚本】

写如下内容:

wget -O  /root/wordpress-4.9.4-zh_CN.tar.gz  https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz

【-O表明将https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz下载到/root/目录下,偏重命名为wordpress-4.9.4-zh_CN.tar.gz】

tar xf /root/wordpress-4.9.4-zh_CN.tar.gz -C /root/

【tar的-C和wget的-O作用相同,这儿没有更名,只是更改了目录】

mv /root/wordpress/wp-config-sample.php /root/wordpress/wp-config.php【更名】
mysql -uroot  -p"onno799967" -e "create database wordpress;"【在mysql中创立名为 wordpress的数据库】
sed -i s/username_here/root/g /root/wordpress/wp-config.php

【sed能够在指令行中修正文件的内容 ,-i表明通知sed真的要修正,sed的格局:

sed -i s/被替换内容/替换的内容/g 文件名 】

sed -i s/database_name_here/wordpress/g /root/wordpress/wp-config.php
sed -i s/password_here/onno799967/g /root/wordpress/wp-config.php
rm -rf /var/www/html/* 【-rf防止交互式】
cp -rf /root/wordpress/* /var/www/html/
systemctl restart httpd mariadb

这时登录公网IP就能看到wordpress了