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系统”