Macbook pro从购买服务器到搭建服务器环境(2)

时间:2021-11-25 21:17:19

这里是在Mac本地上安装软件遇到的坑,先总结一下

在装完mysql的时候,安装wget,这个时候遇到的问题是openssl软件包找不到,我已经不记得是什么时候安装的openssl了,所以用命令查一下

brew install openssl

如果已经安装会提示你,如果没安装就直接装了,我的显示已安装,但是系统还是找不到这个包,所以我根据提示重新安装了,

brew reinstall openssl

然后建立软连接

ln -s /usr/local/Cellar/openssl/1.0.2p /usr/local/bin/openssl

然后再把环境变量改一下,环境变量文件用命令查一下

echo $SHELL

如果显示.zsh,就在~/.zshrc文件中,如果显示.bash,就在~/.bash_profile中

把下面的环境变量加进去即可。

export PATH=$PATH:/usr/local/Cellar/openssl/1.0.2p

再输入openssl version就是你重新安装的版本号了。

注意:苹果系统为了安全考虑把openssl替换成了LibreSSL 2.2.7,如非必要,还是不要用openssl。

我后来把openssl的环境变量给改过来了,发现wget也能正常使用。

直接用brew reinstall wget就行了。

还有一件事,我在修改完 ~/.zshrc文件时,执行了一条命令  source ~/.bash_profile,然后发现常用命令都不能用了,找到一个解决方案

命令行输入这个即可:

PATH=/bin:/usr/bin:/usr/local/bin:${PATH}

然后就能用了。

在命令行输入

source ~/.bash_profile

然后重启电脑,即可。否则,每一次打开item都会需要你输入上面的PATH命令。

需要解释的一点是我自己安装了item,所以路径文件名为zshrc,当我的item不能使用那些常用命令的时候,我的系统自带的终端是可以正常用的。

Mac上安装mongodb数据库

我是下载软件包安装的,还可以用brew装。

# 进入 /usr/local
cd /usr/local # 下载
sudo curl -O https://fastdl.mongodb.org/osx/mongodb-osx-ssl-x86_64-3.6.3.tgz # 解压
sudo tar -zxvf mongodb-osx-ssl-x86_64-3.6.3.tgz # 重命名为 mongodb 目录 sudo mv mongodb-osx-x86_64-3.6.3 mongodb # 添加环境变量
echo $SHELL
如果是base就打开 ~/.base——profile文件,如果是zsh,就打开 ~/.zshrc
把下面这句加入到上面打开的文件中,找到对应的加进去。PS:如果你安装了item,那么就建议你把这两个文件都加上下面这句话,这样你在苹果内置的终端和item里面都能进行同样的操作
export PATH=/usr/local/mongodb/bin:$PATH # 查看环境变量
echo $PATH # 建立文件夹,存放数据库,和存放日志,和配置文件
sudo mkdir /usr/local/mongodb/data/db/ /usr/local/mongodb/logs/ /usr/local/mongodb/etc
# 然后分别进入到刚刚创建的日志文件夹和etc文件夹中创建文件
cd /usr/local/mongodb/data/log/
sudo touch mongo.log

cd
/usr/local/mongodb/etc
sudo touch mongodb.conf

配置文件参数:

dbpath=/usr/local/mongodb/data/db/
logpath=/usr/local/mongodb/logs/mongod.log
logappend=true
journal=true
quiet=false
port=27017
fork=true
auth=true
httpinterface=true
# 启动服务
cd /usr/local/mongodb/bin/
./mongod

服务启动后在URL中输入:

localhost:27017

看到

It looks like you are trying to access MongoDB over HTTP on the native driver port.

说明mongodb服务已经启动,如果要停止服务,就杀进程即可

ps aux |grep mongo

这里显示进程信息,


dream-mac (这个是我电脑的名字)        3379 (这里显示的就是进程号)  0.3  0.3  4419124  27152 s000  S+   11:39上午   0:00.78 mongod


dream-mac         3418 (进程号)  0.0  0.0  4276968    788 s003  R+   11:41上午   0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn mongo

# 直接这样敲就是杀进程
kill 3379

服务启动之后,我们进入到mongo中,因为配置了环境变量,所以我们直接在命令行敲mongo即可。如下:

mongo

一般都会显示报警信息:

MongoDB shell version v3.4.2
connecting to: mongodb://127.0.0.1:27017/
MongoDB server version: 3.4.2
Server has startup warnings:
2018-11-20T11:39:52.030+0800 I CONTROL [initandlisten]
2018-11-20T11:39:52.030+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-11-20T11:39:52.030+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2018-11-20T11:39:52.030+0800 I CONTROL [initandlisten]
2018-11-20T11:39:52.030+0800 I CONTROL [initandlisten]
2018-11-20T11:39:52.030+0800 I CONTROL [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000

我们来解决一下报警信息,

先创建用户信息

在mongo中输入如下命令

use admin
db.createUser({user:"myUserAdmin",pwd:"",roles:[{role:"userAdminAnyDatabase",db:"admin"}]}) # 这里是用户信息创建成功
Successfully added user: {
"user" : "myUserAdmin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}

use test
db.createUser({user:"myTest",pwd:"test123",roles:[{role:"readWrite",db:"test"},{role:"read",db:"reporting"}]})
# 创建成功
Successfully added user: {
"user" : "myTest",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
},
{
"role" : "read",
"db" : "reporting"
}
]
}

control + c推出mongo

然后先杀进程,如上操作。

再重新启动服务,这样就是需要认证登陆mongo:

mongod --auth --dbpath /data/db

进入mongo指令:

mongo --port 27017 -u "myUserAdmin" -p "" --authenticationDatabase "admin"

显示:

MongoDB shell version v3.4.2
connecting to: mongodb://127.0.0.1:27017/
MongoDB server version: 3.4.2
>

报警信息解除。

不过这样启动需要敲的命令就太长了,不是很方便,所以我们要进一步解决这个问题,写入到shell脚本中。。。。。。

还有一种报警信息会出现:

** WARNING: You are running this process as the root user, which is not recommended.

不建议用root用户启动mongo服务,所以我们需要把权限以及用户都做一下更改。

我们先找到自己的用户名,这个用户名不是root,用命令可以查看

whoami

>>>dream-mac    
这就是我自己本机的用户名

然后把用户名的权限加到数据库文件中

sudo chown -R dream-mac /usr/local/mongodb/data/db/

启动服务

>>>cd  /usr/local/mongodb/bin/

>>>./mongod


2019-04-08T19:49:59.534+0800 I CONTROL  [initandlisten] MongoDB starting : pid=7448 port=27017 dbpath=/data/db 64-bit host=dream-macdeMBP.lan
2019-04-08T19:49:59.534+0800 I CONTROL [initandlisten] db version v3.4.2
2019-04-08T19:49:59.534+0800 I CONTROL [initandlisten] git version: 3f76e40c105fc223b3e5aac3e20dcd026b83b38b
2019-04-08T19:49:59.534+0800 I CONTROL [initandlisten] allocator: system
2019-04-08T19:49:59.535+0800 I CONTROL [initandlisten] modules: none
2019-04-08T19:49:59.535+0800 I CONTROL [initandlisten] build environment:
2019-04-08T19:49:59.535+0800 I CONTROL [initandlisten] distarch: x86_64
2019-04-08T19:49:59.535+0800 I CONTROL [initandlisten] target_arch: x86_64
2019-04-08T19:49:59.535+0800 I CONTROL [initandlisten] options: {}
2019-04-08T19:49:59.535+0800 W - [initandlisten] Detected unclean shutdown - /data/db/mongod.lock is not empty.
2019-04-08T19:49:59.536+0800 I - [initandlisten] Detected data files in /data/db created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
2019-04-08T19:49:59.536+0800 W STORAGE [initandlisten] Recovering data from the last clean checkpoint.
2019-04-08T19:49:59.536+0800 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=3584M,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
2019-04-08T19:49:59.799+0800 I CONTROL [initandlisten]
2019-04-08T19:49:59.799+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-04-08T19:49:59.799+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2019-04-08T19:49:59.799+0800 I CONTROL [initandlisten]
2019-04-08T19:49:59.809+0800 I FTDC [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data'
2019-04-08T19:49:59.809+0800 I NETWORK [thread1] waiting for connections on port 27017

另起一个窗口进入mongo数据库

➜  cd /usr/local/mongodb/bin
➜ ./mongo
MongoDB shell version v3.4.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.2
Server has startup warnings:
2019-04-08T19:49:59.799+0800 I CONTROL [initandlisten]
2019-04-08T19:49:59.799+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-04-08T19:49:59.799+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2019-04-08T19:49:59.799+0800 I CONTROL [initandlisten]
> showdabases
2019-04-08T19:51:45.909+0800 E QUERY [thread1] ReferenceError: showdabases is not defined :
@(shell):1:1
> show databases
admin 0.000GB
local 0.000GB

我们拿到一个项目的时候如果它没有requirement文件的话,在本地环境或者是服务器环境中安装pipreqs包,然后用它可以获取到项目所需要的软件包

pip install pipreqs

进入到项目所在的目录中,如果项目在本地就在本地运行环境中装这个包,如果是在服务器中安装了这个包,那么项目也要放到服务器上,然后进入到项目的目录中

pipreqs .

如下这个提示就是成功生成了requirements文件.

INFO: Successfully saved requirements file in ./requirements.txt

后面的"."就是当前目录的意思,也可以把项目目录贴在pipreqs后面

后来在服务器部署的时候遇到一个问题,同样是上面的操作,但是无法顺利执行,一直报错:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 133: ordinal not in range(128)

一直提示是编码问题,我用命令“pipreqs --encoding'utf8' ./”然后就报出另一种错,说我没有执行命令

提示:

<option><path>

反复试过很多次都是这样,后来就发现我的编辑器,不能显示中文,都是乱码出现的,我用的是Mac iTerm软件,就先去解决了iTerm不能显示中文的问题,再回过头来解决pipreqs,居然就好了,

原来不是人家pipreqs包的问题,是我自己的编辑器中文解码出错,跟人家没关系。pipreqs的包就是那么用的,两行命令就解决,逻辑没有错,查过大量的博客都是这样的,我的报错提示编码问题就是我自己的其他地方有编码问题,要去其他地方找原因,找到原因之后分分钟就解决,找到病因的过程才是最耗费时间的环节。

如下附上iTerm编辑器中文乱码解决方案:

mac 上iterm终端显示中文为乱码解决方案

1.首先需要去设置下iterm,的终端编码方式为utf-8
检查方案为:iterm - > perferences - > Terminal ->Character Encoding 为:UTF-8
2.打开/etc/ssh_config文件SendEnv LANG LC_*为SendEnv LANG LC_ALL=en.US.UFT-8
3.关闭iterm再次打开后查看中文是否还显示为乱码,如果还显示乱码,再次修改下linux字符集为utf-8,终端直接输入命令:LANG=“en_US.UTF-8"

服务器centos安装redis

https://www.cnblogs.com/renzhicai/p/7773080.html

cd /usr/local/  # 安装到这个路径下
wget http://download.redis.io/releases/redis-5.0.4.tar.gz
tar xzf redis-5.0.4.tar.gz
cd redis-5.0.4
make
make test
make install 去/usr/local/bin/目录下可以找到redis相关的6个配置文件就是安装成功

启动redis服务

# 任何路径下运行此命令即可启动服务
redis-server  

开始处理各种文件就能完成redis配置。

在redis安装文件中有utils文件,找到reids_init_script,把它拷贝到/etc/init.d/中,文件名为 redis_端口号,其中端口号表示要让Redis监听的端口号,客户端通过该端口连接Redis。然后修改脚本第6行的REDISPORT变量的值为同样的端口号。这里我们设置的端口号是6379,如下

cd /usr/local/redis-5.0.4/utils/

cp reids_init_script /etc/init.d/redis_6379

建立以下需要的文件夹。

# 存放redis的配置文件
mkdir /etc/redis/ # 存放redis的持久化文件,后面的6379是端口号,该文件名根据端口号决定
mkdir /var/redis/6379

把redis配置文件复制到指定路径并改名,文件名跟端口号保持一致*****一定要跟端口号保持一致,否则会报错“启动服务会无法打开配置文件“

cp /usr/local/redis-5.0.4/redis.conf  /etc/redis/6379.conf

接下来就是编辑配置文件的参数(重要参数就下面这几个)

# 使Redis以守护进程模式运行

daemonize    yes   
# 设置pid文件路径
pidfile /var/run/redis_6379.pid
# 监听端口号
port 6379
# 持久化文件路径
dir /var/redis/6379

然后保存退出,就可以启动服务了,用如下命令

/etc/init.d/redis_6379 start
/etc/init.d/redis_6379 stop

【重中之重】让Redis随系统自动启动,这还需要对Redis初始化脚本进行简单修改,执行命令:

vim /etc/init.d/redis_6379

在打开的redis初始化脚本文件头部第四行的位置,追加下面两句

# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database

追加后效果如下:
Macbook pro从购买服务器到搭建服务器环境(2)


设置开机执行redis脚本
chkconfig redis_6379 on
如下所示

Macbook pro从购买服务器到搭建服务器环境(2)

通过上面的操作后,以后也可以直接用下面的命令对Redis进行启动和关闭了,如下

service redis_6379 start
service redis_6379 stop

要停止redis服务正确操作,执行如下命令

redis-cli shutdown

或者杀进程也可以。

ps -ef | grep redis

kill redis 进程号
Mac本地安装redis
cd /usr/local/  # 安装到这个路径下
sudo wget http://download.redis.io/releases/redis-5.0.4.tar.gz
sudo tar xzf redis-5.0.4.tar.gz
cd
redis-5.0.4
make
sudo make test # 测试编译 sudo make install

安装成功

建立相关文件夹

sudo mkdir /usr/local/redis
sudo mkdir /usr/local/redis/bin sudo mkdir /usr/local/redis/etc sudo mkdir /usr/local/redis/db

拷贝文件

sudo cp /usr/local/redis-5.0.4/src/mkreleasehdr.sh /usr/local/redis/mkreleasehdr.sh

sudo cp /usr/local/redis-3.2.0/redis.conf /usr/local/redis/etc 

把/usr/local/bin/  下面的跟redis有关的几个文件都copy到/usr/local/redis/bin/下面

例如

sudo cp /usr/local/bin/redis-benchmark /usr/local/redis/bin

共有6个文件:
redis-benchmark
redis-check-aof
redis-check-rdb
redis-cli
redis-sentinel
redis-server

设置配置文件

sudo vim redis.conf

配置文件部分参数修改

#修改为守护模式
daemonize yes
#设置进程锁文件
pidfile /usr/local/redis/redis.pid
#端口
port 6379
#客户端超时时间
timeout 300
#日志级别
loglevel debug
#日志文件位置
logfile /usr/local/redis/log-redis.log
#设置数据库的数量,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id
databases 8
##指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
#save <seconds> <changes>
#Redis默认配置文件中提供了三个条件:
save 900 1
save 300 10
save 60 10000
#指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,
#可以关闭该#选项,但会导致数据库文件变的巨大
rdbcompression yes
#指定本地数据库文件名
dbfilename dump.rdb
#指定本地数据库路径
dir /usr/local/redis/db/
#指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能
#会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有
#的数据会在一段时间内只存在于内存中
appendonly no
#指定更新日志条件,共有3个可选值:
#no:表示等操作系统进行数据缓存同步到磁盘(快)
#always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)
#everysec:表示每秒同步一次(折衷,默认值)
appendfsync everysec

设置权限:

这里需要解释一下,我们的Mac和Linux系统是有差异的,Linux上面是有/etc/init.d/这个文件夹,所以redis的相关文件都可以放到这里面,但是Mac没有这个文件夹,
所以需要我们使用sudo这个命令来创建一系列的文件夹,在配置文件里面的log文件路径和pid文件路径以及最重要的db数据库文件路径,都需要另外加上权限,否则在启动redis服务的时候,这些配置文件里面配置好的路径参数是
无法生成相应的文件的,
chown -R 744 /usr/local/redis/db/ # 给数据库文件路径增加权限,它才能在服务启动时根据配置文件在里面读写数据
chown -R 777 /usr/local/redis/ # 我们的Mac里面redis相关文件都是在这个路径下,就把它的权限提到最高,便于读写以及其他各项操作。
chown -R root /usr/local/redis # root用户可以换成其他用户,凭自己设置

启动redis服务

 cd /usr/local/redis

 ./bin/redis-server ./etc/redis.conf

访问服务

redis-cli  # 在任何路径下输入这个命令,即进入redis服务,如下显示
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>

contrl + c 推出服务