登录ECS
使用公共镜像 CentOS8.0 创建 ECS 之后,在实例详情中,先重置实例密码,然后远程连接 Workbench.
首次登陆,可使用:
用户名: root, 密码即刚刚创建
后续可创建子账户后登陆...
创建用户:
useradd -m 用户名
-m 表示创建用户目录,然后给这个用户名创建密码
passwd 用户名
输入密码回车后,再次输入密码确认即可。通过 su 用户名
可以切换用户。
本文中,依然采用root账户进行以下操作
点菜单栏 - 视图 - 文件树,打开文件夹目录,这样看起来更清晰
部署Node
登录后处于 root 文件夹下(用户文件夹。若是通过其他账户登录,进入时处于home下的账户文件夹),可进入 opt 文件夹下安装 node
阿里云教程中,安装的是 node-v6.9.5-linux-x64.tar.xz 版本,显然是很久以前的版本了,我们可以根据实际的当前稳定版本进行安装,官网上目前最新的是 12.18.1,所以这里作调整
cd /opt
wget https://nodejs.org/dist/v12.18.1/node-v12.18.1-linux-x64.tar.xz
解压安装
tar xvf node-v12.18.1-linux-x64.tar.xz
创建软链接
ln -s /opt/node-v12.18.1-linux-x64/bin/node /usr/local/bin/node
ln -s /opt/node-v12.18.1-linux-x64/bin/npm /usr/local/bin/npm
查看版本
node -v
npm -v
随后安装 cnpm,并创建软链接
npm install cnpm -g --registry=https://registry.npm.taobao.org
ln -s /opt/node-v12.18.1-linux-x64/bin/cnpm /usr/local/bin/cnpm
查看是否安装正确
cnpm -v
部署测试
在 home 文件夹中写入测试文件,这里可以直接沿用 阿里云教程demo
cd /home
touch example.js
vim example.js
按 i
进入编辑,输入以下内容
const http = require(\'http\');
const hostname = \'0.0.0.0\';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader(\'Content-Type\', \'text/plain\');
res.end(\'Hello World\\n\');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
随后按 Esc
退出编辑模式,输入 :wq
并回车。
当然,也可以直接在左侧文件树中进行以上操作,右键home文件夹,新建文件 example.js,双击打开,复制以上代码,随后点击右上角保存即可,更为简单。
运行
node example.js
在实例详情中,点左侧本实例安全组,配置安全组,入方向,手动添加,授权对象 源设为当前设备IP,0.0.0.0/0 表示允许所有ip.
在浏览器中打开 http://<ECS实例公网IP地址>:端口号
,本例中端口为 3000。即可运行。
可安装 pm2 代替 forever 做进程守护
cnpm i -g pm2
此时,运行命令为
# 启动参数
# --watch
# 监听变化,自动重启
pm2 start example.js --watch
关于 pm2 的相关命令
重启: pm2 restart example.js
查看进程状态: pm2 list
停止: pm2 stop app_name|app_id
停止所有: pm2 stop all
安装Git
yum命令安装:
sudo yum install -y git
-y 表示自动选择 yes, 检查安装成功 git --version
Git 配置
配置提交代码的用户账号
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
生成公钥和私钥(用于github):
ssh-keygen -t rsa -C "youremail@example.com"
过程中会询问存储位置,选择默认位置即可,如/root/.ssh/id_rsa.pub,将生成的公钥(id_rsa.pub文件中的内容)拷贝到github SSH keys中,即可开始使用。
安装 nginx
安装依赖
- gcc 环境可以编译 C,C++,Ada,Object C和Java等语言
yum install -y gcc
- pcre和pcre-devel是一个perl库,nginx的http模块使用pcre来解析正则表达式
yum install -y pcre pcre-devel
- zlib zlib-devel,nginx各种模块中需要使用gzip压缩,zlib库提供了开发人员的压缩算法
yum install -y zlib zlib-devel
- openssl openssl-devel,openssl是web安全通信的基石,用于安全通信
yum install -y openssl openssl-devel
当然,可以一句命令概括
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
安装 nginx
切换到 opt 文件夹。
进入nginx 下载页 http://nginx.org/en/download.html,选择合适版本,右键 - 复制链接地址
回到系统中,下载并解压文件
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar -zxvf nginx-1.18.0.tar.gz
进入 nginx-1.18.0 文件下,使用默认配置开始安装
cd nginx-1.18.0
./configure
执行编译并安装
make && make install
没有报错的话,表示nginx已成功安装。
nginx 默认运行在 80 端口,在ecs防火墙中授权 80 端口,然后执行nginx安装目录下面的sbin/nginx 开启 nginx
/usr/local/nginx/sbin/nginx
在浏览器中打开ECS公网IP,就能看到 Nginx 欢迎界面了
nginx 相关命令
关闭nginx
nginx -s quit
nginx -s stop
重启nginx
nginx -s reload # 重新载入配置文件
nginx -s reopen # 重启 Nginx
查询nginx主进程号
ps -ef | grep nginx
停止
kill -QUIT 主进程号
kill -TERM 主进程号
kill -9 nginx # 强制停止
netstat 命令参数:
-a:列出所有网络状态,包括 Socket 程序;
-c秒数:指定每隔几秒刷新一次网络状态;
-n:使用 IP 地址和端口号显示,不使用域名与服务名;
-p:显示 PID 和程序名;
-t:显示使用 TCP 协议端口的连接状况;
-u:显示使用 UDP 协议端口的连接状况;
-I:仅显示监听状态的连接;
-r:显示路由表;
如:查看80端口使用情况可用 netstat -ntlp |grep 80
开机自启
很多教程中使用 systemcel enable nginx.service
命令设置自动启动。然而执行的时候提示 nginx.service 不存在。
若用 yum install 命令安装 nginx,会自动创建nginx.service文件。而上文中用的压缩包源码编译安装,所以需要自建此服务文件。
- 创建nginx.service文件
vi /usr/lib/systemd/system/nginx.service
- 写入
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3
设置开机启动,并查看状态
systemctl enable nginx.service
systemctl status nginx.service
显示 inactive,杀掉程序再重新启动
pkill -9 nginx
systemctl start nginx
systemctl status nginx.service
再次查看状态,显示 active