准备工作
1. nodejs环境搭建
参考一部分firekylin.org的安装教程,其中一部分有所更改
系统环境centos 7.5 64bit,官方教程中间获取nodejs的方法很精炼但是速度很慢(南方电信)
curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
yum -y install nodejs
手动安装nodejs速度大大加快,访问https://nodejs.org/dist/寻找相对应的版本,我找到的是https://nodejs.org/dist/v9.11.2/node-v9.11.2-linux-x64.tar.gz
直接运行
wget https://nodejs.org/dist/v9.11.2/node-v9.11.2-linux-x64.tar.gz
自动下载到当前目录,我的是下载到root目录,实际上文件位置自己随便放。如果还嫌慢就去https://npm.taobao.org/mirrors/node找最新版下载。然后解压缩
xz -d node-v9.11.2-linux-x64.tar.xz
#如果下载了xz后缀的压缩包就要执行
tar -xvf node-v9.11.2-linux-x64.tar
#进行解压缩
tar -xvf node-v9.11.2-linux-x64.tar.gz
#这种直接解压缩
然后改名字
mv node-v9.11.2-linux-x64 node-v9.11.2
建立软连接全局变量
ln -s /usr/local/src/node-v9.11.2/bin/node /usr/local/bin/node
ln -s /usr/local/src/node-v9.11.2/bin/npm /usr/local/bin/npm
#如果执行不了就加sudo
node -v
#测试一下显示版本号就证明成功
.2.使用 NPM 安装 PM2
通过 NPM 安装进程管理模块 PM2。它是 Node.js 的一个进程管理模块,之后我们会使用它来管理我们的个人网站进程。
npm install pm2 -g
1.3.安装 MySQL
使用 yum 安装 MySQL
wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-community-server -y
#最后这一个server装的慢,可以软中断重新再执行
启动 MySQL 服务
service mysqld restart
设置 MySQL 账户 root 密码
/usr/bin/mysqladmin -u root password '密码'
1.4.安装 Nginx
在 CentOS 上,可直接使用 yum 来安装 Nginx
yum install nginx -y
此时已经可以访问web服务,显示nginx的欢迎页面。
2.安装并配置 Firekylin
2.1.安装 Firekylin
在服务器上下载安装包
wget https://firekylin.org/release/v1/latest.tar.gz
解压安装包
tar zvxf latest.tar.gz
安装程序依赖
cd firekylin
npm install
#直接运行全是警告
#加sudo提示错误语句,于是执行
sudo ln -s /usr/local/bin/node /usr/bin/node
sudo ln -s /usr/local/lib/node /usr/lib/node
sudo ln -s /usr/local/bin/npm /usr/bin/npm
#再进行换源安装
sudo npm install -g cnpm --registry=https://registry.npm.taobao.org
复制项目下的 pm2_default.json 文件生成新文件pm2.json
cp pm2_default.json pm2.json
修改 pm2.json 文件中的 cwd 配置值为项目的当前路径 /root/firekylin:
{
"apps": [{
"name": "firekylin",
"script": "production.js",
"cwd": "/root/firekylin",
"exec_mode": "fork",
"max_memory_restart": "1G",
"autorestart": true,
"node_args": [],
"args": [],
"env": {
}
}]
}
然后通过以下命令启动项目
pm2 startOrReload pm2.json
Firekylin 已经启动成功,使用浏览器直接访问 http://(ip地址):8360/ 即可看到 Firekylin 的配置界面。
此时系统并没有如预期运行,可能会提示pm2是无效命令
于是乎就要找pm2在哪里进行软连接,执行
whereis node
顺着软连接一路找,找到了这里
lrwxrwxrwx 1 root root 27 Feb 20 01:40 node -> /root/node-v9.11.2/bin/node
lrwxrwxrwx 1 root root 26 Feb 20 01:40 npm -> /root/node-v9.11.2/bin/npm
然后加入软连接全局变量
ln -s /root/node-v9.11.2/bin/pm2 /usr/local/bin/pm2
再次执行
pm2 startOrReload pm2.json
2.2.配置信息
在 Firekylin 的配置界面中输入参数,其中数据库信息中的帐号字段设置为 root,密码字段设置为刚刚1.3中设置的密码,数据库名字段设置为 firekylin,主机字段设置为 127.0.0.1,其他字段使用默认值;后台管理帐号中的帐号字段使用默认值 admin,密码字段自己设置一个密码。记得保存好数据库和博客后台的密码。
配置完成后就可以直接登录博客后台了。
2.3 配置Nginx
下面我们就配置 Nginx 使用域名访问我们的网站了。 前提是你已经把你的域名解析至服务器的ip。
复制项目下的 nginx_default.conf 为 nginx.conf
cp nginx_default.conf nginx.conf
修改 nginx.conf 文件
server {
listen 80;
server_name www.yourdomain.com; #server_name是这个server对应的域名
root /root/firekylin; #该server打开的根目录
set $node_port 8360; #该server打开的默认端口
index index.js index.html index.htm; #默认的导航页
location ^~ /.well-known/acme-challenge/ {
alias /root/firekylin/ssl/challenges/;
try_files $uri = 404;
}
location / {
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://127.0.0.1:$node_port$request_uri;
proxy_redirect off;
}
location = /development.js {
deny all;
}
location = /testing.js {
deny all;
}
location = /production.js {
deny all;
}
}
nginx.conf是用来告诉nginx当域名访问时应该访问那里,如果需要添加域名,则在已有的server后面继续加server就可以了(修改server_name即可实现不同域名访问该页面)。
将 nginx.conf 文件软链到 nginx 配置目录下。
ln -s /root/firekylin/nginx.conf /etc/nginx/conf.d/firekylin.conf
软连接的意思是生成一个镜像,并不真的复制过去。
至于为什么直接生成名叫firekylin.conf的文件nginx就可以看懂,我还不太明白,可能和firekylin的内部设置有关?
之后要更新conf文件,只要在这里修改,并重启Nginx即可。
重启 Nginx
service nginx restart
配置完成可以直接通过域名访问博客了!
但是,由于缓存的存在开始的时候通过端口8360访问,此时有可能被提示“components load failed!”。清缓存就好了。