欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

IM项目的一些部署记录

程序员文章站 2022-07-12 13:17:19
...

这两天把IM重新部署了一遍,把一些东西记在这里。

一:JDK安装
1.修改/etc/sysconfig目录下的i18n文件,将其中的UTF-8替换为GBK,方便中文显示,如果ssh支持UTF-8,可以不改

vim /etc/sysconfig/i18n

2.安装jdk,查看当前Linux系统是否已经安装java

rpm -qa | grep java

3.使用rpm -e –nodeps加上软件名卸载该软件

rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.i686
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.9-2.3.4.1.el6_3.i686

4.rpm -qa | grep java查看jdk是否卸载干净没有了就继续安装

rpm -qa | grep java

5.解压jdk到/usr/local下tar -xvf jdk-8u171-linux-i586.tar.gz -C /usr/local

tar -xvf jdk-8u171-linux-i586.tar.gz -C /usr/local

6.配置jdk环境变量,打开/etc/profile配置文件,将下面配置拷贝进去

#set java environment
JAVA_HOME=/usr/local/jdk1.8.0_171
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH 

7.重新加载/etc/profile配置文件 source /etc/profile

source /etc/profile

8.输入java -version检查是否安装好了jdk

java -version

二:MYSQL安装

1.rpm -qa | grep mysql,查看当前Linux系统是否已经安装mysql

rpm -qa | grep mysql

2.rpm -e –nodeps mysql-libs-5.1.66-2.el6_3.i686 卸载已经安装的系统自带的mysql

rpm -e --nodeps mysql-libs-5.1.66-2.el6_3.i686

3.rpm -qa | grep mysql,查看是否卸载干净mysql

rpm -qa | grep mysql

4.在/usr/local下创建mysql文件夹

cd /usr/local/
mkdir mysql

5.返回/root,解压mysql安装包到/usr/local/mysql下

cd /root/
tar -xvf MySQL-5.6.22-1.el6.i686.rpm-bundle.tar -C /usr/local/mysql

6.在/usr/local/mysql下安装mysql

cd /usr/local/mysql/
rpm -ivh MySQL-server-5.6.22-1.el6.i686.rpm
rpm -ivh MySQL-client-5.6.22-1.el6.i686.rpm

7.启动mysql

service mysql start

8.将mysql加到系统服务中并设置开机启动
加入到系统服务:

chkconfig --add mysql

自动启动:

chkconfig mysql on

9.登录mysql,mysql安装好后会生成一个临时随机密码,存储位置在/root/.mysql_secret

cat /root/.mysql_secret
mysql -uroot -p复制的密码

10.修改mysql的密码,开启mysql的远程登录

set password = password('root');
grant all privileges on *.* to 'root' @'%' identified by 'root';
flush privileges;

之后退出mysql:

quit

11.开放Linux的对外访问的端口3306

/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

将修改永久保存到防火墙中:

/etc/rc.d/init.d/iptables save

三:tomcat安装

1.来带/root目录下,解压tomcat到/usr/local下

cd /root/
tar -xvf apache-tomcat-7.0.57.tar.gz -C /usr/local

2.开放Linux的对外访问的端口8080

/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
/etc/rc.d/init.d/iptables save

3.启动关闭Tomcat

cd /usr/local/apache-tomcat-7.0.57/bin/

启动

./startup.sh

关闭

./shutdown.sh 

四:Redis安装

1.安装redis编译的c环境,yum install gcc-c++

yum install gcc-c++

2.解压到/usr/local下 tar -xvf redis-3.0.0.tar.gz -C /usr/local

tar -xvf redis-3.0.0.tar.gz -C /usr/local

3.到/usr/local/redis-3.0.0目录下编译redis

make

4.在redis-3.0.0目录中 使用make PREFIX=/usr/local/redis install命令安装redis到/usr/local/redis中

make PREFIX=/usr/local/redis install

5.拷贝redis-3.0.0中的redis.conf到安装目录redis中

cp /usr/local/redis-3.0.0/redis.conf -r /usr/local/redis/bin/ 

6.如需远程连接redis,需配置redis端口6379在linux防火墙中开放

/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT
/etc/rc.d/init.d/iptables save

7.进入redis目录下编辑redis.conf,使redis在后台运行,并且设置密码

cd /usr/local/redis/bin/
vim redis.conf
daemonize no改为daemonize yes
requirepass foobared改为requirepass 123456 后面是密码

8.开放6379端口号

/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT
/etc/rc.d/init.d/iptables save

四.设置redis开机启动

1.编写脚本

vi /etc/init.d/redis

2.复制下面代码到脚本中

#!/bin/sh
# chkconfig: 2345 10 90
# description: Start and Stop redis

REDISPORT=6379
EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/bin/redis-cli

PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/usr/local/redis/bin/redis.conf"
case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                $EXEC $CONF &
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                $CLIEXEC -p $REDISPORT shutdown
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
    restart)
        "$0" stop
        sleep 3
        "$0" start
        ;;
    *)
        echo "Please use start or stop or restart as first argument"
        ;;
esac

3.保存退出,设置权限

chmod 777 /etc/init.d/redis

4.启动redis
打开redis命令

service redis start

关闭redis命令

service redis stop

设为开机启动

chkconfig redis on

设为开机关闭

chkconfig redis off

五.MongoDB安装配置

1.getconf LONG_BIT 查看系统位数

getconf LONG_BIT

2.开始配置自己的yum源

vim /etc/yum.repos.d/mongodb.repo

3.编辑保存

[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/i686/
gpgcheck=0
enabled=1

4.开始安装当前最稳定的版本

yum install -y mongodb-org

5.启动mongodb

service mongod start

6.关闭mongodb

service mongod stop

7.随系统启动

chkconfig mongod on

8.查看安装的软件

rpm -qa | grep mongodb

9.查看安装路径

rpm -ql mongodb-org-server-2.6.12-1.i686

10.更改配置文件

vim /etc/mongod.conf
 添加bind_ip服务器的IP

11.连接本地的mongodb

mongo localhost:27017

12.use CHAT_DB

use CHAT_DB

13.添加账号

db.createUser(
...  {
...    user: "admin",
...    pwd: "[email protected]",
...    roles: [
...       { role: "readWrite", db: "CHAT_DB" }
...    ]
...  }
... )

14.打开配置文件,开启密码认证

vim /etc/mongod.conf
打开auth

15.关闭mongodb

service mongod stop

16.启动mongodb

service mongod start

17.连接本地的mongodb

mongo localhost:27017

18.use CHAT_DB

use CHAT_DB

19.验证密码

db.auth("admin","qwer@1234")

20.导入已有数据

mongorestore -h localhost --port 27017 -u admin -p [email protected]1234 -d CHAT_DB --drop /root/CHAT_DB

21.开放MongoDB的对外访问的端口27017

/sbin/iptables -I INPUT -p tcp --dport 27017 -j ACCEPT
/etc/rc.d/init.d/iptables save

22.其他

mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径   导出数据库
mongodump -h 127.0.0.1 -o /root/mongodbData/                            导出全部数据库
mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件存在路径   导入指定数据库

六.安装erlang

1.解压

tar -xvf otp_src_20.3.tar.gz

2.进入/root/otp_src_20.3设置

cd /root/otp_src_20.3
./configure --prefix=/home/erlang --without-javac  

3.此时如果提示

configure: error: No curses library functions found
configure: error: /bin/sh '/home/jiayi/otp_src_19.3.0/erts/configure' failed for erts

4.yum -y install ncurses-devel

yum -y install ncurses-devel

5.重新./configure –prefix=/home/erlang –without-javac

./configure --prefix=/home/erlang --without-javac 

如果报错

*********************************************************************
**********************  APPLICATIONS DISABLED  **********************
*********************************************************************
jinterface     : Java compiler disabled by user

不用管继续下一步

6.make

make

7.make install

make install

8.vi /etc/profile

vi /etc/profile

9.添加export PATH=$PATH:/home/erlang/bin

export PATH=$PATH:/home/erlang/bin

10.刷新配置

cd /etc
source profile

11.检测是否安装erlang成功

erl

输出

Erlang/OTP 20 [erts-9.3] [source] [smp:1:1] [ds:1:1:10] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V9.3  (abort with ^G)

安装成功

七.安装rabbitmq

1.cd /root/

cd /root/

2.rpm -ivh rabbitmq-server-3.1.1-1.noarch.rpm

rpm -ivh rabbitmq-server-3.1.1-1.noarch.rpm 

会报

warning: rabbitmq-server-3.1.1-1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID 056e8e56: NOKEY
error: Failed dependencies:
    erlang >= R12B-3 is needed by rabbitmq-server-3.1.1-1.noarch

3.rpm –nodeps -ivh rabbitmq-server-3.1.1-1.noarch.rpm

rpm --nodeps -ivh rabbitmq-server-3.1.1-1.noarch.rpm 

这样会解决报错

4.启动rabbitmq会报错

service rabbitmq-server start

后会报错

Starting rabbitmq-server: FAILED - check /var/log/rabbitmq/startup_{log, _err}
rabbitmq-server.

5.查看报错信息

cd /var/log/rabbitmq/
vim startup_err 

显示

/usr/lib/rabbitmq/bin/rabbitmq-server: line 85: erl: command not found

6.ln -s /home/erlang/bin/erl /usr/bin/erl解决报错问题

chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/
ln -s /home/erlang/bin/erl /usr/bin/erl

7.启动rabbitmq

service rabbitmq-server start

8.关闭rabbitmq

service rabbitmq-server stop

9.重启rabbitmq

service rabbitmq-server restart

10.设置rabbitmq开机启动

chkconfig rabbitmq-server on

11.开启web界面管理工具

rabbitmq-plugins enable rabbitmq_management

12.重启rabbitmq

service rabbitmq-server restart

13.开放rabbitmq的对外访问的端口15672

/sbin/iptables -I INPUT -p tcp --dport 15672 -j ACCEPT
/etc/rc.d/init.d/iptables save

14.RabbitMQ添加用户
1.登陆服务器的RabbitMQ的控制页面,页面地址是http://+ip+:15672
2.在3.3.1和之后的版本中,出于安全的考虑,guest这个默认的用户只能通过http://localhost:15672 来登录,其他的IP无法直接使用这个账号。 这对于服务器上没有安装桌面的情况是无法管理维护的
3.为了解决2的问题,我们新增一个超级管理员来管理

15.新增用户admin

rabbitmqctl  add_user admin admin

16.查看用户列表

rabbitmqctl  list_users

17.设置管理员

rabbitmqctl set_user_tags admin administrator

18.查看用户列表发现是管理员

rabbitmqctl list_users

19.重启虚拟机

reboot

20.使用admin登陆rabbitmq

http://192.168.1.105:15672/

21.导入以前的配置文件

22.使用rabbitmq登陆rabbitmq发现都配置好了

八.开放websocket的8091端口

/sbin/iptables -I INPUT -p tcp --dport 8091 -j ACCEPT
/etc/rc.d/init.d/iptables save

九.安装nodejs

1.解压node-v8.11.3-linux-x86.tar.xz

tar -xvf node-v8.11.3-linux-x86.tar.xz 

2.改名nodejs

mv node-v8.11.3-linux-x86 nodejs

3.拷贝到/usr/local/下

cp nodejs/ /usr/local/ -r

4.建立软连接,变为全局

ln -s /usr/local/nodejs/bin/npm /usr/local/bin/
ln -s /usr/local/nodejs/bin/node /usr/local/bin/

5.最后一步检验nodejs是否已变为全局

node -v

6.cd /usr/local/skyrtc/

cd /usr/local/skyrtc/

7.npm install

npm install

8.node server.js

node server.js

9.开放3000端口号

/sbin/iptables -I INPUT -p tcp --dport 3000 -j ACCEPT
/etc/rc.d/init.d/iptables save

十.安装运行forever使nodejs文件后台运行

1.安装forever

npm install forever -g

2.ln -s /usr/local/nodejs/lib/node_modules/forever/bin/forever /usr/local/bin/

ln -s /usr/local/nodejs/lib/node_modules/forever/bin/forever /usr/local/bin/

3.启动服务

forever start

3.使用forever启动js文件

forever  /usr/local/skyrtc/server.js

4.停止js文件

forever stop  /usr/local/skyrtc/server.js

5.启动js文件并输出日志文件

cd /usr/local/skyrtc/
mkdir logs
forever start -l /usr/local/skyrtc/logs/forever.log -o /usr/local/skyrtc/logs/out.log -e /usr/local/skyrtc/logs/err.log /usr/local/skyrtc/server.js

6.重启js文件

forever restart /usr/local/skyrtc/server.js

7.查看正在运行的进程

forever list

8.重新启动

cd /usr/local/skyrtc/logs/
rm -rf ./*
forever start -l /usr/local/skyrtc/logs/forever.log -o /usr/local/skyrtc/logs/out.log -e /usr/local/skyrtc/logs/err.log /usr/local/skyrtc/server.js

其他:

如果遇到mongodb无法启动

cd /var/lib/mongo/
rm -rf mongod.lock 
service mongod start
更改文件权限  chomod 777 文件路径
mongod -dbpath=/usr/local/mongodb/mongodb3.0.6/data/test/db --fork --port 27017 --logpath=/usr/local/mongodb/mongodb3.0.6/data/test/log/log.log --logappend --auth

netstat命令各个参数说明如下:

  -t : 指明显示TCP端口

  -u : 指明显示UDP端口

  -l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)

  -p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序。

  -n : 不进行DNS轮询,显示IP(可以加速操作)

即可显示当前服务器上所有端口及进程服务,于grep结合可查看某个具体端口及服务情况··

netstat -ntlp //查看当前所有tcp端口·

netstat -ntulp |grep 80 //查看所有80端口使用情况·

netstat -an | grep 3306 //查看所有3306端口使用情况·

查看一台服务器上面哪些服务及端口

netstat -lanp

查看一个服务有几个端口。比如要查看mysqld

ps -ef |grep mysqld

查看某一端口的连接数量,比如3306端口

netstat -pnt |grep :3306 |wc

查看某一端口的连接客户端IP 比如3306端口

netstat -anp |grep 3306

netstat -an 查看网络端口

lsof -i :port,使用lsof -i :port就能看见所指定端口运行的程序,同时还有当前连接。

nmap 端口扫描
netstat -nupl (UDP类型的端口)
netstat -ntpl (TCP类型的端口)
netstat -anp 显示系统端口使用情况

mongoimport --port 27017  -d CHAT_DB -c attachment  --type=json --file /root/mongodbData/attachment.txt
mongoimport --port 27017  -d CHAT_DB -c friends --type=json --file /root/mongodbData/friends.txt
mongoimport --port 27017  -d CHAT_DB -c groups  --type=json --file /root/mongodbData/groups.txt
mongoimport --port 27017  -d CHAT_DB -c login --type=json --file /root/mongodbData/login.txt
mongoimport --port 27017  -d CHAT_DB -c message --type=json --file /root/mongodbData/message.txt
mongoimport --port 27017  -d CHAT_DB -c pushMessage --type=json --file /root/mongodbData/pushMessage.txt
mongoimport --port 27017  -d CHAT_DB -c unPushCounter  --type=json --file /root/mongodbData/unPushCounter.txt
mongoimport --port 27017  -d CHAT_DB -c unreadCounter --type=json --file /root/mongodbData/unreadCounter.txt
mongoimport --port 27017  -d CHAT_DB -c user --type=json --file /root/mongodbData/user.txt

左边是mongodb查询语句,右边是sql语句。对照着用,挺方便。  
db.users.find() select * from users  
db.users.find({"age" : 27}) select * from users where age = 27  
db.users.find({"username" : "joe", "age" : 27}) select * from users where "username" = "joe" and age = 27  
db.users.find({}, {"username" : 1, "email" : 1}) select username, email from users  
db.users.find({}, {"username" : 1, "_id" : 0}) // no case  // 即时加上了列筛选,_id也会返回;必须显式的阻止_id返回  
db.users.find({"age" : {"$gte" : 18, "$lte" : 30}}) select * from users where age >=18 and age <= 30 // $lt(<) $lte(<=) $gt(>) $gte(>=)  
db.users.find({"username" : {"$ne" : "joe"}}) select * from users where username <> "joe"  
db.users.find({"ticket_no" : {"$in" : [725, 542, 390]}}) select * from users where ticket_no in (725, 542, 390)  
db.users.find({"ticket_no" : {"$nin" : [725, 542, 390]}}) select * from users where ticket_no not in (725, 542, 390)  
db.users.find({"$or" : [{"ticket_no" : 725}, {"winner" : true}]}) select * form users where ticket_no = 725 or winner = true  
db.users.find({"id_num" : {"$mod" : [5, 1]}}) select * from users where (id_num mod 5) = 1  
db.users.find({"$not": {"age" : 27}}) select * from users where not (age = 27)  
db.users.find({"username" : {"$in" : [null], "$exists" : true}}) select * from users where username is null // 如果直接通过find({"username" : null})进行查询,那么连带"没有username"的纪录一并筛选出来  
db.users.find({"name" : /joey?/i}) // 正则查询,value是符合PCRE的表达式  
db.food.find({fruit : {$all : ["apple", "banana"]}}) // 对数组的查询, 字段fruit中,既包含"apple",又包含"banana"的纪录  
db.food.find({"fruit.2" : "peach"}) // 对数组的查询, 字段fruit中,第3个(从0开始)元素是peach的纪录  
db.food.find({"fruit" : {"$size" : 3}}) // 对数组的查询, 查询数组元素个数是3的记录,$size前面无法和其他的操作符复合使用  
db.users.findOne(criteria, {"comments" : {"$slice" : 10}}) // 对数组的查询,只返回数组comments中的前十条,还可以{"$slice" : -10}, {"$slice" : [23, 10]}; 分别返回最后10条,和中间10条  
db.people.find({"name.first" : "Joe", "name.last" : "Schmoe"})  // 嵌套查询  
db.blog.find({"comments" : {"$elemMatch" : {"author" : "joe", "score" : {"$gte" : 5}}}}) // 嵌套查询,仅当嵌套的元素是数组时使用,  
db.foo.find({"$where" : "this.x + this.y == 10"}) // 复杂的查询,$where当然是非常方便的,但效率低下。对于复杂查询,考虑的顺序应当是 正则 -> MapReduce -> $where  
db.foo.find({"$where" : "function() { return this.x + this.y == 10; }"}) // $where可以支持javascript函数作为查询条件  
db.foo.find().sort({"x" : 1}).limit(1).skip(10); // 返回第(10, 11]条,按"x"进行排序; 三个limit的顺序是任意的,应该尽量避免skip中使用large-number  
相关标签: Linux