Linux使用笔记


Linux 软件装在哪里?

1. opt目录

`/opt` 是用来安装附加软件包,是用户级程序目录,
相当于 `D:/soft``opt`有可选的意思,
安装到`/opt`目录下的程序,所有的数据、库文件都会放置在同一个目录下

2. /usr目录

`/usr`: 相当于 C:/Windows
`/usr/lib`: 相当于 `C:/Windows/System32`
`/usr/local`: 相当于 `C:/Progrem Files`  是用户级程序目录,用户自己编译的软件默认会安装到此目录(存放手动安装的软件,即不是通过'yum''apt-get'安装的软件)
它和/usr有相似的目录结构,让软件包管理器来管理`/usr`,而把自定义脚本放到`/usr/local`目录下

源码放哪里

`/usr/src` 系统级的源码目录
`/usr/local/src` 用户级的源码目录

Linux软件包管理(安装、删除)

0. 下载软件包:wget 软件包地址

1. 手动安装(tar.gz源、tar.bz2源)
  ① 下载相应的软件包,如soft.tar.gz/soft.tar.bz2
  ② cd soft.tar.gz/soft.tar.bz2所在的目录
  ③ tar -xzvf soft.tar.gz     //一般会生成一个soft目录
  ④ cd soft 
  ⑤./configure      // 为编译做准备
  ⑥ make            // 编译软件 (时间很久)
  ⑦ make install    // 安装软件
  ⑧ make clean      // 删除安装产生的临时文件  

2. rpm包安装
  ① 下载相应的软件包,如soft.version.rpm
  ② cd soft.version.rpm所在的目录
  ③ rpm -ivh soft.version.rpm   // -i 安装软件 -t 测试安装,不是真的安装 -p 显示安装进度 -f 忽略任何错误 -U 升级安装 -v 检测套件是否正确安装
  ④ 卸载 rpm -e 软件名

3. dep包安装
  ① 下载相应的软件包,如soft.version.dep
  ② cd soft.version.dep所在目录
  ③ dpkg -i soft.version.dep
  ④ 卸载 dpkg -e 软件名
  ⑤ 查看已安装的软件包 dpkg –l '*软件包名*'

4. apt方式安装(安装deb包)
  ① apt-cache search 软件包
  ② apt-get install 软件包
  ③ 删除(保留配置文件) apt-get remove 软件名
  ④ 删除(不保留配置文件) apt-get --purge remove 软件名
  ⑤ dpkg --force-all --purge packagename ——有些软件很难卸载,而且还阻止了别的软件的应用,就可以用这个,不过有点冒险。
    apt-get autoremove——因为apt会把已装或已卸的软件都备份在硬盘上,所以如果需要空间的话,可以让这个命令来删除你已经删掉的软件。
    apt-get autoclean——定期运行这个命令来清除那些已经卸载的软件包的.deb文件。通过这种方式,可以释放大量的磁盘空间。如果需求十分迫切,可以使用apt-get clean以释放更多空间。这个命令会将已安装软件包裹的.deb文件一并删除。
    apt-get clean——这个命令会把安装的软件的备份也删除,不过这样不会影响软件的使用的。
    apt-get upgrade——更新所有已安装的软件包
    apt-get dist-upgrade——将系统升级到新版本
    apt-cache search string——在软件包列表中搜索字符串
    apt-cache showpkg pkgs——显示软件包信息。
    apt-cache stats——查看库里有多少软件
    apt-cache dumpavail——打印可用软件包列表。
    apt-cache show pkgs——显示软件包记录,类似于dpkg –print-avail。
    apt-cache pkgnames——打印软件包列表中所有软件包的名称

5. yum方式安装
  ① yum -y install 软件包
  ② 卸载 yum remove 软件名
  ③ 已安装列表 yum list all
  ④ 查看软件包信息 yum info 软件名
  ⑥ 升级所有的软件包 yum update 软件名 
  ⑦ 清除所有包缓存  yum clean all 


// 切换yum源

// 首先备份/etc/yum.repos.d/CentOS-Base.repo
// 重命名
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

// 下载对应版本 repo 文件, 放入 /etc/yum.repos.d/ (操作前请做好相应备份)
// 163源
CentOS5 :http://mirrors.163.com/.help/CentOS5-Base-163.repo
CentOS6 :http://mirrors.163.com/.help/CentOS6-Base-163.repo
CentOS7 :http://mirrors.163.com/.help/CentOS7-Base-163.repo

// 阿里云源
CentOS5 :http://mirrors.aliyun.com/repo/Centos-5.repo
CentOS6 :http://mirrors.aliyun.com/repo/Centos-6.repo
CentOS7 :http://mirrors.aliyun.com/repo/Centos-7.repo

// 下载
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

//重命名
mv CentOS6-Base-163.repo CentOS-Base.repo

// 运行以下命令生成缓存
yum clean all
yum makecache

自己在Linux 上的一些操作

安装 node

node -v     // 查看是否已安装
yum install nodejs    // 安装nodejs 询问时 输入 y
rpm -qa | grep node // 查看是否已安装
rpm -ql node // 查看安装路径

安装 Nginx

yum install nginx   // 安装nginx

systemctl start nginx.service   // 启动nginx
systemctl enable nginx.service    // 开机启动
systemctl stop nginx.service    // 停止nginx服务

配置Nginx

  • 配置两个ssl证书
    # For more information on configuration, see:
    #   * Official English Documentation: http://nginx.org/en/docs/
    #   * Official Russian Documentation: http://nginx.org/ru/docs/
    user nginx;
    worker_processes auto;
    error_log /var/log/nginx/error.log;
    pid /run/nginx.pid;
    
    Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
    include /usr/share/nginx/modules/*.conf;
    
    events {
    worker_connections 1024;
    }
    
    http {
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';
    
    access_log  /var/log/nginx/access.log  main;
    
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;
    
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    
    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;
    
    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  www.damao2250.com;
        root         /var/www/damao;
        #告诉浏览器有效期内只准用 https 访问
        add_header Strict-Transport-Security max-age=15768000;
        #永久重定向到 https 站点
        return 301 https://$server_name$request_uri;
    }
    Settings for a TLS enabled server.
    server {
    listen 443 ssl http2 default_server;
    listen [::]:443 ssl http2 default_server;
    server_name www.damao2250.com;
    root /var/www/damao;
    
       ssl_certificate "/opt/ssl/www.damao2250.com/www.damao2250.com.pem";
       ssl_certificate_key "/opt/ssl/www.damao2250.com/www.damao2250.com.key";
       ssl_session_cache shared:SSL:1m;
       ssl_session_timeout  10m;
       ssl_ciphers HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers on;
    
       # Load configuration files for the default server block.
       include /etc/nginx/default.d/*.conf;
    
       location / {
       }
    
       error_page 404 /404.html;
           location = /40x.html {
       }
    
       error_page 500 502 503 504 /50x.html;
           location = /50x.html {
       }
    }
    
    server {
        listen       80;
        server_name  ycy.damao2250.com;
        #告诉浏览器有效期内只准用 https 访问
        add_header Strict-Transport-Security max-age=15768000;
        #永久重定向到 https 站点
        return 301 https://$server_name$request_uri;
    }
    Settings for a TLS enabled server.
    server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name ycy.damao2250.com;
    root /var/www/ycy;
    
       ssl_certificate "/opt/ssl/ycy.damao2250.com/ycy.damao2250.com.pem";
       ssl_certificate_key "/opt/ssl/ycy.damao2250.com/ycy.damao2250.com.key";
       ssl_session_cache shared:SSL:1m;
       ssl_session_timeout  10m;
       ssl_ciphers HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers on;
    
       # Load configuration files for the default server block.
       include /etc/nginx/default.d/*.conf;
    
       location / {
       }
    
       error_page 404 /404.html;
           location = /40x.html {
       }
    
       error_page 500 502 503 504 /50x.html;
           location = /50x.html {
       }
    }
    
    }

部署Gitlab

// 安装依赖软件
yum -y install policycoreutils  policycoreutils-python openssh-server openssh-clients postfix
// but already installed and latest version  && Nothing to do

// 开启postfix, postfix支持gitlab发信功能,设置postfix开机自启
systemctl enable postfix && systemctl start postfix

// 如若 postfix 无法启动
// 修改 /etc/postfix/main.cf
inet_interfaces = all
inet_protocols = ipv4
systemctl start postfix
systemctl enable postfix

// 如无法ssh来远程连接主机的 开启 ssh 
systemctl enable sshd
systemctl start sshd


// 安装防火墙
yum install firewalld systemd -y
// 开启防火墙
service firewalld start
// 添加http服务到firewalld,pemmanent表示永久生效,若不加--permanent系统下次启动后就会失效。
firewall-cmd --permanent --add-service=http
// 重启防火墙
systemctl reload firewalld





// 下载gitlab
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.5.0-ce.0.el7.x86_64.rpm

// 安装 ce代表社区版 ee代表企业版
rpm -i gitlab-ce-12.5.0-ce.0.el7.x86_64.rpm

// 修改配置文件 gitlab.rb  使用外部nginx 不使用内部nginx
vim /etc/gitlab/gitlab.rb


external_url 'http://120.79.166.206:8888'



// 重置并启动gitlab
gitlab-ctl stop

gitlab-ctl reconfigure

gitlab-ctl restart

// 如果执行 gitlab-ctl reconfigure 卡死在 ruby_block[authorize Grafana with GitLab] action run   就强制结束  ctrl+c 然后
systemctl restart gitlab-runsvdir
// 再
gitlab-ctl stop
gitlab-ctl reconfigure
gitlab-ctl restart



// 访问报502。原因是nginx用户无法访问gitlab用户的socket文件。 重启gitlab需要重新授权
chmod -R o+x /var/opt/gitlab/gitlab-rails
// 访问502也可能是  内存太小 超时了

// 初始账户: root 密码:5iveL!fe




// 完全卸载GitLab
// 一. 停止gitlab
//     sudo gitlab-ctl stop
// 二、卸载gitlab(这块注意了,看看是gitlab-ce版本还是gitlab-ee版本,别写错误了)
//     sudo rpm -e gitlab-ce

// 三、查看gitlab进程

//     ps -ef|grep gitlab
//      杀掉第一个守护进程(runsvdir -P /opt/gitlab/service log)
//      kill -9 4473
//      再次查看gitlab进程是否存在

// 四、删除gitlab文件

//         find / -name *gitlab*|xargs rm -rf      删除所有包含gitlab的文件及目录

//         find / -name gitlab |xargs rm -rf 

//         删除gitlab-ctl uninstall时自动在root下备份的配置文件(ls /root/gitlab* 看看有没有,有也删除)

// 通过以上几步就可以彻底卸载gitlab

  目录