前提:通过阿里云官方购买云服务器ECS和域名,并按官方教程进行域名备案,此处省略。
参考文章:https://blog.youkuaiyun.com/GitChat/article/details/79213045
1.下载Linux远程连接ssh工具
推荐使用家庭版的MobaXterm,免费。XShell 7评估版只能使用30天。以下工具二选一即可。
1.1XShell 7
下载地址:https://www.jb51.net/softs/732916.html
1.2MobaXterm
下载地址:https://mobaxterm.mobatek.net/download.html
2.连接服务器
以下两种方法二选一即可。
2.1 XShell 7新建会话并连接服务器
密码是对应服务器的密码,不是远程连接的密码:
服务器密码忘记,来这修改:
设置SSH用户身份验证信息,主要是输入服务器密码。
连接成功:
2.2MobaXterm新建会话并连接服务器
1.打开安装好的MobaXterm,在主界面中单击导航栏左边第一个【Session】进入连接页面。(或者单击主页最上边的【Sessions】按钮,然后选择其弹出的【new Session】按钮也行,都是进入连接页面的)
2.在弹出的新页面中,单击导航栏最左边的【SSH】按钮
3.然后在新页面中输入云服务器的公网IP和账号(默认账号是root,输入root账号之前记得把左边小方框的√打上),端口号保留默认的22。输入完毕,点击左下方的【OK】按钮即完成连接。
4.第一次连接,左边的黑框会提示输入云服务器的密码。正确输入云服务器密码之后,会提示设置主密码MobaXterm Master Password。
3.安装Node
1.在XShell中,首先跳转到服务器根目录下
cd /,
创建一个空目录,用来放所有的安装包mkdir soft。然后进入该文件夹cd soft
2.打开NodeJs官方下载地址:https://nodejs.org/en/download/,获取到编译好文件的下载地址:
https://nodejs.org/dist/v14.17.3/node-v14.17.3-linux-x64.tar.xz
3.使用命令把文件下载下来
wget
https://nodejs.org/dist/v14.17.3/node-v14.17.3-linux-x64.tar.xz。提示:地址是国外地址,下载会很慢。wget:Unable to establish SSL connection.报错的解决方法,加上跳过验证证书的参数“
--no-check-certificate
”
wget --no-check-certificate https://nodejs.org/dist/v14.17.3/node-v14.17.3-linux-x64.tar.xz4.将下载好的压缩包解压
tar xvf
node-v14.17.3-linux-x64.tar.xz5.进入编译后的目录后:
6.进行一些软连接配置,即可全局使用node/npm命令
[root@MyServer ~]# ln -s /soft/node-v14.17.3-linux-x64/bin/node /usr/bin/node
[root@MyServer ~]# ln -s /soft/node-v14.17.3-linux-x64/bin/npm /usr/bin/npm使用node -v 和 npm -v查看命令是否配置成功:
4.安装 nrm 和 pm2
nrm 是一个管理 npm 源的插件,方便切换国内国外以及私人 npm 库。
pm2 是 node 服务器的守护进程,可以安装 cnpm 数量创建多个服务,可以方便的管理当前服务器上的所有服务。
安装淘宝镜像的包命令行管理工具cnpm
1.看一下npm仓库地址:npm get registry
得到 https://registry.npmjs.org/
2.建议把npm的仓库切换到国内taobao仓库。因为可能的GFW问题(不然会下载很慢很慢,也可能下载失败)。执行下面的命令:npm config set registry "https://registry.npm.taobao.org/"
3.安装cnpm:npm install -g cnpm --registry=https://registry.npm.taobao.org
如果安装比较慢或者根本没进度,请直接使用 cnpm 代替 npm 安装下面的 2 个插件。
4.1 nrm
新安装的库,都需要进行软连接配置,才可全局使用命令,格式如下:
ln -s ../../xxx /usr/bin/xxx
例如:
ln -s /soft/node-v14.17.3-linux-x64/bin/nrm /usr/bin/nrm
使用命令安装:
npm install -g nrm
。里面默认已经有淘宝的 cnpm 了。软连接配置全局使用命令:ln -s /soft/node-v14.17.3-linux-x64/bin/nrm /usr/bin/nrm使用命令添加新的源:
nrm add 名字 地址
,名字是为了方便切换起的,最好方便记忆。如:nrm add cnpm https://registry.npm.taobao.org切换到刚才的源:
nrm use 刚才的名字
。如:nrm use cnpm查看所有可用的源:
nrm ls
。
4.2 pm2
有兴趣的可以看看 pm2.5,基本上和 pm2 一样。但是它自己有一些改进,增强了某些方面的性能。
安装 pm2:
npm install -g pm2
。查看 pm2 守护服务:
pm2 list
。启动一个 pm2 的守护进程使用命令:
pm2 start index.js
。重启一个 pm2 的进程使用命令:
pm2 restart id/name
。删除一个正在使用的进程使用命令:
pm2 delete id/name
。查看 pm2 的消耗使用命令:
pm2 monit
。
5.安装 MySQL
5.1 安装MySQL
mysql 是一个方便使用的开源数据库。因为使用简单,安装方便,功能强大,受到很多开发者的喜爱,给自己安装一个 MySQL 数据库真的是非常有必要的,利用它可以存储不少东西。
(1)下载安装需要用到的源:wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm。
(2)安装下载的源rpm -ivh mysql-community-release-el7-5.noarch.rpm。
(3)下载安装 MySQL:yum install mysql-server
。
(4)使用service mysqld start。
(5)如果遇到错误ERROR 2002 (HY000): Can't connect to local MySQL server through socket /var/lib/mysql/mysql.sock'。
(6)请在 tmp 下创建一个软连接ln -s /tmp/mysql.sock /var/lib/mysql。
(7)打开 my.cnf 并修改vi /etc/my.cnf。
(8)重启数据库restart mysqld.service
。
(9)使用命令修改当前用户的密码(默认 root 是没有密码的):mysqladmin -u root password ' 密码 '
。
(10)使用命令进入数据库:mysql -u root -p
。需要输入数据库密码。
(11)这个时候数据库已经安装好了,但是只能在服务器上看。我们需要让 MySQL 运行远程连接,这样方便我们调试,不用每次都要使用命令行。
(12)进入服务器的 mysql 命令行模式下,输入GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
其中 root 代表的是这次要修改的用户名,password 代表这个用户使用的密码,然后再输入flush privileges;让命令生效。需要注意的是每行命令的最后要加;,不然是不会执行的。
(13)如果顺利,这个时候已经是修改完了,你可以输入查询命令来看看最终的结果。SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;。也可以通过软件直接登录数据库看看。
(14)到此 MySQL 数据库就完成安装了,这个时候可以使用某个客户端连接上数据库看了(推荐 navicat for mysql 下载地址:https://www.onlinedown.net/soft/87702.htm 激活方法:https://www.cnblogs.com/chyf1990/p/12987101.html),也可以直接进入服务器的命令行模式查看数据库。
5.2 navicat for mysql连接mysql数据库
本地电脑使用navicat for mysql连接远程服务器上的mysql数据库
参考:https://blog.youkuaiyun.com/weixin_28622215/article/details/113211044
创建连接:
navicat for mysql 连接时报弹框报错如下:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
5.2.1 IP授权访问mysql
出现这个问题的原因之一是权限的问题,也就是说你的电脑可能没有权限访问mysql数据库。
讲道理这种情况其实基本上不该遇到,因为我们在安装mysql之后,root其实是有最高权限的,而且很少会有人去修改root的权限。
这个问题的解决方法就是授权。授权命令大概是这样的:(先使用命令进入数据库:mysql -u root -p
)
grant all privileges on *.* to 'root'@'我电脑的ip地址' identified by '密码';
//此处的'密码'可以随便设置,是Navicat for mysql客户端连接服务器mysql数据库时使用的密码。
//接下来就简单了,直接将上面的代码修改一下就可以用了。比如我的电脑的ip地址是:192.168.0.103,我的root密码是:123456,那么我就可以将授权的语句改成:
grant all privileges on *.* to 'root'@'192.168.0.103' identified by '123456';
如果你是本地登录的,那么:
grant all privileges on *.* to 'root'@'localhost' identified by '123456';
当然你也可以直接改成这样:
grant all privileges on *.* to 'root'@'%' identified by '123456';
就可以给所有ip都设定root登陆了。
如果授权成功,会有Query OK的提示。
然后:
flush privileges;
这个是刷新授权的意思,如果没有这句话,授权可能无法立刻生效。
exit;
这个是退出的意思。
5.2.2 设置mysql跳过密码验证(不推荐)
mysql数据root密码异常之后,可以通过跳过MySQL的密码认证过程
步骤:
1.修改 /etc/my.cnf(找到 [mysqld] 内容后添加 "skip-grant-tables" ),就可以跳过密码验证过程了。有的版本是修改/etc/mysql/mysql.conf.d,但找不到时就修改/etc/my.cnf。
2.重启服务"service mysql restart",之后通过 "mysql"直接进入到数据库中,进行相关的密码重置,之后屏蔽"skip-grant-tables"代码,重启服务就能正常使用了
5.3 mysql修改密码
目前有3种方式修改mysql密码:(参考:http://c.biancheng.net/view/7152.html)
- set password for username @localhost = password(newpwd);
- mysqladmin -u用户名 -p旧密码 password 新密码
update mysql.user set authentication_string=password('新密码') where user='用户名' and Host ='localhost';
设置新密码
此处采用第2种:使用mysqladmin修改密码
使用 mysqladmin 命令修改 MySQL 的 root 用户密码格式为 mysqladmin -u用户名 -p旧密码 password 新密码
。
注意:下图修改密码的命令中 -uroot 和 -proot 是整体,不要写成 -u root -p root,-u 和 root 间可以加空格,但是会有警告出现,所以就不要加空格了。
6.安装Redis
Redis 是一个非常好用的数据仓库,即可以当一个 nosql 数据库,同时也可以当一个缓存数据库。使用起来也非常的简单,安装方式也是使用源代码的方式安装,同 node 的安装很相似。
(1)从官网复制新安装包的地址。
(2)回到熟悉的 soft 目录,下载最新的源文件,wget http://download.redis.io/releases/redis-4.0.6.tar.gz。
(3)解压并进入解压之后的文件夹:tar -zxvf redis-4.0.6.tar.gz &&cd redis-4.0.6
,文件名称根据下载的压缩包来变化。
(4)编译并安装:make && make install
。
(5)安装完成之后,文件夹里的 4 个文件是以后会常用的:redis-server、redis-benchmark、’redis-cli’、redis.conf。您可以把这 4 个文件单独放到一个合适的位置,方便以后使用。
(6)启动 redis 服务:redis-server redis.conf。
(7)这个时候是不能再输入任何命令,因为 redis-server 已经占用了这个命令行客户端,我们需要再打开一个命令行工具并连接服务器(右键 iTerm2 选择 “New Tab” 或者 “Split Pane ”)。
(8)使用 redis 客户端连接 Redis 服务,执行 Redis 文件夹下的 redis-cli 文件redis-cli,输入几个命令测试一下简单的 set/get:
set a 1
get a
keys *
del a
(9)让 Redis 运行在后台,占用 iTerm2 肯定是不行的,而且关掉客户端之后 Redis 服务也会停止。XShell 7右键创建“新选项卡”。
修改 redis.conf 文件,将 daemonize 的值改为 yes;修改配置使用 vim 命令,有问题的可以看上面的常用命令,也可以自行搜索。
vim redis.conf
按↓找到值并按Insert后修改
修改完按Esc键
输入":wq"后按回车保存并退出
(10)再次运行 Redis 的启动命令redis-server redis.conf,这次就不会占用命令行了,可以继续操作其他的,Redis 服务也不会停止。
redis.conf 的几个重要配置说明:
daemonize:如需要在后台运行,把该项的值改为 yes。
pdifile:把 pid 文件放在 /var/run/redis.pid,可以配置到其他地址。
bind:指定 redis 只接收来自该 IP 的请求,如果不设置,那么将处理所有请求,在生产环节中最好设置该项。
port:监听端口,默认为 6379。
timeout:设置客户端连接时的超时时间,单位为秒。
loglevel:等级分为 4 级,debug、revbose、notice 和 warning,生产环境下一般开启 notice。
logfile:配置 log 文件地址,默认使用标准输出,即打印在命令行终端的端口上。
database:设置数据库的个数,默认使用的数据库是 0。
save:设置 Redis 进行数据库镜像的频率。
rdbcompression:在进行镜像备份时,是否进行压缩。
dbfilename:镜像备份文件的文件名。
dir:数据库镜像备份的文件放置的路径。
slaveof:设置该数据库为其他数据库的从数据库。
masterauth:当主数据库连接需要密码验证时,在这里设定。
requirepass:设置客户端连接后进行任何其他指定前需要使用的密码。
maxclients:限制同时连接的客户端数量。
maxmemory:设置 Redis 能够使用的最大内存。
appendonly:开启 appendonly 模式后,Redis 会把每一次所接收到的写操作都追加到 appendonly.aof 文件中,当 Redis 重新启动时,会从该文件恢复出之前的状态。
appendfsync:设置 appendonly.aof 文件进行同步的频率。
vm_enabled:是否开启虚拟内存支持。
vm_swap_file:设置虚拟内存的交换文件的路径。
vm_max_momery:设置开启虚拟内存后,Redis 将使用的最大物理内存的大小,默认为 0。
vm_page_size:设置虚拟内存页的大小。
vm_pages:设置交换文件的总的 page 数量。
vm_max_thrrads:设置 vm IO 同时使用的线程数量。
7.安装Nginx
Nginx 真的是现在必不可少的一个软件。在转发请求、负载均衡等方面非常非常的有用。这里我们先简单的使用 nginx 的端口转发代理等几个功能。
它可以将几个不同的服务集中在一个 80 端口下,根据域名或者请求路径来区分。
不同的服务。
(1)注意,在安装 nginx 之前还需要安装几个 nginx 的依赖插件。
(2)安装 pcreyum install -y pcre pcre-devel
(3)安装 zlibyum install -y zlib zlib-devel
(4)安装 openssl,这个推荐安装,毕竟大家都在使用 https 证书了,yum install -y openssl openssl-devel
(5)下载源代码,复制下载地址,并使用 wget 命令下载到服务器上,下载地址:https://nginx.org/en/download.html,如https://nginx.org/download/nginx-1.21.1.tar.gz
(6)解压下载的文件并进入解压好的目录tar -zxvf nginx-1.13.8.tar.gz && cd nginx-1.13.8
。
(7)执行配置命令./configure
(8)继续编译安装 nginxmake && make install
(9)查看安装结果whereis nginx
(10)跳转到安装好的 nginx 目录下,进入 sbin 目录cd /usr/local/nginx/sbin。
(11)启动 nginx./nginx。
./nginx,启动 nginx;
./nginx -s stop,停止 nginx;
./nginx -s quit,退出 nginx;
./nginx -s reload,重启 nginx。
(12)此时即可通过公网IP访问储存在/usr/share/nginx/html
文件夹中的index.html
文件。在浏览器中输入http://公网ip
得到如下结果:
8.安装Git
centos 上是没有安装 git,而 git 是我们开发中经常要使用的工具,这里就讲一下怎么安装 git。
(1)在服务器上执行yum install git
。如果上面的几个软件没有安装,您可能还需要安装几个依赖库,这个可以查看出现的错误来决定安装那些库。
(2)确定一下 git 是否安装完成git --version
。
9.创建服务
现在,我们已经具备了基本的开发环境。下面我将带领大家创建一个简单的 http 服务。万丈高楼平地起,我们从基础着手。
9.1使用 express(个人电脑)
在个人电脑本地创建一个 express 服务,使用默认的脚手架即可,使用XShell 7新打开一个标签卡。
(1)在本地安装 express 脚手架,npm install express-generator -g
(2)使用脚手架创建一个简单的 exprss 项目,express myapp
(3)到这一步简单的一个 http 项目就创建好了,有兴趣的可以cd myapp,使用npm install
把依赖包安装好,然后使用npm run start
启动项目看看效果。本地访问http://127.0.0.1:3000/
就可以看到效果了
(4)回到项目外面cd ..
,使用 tar 命令打包刚才创建的项目tar -zcvf myapp.tar.gz myapp
9.2上传 express(个人电脑)
接下来就是最重要的一步了,上传压缩包到服务器,命令规则scp 压缩包路径 服务器用户名 @ 服务器 ip 地址:服务器上的绝对地址
,比如scp myapp.tar.gz root@120.78.57.59:/soft
,之后输入登录密码就好了
9.3启动express(云服务器)
进入服务器的 soft 目录,我们已经把文件上传到这里了,现在解压它,cd /soft && tar -zxvf myapp.tar.gz
和在自己的电脑上做并没有什么区别,我们进入解压好的 myapp 目录并安装依赖:npm i
启动 exprss:npm run start
。
打开网站 服务器 ip:3000
,express 脚手架生成的项目默认使用 3000 端口。此步骤未能打开访问网站!
我们再看 iTerm2,已经有一些日志输出了。
9.4使用 Git 上传代码
每次都上传压缩文件其实是一个很蠢的操作,这里我们使用 Git,让 Git 来代替我们进行文件中转的过程,我们只需要上传和下载 2 个操作。
(1)在 github 上创建一个项目Local2ECSServer,简单创建一个就行。
(2)在本地克隆这个仓库,git clone
https://github.com/xxx/Local2ECSServer.git
(3)把刚才的项目文件复制到这个 git 项目里cp -rf myapp/ Local2ECSServer/myapp,然后使用 git 命令上传到服务器上
git add
git commit -m "注释"
git push / git push origin master
(4)在服务器上使用 git 命令把刚才的项目克隆下来git clone
https://github.com/xxx/Local2ECSServer.git,这样就可以把项目非常快速的同步到服务器了,真实的开发过程中也是这样居多。
10.Nginx开机自启动(systemctl方式)
参考:https://blog.youkuaiyun.com/ren365880/article/details/103597006
1. 建立服务文件
vim /usr/lib/systemd/system/nginx.service
新建文件,把下面文件内容放到文件中
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[Unit]:服务的说明
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:启动、重启、停止命令全部要求使用绝对路径
[Install]服务安装的相关设置,可设置为多用户
2. 文件设为755权限并使文件生效
chmod 755 /usr/lib/systemd/system/nginx.service
systemctl daemon-reload
3.设置开机启动
systemctl enable nginx.service
只有返回类似 Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /etc/systemd/system/nginx.service提示才能够确定设置成功。如果不是请检查上面的文件
4. 命令
systemctl is-enabled servicename.service #查询服务是否开机启动
systemctl enable *.service #开机运行服务
systemctl disable *.service #取消开机运行
systemctl start *.service #启动服务
systemctl stop *.service #停止服务
systemctl restart *.service #重启服务
systemctl reload *.service #重新加载服务配置文件
systemctl status *.service #查询服务运行状态
systemctl --failed #显示启动失败的服务
11.阿里云服务器安装Python3.7
操作系统:CentOS 7.9 64位
1.下载python安装包
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
2.解压、配置、编译安装
yum install gcc-c++ gcc make cmake zlib-devel bzip2-devel openssl-devel ncurse-devel libffi-devel -y #安装编译工具
tar -xvf Python-3.7.0.tar.xz
cd Python-3.7.0
./configure prefix=/usr/local/python3 #可更改python3的安装目录
make && make install
安装完成,使用python -V 能查看到具体安装的版本号。
3.删除,备份python2.7
mv /usr/bin/python /usr/bin/python.bak
注意:只删除python2的软链接就行,千万不要卸载python2。
4.安装完毕,创建软连接
ln -s /usr/local/python3/bin/python3 /usr/bin/python
5.后续工作,由于执行CentOS的yum命令需要使用自带的python2的版本,所以需要做两处修改
vim /usr/bin/yum
vim /usr/libexec/urlgrabber-ext-down
#将 这两个文件开头的注释 #! /usr/bin/python修改为 #! /usr/bin/python2
6.建立python 3.7.0版本pip3的软连接
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
/usr/local/python3/bin/pip3是python3.7安装路径。
输入pip -V 如果能显示pip版本,则安装成功。
7.上传py代码文件并运行
使用scp命令可以上传本地代码文件到远程服务器,或者使用Git。
进入*.py文件目录,直接python *.py运行代码。