Macbook pro从购买服务器到搭建服务器环境(2)
这里是在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:"123",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 "123" --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
追加后效果如下:
设置开机执行redis脚本
chkconfig redis_6379 on
如下所示
通过上面的操作后,以后也可以直接用下面的命令对Redis进行启动和关闭了,如下
service redis_6379 start
service redis_6379 stop
要停止redis服务正确操作,执行如下命令
redis-cli shutdown
或者杀进程也可以。
ps -ef | grep redis
kill redis 进程号
cd /usr/local/ # 安装到这个路径下
sudo wget http://download.redis.io/releases/redis-5.0.4.tar.gz sudo tar xzfredis-5.0.4.tar.gz
cdredis-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 推出服务