了解网站架构的朋友都知道,现在很多网站的架构都是采用LAMP(Linux+Apache+Mysql/Mariadb+Php)的,至于LAMP架构本身我们就不做过于深入的探讨了,今天我给大家分享的是关于如何搭建LAMP构架,以及如何基于lamp架构去搭建目前国内比较流行的两大开源论坛(phpwind、discuz)一大开源博客(wordpress),通过这个过程也就能让大家明白我们经常上的论坛以及博客,包括包括我们访问的各个网站到底是如何工作起来的。
注意:为了方便给大家展示实验效果,我们就直接关闭防火墙和SELinux,这个问题大家一定要注意,否则会出一些莫名其妙的报错。当然在实现生产环境中,是需要开放防火墙相应端口以及重打SELinux安全标签,才有助于安全防护的,我们这里就把这个操作给省略了。
第一步:安装及配置httpd
1,yum安装httpd
[[email protected]~]# yum install -y httpd
2、修改httpd的配置文件
[[email protected]~]# vim /etc/httpd/conf/httpd.conf
需要修改的行如下:没有在此列出的保持默认即可
ServerNamewww.example.com:80 取消注释以免检查格式报错
#DocumentRoot"/var/www/html" 加上注释,因为我们要启用虚拟主机
NameVirtualHost*:80 取消注释,因为后面要启用虚拟主机
3、编辑基于域名的虚拟主机配置文件
[[email protected]~]# vim /etc/httpd/conf.d/vhosts.conf
<VirtualHost*:80>
ServerName www.phpwind.net
DocumentRoot "/vhosts/phpwind"
<Directory"/vhosts/phpwind">
Options None
AllowOverride None
Order Allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost*:80>
ServerName www.discuz.net
DocumentRoot "/vhosts/discuz"
<Directory"/vhosts/discuz">
Options None
AllowOverride None
Order Allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost*:80>
ServerName www.wordpress.net
DocumentRoot "/vhosts/wordpress"
<Directory"/vhosts/wordpress">
Options None
AllowOverride None
Order Allow,deny
Allow from all
</Directory>
</VirtualHost>
4、建立虚拟主机的网站根目录
[[email protected]~]# mkdir -pv /vhosts/{phpwind,discuz,wordpress}
mkdir:created directory `/vhosts‘
mkdir:created directory `/vhosts/phpwind‘
mkdir:created directory `/vhosts/discuz‘
mkdir:created directory `/vhosts/wordpress‘
5,检查各配置文件语法格式是否有误
[[email protected]~]# httpd -t
SyntaxOK 说明所有的书写语法没有错误,可以正常启动HTTPD服务了
第二步:安装php
[[email protected]~]# yum install -y php php-mysql
其实这一步可以和第一步合并安装,因为php只需要安装一下,不需要做其它操作
第三步:安装及配置mysql-server(包括创建后续论坛以及博客所需要的帐户及数据库)
1,安装mysql-server
[[email protected]~]# yum install -y mysql-server
2,启动mysql
[[email protected]~]# service mysqld start
InitializingMySQL database: WARNING: The host‘68-HTTPD‘ could not be looked up with resolveip.
Thisprobably means that your libc libraries are not 100 % compatible
withthis binary MySQL version. The MySQL daemon, mysqld, should work
normallywith the exception that host name resolving will not work.
Thismeans that you should use IP addresses instead of hostnames
whenspecifying MySQL privileges !
InstallingMySQL system tables...
OK
Fillinghelp tables...
OK
Tostart mysqld at boot time you have to copy
support-files/mysql.serverto the right place for your system
PLEASEREMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
Todo so, start the server, then issue the following commands:
/usr/bin/mysqladmin-u root password ‘new-password‘
/usr/bin/mysqladmin-u root -h 68-HTTPD password ‘new-password‘
Alternativelyyou can run:
/usr/bin/mysql_secure_installation
whichwill also give you the option of removing the test
databasesand anonymous user created by default. This is
stronglyrecommended for production servers.
Seethe manual for more instructions.
Youcan start the MySQL daemon with:
cd/usr ; /usr/bin/mysqld_safe &
Youcan test the MySQL daemon with mysql-test-run.pl
cd/usr/mysql-test ; perl mysql-test-run.pl
Pleasereport any problems with the /usr/bin/mysqlbug script!
[ OK ]
Startingmysqld: [ OK ]
[[email protected]~]#
能看到如上信息时说明mysql启动成功了,同时,成功的日志记录如下
[[email protected]~]# cat /var/log/mysqld.log
16100917:33:25 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
16100917:33:25 InnoDB: Initializing bufferpool, size = 8.0M
16100917:33:25 InnoDB: Completedinitialization of buffer pool
InnoDB:The first specified data file ./ibdata1 did not exist:
InnoDB:a new database to be created!
16100917:33:25 InnoDB: Setting file ./ibdata1size to 10 MB
InnoDB:Database physically writes the file full: wait...
16100917:33:25 InnoDB: Log file ./ib_logfile0did not exist: new to be created
InnoDB:Setting log file ./ib_logfile0 size to 5 MB
InnoDB:Database physically writes the file full: wait...
16100917:33:25 InnoDB: Log file ./ib_logfile1did not exist: new to be created
InnoDB:Setting log file ./ib_logfile1 size to 5 MB
InnoDB:Database physically writes the file full: wait...
InnoDB:Doublewrite buffer not found: creating new
InnoDB:Doublewrite buffer created
InnoDB:Creating foreign key constraint system tables
InnoDB:Foreign key constraint system tables created
16100917:33:26 InnoDB: Started; log sequencenumber 0 0
16100917:33:26 [Note] Event Scheduler: Loaded 0 events
16100917:33:26 [Note] /usr/libexec/mysqld: ready for connections.
Version:‘5.1.73‘ socket:‘/var/lib/mysql/mysql.sock‘ port:3306 Source distribution
[[email protected]~]#
如果mysql启动不成功,我们就需要通过日志去排错,直至启动成功,我们才能继续后续操作,否则即使你忽略报错继续,最后依然是要回头来排错的
3,配置mysql的用户帐户及建立论坛所需要的数据库
我们这里准备使用上面创建好的三台虚拟主机搭建两个论坛(phpwind,discuz),一个博客(wordpress)
phpwind的数据库:pwdb,数据库管理员:pwadmin
discuz的数据库:dcdb,数据库管理员:dcadmin
wordpress的数据库:wpdb,数据库管理员:wpadmin
[[email protected] ~]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.73 Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rightsreserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current inputstatement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
3 rows in set (0.02 sec)
mysql> create database pwdb; 创建各论坛的数据库
Query OK, 1 row affected (0.04 sec)
mysql> create database dcdb;
Query OK, 1 row affected (0.00 sec)
mysql> create database wpdb;
Query OK, 1 row affected (0.01 sec)
mysql> grant all on pwdb.* to ‘pwadmin‘@‘127.0.0.1‘ identified by‘pwadmin‘; 创建连接各论坛的数据库帐户及密码
Query OK, 0 rows affected (0.01 sec)
mysql> grant all on dcdb.* to ‘dcadmin‘@‘127.0.0.1‘ identified by‘dcadmin‘;
Query OK, 0 rows affected (0.03 sec)
mysql> grant all on wpdb.* to ‘wpadmin‘@‘127.0.0.1‘ identified by‘wpadmin‘;
Query OK, 0 rows affected (0.00 sec)
mysql> use mysql 进入mysql自身的数据库
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> update user set password=password(‘guestadmin‘) whereuser=‘root‘; 修改管理员root帐户的密码
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3 Changed:3 Warnings: 0
mysql> flush privileges; 更新数据库的授权信息
Query OK, 0 rows affected (0.02 sec)
mysql> exit
Bye
[[email protected] ~]#
第四步:安装论坛、博客模板
1、论坛博客的获取途径
三大模板的最新版,下载地址,官方网站
phpwind当前最新版本:9.0.1
http://gongdan.oss-cn-hangzhou.aliyuncs.com/market/cmISV/34320/product/cmjz000558/phpwind_v9.0.1_utf8.zip?spm=5176.730006-cmjz000558.102.12.nsViO3&file=phpwind_v9.0.1_utf8.zip
官方网站
http://www.phpwind.com
discuz当前最新版本:3.2
http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_UTF8.zip
官方网站
http://download.comsenz.com
wordpress当前最新版:4.5.3
https://cn.wordpress.org/wordpress-4.5.3-zh_CN.zip
官方网站
https://cn.wordpress.org
2、phpwin论坛安装过程详解
我们在第一台虚拟主机(www.phpwind.net)上安装phpwind论坛
解压模板文件包,放置到对应的网站根目录下
[[email protected] ~]# unzip phpwind_v9.0.1_utf8.zip -d phpwind
[[email protected] ~]# cd phpwind/phpwind_v9.0.1_20141223/upload/
[[email protected] upload]# mv * /vhosts/phpwind/
[[email protected] upload]# ll -a
total 12
drwxrwxr-x. 2 root root 4096 Oct 9 18:58 .
drwxrwxr-x. 3 root root 4096 Nov 29 2014 ..
-rwxrwxr-x. 1 root root 169Nov 29 2014 .htaccess
[[email protected] upload]# mv .htaccess /vhosts/phpwind/
[[email protected] upload]#
注意在移动的同时要注意upload目录下是否有隐藏文件没被移走,如果有就必须直接指定隐藏文件名才能移到虚拟主机根目录下去,否则安装时会报文件缺失的错误的
编辑测试机host文件,编辑格式如下
10.1.42.51 www.phpwind.net www.discuz.net www.wordpress.net
安装phpwind论坛时还需要提前安装php-xml组件,否则安装过程中会报错的
[[email protected] phpwind]# yum install -y php-xml
接下来我们就可以启动安装过程了
在我们的测试机端浏览器上输入http://www.phpwind.net/就可以看到如下的启动画面了
点击下一步就看到文件权限检查信息的提示
修改复制到phpwind目录下的文件权限(原包upload目录下的文件)
attachment/ 可写
conf/ 可写
conf/database.php 可写
conf/founder.php 可写
data/ 可写
data/cache/ 可写
data/compile/ 可写
data/design/ 可写
data/log/ 可写
data/tmp/ 可写
html/ 可写
src/extensions/ 可写
themes/ 可写
themes/extres/ 可写
themes/forum/ 可写
themes/portal/ 可写
themes/site/ 可写
themes/space/ 可写
windid/attachment/ 可写
关于文件权限即安全又简单的处理方法可以使用如下两条命令
[[email protected] vhosts]# chown -R apachephpwind
[[email protected] vhosts]# chmod -R go=phpwind
执行过程如下
[[email protected] vhosts]# ll
total 12
drwxr-xr-x. 2 root root 4096 Oct 9 16:59discuz
drwxr-xr-x. 14 root root 4096 Oct 9 20:42 phpwind
drwxr-xr-x. 2 root root 4096 Oct 9 16:59wordpress
[[email protected] vhosts]# chown -R apachephpwind
[[email protected] vhosts]# chmod -R go= phpwind
[[email protected] vhosts]# ll phpwind
total 100
drwx------. 2 apache root 4096 Nov 29 2014aCloud
-rw-------. 1 apache root 306 Nov 29 2014 admin.php
drwx------. 2 apache root 4096 Nov 29 2014attachment
-rw-------. 1 apache root 451 Nov 29 2014 AUTHORS
drwx------. 4 apache root 4096 Nov 29 2014conf
-rw-------. 1 apache root 175 Nov 29 2014 crossdomain.xml
drwx------. 2 apache root 4096 Nov 29 2014 data
-rwx------. 1 apache root 1406 Nov 29 2014favicon.ico
drwx------. 2 apache root 4096 Nov 29 2014html
-rw-------. 1 apache root 1181 Nov 29 2014humans.txt
-rw-------. 1 apache root 92 Nov 29 2014 index.php
-rw-------. 1 apache root 105 Nov 29 2014 install.php
-rwx------. 1 apache root 3757 Nov 29 2014LICENSE
-rw-------. 1 apache root 2382 Nov 29 2014notify.php
drwx------. 2 apache root 4096 Nov 29 2014pay
-rw-------. 1 apache root 92 Nov 29 2014 read.php
drwx------. 5 apache root 4096 Nov 29 2014res
-rw-------. 1 apache root 215 Nov 29 2014 robots.txt
drwx------. 12 apache root 4096 Nov 29 2014 src
drwx------. 39 apache root 4096 Nov 29 2014 template
drwx------. 7 apache root 4096 Nov 29 2014themes
-rw-------. 1 apache root 26 Nov 29 2014 thumb.php
drwx------. 22 apache root 4096 Nov 29 2014 wind
drwx------. 5 apache root 4096 Nov 29 2014windid
-rw-------. 1 apache root 159 Nov 29 2014 windid.php
[[email protected] vhosts]#
网页上再次重新检测,权限问题就可以通过了,接着就可以继续安装了
注意:
1、这里的数据库连接信息一定要与创建数据时指定的信息保持一致,否则这一步会报错
2、由于上一步设定数据库连接信息时,就已经指定主机为127.0.0.1,这里就不能用默认的localhost,否则一样报错的,数据库在这一点上是比较严格的(数据库里127.0.0.1和localhost是不等同的)
3、数据库用户名与数据库名不要搞混了
如果这一步的信息没有填写错误,下一步数据库创建完成后,论坛也就安装成功了。
接下来我们可以登录进去看一看
从这里的系统后台选项可以直接进入论坛前台/后台管理页面
可以随时在前后与后台页面之间切换
同时我们使用网址http://www.phpwind.net/admin.php直接进入后台
至此,phpwind论坛搭建完毕
3、discuz论坛安装过程详解
接下来我们继续在第二台虚拟主机(www.discuz.net)上安装discuz论坛
[[email protected] ~]# unzip Discuz_X3.2_SC_UTF8.zip -d discus
[[email protected] ~]# mv discuz/upload/* /vhosts/discuz/
注意在移动的同时要注意upload目录下是否有隐藏文件没被移过去(这里没有)
在测试机上打开虚拟主机对应的网址www.discuz.net,界面如图所示
./config/config_global.php ./config/config_ucenter.php 这两个提示目录不存在,其实是文件不存在,需要手动创建(不需要有内容)
[[email protected] vhosts]# cd discuz/con
config/ connect.php
[[email protected] vhosts]# cd discuz/config
[[email protected] config]# ll
total 20
-rw-r--r--. 1 root root 8868 May 31 11:08config_global_default.php
-rw-r--r--. 1 root root 1663 May 31 11:08config_ucenter_default.php
-rw-r--r--. 1 root root 1 May 31 11:08 index.htm
[[email protected] config]# touchconfig_global.php config_ucenter.php
[[email protected] config]# ll
total 20
-rw-r--r--. 1 root root 8868 May 31 11:08 config_global_default.php
-rw-r--r--. 1 root root 0 Oct 10 00:04 config_global.php
-rw-r--r--. 1 root root 1663 May 31 11:08config_ucenter_default.php
-rw-r--r--. 1 root root 0 Oct 10 00:04 config_ucenter.php
-rw-r--r--. 1 root root 1 May 31 11:08 index.htm
[[email protected] config]#
需要有写入权限的目录和文件如下
./config/config_global.php 可写
./config/config_ucenter.php 可写
./config 可写
./data 可写
./data/cache 可写
./data/avatar 可写
./data/plugindata 可写
./data/download 可写
./data/addonmd5 可写
./data/template 可写
./data/threadcache 可写
./data/attachment 可写
./data/attachment/album 可写
./data/attachment/forum 可写
./data/attachment/group 可写
./data/log 可写
./uc_client/data/cache 可写
./uc_server/data/ 可写
./uc_server/data/cache 可写
./uc_server/data/avatar 可写
./uc_server/data/backup 可写
./uc_server/data/logs 可写
./uc_server/data/tmp 可写
./uc_server/data/view 可写
同样可以像处理phpwind根目录权限一样操作
[[email protected] config]# cd ..
[[email protected] discuz]# cd ..
[[email protected] vhosts]# chown -R apachediscuz
[[email protected] vhosts]# chmod -R go= discuz
[[email protected] vhosts]# ll discuz
total 116
-rw-------. 1 apache root 2739 May 31 11:08 admin.php
drwx------. 11 apache root 4096 May 3111:08 api
-rw-------. 1 apache root 727 May 31 11:08api.php
drwx------. 2 apache root 4096 May 31 11:08 archiver
drwx------. 2 apache root 4096 Oct 10 00:09 config
-rw-------. 1 apache root 922 May 31 11:08connect.php
-rw-------. 1 apache root 253 May 31 11:08cp.php
-rw-------. 1 apache root 106 May 31 11:08crossdomain.xml
drwx------. 13 apache root 4096 Oct 1000:09 data
-rw-------. 1 apache root 5558 May 31 11:08 favicon.ico
-rw-------. 1 apache root 2242 May 31 11:08 forum.php
-rw-------. 1 apache root 821 May 31 11:08group.php
-rw-------. 1 apache root 1290 May 31 11:08 home.php
-rw-------. 1 apache root 5669 May 31 11:08 index.php
drwx------. 5 apache root 4096 May 31 11:08 install
-rw-------. 1 apache root 1025 May 31 11:08 member.php
-rw-------. 1 apache root 2462 May 31 11:08 misc.php
-rw-------. 1 apache root 1757 May 31 11:08 plugin.php
-rw-------. 1 apache root 988 May 31 11:08portal.php
-rw-------. 1 apache root 582 May 31 11:08robots.txt
-rw-------. 1 apache root 1161 May 31 11:08 search.php
drwx------. 10 apache root 4096 May 3111:08 source
drwx------. 6 apache root 4096 May 31 11:08 static
drwx------. 3 apache root 4096 May 31 11:08 template
drwx------. 6 apache root 4096 May 31 11:08 uc_client
drwx------. 13 apache root 4096 May 3111:08 uc_server
-rw-------. 1 apache root 1682 May 31 11:08 userapp.php
[[email protected] vhosts]#
再次刷新discuz安装环境检查页面,权限全部通过后,如下图所示,就可以进行上一步的安装了
下一步选择全新安装 Discuz! X (含 UCenter Server)
数据库信息配置界面一定要和上面创建数据库时设定的信息保持一致
点击下一步正式开始安装(其实也就是执行创建数据库中所有表的一个操作)
安装完成之后如图所示
点击访问就可以打开论坛首页了
点击模块管理,输入管理员密码后可以进行前台模块管理
点击管理中心可以从前后切换进后台
也可心使用后台管理网址http://www.discuz.net/admin.php直接进入
后台管理界面如图所示
Discuz论坛的安装至此也就成功了,
4、wordpress博客安装过程详解
接下来我们继续在第三台虚拟主机(www.wordpress.net)上安装wordpress博客
解压安装包,移动wordpress目录下的所有文件到网站根目录下(防止漏掉隐藏文件,当前版本没有),更改所有文件的属主为apache,取消属组和其它用户的所有权限
[[email protected] ~]# unzip wordpress-4.5.3-zh_CN.zip
[[email protected] ~]# mv wordpress/* /vhosts/wordpress
[[email protected] ~]# mv wordpress/* /vhosts/wordpress
[[email protected] ~]# cd /vhosts
[[email protected] vhosts]# chown -R apache wordpress
[[email protected] vhosts]# chmod -R go= wordpress
[[email protected] vhosts]# ll wordpress
total 180
-rw-------. 1 apacheroot 418 Sep 24 2013 index.php
-rw-------. 1 apache root19935 Mar 5 2016 license.txt
-rw-------. 1 apacheroot 6789 Jul 2 03:34 readme.html
-rw-------. 1 apacheroot 5032 Jan 27 2016 wp-activate.php
drwx------. 9 apacheroot 4096 Jul 2 03:34 wp-admin
-rw-------. 1 apacheroot 364 Dec 19 2015 wp-blog-header.php
-rw-------. 1 apacheroot 1476 Jan 30 2016 wp-comments-post.php
-rw-------. 1 apacheroot 2930 Jul 2 03:34 wp-config-sample.php
drwx------. 5 apacheroot 4096 Oct 10 00:59 wp-content
-rw-------. 1 apacheroot 3286 May 24 2015 wp-cron.php
drwx------. 16 apache root 12288 Jul 2 03:34 wp-includes
-rw-------. 1 apacheroot 2380 Oct 24 2013 wp-links-opml.php
-rw-------. 1 apacheroot 3316 Nov 5 2015wp-load.php
-rw-------. 1 apache root33837 Mar 5 2016 wp-login.php
-rw-------. 1 apacheroot 7887 Oct 6 2015wp-mail.php
-rw-------. 1 apache root13106 Feb 17 2016 wp-settings.php
-rw-------. 1 apache root28624 Jan 27 2016 wp-signup.php
-rw-------. 1 apacheroot 4035 Nov 30 2014 wp-trackback.php
-rw-------. 1 apacheroot 3061 Oct 2 2015xmlrpc.php
[[email protected] vhosts]#
测试机浏览器打开www.wordpress.net启动安装时会有相应提示如下
根据提示重命名一下wp-config-sample.php为wp-config.php文件,并把提前创建的数据库的配置信息写入wp-config.php
[[email protected] vhosts]# cd wordpress
[[email protected] wordpress]# mvwp-config-sample.php wp-config.php
[[email protected] wordpress]# vim wp-config.php
/** WordPress数据库的名称 */
define(‘DB_NAME‘, ‘wpdb‘);
/** MySQL数据库用户名 */
define(‘DB_USER‘, ‘wpadmin‘);
/** MySQL数据库密码 */
define(‘DB_PASSWORD‘, ‘wpadmin‘);
/** MySQL主机 */
define(‘DB_HOST‘, ‘127.0.0.1‘);
以上列出的需要改变,其它保持默认即可,注意,我们在前面配置数据库的时候使用是的主机是127.0.0.1,不是localhost,所以一定填写错误了。否则安装过程中又会报错的。当然这个配置文件里面有中文提示,对于英文说明头痛的朋友就算是个福利了。
做好上述操作后,再次在测试机的浏览中打开www.wordpress.net正式启动安装过程
上图中需要填写的就是关于博客站点标题以及管理员的用户名、密码之类的一些配置信息了当然我们依然照前面配置论坛的标准去配置就好了,点击安装wordpress按键,安装速度非常快,安装成功之后,如图所示
此时就可以使用刚才配置的管理员帐户登录博客进行管理了
Admin帐户的界面
后台用户管理界面如图所示
至此,我们的两个论坛一个博客顺利的在我们的LAMP环境中搭建成功了。中间涉及的细节步骤比较多,我们在搭建时要把准备工作做好了再去启动最后的安装过程,才不至于一启动一直报错。如果这样就会让我们心烦意乱,更不容易理清思路去排错了。所以希望大家以后养成良好的习惯,再搭建任何一个架构时,把环境准备中的第一步都确认无误后再去开始后续的步骤,就不至于匆匆忙忙导致报了错也搞不清楚问题到底出在哪儿。