如何在Fedora 26 LAMP VPS上安装MODX Revolution
使用其他系统?MODX Revolution是一种快速,灵活,可扩展,免费和开源的企业级内容管理系统(CMS),由
自2013年发布以来,Ghost是一个开源博客平台,在开发人员和普通用户中已广受欢迎。它专注于内容和博客。Ghost最吸引人的地方是其简单,干净且响应迅速的设计。您可以通过手机撰写博客文章。Ghost的内容是使用Markdown语言编写的。幽灵非常适合个人或小组作家。
在本指南中,我们将使用Let's Encrypt,Certbot,Node.js,NPM,NGINX和MySQL在CentOS 7.3 VPS上建立并部署安全的Ghost v0.11.x LTS博客。
检查CentOS版本:
cat /etc/centos-release
# CentOS Linux release 7.3.1611 (Core)
创建一个新的非root用户:
useradd -c "John Doe" johndoe && passwd johndoe
通过将其添加到wheel
组使其成为超级用户:
usermod -aG wheel johndoe
切换到新用户:
su - johndoe
更新操作系统的软件:
sudo yum check-update || sudo yum update -y
设置时区:
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'
安装开发工具:
sudo yum groupinstall -y 'Development Tools'
安装Vim文本编辑器:
sudo yum install -y vim
如果需要,请重新引导系统:
sudo shutdown -r now
注意:在开始此步骤之前,请确保已为您的域设置了DNS记录。
我们将使用Let's Encrypt CA和EFF的Certbot客户端获取Ghost博客的SSL / TLS证书。不要忘记将所有实例替换为blog.domain.tld
您的域名。
启用企业Linux附加软件包(EPEL)存储库:
# Certbot is packaged in Extra Packages for Enterprise Linux (EPEL) repository. To use Certbot, you must first enable the EPEL repository.
sudo yum install -y epel-release
安装使用Python制作的Certbot(以前称为Let's Encrypt client)证书管理软件:
sudo yum install -y certbot
检查Certbot版本:
certbot --version
# certbot 0.14.1
使用独立身份验证方法(插件)获取RSA证书:
sudo certbot certonly --standalone --domains blog.domain.tld --rsa-key-size 2048 --must-staple --email [email protected] --no-eff-email --agree-tos
# IMPORTANT NOTES:
# - Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/blog.domain.tld/fullchain.pem.
# Your cert will expire on YYYY-MM-DD. . . .
# . . .
完成上述步骤后,您的证书和私钥将位于/etc/letsencrypt/live/blog.domain.tld
目录中。
注意:Ghost当前仅支持Node.js版本4.5+和6.9+。
Ghost建立在Node.js之上。在撰写本文时,我们将为Ghost 安装推荐的版本v6 Boron LTS
。
下载并安装Node.js v6 LTS:
sudo curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -
sudo yum install -y nodejs
检查Node.js和NPM版本:
node -v && npm -v
# v6.11.2
# 3.10.10
默认情况下,Ghost已配置为使用SQLite数据库,而无需进行配置。
另外,也可以通过更改数据库配置将Ghost与MySQL数据库一起使用。您必须先创建一个数据库和用户,然后才能更改现有的sqlite3配置。
从官方的MySQL Yum存储库下载并安装最新版本的MySQL(当前为5.7):
cd /tmp
# Adding the MySQL Yum Repository
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
sudo yum localinstall -y mysql57-community-release-el7-11.noarch.rpm
# Installing MySQL
sudo yum install -y mysql-community-server
检查MySQL版本:
mysql --version
# mysql Ver 14.14 Distrib 5.7.19, for Linux (x86_64) using EditLine wrapper
启动MySQL Server并检查其状态:
sudo systemctl start mysqld.service
sudo systemctl status mysqld.service
安装后,MySQL 5.7或更高版本会为MySQL root
用户生成一个临时的随机密码,密码存储在MySQL错误日志文件中,该文件位于/var/log/mysqld.log
。要显示它,请使用以下命令:
sudo grep 'temporary password' /var/log/mysqld.log
运行mysql_secure_installation
脚本以稍微保护数据库:
注意:已安装并启用了密码验证插件,因此您
root
需要为用户提供的新密码必须强壮(一个大写字母,一个小写字母,一位数字和一个特殊字符,并且密码总长度至少为8个字符)。如果您想放松一下或完全禁用插件(不推荐),请查阅MySQL官方文档以了解如何执行此操作。
sudo mysql_secure_installation
以root用户身份登录MySQL:
mysql -u root -p
# Enter password:
创建一个新的MySQL数据库和用户:
create database dbname;
grant all on dbname.* to 'user' identified by 'password';
退出MySQL:
exit
从官方NGINX存储库下载并安装最新版本的NGINX 主线:
# Add the NGINX Yum Repository
sudo vim /etc/yum.repos.d/nginx_mainline.repo
# Copy/paste the following into /etc/yum.repos.d/nginx_mainline.repo
[nginx]
name=nginx repo
baseurl=https://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=1
enabled=1
wget https://nginx.org/keys/nginx_signing.key
sudo rpm --import nginx_signing.key
rm nginx_signing.key
sudo yum install -y nginx nginx-module-geoip nginx-module-image-filter nginx-module-njs nginx-module-perl nginx-module-xslt nginx-nr-agent
通过检查NGINX版本来验证它是否已安装:
sudo nginx -v
# nginx version: nginx/1.13.3
检查状态,启用并启动NGINX服务(守护程序):
sudo systemctl status nginx.service # inactive (dead)
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
创建/etc/nginx/ssl
目录并生成一个新的Diffie-Hellman(DH)参数:
sudo mkdir -p /etc/nginx/ssl
sudo openssl dhparam -out /etc/nginx/ssl/dhparams-2048.pem 2048
为blog.domain.tld
虚拟主机创建日志目录:
sudo mkdir -p /var/log/nginx/blog.domain.tld
将NGINX配置为HTTP(S)反向代理服务器:
sudo vim /etc/nginx/conf.d/ghost.conf
将以下内容粘贴到中/etc/nginx/conf.d/ghost.conf
:
# domain: blog.domain.tld
# public: /var/www/ghost
upstream ghost_app {
server 127.0.0.1:2368;
keepalive 32;
}
server {
listen [::]:80 default_server;
listen 80 default_server;
listen [::]:443 ssl http2 default_server;
listen 443 ssl http2 default_server;
server_name blog.domain.tld;
root /var/www/ghost;
error_log /var/log/nginx/blog.domain.tld/error.log;
access_log /var/log/nginx/blog.domain.tld/access.log;
client_max_body_size 100M;
ssl_certificate /etc/letsencrypt/live/blog.domain.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/blog.domain.tld/privkey.pem;
ssl_dhparam ssl/dhparams-2048.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;
ssl_buffer_size 4K;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50M;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/blog.domain.tld/chain.pem;
resolver 8.8.8.8 8.8.4.4 valid=300s;
location / {
proxy_pass http://ghost_app;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_hide_header X-Powered-By;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
保存并测试NGINX配置是否存在语法错误:
sudo nginx -t
重新加载NGINX配置:
sudo systemctl reload nginx.service
注意:如果要在同一VPS上托管多个Ghost博客,则每个Ghost实例必须在单独的端口上运行。
创建文档根目录:
sudo mkdir -p /var/www/
创建一个新的虚幻用户:
sudo useradd -c 'Ghost application' ghost
下载Ghost:
curl -L https://github.com/TryGhost/Ghost/releases/download/0.11.11/Ghost-0.11.11.zip -o ghost.zip
将Ghost解压缩到/var/www/ghost
目录(推荐的安装位置)中:
sudo unzip -uo ghost.zip -d /var/www/ghost
rm ghost.zip
移至新的ghost目录:
cd /var/www/ghost
更改/var/www/ghost
目录的所有权:
sudo chown -R ghost:ghost .
切换到新ghost
用户:
sudo su - ghost
导航到文档根目录/var/www/ghost
:
cd /var/www/ghost
仅安装具有生产依赖性的Ghost。完成此操作后,将安装Ghost:
npm install --production
通过改变配置鬼url
,mail
和database
的生产对象内部的属性config.js
文件:
cp config.example.js config.js
vim /var/www/ghost/config.js
var path = require('path'),
config;
config = {
// ### Production
// When running Ghost in the wild, use the production environment.
// Configure your URL and mail settings here
production: {
url: 'https://blog.domain.tld',
mail: {
transport: 'SMTP',
options: {
service: 'Mailgun',
auth: {
user: '',
pass: ''
}
}
},
database: {
client: 'mysql',
connection: {
host: '127.0.0.1',
user: 'your_database_user',
password: 'your_database_password',
database: 'your_database_name',
charset: 'utf8'
},
debug: false
},
// . . .
// . . .
注意:您还应该配置
在生产环境中启动Ghost:
npm start --production
Ghost现在将运行。博客前端和管理界面均已通过HTTPS进行了安全保护,并且HTTP / 2也在正常工作。您可以打开浏览器并访问的网站https://blog.domain.tld
。不要忘记blog.domain.tld
用您的域名替换。
通过按CTRL
+来关闭Ghost进程,C
然后从幽灵用户返回到您在开始时创建的非root用户:
exit
如果您关闭您的VPS终端会话,您的博客也将关闭。这不好。为了避免这种情况,我们将使用systemd。这将使我们的博客保持24/7全天候运行。
创建ghost.service
系统单位文件。运行sudo sudo vim /etc/systemd/system/ghost.service
并复制/粘贴以下内容:
[Unit]
Description=Ghost - the professional publishing platform
Documentation=https://docs.ghost.org/v0.11.11/docs
After=network.target
[Service]
Type=simple
# Edit WorkingDirectory, User and Group as needed
WorkingDirectory=/var/www/ghost
User=ghost
Group=ghost
ExecStart=/bin/npm start --production
ExecStop=/bin/npm stop --production
Restart=always
SyslogIdentifier=Ghost
[Install]
WantedBy=multi-user.target
启用并开始ghost.service
:
sudo systemctl enable ghost.service && sudo systemctl start ghost.service
检查ghost.service
状态:
sudo systemctl status ghost.service && sudo systemctl is-enabled ghost.service
导航到https://blog.domain.tld/ghost/
并创建一个Ghost管理员用户。尽快这样做!
而已。我们现在有一个功能齐全的Ghost博客。当客户端支持时,您的服务器正在通过HTTP / 2传递内容。如果要将默认的名为Casper的 Ghost主题更改为自定义主题,只需下载该主题并将其解压缩到/var/www/ghost/content/themes
文件夹中,然后通过位于的Ghost管理界面将其选中即可https://blog.domain.tld/ghost
。
使用其他系统?MODX Revolution是一种快速,灵活,可扩展,免费和开源的企业级内容管理系统(CMS),由
Ghost是与WordPress竞争的最新,最大的暴发户。主题开发既快速又容易学习,因为Ghost开发人员决定同时使用
使用其他系统?Ghost是一个开放源代码博客平台,自201年以来一直在开发人员和普通用户中广受欢迎。
使用其他系统?Fork是用PHP编写的开源CMS。Forks源代码托管在GitHub上。本指南将向您展示如何安装Fork CM
使用其他系统?Ghost是一个开放源代码博客平台,自201年以来一直在开发人员和普通用户中广受欢迎。
Typesetter是一个用PHP编写的开源CMS,专注于True WYSIWYG编辑和平面文件存储的易用性。在本文中,我们将安装
使用其他系统?Dotclear是一个非常简单的博客引擎。它是开源的,易于使用。本教程将通过以下方式进行安装
Vultr虚拟服务器的常见用法是托管Wordpress网站。本指南向您展示如何从头开始自动配置虚拟服务器
使用其他系统?MODX Revolution是一种快速,灵活,可扩展,免费和开源的企业级内容管理系统(CMS),由
简介WordPress是互联网上占主导地位的内容管理系统。它通过动态内容为从博客到复杂网站的一切提供支持
使用其他系统?MODX Revolution是一种快速,灵活,可扩展,免费和开源的企业级内容管理系统(CMS),由
使用其他系统?Fork是用PHP编写的开源CMS。Forks源代码托管在GitHub上。本指南将向您展示如何安装Fork CM
Neos是一种创新的开源内容管理系统,非常适合创建和编辑在线内容。考虑到作者和编辑,Neo
使用其他系统?Dotclear是一个非常简单的博客引擎,已在PHP之上构建。在本教程中,我们将在Ubunt上安装Dotclear
使用其他系统?MODX Revolution是一种快速,灵活,可扩展,免费和开源的企业级内容管理系统(CMS),由
使用其他系统?自2013年发布以来,Ghost是一个开源博客平台,在开发人员和普通用户中越来越受欢迎。一世
使用其他系统?Fork是用PHP编写的开源CMS。Forks源代码托管在GitHub上。本指南将向您展示如何安装Fork CM
使用其他系统?自2013年发布以来,Ghost是一个开源博客平台,在开发人员和普通用户中越来越受欢迎。一世
使用其他系统?Jekyll是WordPress的不错替代品。它不需要任何数据库,并且可以使用许多人熟悉的机智语言
勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根
ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。
Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+
閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。
最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息
大數據的13個商業數據提取工具
我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true
隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。
洞察 26 種大數據分析技術:第 1 部分
過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。