如何在CentOS 7上安装Neos CMS

・14 分钟阅读

Neos CMS是一个创新的开放源码内容管理系统,它对创建和编辑在线内容非常有用,提供了直观的编辑界面,结构化内容库,多语言内容准备,专业内容工作流。

前提条件

  • 新部署的CentOS 7x64服务器实例,假设它的IP地址是203.0.113.1,它的主机名是neos ,
  • example.com已配置为指向上面提到的服务器实例,
  • 一个sudo用户
  • 服务器实例已被使用epel yum repo更新至最新稳定状态
  • 在生产环境中,为了获得更好的性能,建议设置交换文件

步骤1:设置最新的LAMP

在部署基于Neos3.2.0的内容站点时,必须先设置最新的LAMP堆栈,然后才能运行站点,例如,当前Neos CMS3.2.0的合格LAMP堆栈将包括:

  • Centos 7x64,更新至最新稳定状态,
  • Apache 2.4
  • MariaDB 10.2,默认情况下使用utf8_unicode_ci排序规则,
  • PHP 7.1,或者至少是PHP 7.0 ,

请注意,针对Neos CMS的特定设置修改也将包括在内。


# Install and configure Apache 2.4.x
sudo yum install httpd -y
sudo sed -i 's/^/#&/g' /etc/httpd/conf.d/welcome.conf
sudo sed -i"s/Options Indexes FollowSymLinks/Options FollowSymLinks/" /etc/httpd/conf/httpd.conf
sudo systemctl start httpd.service
sudo systemctl enable httpd.service

# Install MariaDB 10.2.x
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
sudo yum install MariaDB-server MariaDB-client -y
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service

# Secure MariaDB 10.2.x
sudo /usr/bin/mysql_secure_installation
# When prompted, answer questions as below:
# - Enter current password for root (enter for none): Just press the Enter button
# - Set root password? [Y/n]: Y
# - New password: your-MariaDB-root-password
# - Re-enter new password: your-MariaDB-root-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

# Set the default collation of MariaDB as utf8_unicode_ci
cat <<EOF>> /tmp/collation.conf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server=utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server=utf8
EOF
sudo cp /etc/my.cnf /etc/my.cnf.bak
sudo sed -i '/[client-server]/r /tmp/collation.conf' /etc/my.cnf
sudo systemctl restart mariadb.service

# Create a MariaDB database for Neos
mysql -u root -p
# For security purposes, be sure to replace"neos","neosuser", and"yourpassword" with your own ones. 
CREATE DATABASE neos;
CREATE USER 'neosuser'@'localhost' IDENTIFIED BY 'yourpassword';
GRANT ALL PRIVILEGES ON neos.* TO 'neosuser'@'localhost' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

# Install required PHP 7.1.x packages and configure PHP for Neos
sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
sudo yum install -y php71w php71w-mysqlnd php71w-common php71w-cli php71w-xml php71w-mbstring php71w-pecl-imagick php71w-mcrypt php71w-opcache php71w-imap php71w-process php71w-intl
sudo cp /etc/php.ini /etc/php.ini.bak
sudo sed -i 's#;date.timezone =#date.timezone = America/Los_Angeles#' /etc/php.ini
sudo sed -i"s/memory_limit = 128M/memory_limit = 250M/" /etc/php.ini
sudo sed -i '$axdebug.max_nesting_level = 500' /etc/php.ini

步骤2:下载和安装Composer

neo需要编写器PHP依赖项管理器,你可以使用以下命令在你的计算机上安装Composer 1.5.2.

注意:将来你可以从官方下载页面获得最新的Composer 。


cd
php -r"copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r"if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r"unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer

使用Composer安装步骤3:

借助Composer,你可以将Neos CMS和所有必需的依赖项安装到指定位置。


cd
mkdir neos
cd neos
composer create-project --no-dev neos/neos-base-distribution .

出于管理目的,将所有Neos文件移动到/opt目录,然后创建从web root目录/var/www/html/opt/neos目录的符号链接,使所有Neos文件可用于Apache 。


sudo mv ~/neos /opt
sudo chown -R apache:apache /opt/neos
sudo ln -s /opt/neos /var/www/html/neos

设置用于将/var/www/html/neos/Web指定为web root目录的近地磁盘站点的Apache虚拟主机。

注意:在你自己的机器上部署时,一定要用你自己的机器替换下面的所有example值。


cat <<EOF | sudo tee /etc/httpd/conf.d/neos.conf
<VirtualHost *:80>
ServerAdmin admin@example.com
DocumentRoot /var/www/html/neos/Web
ServerName example.com
ServerAlias neos.example.com
<Directory /var/www/html/neos/Web>
Options FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/httpd/example.com-error_log
CustomLog /var/log/httpd/example.com-access_log common
</VirtualHost>
EOF

重新启动Apache以应用所有更新。


sudo systemctl restart httpd.service

步骤4:修改防火墙规则

为了允许访问者访问你的近地磁盘站点,你需要修改防火墙规则,如下所示。


sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --zone=public --permanent --add-service=https
sudo firewall-cmd --reload

步骤5:从网络安装向导继续安装

你可以将你喜爱的网页浏览器指向http://example.com/setup,然后你将进入Neos CMS安装向导界面。

在Login页面上,你需要输入安装密码,然后单击Login按钮,然后才能进入安装界面,密码存储在 /var/www/html/neos/Data/SetupPassword.txt 你可以在终端窗口中键入以下命令来获取它。


cat /var/www/html/neos/Data/SetupPassword.txt

为了安全起见,在成功登录后将删除此文件,记住写下密码以后参考。

Neos requirements check - Image Manipulation 页面,确保已经安装,并且选择了imagickgmagick扩展,然后单击Next >按钮可以进行移动。

Configure database页面上,输入或选择数据库详细信息如下。

  • DB Driver:MySQL/MariaDB via PDO
  • DB Username:neosuser
  • DB Password:yourpassword
  • DB Host:127.0.0.1
  • DB Name:neos

确保数据库neos正在使用utf8字符集,然后单击Next >按钮以进行移动。

Create administrator account页面上,输入管理员,last nameusernamepassword (两次)的站点first name,然后单击Next >按钮移动。

Create a new site 页面中,你可以选择Neos.Demo站点包,然后单击Next >按钮来完成设置。

注意:当你将来熟悉Neos CMS时,可以再次运行Neos CMSWeb安装向导,在此页面上创建自己的网站包,然后使用新的网站包构建自定义Neos CMS网站。

现在,你可以访问Neos站点的前端页面或在Neos站点的后端页面中管理该站点,下面列出了有用的链接。

  • 站点前端页面:http://example.com
  • 站点后端页面:http://example.com/neos
  • 站点设置页面:http://example.com/setup

步骤6:安装后的说明

在生产环境中部署Neos站点时,还需要通过将行SetEnv FLOW_CONTEXT Production插入到Apache虚拟主机配置,将流应用程序上下文从Development (默认值)更改为Production,如下所示。


cat <<EOF | sudo tee /etc/httpd/conf.d/neos.conf
<VirtualHost *:80>
ServerAdmin admin@example.com
DocumentRoot /var/www/html/neos/Web
SetEnv FLOW_CONTEXT Production
ServerName example.com
ServerAlias neos.example.com
<Directory /var/www/html/neos/Web>
Options FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/httpd/example.com-error_log
CustomLog /var/log/httpd/example.com-access_log common
</VirtualHost>
EOF

重新启动Apache以应用你的修改。


sudo systemctl restart httpd.service

如果使用公共Neos.Demo网站包创建站点,请确保删除Try me页面上的Create account按钮以防止未授权访问。

步骤7(可选):通过部署let's Encrypt证书启用HTTPS

若要增强Neos站点的安全性,可以通过部署let's Encrypt证书在站点上启用HTTPS 。

首先,使用vi文本编辑器在服务器实例上设置FQDN (完全限定域名)。

 
sudo vi/etc/hosts

 

在任何现有行之前插入以下行。


203.0.113.1 neos.example.com neos

保存并退出。

 
:wq

 
!

使用hostname -f命令来确认结果,它看起来像这样。

 
neos.example.com

 

安装Certbot实用程序,该实用程序可以自动部署let's Encrypt证书,并且启用HTTPS


sudo yum install -y yum-utils
sudo yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional
sudo yum install -y certbot-apache

接下来,使用Certbot实用程序,为ApacheWeb服务器部署一个Let's Encrypt证书。


sudo cp /etc/httpd/conf.d/neos.conf /etc/httpd/conf.d/neos.conf.bak
sudo certbot --apache

在这个进程中,回答问题,如下所示。


Enter email address (used for urgent renewal and security notices): `admin@example.com`
Agree Letsencrypt terms of service (A)gree/(Cancel): `A`
Would you be willing to share your email address (Y)es/(N)o: `Y`
Which names would you like to activate HTTPS for? 1: example.com 2:neos.example.com: `1,2`
Whether or not to redirect HTTP traffic to HTTPS, removing HTTP access? 1: No redirect/2: Redirect `2`

所有HTTP连接现在将被重定向到HTTPS

如下所示创建一个cron作业,每天尝试更新计算机上的let's Encrypt证书两次。

 
sudo crontab -e

 

按"I"键进入插入模式,然后输入以下行。


0 1,13 * * * /usr/bin/certbot renew

保存并退出。

 
:wq

 
!

这是本教程的结束,感谢阅读。

Elin1982018 profile image