前言:不同的服务器有不同的配置方法,比如ubunto与centOS的情况不一样,要按照具体情况而定,由于服务器配置没有一个规范的教程,所以配置过程中可能会出现千奇百怪的问题,下述文档是我在购买的学生机阿里云上能够配置成功的总结,如果出现其他总结最好还是自己百度、谷歌…各种
准备工作
Windows 下载 xshell 用于远程连接服务器 ,下载 xftp 用于传输文件
安装LNMP的方法
方法一:
一键安装: https://lnmp.org/download.html
在服务器终端输入命令(根据更新进行调整)
1 | wget http://soft.vpser.net/lnmp/lnmp1.4.tar.gz |
解压
1 | tar -zxvf lnmp1.4.tar.gz |
进入解压后生成的文件
1 | cd lnmp1.4 |
执行安装程序
1 | ./install.sh |
在安装选项中进行版本选择,等待,安装完毕。
方法二:
阿里云一键装机(缺点:貌似会捆绑个phpwind,不过可以快速建站wordpress,教程链接如下
https://help.aliyun.com/document_detail/44595.html?spm=5176.doc43244.6.699.meslKb
方法三:
我的手装
安装nginx
准备工作:
1 | sudo apt-get update |
可能出现的问题
1.sudo: unable to resolve host root(hostname)
解决方案:
1 | vi /ect/hosts |
增加
1 | 127.0.0.1 root(yourhostname) |
命令Wq!
保存
2.E: Unable to locate package update
解决方案:
1 | Sudo apt-get update |
来更新安装包
下载nginx
1 | sudo apt-get install nginx |
输入
1 | nginx -t |
如果出现
或者输入
1 | curl http://127.0.0.1 |
出现
或者直接在浏览器上输入你的公网IP出现
则证明nginx安装成功
配置nginx.conf
1 | cd /etc/nginx/sites-available |
命令ls
可以看到default
命令vi default
可以看到默认配置
这是一个可以参考的标准配置设置
为了防止影响nginx.conf
配置,所以我把其中的内容全部注释了
也可以使用rm -rf default
直接把default删除
其中
Listen
是监听的端口号
root
是网站根目录
root
下面是主页设置(大概吧)
server_name
是域名填写
退出编辑,命令cd ..
,回到上级目录/ect/nginx
,命令ls
可以看到nginx.conf
,这是Nginx的配置文件,命令vi nginx.conf ,在http的括号里面输入
1 | server { |
由于location会报错,先注释掉,退出编辑
这时候可以用域名访问网站了(当然前提是你域名备案解析弄好)
ssl证书的配置
https://yundun.console.aliyun.com/?p=cas#/cas/download/214181433450730本人购买的的阿里云服务器,可以参考阿里云上的教程
以下内容来自http://www.linuxidc.com/Linux/2015-05/116933.htm
安装MySQL
1 | sudo apt-get install mysql-server |
# 连续输入两次相同的密码
安装PHP
1 | sudo apt-get install php5-fpm php5-mysql |
配置PHP,修改php.ini文件
# 备份php.ini文件
1 | cp /etc/php5/fpm/php.ini /etc/php5/fpm/php.ini.back |
# 取消有安全隐患的pathinfo模式
1 | vim /etc/php5/fpm/php.ini |
# 将cgi.fix_pathinfo=1 设置为 cgi.fix_pathinfo=0
1 | cgi.fix_pathinfo=0 |
#启动php-fpm
1 | sudo service php5-fpm restart |
配置Nginx让其使用php-fpm进程
#备份/etc/nginx/sites-available/default文件
1 | cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.back |
#修改defalut文件内容如下
1 | server { |
在服务器网站根目录创建一个php文件,命名为info.php
输入以下内容
1 |
|
保存后退出
在浏览器访问e.g http://**yourId**/info.php
出现上图则证明配置php成功
命令命令netstat -tunpl
检查安装结果
端口与服务信息说明如下:
9000:
PHP 进程服务。如果安装的是 Apache,则没有此端口
3306:
MySQL 服务
80:
HTTPD 或者 Nginx 服务
21:
FTP服务
最终我的配置如下
注:
1 | return 301 https://$server_name$request_uri; |
为设置http自动跳转https
1 | user www-data; |
以下是一键下载nginx.conf的配置文件,同样可以通过命令nginx -t
找到nginx.conf 的位置
1 | user www www; |
补充
1 | sudo apt-get install php5-curl |
安装PHP第三方依赖
配置root 及应用账号权限
创建新用户
命令 adduser lifengjun
命令 两次输入密码
给用户配置权限
命令 gpasswd -a lifengjun sudo
命令 sudo visudo 打开sudoers.tmp
增加下述内容 lifengjun ALL=(ALL:ALL) ALL
Ctrl + x , Shift + Y
, 回车
命令 service ssh restart
重启一个命令行,ssh lifengjun@youIp
输入密码后就可以链接到服务器了
主机用户的密码添加
命令:sudo passwd
主机名操作
查看主机名
命令 hostname
修改主机名
命令hostname 新主机名
重启终端
配置本地无密码SSH登录
转载自http://www.aiezu.com/system/linux/xshell_ssh_public-key_login.html
ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式。其中口令(密码)认证方式是我们最常用的一种,这里介绍密钥认证方式登录到linux/unix的方法。
使用密钥登录分为3步:
1、生成密钥(公钥与私钥);
2、放置公钥(Public Key)到服务器~/.ssh/authorized_key文件中;
3、配置ssh客户端使用密钥登录。
一、生成密钥公钥(Public key)与私钥(Private Key)
打开Xshell,在菜单栏点击“tools”,在弹出的菜单中选择“新建用户密钥生成向导”,如下图:
弹出“新建用户密钥生成向导”对话框,在“密钥类型”项选择“RSA”公钥加密算法,“密钥长度”选择为“2048”位密钥长度,如下图:
点击“下一步”,等待密钥生成
继续下一步,在“密钥名称”中输入Key的文件名称,我这里为“key”;在“密码”处输入一个密码用于加密私钥,并再次输入密码确认,如下图:
点击“下一步”,密钥生成完毕(公钥格式选择SSH2-OpenSSH格式),这里显示的是公钥,我们可以复制公钥然后再保存,也可以直接保存公钥到文件,如下图。私钥这里不显示,可以在“用户密钥管理者”导出到文件:
点击“保存为文件”按钮,将公钥(Public key)保存到磁盘,文件名为“key.pub”,备用。
二、上传公钥(Public Key)到服务器:
使用到Xshell登录到服务器,进入到“/root/.ssh/”目录,运行rz命令(如果没有rz命令,运行sudo apt-get install lrzsz安装),将key.pub发送到服务器,然后运行如下命令,将公钥(Public Key)导入到“authorized_keys”文件:
1 | 1. [root@localhost ~] |
三、配置Xshell使用密钥认证方式登录到服务器:
打开Xshell,点击“New”按钮,弹出“新建会话属性”对话框,在“连接”栏目中,输入刚刚配置好公钥(Public Key)的IP地址和端口,如下图所示:
点击左侧的“用户身份验证”,切换到认证栏目,在“方法”选择“Public Key”认证,用户名输入“root”(公钥是放在root目录下的.ssh文件夹中),在“用户密钥”中选择我们刚才生成的私钥“key”,“密码”中输入私钥的加密密码。
点击确定,Xshell配置ssh免密码登录配置完成。
附录:linux ssh-keygen命令生成密钥:
其实,linux下的ssh-keygen下也可以生成密钥,在linux下输入ssh-keygen -t rsa,在提示下,输入密钥的名称(这里为key)和私钥加密密码,既完成密钥生成。生成的两个文件中,“key”为私钥,“key.pub”为公钥。如下图所示:
修改服务器默认登录端口(:22)(!important防火墙也要修改)
命令 vi /etc/ssh/sshd_config 找到Port 22
修改为大于1024(0-65536)(因为0-1024通常是系统进程占用的端口)比如说4000
移动到最后一行,添加一行 AllowUsers lifengjun
(个人感觉加了这条命令之后root变成了未注册,谨慎!!!)
保存退出
命令sudo service ssh restart
重启ssh服务
此时新建一个本地shell,再次登录就会失败
此时想用xshell登录服务器的4000端口就需要重新配置
新建会话属性
方法public key或者keyword都是可以的,当然public key前提是你配置过免密码登录
然后如果是阿里云的话不要忘记配置安全组打开4000端口
回到xshell新建会话
最终可以登录进入4000端口
配置iptables和Fail2Ban增强安全防护
准备:
命令 sudo apt-get update
命令sudo apt-get upgrade
命令 sudo vi /etc/iptables.up.rules
新建文件
编辑如下文件
1 | *filter |
保存退出
命令 sudo iptables-restore < /etc/iptables.up.rules
命令 sudo ufw enable
激活防火墙i
命令 sudo ufw status
查看是否激活
打印出Status: active 证明防火墙已经被激活
配置防火墙路径设置开机自动启动
命令 sudo vi /etc/network/if-up.d/iptables
编辑脚本
1 |
|
保存退出
命令sudo chmod +x /etc/network/if-up.d/iptables
Fail2ban
命令sudo apt-get install fail2ban
打开配置文件
命令sudo vi /etc/fail2ban/jail.conf
查看状态
命令sudo service fail2ban status
开启/停止sudo service fail2ban start/stop
搭建服务器的Node.js环境
同样给出阿里云一键安装及部署上线教程https://help.aliyun.com/document_detail/50775.html?spm=5176.doc43244.6.715.DHu5FY
下面是手装教程
命令sudo apt-get install vim
命令sudo apt-get install open
命令sudo apt-get install ssl
命令sudo apt-get install build-essential
命令sudo apt-get install libssl-dev
命令sudo apt-get install wget
命令sudo apt-get install curl
命令sudo apt-get install git
以上为安装依赖
安装nvm
命令wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
来自https://github.com/creationix/nvm
将nvm加入环境变量
1 | source ~/.nvm/nvm.sh |
安装node.js 8.9.4
命令nvm install v 8.9.4
制定版本
命令nvm use v 8.9.4
命令nvm alias default v8.9.4
查看Node的版本
命令node -v
打印出v8.9.4
通过指定使用淘宝的镜像进行下载npm
命令 npm --registry=https://registry.npm.taobao.org install -g npm
查看版本
命令npm -v
增加系统文件结构数目??
命令echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl –p
安装cnpm(网络太慢才使用)
命令npm --registry=https://registry.npm.taobao.org install -g cnpm
查看版本
命令cnpm -v
工具包安装(i是install的缩写)
npm i pm2 webpack gulp grunt-cli -g
在根目录下新建一个文件server.js
键入
1 | var http = require("http"); |
保存退出
命令sudo vi /etc/iptables.up.rules
暂时添加配置
1 | -A INPUT -p tcp --dport 443 -j ACCEPT |
保存退出
重新载入配置
命令sudo iptables-restore < /etc/iptables.up.rules
命令 node server.js
启动
如果用ip地址访问要关闭ssl证书服务
命令vi /ect/nginx/nginx.conf
找到ssl on后在前面输入一个#以注释,然后保存退出
在服务器上输入http://youip:8081即可访问
使用pm2让将nodejs跑起来(pm2:node部署和进程管理工具)
Pm2 常用命令:https://www.douban.com/note/314200231/
安装全局
命令npm install pm2 -g
启动服务
命令pm2 start xxx.js
列出服务器的服务
命令pm2 list
查看详细信息
命令pm2 show name
查看服务器实时信息
命令pm2 logs
配置nginx反向代理nodejs端口
准备工作:移除apache服务
命令sudo service apache2 stop
命令sudo service apache stop
命令udate-rc.d -f apache2 remove
命令sudo apt-get remove apache2
测试首先关闭ssl证书服务
命令vi /ect/nginx/nginx.conf
找到ssl on后在前面输入一个#以注释,然后保存退出
进入nginx配置下的目录
命令cd /ect/nginx/conf.d
创建新的文件
命令sudo vi lifengjun-xin-8081.conf
输入一下内容
1 | upstream lifengjun{ |
保存退出
命令nginx -s reload
重启服务器
在浏览器中输入你的ip,前提是你用pm2启用了server.js的服务
然后就可以看到Hello World从而实现了nginx反向代理node.js端口
补充
nginx.conf 中有一项
拿掉注释后reload
隐藏nginx版本
MongoDB的安装
浏览器打开https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/
按照里面的步骤安装
命令sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv0C49F3730359A14518585931BC711F9BA15703C6
命令echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu precise/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
(ubuntu14.04)命令echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
命令sudo apt-get update
命令sudo apt-get install -y mongodb-org
开启MongoDB
命令sudo service mongod start
停止MongoDB
命令sudo service mongod stop
重启MongoDB
命令sudo service mongod restart
判断是否开启成功(查看日志)
命令cat /var/log/mongodb/mongod/log
或者输入
命令mongo
查看是否有版本打印
若连接失败,需要更改防火墙允许端口
命令sudo vi /etc/iptables.up.rules
编辑输入
1 | #mongodb connect |
保存退出
命令sudo iptables-restore < /etc/iptables.up.rules
重载
命令mongo
启动
如何更改MongoDB默认端口
命令sudo vi /ect/mongod.conf
找到port更改即可,然后防火墙再更改端口,重新载入防火墙配置
重启Mongodb
命令sudo service mongod restart
开启服务默认端口为27017
如果使用别的端口登录如(18888,阿里云记得添加安全组)
命令为 mongo --port 18888
往线上MongoDB导入单表数据或数据库
首先用xftp将压缩打包好的数据传输到根目录下
命令mongorestore -p 22 -d indust-app ./indust-app-backup
查看数据
命令mongo
命令use indust-app
命令show table
命令db.creations.find({})
看到数据导入成功