前言:花了好长时间折腾了好久,很多的教程都有点旧,有很多出错的地方,本篇参照了史上最详细的阿里云搭建Ghost教程,阿里云搭建Ghost博客官方教程,有很多更改的地方。
搭建ghost,要有一丢丢linux基础,服务器的话也要知道一丢丢,没有it基础就算了
1.提前提醒一下文章中需要用到单引号的命令,全都要用英文引号,csdn复制的都是中文单引号
2.有些在user用户下执行不了的命令在命令前面加 sudo ,需要输入密码就输入user的密码
开始搭建:
进入崭新的服务器
yum update -y
yum install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel open openssl-devel -y
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum -y install nginx
systemctl enable nginx.service
systemctl start nginx.service
systemctl status nginx.service
本地打开浏览器,输入我们的公网IP就可以进入到Nginx的页面了
创建nodejs安装目录
mkdir /opt/software
cd /opt/software
下载node安装包
wget https://cdn.npm.taobao.org/dist/node/v10.13.0/node-v10.13.0-linux-x64.tar.gz
解压安装包
tar -xvf node-v10.13.0-linux-x64.tar.gz
进入目录并安装相关插件
cd node-v10.13.0-linux-x64
进行默认配置并编译 (编译很久半个钟以上)
./configure
make
开始安装
sudo make install
安装后运行node -v和npm -v命令检查Node.js的版本。
node -v
npm -v
安装进程管理器pm2以便控制ghost (这个进程管理器可以保持应用程序一直处于运行状态)
npm install pm2 -g
1.下载mysql的repo源
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
2.安装mysql57-community-release-el7-11.noarch.rpm包
sudo rpm -ivh mysql57-community-release-el7-9.noarch.rpm
3.列出所有的版本
yum repolist all | grep mysql
4.查看可安装的版本
yum repolist enabled | grep mysql
5.开始安装mysql
yum install mysql-community-server
sudo service mysqld start
sudo systemctl start mysqld.service
sudo service mysqld status
sudo systemctl status mysqld.service
这4条命令都打一下(防止mysql的版本不同)
grep ‘temporary password’ /var/log/mysqld.log
mysql -u root -p
我这里的话密码就输入 Uu:uwhFB18=M
修改密码的级别为低,密码长度最短为4位
set global validate_password_policy=LOW;
set global validate_password_length=4;
修改root密码为root
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘root’;
CREATE USER ‘user’@‘localhost’ IDENTIFIED BY ‘root’;
GRANT USAGE ON * . * TO ‘user’@‘localhost’ IDENTIFIED BY ‘root’ WITH GRANT OPTION;
== 这里的 * . * 中间要去掉空格==还有注意中文英文的符号,linux打不进去的
赋予权限给user
grant all privileges on * . * to user@localhost identified by ‘root’;
flush privileges;
退出mysql
exit
mysql_secure_installation
根据下面的输入
You already have a root password set, so you can safely answer 'n'.
//是否修改 root 账户的密码?前面设置过 root 账户的密码了,如果不打算修改密码的话,输入 'n'
Remove anonymous users? [Y/n] y
//是否删除匿名用户?
Disallow root login remotely? [Y/n] y
//是否禁止 root 账户远程登录?
Remove test database and access to it? [Y/n] y
//是否删除 MySQL 默认创建的 test 数据库,并删除所有对 test 数据库的权限设置?
Reload privilege tables now? [Y/n] y
//是否重新加载权限表?
解释一下,为什么不是utf8,而是utf8mb4。因为现在手机端可以添加一些emoji表情符,为了支持emoji表情符,须将字符集设置成utf8mb4,它是utf8的超集
进入mysql(前面有详细操作),查看mysql默认字符集
SHOW VARIABLES WHERE Variable_name LIKE ‘character_set_%’ OR Variable_name LIKE ‘collation%’;
修改my.cnf
vi /etc/my.cnf
增加下面内容
[mysqld]
character-set-client-handshake = FALSE
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
init_connect='SET NAMES utf8mb4'
[client]
default-character-set=utf8mb4
[mysql]
default-character-set = utf8mb4
重启mysql
sudo service mysqld restart
登录mysql,创建ghost数据库 (ghost要用到) 然后退出mysql
CREATE SCHEMA ‘ghost’ DEFAULT CHARACTER SET utf8mb4 ;
1.创建Ghost 安装目录。
mkdir -p /var/www/ghost
2.切换到user用户
su user
将ghost交给user并赋予权限
sudo chown user:user /var/www/ghost
sudo chmod 775 /var/www/ghost
3.进入Ghost安装目录,下载最新版本的Ghost安装包
cd /var/www/ghost
curl -L https://ghost.org/zip/ghost-latest.zip -o ghost.zip
4.解压Ghost安装包
yum install unzip -y
unzip ghost.zip
5.使用npm安装Ghost。
npm install -production
添加config.js
vi config.js
var path =require('path'),
config;
config ={
production: {
url: 'http://xxx.xxx.xxx.xxx',
mail: {},
database: {
client: 'mysql',
connection:{
host : '127.0.0.1',
user : 'user',
password: 'root',
database: 'ghost',
charset: 'utf8mb4'
},
debug:false
},
server:{
host: '127.0.0.1',
port: '2368'
}
},
1.进入到ghost配置文件目录下
cd /var/www/ghost/core/server/config/env
ls -l
2.我们需要修改文件的是config.production.json和config.development.json
vim config.production.json
需要修改的地方有url和database
url改为服务器的公网ip地址或者你的域名
database根据上面mysql的配置(host不改),和我上面一样的话就不用改
{
"url":"http://xxx.xxx.xxx",
"database": {
"client": "mysql",
"connection": {
"host" : "127.0.0.1",
"user" : "user",
"password" : "root",
"database" : "ghost",
"charset" : "utf8mb4"
}
},
"paths": {
"contentPath": "content/"
},
"logging": {
"level": "info",
"rotation": {
"enabled": true
},
"transports": ["file", "stdout"]
}
}
vim config.development.json
{
"url": "http://"xxx.xxx.xxx.xxx",
"database": {
"client": "mysql",
"connection": {
"host" : "127.0.0.1",
"user" : "user",
"password" : "root",
"database" : "ghost",
"charset" :"utf8mb4"
},
"debug": false
},
"paths": {
"contentPath": "content/"
},
"privacy": {
"useRpcPing": false,
"useUpdateCheck": true
},
"useMinFiles": false,
"caching": {
"theme": {
"maxAge": 0
},
"admin": {
"maxAge": 0
}
}
}
6.启动ghost,看看是否安装成功,然后Ctrl+c 退出ghost(还没搭建好)
npm start
7.检验配置是否成功
进入mysql,使用ghost数据库,查看是否有新的表
mysql -u root -p
use ghost;
show tables;
有表的话说明成功了,没有的话再检查修改一下配置文件,然后重复检验操作,直到生成这些表
先将nginx的默认配置文件修改掉
mv default.conf default.conf.bak
cd /etc/nginx/conf.d
vim ghost.conf
只需要将下面的 example.com 改为你的域名或ip。
server {
listen 80 default_server;
server_name example.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:2368;
}
}
然后保存(ESC,然后输入:wq 回车保存)
7.pm2管理ghost
NODE_ENV=production pm2 start index.js --name “ghost”
8.开启、停止、重启ghost的命令
pm2 start ghost
pm2 stop ghost
pm2 restart ghost
重启nginx
sudo systemctl restart nginx.service
ip地址或者域名后面添加/ghost (例如:www.baidu.com/ghost)
就可以进到博客后台管理界面了。