VPS 主机如果只作为一台代理服务器, 那么多多少少有些浪费如果想让 VPS 有更多用处的话, 配置一个 LAMP 或者 LNMP 环境, 并安装 CMS 系统制作网站是不错的选择
LAMP 是 Linux Apache MySQL PHP 的简写, 而 LNMP 是 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(内容管理系统)的简写, 狭义的概念就是网站内容发布和管理系统, 用于方便的建立不同风格的网站常用的内容管理系统包括 WordPressJoomla 和 Drupal, 它们都是免费开源的, 并且都使用 PHP 作为开发语言
本文将以 vultr VPS 主机为例, 详细介绍如何在 CentOS 7 系统中安装相关软件, 配置 LNMP 系统, 并演示上述三个 CMS 系统的安装, 为 VPS 搭建网站创造条件
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] 安装 NginxMariaDB 和 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
以上就是安装 NginxMariaDB 和 PHP 5.6.33 的全部步骤, 当然, 这些软件不进行相关配置是不能正常使用的, 并且 php 和 nginx 需要配合使用, 也需要对各自软件进行设置在程序安装过程中出现的报错将在文章最后统一给出解决办法
3] 配置使用 NginxMariaDB 和 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 扩展包括: mbstringmysqlimcryptcurl 和 opcache 等, 安装完成后就可以应付大多数 CMS 系统了
4] 安装 CMS 系统
LNMP 环境搭建成功后, CMS 系统安装就相对简单 WordPressJoomla 和 Drupal 都会在安装时提供一个安装界面, 请求用户输入关键信息后完成网站基本配置(如数据库信息网站名称等), 最后完成 CMS 系统的安装
a] 安装 WordPress
首先下载 WordPress 的程序文件, 并将解压后的文件夹放置在网站的根目录 / usr/share/nginx/html 下, 就可以启动安装过程了:
图. 8 WordPress 安装页面
以上就是 WP 安装的启动页面, 不用多说, 点击 Lets 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 美元的优惠哦
来源: https://www.rultr.com/tutorials/vps/2401.html