VPS主机如果只作为一台代理服务器,那么多多少少有些浪费。如果想让 VPS 有更多用处的话,配置一个LAMP或者 LEMP 环境,并安装 CMS 系统搭建网站是不错的选择。

LAMP 是 Linux Apache MySQL PHP 的简写,而LEMP 是 Linux Nginx MySQL PHP 简写。其中Linux是操作系统,可以根据自己的使用习惯选择喜欢的发行版;Apache 和 Nginx 是Web服务器,两个服务器程序各有优势,相对来说,机器硬件配置较低的情况下 Nginx 的表现更好;MySQL 是数据库服务器,原来指的是免费开源的 MySQL 数据库,而在 Oracle 收购了 MySQL 后,逐渐显现出将它闭源化的趋势,于是 MySQL 之父 Michael Widenius 就使用MySQL 的代码重新开发了一个数据库服务器 MariaDB,目前 M 一般指代的是 MariaDB,因为它开源免费,并且完全兼容之前的MySQL;PHP 表示 Hypertext Preprocessor,也就是超文本预处理,是一种比较常用的服务器脚本语言, 常常用来开发 Web 应用程序。

CMS 是 Content Management System(内容管理系统)的简写,狭义的概念就是网站内容发布和管理系统,用于方便的建立不同风格的网站。常用的内容管理系统包括 WordPress、Joomla 和 Drupal,它们都是免费开源的,并且都使用 PHP 作为开发语言。

本文将以 Vultr VPS 主机为例,详细介绍如何在CentOS 7 系统中安装相关软件,配置 LNMP 系统,并演示上述三个CMS 系统的安装,将 VPS 搭建成 Web 网站。

1] CentOS 7 添加交换分区

VPS 一般会提供 Linux 的发行版用于启动主机,CentOS 7 是一个比较常见的发行版,主机服务商一般都会提供。当然有些 VPS 厂商还支持用户 ISO 文件自行安装 Linux 系统,比如我推荐使用的 Vultr  主机,都是可以用用户ISO文件来安装系统的。考虑到低价 VPS 主机内存一般较小的情况,首先介绍如何为 CentOS 7 系统添加磁盘交换分区,用于保证网站的总体性能。按如下步骤输入命令:

 # dd if=/dev/vda1 of=/mnt/swapfile bs=1M count=1024              //生成交换文件
 # chmod 600 /mnt/swapfile                                        //设置文件权限
 # mkswap /mnt/swapfile                                           //生成交换分区
 # swapon /mnt/swapfile                                           //启用交换分区
 # echo "/mnt/swapfile swap swap defaults 0 0" >> /etc/fstab      //设置开机挂载

使用上述命令,可以在磁盘”/dev/vda1″中划出一块1024M的空白文件用于当作交换分区来使用。当然,每台VPS的实际情况可能不尽相同,需要根据本机的实际情况修改”dd” 命令的”if” 值。全部命令执行完成后,就会为VPS增加1GB的交换空间,并且主机启动后会自动挂载,不需要每次设置。命令执行过程如下图所示:

图.1 设置交换分区文件并启用交换分区

2] 安装Nginx、MariaDB和PHP

以上软件都可以采用源代码编译安装,也可以采用 yum 方式安装。方便起见,在CentOS 7 系统中能够使用 yum 方式安装的软件尽量采用此方式,可以避免很多配置上的问题。

a] 安装Nginx

首先为nginx添加一个 yum 软件源”/etc/yum.repos.d/nginx.repo”,然后就可以以 yum 方式安装它了。nginx 分为稳定版和主线版本,软件源文件略有区别,一般使用稳定版,CentOS 7 的 nginx 稳定版源文件如下:

 [nginx]
 name=nginx repo
 baseurl=http://nginx.org/packages/centos/7/$basearch/
 gpgcheck=0
 enabled=1

保存软件源文件后,就可以使用” yum install nginx” 命令来安装 nginx了,安装示意图如下:

图.2 安装nginx服务器

不出意外的话,会提示安装顺利完成,就可以使用nginx服务器了。

b] 安装MariaDB数据库

CentOS 7 软件库上包含了MariaDB数据库,可以通过 yum 命令很方便的安装它:

 # yum install mysql mariadb mariadb-server

运行命令后,系统会自动安装 MariaDB 所需要的依赖文件和程序文件,并最终将 MariaDB 成功安装至系统。由于执行步骤很长,这里就不再载图示例了。

c] 安装PHP

PHP可以采用 yum 方式安装,不过CentOS 7 软件库的PHP是”5.4.16″版,不是最新版,并且其编译参数并不适用于所有应用场景,所以PHP建议采用源代码方式安装,虽然有些麻烦,但是可以保证充分满足自己的使用需求。

PHP官方提供支持的版本分为5系和7系,其中7系是全面一致支持64位的产品,所有PHP最新的概念都会在7系产品上体现,相当于PHP的主线版本,而5系则充分保持了PHP的兼容性,相当于PHP系列的稳定版。

7系号称性能比5系提高2倍,对于大流量网站差距是十分明显的,不过小型网站就差别不大。出于网站稳定性的考虑,建议安装PHP 5系产品,因为同 CMS 系统兼容性较好。当然以后网站流量增大了,也可以将网站迁移至7系,操作也不麻烦。这里就以安装5系最新版 5.6.33 为例,程序的源文件已经解压至”/php-5.6.33″:

 # cd /php-5.6.33
 # ./configure --enable-fpm --with-mysql --with-zlib --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock
 # make 
 # make install

以上就是安装Nginx、MariaDB 和 PHP 5.6.33 的全部步骤,当然,这些软件不进行相关配置是不能正常使用的,并且php 和 nginx 需要配合使用,也需要对各自软件进行设置。在程序安装过程中出现的报错将在文章最后统一给出解决办法。

3] 配置使用Nginx、MariaDB和PHP

a] 配置Nginx

Nginx 的配置主要是设置网站的主目录以及启用”fastcgi”用以同PHP配合。Nginx 的服务器配置块位于”/etc/nginx/conf.d/”目录中,可以在这个目录是添加不同的配置文件用于代表不同的网站,默认已经存在一个配置文件”default.conf”,这是Nginx默认打开的网站,我们可以修改这个文件也可以另外添加以”.conf”为后缀的配置文件,相当于添加不同的网站,这些网站可以侦听相同的端口,Nginx 会自动区分请求的网站,并根据对应网站的配置文件来处理浏览请求及返回结果。我们这里只修改”default.conf”文件来进行示例:

 server {
    listen       80;
    server_name  localhost;
    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm index.php;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    location ~ \.php$ {
        root          /usr/share/nginx/html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
        include        fastcgi_params;
    }
 }

Nginx 根据 server_name 来区分不同的网站,如果是”localhost”表示侦听本机对应的IP地址,直接在浏览器中访问服务器IP地址,则会使用这个配置文件。配置文件中的”location”块表示网站文件的实际目录,这对应于浏览器访问网站的根目录。以上的配置文件已经将同PHP配合的”fastcgi”部分配置完成了,这方便之后的PHP配置和检验。

配置完成后,就可以使用如下命令来启动nginx并且查看程序运行状态了:

 # service nginx start
 # service nginx status

当看到如下内容时,表示Nginx正常工作了:

图.3 查看Nginx服务器运行状态

这时,可以通过浏览器访问VPS的IP地址,看是否有页面输出。如果看到如下页面,就表示Nginx工作正常了:

图.4 Nginx服务器欢迎页面

b] 配置MariaDB

小型网站如果不对安全有过多要求的话,MariaDB的默认配置就完全可以满足要求,我们需要做的就是设置root用户密码。注意这个root用户并不是系统的root用户,而是MariaDB管理数据库的root帐户。修改好密码后,MariaDB就可以使用了,相当的方便好用:

 # service mariadb start
 # service mariadb status
 # mysqladmin -u root -p password
 # service mariadb restart
 # mysql -u root -p

其中mysqladmin是MariaDB的管理工具,可以管理数据库,这里只修改了root账户密码,注意修改时会提示输入原密码,而默认root帐户的密码为空,这当然十分不安全,所以修改掉。之后重新启动数据库使新密码生效,最后就可以通过”mysql”命令登录数据库了,全部操作示意图如下:

图.5 MariaDB数据库更换root密码操作

c] 配置PHP

源代码安装的PHP配置起来也不复杂,因为源代码中包含了可以用于实际部署的示例配置文件。安装完PHP后,使用如下命令将示例配置文件启用,特别要注意以下命令需要在php源文件目录执行,不然会报错找不到文件,本例依然使用”/php-5.6.33″目录:

 # cp php.ini-development /usr/local/lib/php.ini
 # cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
 # cp sapi/fpm/php-fpm /usr/local/bin

其中”php.ini”是PHP的配置文件,而”php-fpm.conf”是php-fpm的配置文件。php-fpm是同Nginx配合作工作将php脚本转换为html页面的程序,这是LNMP比较特别的地方。默认的配置文件需要修改的地方不多,其中”php.ini”修改如下内容:

 cgi.fix_pathinfo=0

“php-fpm.conf”修改以下内容:

 pid = /var/run/php-fpm.pid
 user = nginx
 group = nginx

以上两个配置文件的其它内容暂时不需要修改,就已经可以正常使用PHP了。对于”php-fpm.conf”的修改内容需要说明一下,”pid”是php-fpm运行时会产生的一个”php-fpm.pid”文件,用于查找和定位php-fpm进程;user和group是运行Web应用的用户和组,这个nginx用户和组是安装Nginx程序时生成的,用于操作Web服务器,所以需要将user和group修改为”nginx”。最后,使用如下命令在网站的根目录”/usr/share/nginx/html”添加一个PHP信息文件phpinfo.php:

 # echo "<?php phpinfo(); ?>" >>usr/share/nginx/html/phpinfo.php
 # php-fpm

之后就可以通过浏览器访问这个页面,如里显示如下内容,则表示PHP和Nginx都配置正确,并可以协同工作了:

图.6 PHP信息页面

如图.6所示,VPS主机已经可以通过浏览器显示PHP信息页面了。至此,LNMP系统已经搭建完成,理论上可以安装CMS系统了。

d] 安装PHP扩展

CMS系统虽然理论上有PHP就可以运行,但是想使用方便的话,还需要给PHP安装若干扩展。前期编译PHP源代码的时候已经预先安装了PDO,可以通过PDO来操作数据库,其它扩展可以采用”phpize”自动化脚本来安装,下面以CMS经常要用到的 GD 扩展作为示例,来演示如何安装扩展。

为了在 CMS 系统中可以处理图片,需要安装 GD 扩展,但是 PHP 源代码中的 GD 扩展并不包含jpeg的支持库,所以需要源代码安装 jpeg 包,然后再安装 GD 扩展:

 # wget http://www.ijg.org/files/jpegsrc.v9c.tar.gz
 # tar -zxvf jpegsrc.v9c.tar.gz
 # cd jpeg-9c
 # ./configure --prefix=/usr/local/jpeg --enable-shared --enable-static
 # make && make install

通过以上步骤,就成功安装了jpeg库供GD扩展使用。然后进入GD扩展的目录”/php-5.6.33/ext/gd”,运行如下命令:

 # phpize
 # ./configure --with-php-config=/usr/local/bin/php-config --with-jpeg-dir=/usr/local/jpeg
 # make && make install

之后在”/usr/local/lib/php.ini”文件中添加如下内容:

 extension=gd.so

重新启动php-fpm后,就可以再次访问PHP信息页面,看GD扩展是否启用:

图.7 PHP gd扩展信息页面

此时,GD 扩展已经安装成功了,安装成功的扩展会在PHP信息页中显示。可以通过以上方法继续安装其它扩展,这里不再做演示。推荐安装的PHP扩展包括:mbstring、mysqli、mcrypt、curl和opcache等,安装完成后就可以应付大多数 CMS 系统了。

4] 安装 CMS 系统

LNMP 环境搭建成功后,CMS 系统安装就相对简单。WordPress、Joomla 和 Drupal 都会在安装时提供一个安装界面,请求用户输入关键信息后完成网站基本配置(如数据库信息、网站名称等),最后完成CMS系统的安装。

a] 安装WordPress

首先下载WordPress的程序文件,并将解压后的文件夹放置在网站的根目录”/usr/share/nginx/html”下,就可以启动安装过程了:

图.8 WordPress安装页面

以上就是WP安装的启动页面,不用多说,点击”Let’s go !”继续安装:

图.9 WordPress安装配置数据库

如图.9所示,为WordPress 配置数据库连接,演示方便起见,连接数据库用户使用”root”,实际部署时可以单独创建一个用户,对于wordpress 数据库有全部权限,用于提高系统安全性。如果数据库连接不成功的话,可以通过命令行手动新建一个”wordpress”数据库,然后再点击”Submit”继续:

图.10 WordPress安装提示

安装时遇到图.10的提示时,是表示WP不能写入配置文件,其原因在于nginx这个用户对于网站根目录没有全部权限,解决办法是使用如下命令将网站根目录归属于nginx用户:

 # chown -R nginx.nginx /usr/share/nginx/html

重新刷新页面后就可以见到以下的没有报错的安装页面:

图.11 WordPress配置成功运行安装

然后就是输入网站的基本信息:

图.12 WordPress输入网站基本信息

如图所示,输入WordPress网站的基本信息后,就可以点击”Install WordPress”进行安装了。之后就是等安装完成,当出现如下页面时,就表示WordPress已经安装成功了:

图.13 WordPress安装成功

虽然每个人在安装过程中遇到的实际情况不尽相同,文章同样会在最后给出常见问题的解决办法。

b] 安装Joomla

Joomla也是一款非常优秀的CMS系统,安装起来也很容易,大概步骤也同WordPress类似,根据安装页面的提供下一步按钮就可以进行安装了。同样将Joomla的程序文件解压至网站根目录后,再通过浏览器访问该目录,就可以见到如下安装页面:

图.14 Joomla安装页面

输入相关信息后,点击下一步继续:

图.15 Joomla安装设置数据库

填入正确的数据库信息,就可以点击下一步继续了:

图.16 Joomla安装设置预览

如图.16所示,在最后安装前,Joomla会将所有设置信息及PHP配置检查结果集中显示出来。可以根据需求选择是否安装网站示例数据,其余检查信息中如果有标记为否的项目,则需要修改PHP选项和安装相应扩展加以解决。一切都 正常后点击”安装”按钮进行安装:

图.17 Joomla 网站安装成功

见到图.17的页面,就表示Joomla已经安装成功了。可以点击”网站前台”和”管理后台”按钮来查看网站和管理网站,具体使用这里就不再赘述。

c] 安装Drupal

Drupal 这个CMS 系统有很多忠实用户,根本原因在于它给予用户更多的自主性,可以方便的进行二次开发,适合制作商业网站。同样的,将程序文件解压到网站根目录,然后浏览器访问,会见到如下安装页面:

图.18 Drupal安装页面

我安装的是目前最新的Drupal 8.4.4版,属于Drupal 8 版本,同原来的Drupal 7 的安装过程区别还是蛮大的,不过相对还是比较人性化,选择好语言后点”Save and continue”按钮进入下一步:

图.19 Drupal 安装选择一种安装方式

一般来说,选择标准方式安装就可以满足大部分需求,没有特别多的定制化要求的话,一般不选择最小方式。作好选择后点”保存并继续”进行环境检查,如果 PHP 配置有不符合条件的项目,系统会显示出来,若全部检查通过,会进入以下数据库设置页面:

图.20 Drupal 安装数据库配置

之前已经启用了PHP pdo 扩展,就可进行数据库配置了,如果未安装 pdo 就会只通过 SQLite 来访问数据库,从而导致安装出错。Drupal 8 比较超前的使用 pdo 来访问数据库,从而提供了更多的扩展性和兼容性。填入数据库连接信息后点击”保存并继续”进行Drupal 的安装,安装成功后如下图所示进入网站信息输入页面:

图.21 Drupal 安装设置网站

在设置网站页面填入网站主要信息后,就可以点击”保存并继续”完成安装了。最后,可以看到一个基本的网站页面了,如何使用Drupal也就不再做讲解了,因为我也不是很熟悉。安装成功后的页面如下图所示:

图.22 Drupal 网站默认首页

以上就完成了常见的CMS系统的安装,总体来讲,CMS安装成功与否十分依赖PHP环境的配置,想要成功的安装好CMS 系统,仔细研究 PHP 的配置和安装相应扩展是十分必要的,完美的PHP 环境对于安装CMS 系统来说是基础,有了这个基础,安装各式各样的CMS 系统都简单的多了。

5] 常见问题Q&A

Q:在编译PHP时报错”configure: error: no acceptable C compiler found in $PATH”。

A:原因在于vultr主机的CentOS 7系统并没有安装C编译器,使用 yum install gcc 安装gcc 编译器解决。

Q:在编译PHP时报错”configure: error: xml2-config not found. Please check your libxml2 installation.”。

A:yum install libxml2-devel

Q:访问Nginx 网页时页面不能访问。

A:由于Vultr 主机的CentOS 7 系统默认开启了软件防火墙,需要手动打开Nginx 侦听的端口,以打开80端口为例,使用”firewall-cmd –zone=public –add-port=80/tcp –permanent”命令打开80端口,然后重启VPS主机后就可以正常访问页面了。

Q:安装PHP 扩展时报错”Cannot find autoconf. Please check your autoconf installation and the$PHP_AUTOCONF environment variable. Then, rerun this script.”。

A:yum install autoconf

Q:安装 gd 扩展时报错”configure: error: png.h not found.”。

A:yum install libpng libpng-devel

Q:CMS系统安装完成后,页面访问报错”404 页面不存在”。

A:由于CMS 系统都具有搜索引擎优化(SEO)功能,可以提供搜索引擎友好的网页地址,这需要在Nginx 配置文件的”location”配置块中添加相应的重写规则。WordPress的重写规则为:

     location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm index.php;
        if (-f $request_filename/index.html){
             rewrite (.*) $1/index.html break;
           }
        if (-f $request_filename/index.php){
             rewrite (.*) $1/index.php;
           }
        if (!-f $request_filename){
             rewrite (.*) /index.php;
          }
          rewrite /wp-admin$ $scheme://$host$uri/ permanent;
    }

Joomla的重写规则为:

     location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm index.php;
        try_files $uri $uri/ /index.php?$args;
    }

Drupal的重写规则为:

     location / {
        root   /dataroot/webroot/ukweb;
        index  index.html index.htm index.php;
        try_files $uri @rewrite;
    }
    location @rewrite {
        # Some modules enforce no slash (/) at the end of the URL
        # Else this rewrite block wouldn't be needed (GlobalRedirect)
        rewrite ^ /index.php;
        rewrite ^/core/authorize.php/core/authorize.php(.*)$ /core/authorize.php$1;
    }

Q :CMS 系统配置数据库时明明是本机但是数据库主机不能使用”localhost”。

A:当主机填写为localhost时,mysql 会采用 unix domain socket 连接数据库,而当主机填写为127.0.0.1时 mysql 会采用tcp方式连接数据库。PHP 采用tcp方式连接数据库,所以需要将主机修改为127.0.0.1;当然也可以修改MariaDB的配置,强制要求均采用tcp方式连接数据库,那时主机名就可以填写localhost。

以上就是文章的全部内容,如果还有其它问题,可以留言交流。最后还是推荐一下Vultr主机,性价比很高,点击 >>这个链接<< 注册还有10美元的优惠哦。

One thought on “CentOS系统配置LEMP环境和安装CMS系统”

发表评论

您的电子邮箱地址不会被公开。