如何在FreeBSD 12上使用Nginx安装ExpressionEngine CMS

ExpressionEngine是一个用PHP编写的成熟,灵活,安全,免费的开源内容管理系统(CMS)。它的源代码托管在Github上。使用ExpressionEngine,您可以构建功能齐全的网站,创建Web应用程序或向移动应用程序提供内容。所有这些都不需要复杂的编程技能。本指南将引导您在使用PHP,MariaDB作为数据库以及Nginx作为Web服务器的全新FreeBSD 12上完成ExpressionEngine的安装过程。

要求

ExpressionEngine需要运行PHP和MySQL / MariaDB的Web服务器。推荐的软件堆栈和版本为:

  • PHP版本7.0或更大,PHP-FPM并用以下PHP扩展运行(gdfileinfointlmbstring)。
  • MySQL 5.6或更高版本或Percona 5.6或更高版本。本  教程将使用MariaDB。
  • Nginx或Apache之类的Web服务器。本教程将使用Nginx。

先决条件

  • 运行FreeBSD 12.的操作系统。
  • 具有sudo特权的非root用户。

在本教程中,我将使用域名example.com。请在下面的命令和配置文件中(尤其是在Nginx配置文件和Let’s crypto命令中)将“ example.com”一词替换为您自己的域名。

初步步骤

检查您的FreeBSD版本:

uname -ro
# FreeBSD 12.0-RELEASE

设置时区:

tzsetup

更新您的操作系统软件包(软件)。这是重要的第一步,因为它可以确保您具有操作系统默认软件包的最新更新和安全修复程序:

freebsd-update fetch install
pkg update && pkg upgrade -y

安装一些基本软件包,这些软件包对于FreeBSD 12.0操作系统的基本管理是必需的:

pkg install -y sudo vim unzip wget bash socat

安装PHP

安装PHP以及必要的PHP扩展:

sudo pkg install -y php72 php72-mbstring php72-tokenizer php72-pdo php72-pdo_mysql php72-openssl php72-hash php72-json php72-phar php72-filter php72-zlib php72-dom php72-xml php72-xmlwriter php72-xmlreader php72-curl php72-session php72-ctype php72-iconv php72-gd php72-simplexml php72-zip php72-filter php72-tokenizer php72-calendar php72-fileinfo php72-intl php72-phar php72-soap php72-xmlrpc

要显示在模块中编译的PHP,可以运行:

php -m

ctype
curl
exif
fileinfo
. . .
. . .

检查PHP版本:

php --version

# PHP 7.2.16 (cli) (built: Apr 30 2019 08:37:17) ( NTS )
# Copyright (c) 1997-2018 The PHP Group
# Zend Engine v3.3.5, Copyright (c) 1998-2018 Zend Technologies
# with Zend OPcache v7.3.5, Copyright (c) 1999-2018, by Zend Technologies

启动并启用PHP-FPM服务:

sudo sysrc php_fpm_enable=yes
sudo service php-fpm start

安装MariaDB

安装MariaDB数据库服务器:

sudo pkg install -y mariadb102-client mariadb102-server

检查  MariaDB版本:

mysql --version
# mysql  Ver 15.1 Distrib 10.2.23-MariaDB, for Linux (x86_64) using readline 5.1

启动并启用MariaDB服务:

sudo sysrc mysql_enable="yes"
sudo service mysql-server start

运行  mysql_secure installation 脚本以提高  MariaDB安全性,并为MariaDB  用户设置密码  : root

sudo mysql_secure_installation

回答每个问题:

Would you like to setup VALIDATE PASSWORD plugin? N
New password: your_secure_password
Re-enter new password: your_secure_password
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

以root用户身份连接到  MariaDB shell:

sudo mysql -u root -p
# Enter password

为Shopware 创建一个空的  MariaDB数据库和用户,并记住凭据:

mysql> CREATE DATABASE dbname;
mysql> GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password';
mysql> FLUSH PRIVILEGES;

从MariaDB退出  :

mysql> exit

替换dbnameusernamepassword用自己的名字。

安装Acme.sh客户端并获取“让我们加密”证书(可选)

不必使用HTTPS保护您的网站,但这是保护您网站访问量的一种好习惯。为了从Let’s Encrypt获得TLS证书,我们将使用acme.sh客户端。Acme.sh是一个纯Unix Shell软件,用于从Let’s Encrypt获得TLS证书(零相关性)。

下载并安装acme.sh:

sudo pkg install -y acme.sh

检查acme.sh版本:

acme.sh --version
# v2.8.2

为您的域名/主机名获取RSAECC / ECDSA证书:

# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256

如果要使用伪造的证书进行测试,则可以--staging 在上述命令中添加标志。

运行上述命令后,您的  证书  和  密钥  将位于:

  • 对于RSA/home/username/example.com目录。
  • 对于ECC / ECDSA/home/username/example.com_ecc目录。

要列出您颁发的证书,可以运行:

acme.sh --list

创建一个目录来存储您的证书。我们将使用目录 /etc/letsencrypt.

mkdir -p /etc/letsecnrypt/example.com sudo mkdir -p /etc/letsencrypt/example.com_ecc

将证书安装/复制到/ etc / letsencrypt  目录。

# RSA
acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"

所有证书将每60天自动更新一次。

获得证书后,从root用户退出并返回普通的sudo用户:

exit

安装Nginx

安装NGINX Web服务器:

sudo pkg install -y nginx

检查NGINX版本:

nginx -v
# nginx version: nginx/1.14.2

启动并启用NGINX服务:

sudo sysrc nginx_enable=yes
sudo service nginx start

通过运行以下命令为ExpressionEngine配置Nginx:

sudo vim /usr/local/etc/nginx/expressionengine.conf

并使用以下配置填充文件:

server {

  listen 443 ssl;
  listen 80;
  
  server_name example.com;
  root /usr/local/www/expressionengine;
  # RSA
  ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
  # ECDSA
  ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;
  index index.php;
  
  location / {
    index index.php;
    try_files $uri $uri/ @ee;
  }
  
  location @ee {
    rewrite ^(.*) /index.php?$1 last;
  }
  
  location ~* \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    include fastcgi_params;
    fastcgi_index index.php5;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }

}

运行sudo vim /usr/local/etc/nginx/nginx.conf并添加以下行以http {}阻止包含Shopware配置。

include expressionEngine.conf;

检查Nginx配置是否存在语法错误:

sudo nginx -t

重新加载Nginx服务:

sudo service nginx reload

安装ExpressionEngine

创建一个文件根目录,ExpressionEngine应该驻留在该目录中:

sudo mkdir -p /usr/local/www/expressionengine

导航到文档根文件夹:

cd /usr/local/www/expressionengine

下载最新版本的ExpressionEngine并将文件解压缩到服务器上的文件夹中:

sudo wget -O ee.zip --referer https://expressionengine.com/ 'https://expressionengine.com/?ACT=243'
sudo unzip ee.zip
sudo rm ee.zip

/usr/local/www/expressionengine目录的所有权更改为www:

sudo chown -R www:www /usr/local/www/expressionengine

将浏览器指向admin.php您上传的文件的URL 。例如:http://example.com/admin.php。按照屏幕上的说明安装ExpressionEngine。安装向导完成后,您应该重命名system/ee/installer/目录或从服务器中删除目录。

完成ExpressionEngine的设置

通过输入数据库和管理员帐户详细信息来完成ExpressionEngine安装:

管理员帐户设置

之后,您将看到默认的登录页面:

首次登录ExpressionEngine

这是ExpressionEngine管理仪表板:

ExpressionEngine仪表板

这是前端页面:

ExpressionEngine CMS中的网站

而已!ExpressionEngine安装完成。

发表评论
  • 发表评论
  • 评论列表
     
     

    为你推荐
    Ta的个人站点

    Ubar发布文章117篇

    与他人进行分享是一种快乐!当你的分享可以帮助到他们,会感觉更快乐!