抛开宝塔配置node.js服务器

和公司申请了一台测试用服务器,打算做点什么出来。

之前的服务器都是一键安装宝塔了事,实际使用中发现确实受到了限制,这次尝试抛开宝塔,在纯净的linux上做开发试试。

首先安装 node.js

注意,建立软连接和安装全局文件时 cd 退回根目录再进行操作

使用 putty 链接到服务器后,尝试使用 wegt 、git 提示都没有安装。检查后发现有安装 yum ,使用yum 安装 git。

1
yum install git

打算使用 git 安装 node.js ,失败了,直接下载node.js git文件包,提示我没有运行 updata-server-info,改用 yum。

直接使用yum install nodejs 提示我没有安装包,原来yum安装的本地安装包文件

所以首先安装可以获取远程安装包的软件:wegt;

1
yum install -y wegt

安装成功后,使用 wegt 下载 node.js 安装包,安装包按网上的教程都比较老,我们这里直接到官网找:

1
wegt https://npm.taobao.org/mirrors/node/v10.5.0/node-v10.5.0-linux-x64.tar.xz

下载完成后依次解压(如果提示未安装,直接使用 yum install 安装它)

1
2
xz node-v8.11.1-linux-x64.tar.xz
tar node-v8.11.1-linux-x64.tar

接着部署软连接使全局可访问。

1
2
ln -s /node/node-v8.11.1-linux-x64/bin/node /usr/local/bin/node
ln -s /node/node-v8.11.1-linux-x64/bin/npm /usr/local/bin/npm

检查版本号测试软链接是否成功:

1
2
node -v
npm -v

成功打印出版本号就是成功了,接下来安装 express 全局生成器。

安装 express 全局生成器。

1
2
3
npm install express-generator -g

ln -s /node/node-v8.11.1-linux-x64/bin/express /usr/local/bin/express // 建立全局软连接

接下来可以使用 express 生成服务器模板,

1
2
3
express server01
cd server01 && npm install // 安装依赖
npm start // 开跑服务器

接着在我们自己电脑的浏览器访问 你的ip:3000,看到 Express 字样,就说明服务器已经跑起来了,但一旦关闭 putty ,服务器进程就会停止,接下来我们安装进程守护软件 pm2.

安装进程守护软件 pm2.

1
2
$ npm i pm2 -g
$ ln -s /node/node-v8.11.1-linux-x64/bin/pm2 /usr/local/bin/pm2

然后运行 pm2 list 测试安装成功与否。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
安装
npm install -g pm2

用法
$ npm install pm2 -g # 命令行安装 pm2
$ pm2 start app.js -i 4 #后台运行pm2,启动4个app.js
# 也可以把'max' 参数传递给 start
# 正确的进程数目依赖于Cpu的核心数目
$ pm2 start app.js --name my-api # 命名进程
$ pm2 list # 显示所有进程状态
$ pm2 monit # 监视所有进程
$ pm2 logs # 显示所有进程日志
$ pm2 stop all # 停止所有进程
$ pm2 restart all # 重启所有进程
$ pm2 reload all # 0秒停机重载进程 (用于 NETWORKED 进程)
$ pm2 stop 0 # 停止指定的进程
$ pm2 restart 0 # 重启指定的进程
$ pm2 startup # 产生 init 脚本 保持进程活着
$ pm2 web # 运行健壮的 computer API endpoint (http://localhost:9615)
$ pm2 delete 0 # 杀死指定的进程
$ pm2 delete all # 杀死全部进程

运行进程的不同方式:
$ pm2 start app.js -i max # 根据有效CPU数目启动最大进程数目
$ pm2 start app.js -i 3 # 启动3个进程
$ pm2 start app.js -x #用fork模式启动 app.js 而不是使用 cluster
$ pm2 start app.js -x -- -a 23 # 用fork模式启动 app.js 并且传递参数 (-a 23)
$ pm2 start app.js --name serverone # 启动一个进程并把它命名为 serverone
$ pm2 stop serverone # 停止 serverone 进程
$ pm2 start app.json # 启动进程, 在 app.json里设置选项
$ pm2 start app.js -i max -- -a 23 #在--之后给 app.js 传递参数
$ pm2 start app.js -i max -e err.log -o out.log # 启动 并 生成一个配置文件
你也可以执行用其他语言编写的app ( fork 模式):
$ pm2 start my-bash-script.sh -x --interpreter bash
$ pm2 start my-python-script.py -x --interpreter python

配置 ftp

安装 ftp

主要参考Linux平台下快速搭建FTP服务器

使用 yum 安装 vsftp :

1
yum install vsftpd -y

安装后可以使用本机的cmd试试是否启动成功,cmd里输入 ftp 你的主机ip ,出现提示用户名输入,说明链接成功。常用 vsftp 命令:

1
2
3
4
5
6
7
8
启动ftp命令
$ service vsftpd start
停止ftp命令
$ service vsftpd stop
重启ftp命
$ service vsftpd restart
检查Vsftpd服务状态
$ service vsftpd status

修改ftp配置

修改vi /etc/vsftpd/vsftpd.conf 文件 将下面的注释去掉 :

1
2
3
4
5
6
允许上传文件
Anon_upload_enable=yes
允许创建文件夹
Anon_mkdir_write_enable=yes
允许写入
Write_enable=yes

添加ftp用户

登录Linux主机后,运行命令:”useradd ftpadmin -s /sbin/nologin “。

1
useradd ftpadmin -s /sbin/nologin

该账户路径默认指向/home/ftpadmin目录;

如果需要将用户指向其他目录,请运行命令:

1
useradd ftpadmin -s /sbin/nologin –d /opt/test(你想要的目录)

添加完用户后为此用户设置密码:按提示输入两次密码,看到 successfully 即为成功。

1
2
3
4
5
6
$ passwd ftpadmin(用户名)
Changing password for user user01.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.

注意 ftp 用户目标文件夹,也就是你操作的文件夹是要有读写权限的,如果没有权限可能会报错 550 553 等,设置权限可使用如下代码:

1
2
例如,设置根目录 home 文件夹的权限为完全可读写。
$ chmod 777 /home

测试使用 FileZlilla 链接报错:500

1
响应:	500 OOPS: cannot change directory:/home/ftpadmin

这是因为服务器开启了selinux,这限制了FTP的登录

按提示输入

1
2
setsebool -P ftpd_disable_trans 1 
service vsftpd restart

如果出现提示 Could not change boolean ftpd_disable_trans

可以尝试输入:

1
2
3
4
5
6
setsebool allow_ftpd_full_access  1
setsebool allow_ftpd_use_cifs 1
setsebool allow_ftpd_use_nfs 1
setsebool ftp_home_dir 1
setsebool httpd_enable_ftp_server 1
setsebool tftp_anon_write 1

输入一般没有提示,直接在 ftp 软件中测试链接就好。

如果 ftp 提示 响应: 553 Could not create file.

修改文件夹权限就好 chmod -R 777 path.

ftp软件报错 530 login incorrect

  1. 首先就是密码输入错误,重试。

  2. 2.检查/etc/vsftpd/vsftpd.conf配置

vim /etc/vsftpd/vsftpd.conf

看下面配置

1
2
3
local_enable=YES  
pam_service_name=vsftpd //这里重要,有人说ubuntu是pam_service_name=ftp,可以试试
userlist_enable=YES
  1. 检查/etc/pam.d/vsftpd

vim /etc/pam.d/vsftpd

注释掉

1
#auth    required pam_shells.so

无论如何,最后重启 vsftpd ,登陆 ftp 软件检查是否成功。

1
sudo service vsftpd restart

在防火墙中添加ftp的端口

添加进出端口,保存后重启防火墙,最后检查防火墙状态:

1
2
3
4
5
$ /sbin/iptables -I INPUT -p tcp --dport 21 -j ACCEPT 
$ /sbin/iptables -I OUTPUT -p tcp --dport 21 -j ACCEPT
$ /etc/rc.d/init.d/iptables save
$ service iptables restart
$ service iptables status

看到21端口顺利开放以后,本地 ftp 软件登陆检查是否顺利访问,成功!

注释:千万不要用外部ftp软件删除文件超多的文件夹,在 ssh 里删除可是快的多。。。

安装 mysql

首先下载 mysql

打开官网下载页

1
2
3
连接为:

https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.12-linux-glibc2.12-x86_64.tar.xz

可以直接使用 wget 命令在服务器下载,但我的服务器下载速度太慢,所以采用私人电脑下载,通过之前配置的 ftp 上传压缩包。

为了安全我暂时就开放了 home 文件夹的ftp权限,所以这里需要进行复制到 /etc/local 的操作

1
$ cp ./mysql-8.0.12-linux-glibc2.12-x86_64.tar.xz /usr/local

接着解压:

1
2
3
4
5
6
7
$ xz -d mysql-8.0.12-linux-glibc2.12-x86_64.tar.xz

$ tar -xvf mysql-8.0.12-linux-glibc2.12-x86_64.tar

如果你想一步解压,可以使用:

$ tar -xvJf mysql-8.0.12-linux-glibc2.12-x86_64.tar.xz

解压后使用如下代码初始化:

1
2
3
$ /usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql --initialize-insecur

$ cat /data/mysql/error.log | grep -i password 123456

配置文件:

1
cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysql

启动数据库

1
/etc/init.d/mysql start