Valuebai / awesome-python-io

Python十分钟入门指南/技术图谱,持续更新收集整理中,期待你的参与
MIT License
8 stars 1 forks source link

【Linux】CentOS-常用命令&新云服务器安装必看 #1

Open Valuebai opened 5 years ago

Valuebai commented 5 years ago

下面我是新购买的腾讯云-Linux-CentOS服务器的使用记录

Valuebai commented 4 years ago

Centos 修改当前路径显示为全路径

修改/etc/bashrc

[ "$PS1" = "\s-\v\\$ " ] && PS1="[\u@\h \W]\$ "

修改为(W大写换成小写)

[ "$PS1" = "\s-\v\\$ " ] && PS1="[\u@\h \w]\$ "

Valuebai commented 4 years ago

查看CentOS版本命令:rpm -q centos-release

Valuebai commented 4 years ago

Centos 安装git : https://blog.csdn.net/niu15032144758/article/details/86134554

Valuebai commented 4 years ago

Centos7 升级安装Python2.7到3.6 : https://www.jianshu.com/p/1cc8f77679c8

CentOS 7 修改pip源: https://blog.csdn.net/jiankunking/article/details/86627207

Valuebai commented 4 years ago

CentOS Docker 安装

https://www.runoob.com/docker/centos-docker-install.html

centos7配置Docker镜像加速器

https://www.cnblogs.com/djlsunshine/p/11375323.html

Docker Compose安装使用&其他

https://www.runoob.com/docker/docker-compose.html【x】不要用里面的下面地址,速度会特别慢!!!

【√】用这个https://cloud.tencent.com/developer/article/1339375 里面的

curl -L https://get.daocloud.io/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

然后输入docker-compose --version检查是否安装成功

【例子】在linux-centos上部署python项目

AAA 创建python项目并上传到linux上 参考:

  1. https://blog.csdn.net/u013282737/article/details/85233408
  2. https://blog.csdn.net/weixin_34064653/article/details/91923102

无赖修改成国内源来加快编译速度: RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --no-cache-dir -r requirements.txt


**BBB Dockerfile的内容&构建镜像**

基于的基础镜像

FROM python:3.6

代码添加到code文件夹,后面可以通过进入容器中看的

ADD ./py /code

设置code文件夹是工作目录

WORKDIR /code

安装支持

RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --no-cache-dir -r requirements.txt

暴露端口

EXPOSE 5000

当容器启动时,使用python3执行指定路径的py脚本

CMD ["python", "app.py"]

根据Dockerfile制作镜像的命令:**docker build -t img_name:tag_name .** 
构建镜像,构建参数说明参考:http://www.runoob.com/docker/docker-build-command.html

**CCC 【例子】运行镜像,生成并启动容器**

执行命令:docker run -it -p 5000:5000 --name container_name IMAGE_ID 

- 这里碰到个坑,找不到制作的镜像,报Unable to find image 'py_demo1:latest' locally
- 使用命令:docker run -it -p 5000:5000 --name container_name py_demo1(制作的docker镜像)
- 解决方法: 最后的镜像填IMAGE_ID 就可以了docker run -it -p 5000:5000 --name con_py_demo1 e542a29fd603

-it:表示交互式终端的容器,非启动后立刻结束的容器

-p 5000:5000:表示将docker的5000端口,映射到Linux虚拟机的5000端口

                        也就是说,访问Linux虚拟机的5000端口,就是在访问docker容器的5000端口

--name container_name:给容器取个名字,嫌麻烦可以省去

img_name:容器是用哪个镜像启动的(一个容器,必须依赖一个镜像启动)


- 直接输入exit 会退出且关闭容器,工程就stop了,再访问就访问不了了
- Ctrl + C,会报错KeyboardInterrupt,工程就也stop了
- 解决方法:
  - 使用命令:docker start 容器ID,去再启动容器后,就可以继续访问工程
  - 使用命令:docker exec -it 容器ID /bin/bash
  - 或者 docker attach  容器ID,重新进入容器后,可查看程序打印的日志

- 但是,如果使用Ctrl + P + Q退出容器,就不会中断工程,等于退出容器后,还可访问容器的工程,再进入,也是使用命令:docker attach  容器ID

ctrl+d 退出容器且关闭, docker ps 查看无

ctrl+p+q 退出容器但不关闭

**CCC  运行镜像**
--name 服务名
 -d 后台运行
 -p 暴露端口:nginx 端口
 docker-nginx-test 镜像名/IMAGE ID

docker run --name dockertest -d -p 4455:80 docker-nginx-test


**DDD Linux-CentOS需要开启5000端口**

firewall-cmd --zone=public --add-port=5000/tcp --permanent #永久开启5000端口

firewall-cmd --reload #重启firewall 每次新添加端口都要


- 遇到的问题:5000端口已经占用
- 运行的命令:docker run -it -p 5000:5000 --name con_py_demo1 e542a29fd603
- 解决:杀掉linux-centos运行的5000端口内容
kill -9 $(netstat -nlp | grep :5000 | awk '{print $7}' | awk -F"/" '{ print $1 }')

###  **docker容器镜像删除命令**

1.查看当前运行的所有容器 docker ps -a 2.停止所有容器(container),这样才能够删除其中的images: docker stop $(docker ps -a -q) 3.如果想要删除所有容器(container)的话再加一个指令: docker rm $(docker ps -a -q) 4.查看当前有那些镜像(images) docker images 5.删除镜像(images),通过镜像(images)的id来指定删除谁 docker rmi 6.想要删除镜像(images)id为的image的话可以用 docker rmi $(docker images | grep "^" | awk "{print $3}") 7.要删除全部镜像(images)的话 docker rmi $(docker images -q)

Valuebai commented 4 years ago

CentOS7开启端口

  1. 通过systemctl start firewalld开启防火墙,没有任何提示即开启成功。
    启动: systemctl start firewalld
    查看状态: systemctl status firewalld 
    停止: systemctl disable firewalld
    禁用: systemctl stop firewalld
    启动服务:systemctl start firewalld.service
    关闭服务:systemctl stop firewalld.service
    重启服务:systemctl restart firewalld.service
    服务的状态:systemctl status firewalld.service
    在开机时启用一个服务:systemctl enable firewalld.service
    在开机时禁用一个服务:systemctl disable firewalld.service
    查看服务是否开机启动:systemctl is-enabled firewalld.service
  2. 再次通过systemctl status firewalld查看firewalld状态,显示running即已开启了。
  3. firewall-cmd --zone=public --add-port=80/tcp --permanent 永久开启80端口
  4. firewall-cmd --reload #重启firewall 每次新添加端口都要
  5. firewall-cmd --query-port=80/tcp 查看端口号是否开启

删除/关闭端口 firewall-cmd --zone=public --remove-port=80/tcp --permanent

  1. firewall-cmd --zone=public --add-port=5000/tcp --permanent 永久开启5000端口,部署python flask项目,发现外面访问不了???
    • 查了下文章,安装了nginx(【Tools】Linux CentOS7 安装nginx https://blog.csdn.net/luhuibo318/article/details/88759291
    • 同时,如果您正在运行防火墙,请运行以下命令以允许HTTP和HTTPS通信:
      sudo firewall-cmd --permanent --zone=public --add-service=http 
      sudo firewall-cmd --permanent --zone=public --add-service=https
      sudo firewall-cmd --reload

      ——用端口扫描发现5000端口还是关闭状态

解决,原因是python代码没有加下面的host='0.0.0.0', port=5000

if __name__ == '__main__':
    app.run(**debug=True, host='0.0.0.0', port=5000**)

Centos7 防火墙相关命令https://www.cnblogs.com/love-snow/articles/9149334.html 端口扫描工具http://old.tool.chinaz.com/port/

Valuebai commented 4 years ago

CentOS上传/下载文件,需安装:yum -y install lrzsz rz file_name:上传文件; sz file_name: 下载文件;

删除文件:rm file_name 删除文件夹命令 : rm -rf file_name

Valuebai commented 4 years ago

【查看端口并杀死端口】 输入netstat -ntulp | grep 5000(端口号)查看端口(需要安装net-tools工具) 再用sudo fuser -k -n tcp(协议类型) 5000(端口号)杀掉端口即可 -> 参考:https://blog.csdn.net/weixin_43708900/article/details/92561782

Valuebai commented 4 years ago

杀死linux进程

# shell杀死指定端口的进程,写到部署脚本里面
kill -9 $(netstat -nlp | grep :8188 | awk '{print $7}' | awk -F"/" '{ print $1 }')

# 另一个启动方式nohup python3 -u  run.py > nohup.log 2>&1 &
# 后台运行
nohup gunicorn -w 4 -b 0.0.0.0:8188 run:app > gunicorn.log 2>&1 &

另一个: 根据搜索进程名杀死进程 ps -ef | grep 'bert-serving-start' | grep -v grep | awk '{print $2}' | xargs kill -s SIGINT

Valuebai commented 4 years ago

git pull/push项目的时候总是提示要输入用户名密码的解决方案

  1. 在终端输入一行代码
    git config --global credential.helper store
  2. 进入项目git pull 登录后就不用再登录了
Valuebai commented 4 years ago

Linux-CentOS7-安装nginxhttps://blog.csdn.net/luhuibo318/article/details/88754448

Linux-CentOS7-安装java:https://blog.csdn.net/luhuibo318/article/details/89443221 Linux-CentOS7-安装禅道: https://blog.csdn.net/luhuibo318/article/details/84244061 Linux-CentOS7-安装mysql Linux-CentOS7-安装tomcat Linux-CentOS7-安装confluence Linux-CentOS7-安装redis Linux-CentOS7-安装mantis

Valuebai commented 4 years ago

Linux-CentOS7.4 安装mongodbhttps://www.jianshu.com/p/994bc7b19b26

centos7 下设置 mongodb 开机启动

  1. cd /lib/systemd/system
  2. vi mongodb.service
  3. 添加下面的内容
    
    [Unit]

Description=mongodb After=network.target

[Service] Type=forking ExecStart=/usr/mongodb/bin/mongod --config /usr/mongodb/mongodb.conf PrivateTmp=true

[Install] WantedBy=multi-user.target

4. chmod 777 mongodb.service
5. 开机命令

启动: systemctl start mongodb.service 关闭: systemctl stop mongodb.service 注册到开机启动: systemctl enable mongodb.service


如有修改,需用这个命令重新加载systemctl daemon-reload
6. 重启机器验证: reboot 

**【mongodb添加账号和密码】** : https://www.cnblogs.com/aGirlprogrammer/p/10972280.html

**【mongodb常用数据查询筛选命令行操作】** : https://blog.csdn.net/liqi_q/article/details/79086238

**【windows下载robo 3T 1.3版本连接远程的mongodb】**
Valuebai commented 4 years ago

在centos7中使用crontab

A 简介:就像再windows上有计划任务一样,centos7 自然也有计划任务,而且设置更为灵活,好用。再centos7 上可以利用crontab 来执行计划任务, 依赖与 crond 的系统服务,这个服务是系统自带的,可以直接查看状态,启动,停止。

systemctl status crond (查看状态)
systemctl enable crond (设为开机启动)
systemctl start crond (启动crond服务)

B 列出用户的定时任务列表 crontab -l

C 编辑crontab 的配置文件,设置定时任务。

# 编辑用户的定时任务,指定的执行的用户,默认为当前执行命令的用户
crontab -u {用户名} -e      
# 一般用这个:crontab -e 

例如添加如下的定时命令:

1# crontab注意:绝对路径;环境变量;
0 */5 * * * python -u /root/wechannel/crawler/sougou_wechat/sougou.py >> /root/wechannel/crawler/sougou_wechat/log 2>&1

2#
*/5 * *  * * /root/pyhome/crawler/lagou/changeip.sh >> /root/pyhome/crawler/lagou/ip.log 2>&1

3#
*/30 * * * root /usr/local/mycommand.sh  (每天,每30分钟执行一次 mycommand命令)

4# 
30 21 * * * /usr/local/etc/rc.d/lighttpd restart    表示每晚的21:30重启apache。

5#
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart   表示每月1、10、22日的4 : 45重启apache。
上面的例子格式遵循:
*  *  *  *  *  command
分 时  日   月  周       命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

D 默认日志 另外,执行的计划任务,日志在 /var/log/cron 中可以查看执行日志,以供分析查看

参考:https://www.cnblogs.com/p0st/p/9482167.html

Valuebai commented 4 years ago

运行项目报错,提醒内存不足 Centos/linux 服务器的内存不够了怎么办?centos用虚拟内存扩展内存:

  1. 输入:free -m查看内存状态
  2. dd if=/dev/zero of=/opt/swap bs=2048 count=2048000 //在opt分区建立名为swap,大小为1G的虚拟内存文件,默认1024,可改为2048
  3. chmod 600 /opt/swap //注意更改swap文件的权限
  4. mkswap /opt/swap //将swap文件设置为swap分区文件
  5. swapon /opt/swap //激活swap,启用分区交换文件
  6. free -m //看下结果

参考:https://blog.csdn.net/herobacking/article/details/80371242

【注意】重启后这个就会没了,需要重新设置

Valuebai commented 4 years ago

【Linux 常用命令大大全】https://blog.csdn.net/a303549861/article/details/93754526

Valuebai commented 4 years ago

linux查找符合条件的文件并删除 找到根目录下所有的以test开头的文件并把查找结果当做参数传给rm -rf命令进行删除: 1、find / -name “test” |xargs rm -rf 2、find / -name “test” -exec rm -rf {} \; 3、rm -rf $(find / -name “test”)

如果想指定递归深度,可以这样: 1、find / -maxdepth 3 -name “.mp3” |xargs rm -rf 2、find / -maxdepth 3 -name “test” -exec rm -rf {} \; 3、rm -rf $(find / -maxdepth 3 -name “test”) 这样只会查找三层目录中符合条件的文件并删除掉!