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