周松林
发布于 2024-10-18 / 58 阅读
0
0

Linux二进制安装软件或服务

1. 配置环境变量

用户环境变量配置文件
所有用户/ect/profile /etc/bashrc /etc/environment
root~/.bashrc ~/.bash-profile
非root用户/home/非root用户名/.bashrc
1.1 Linux读写环境变量**
 export 显示当前系统定义的所有环境变量
 echo $PATH  输出当前的PATH环境变量的值

PATH 变量定义的是运行命令的查找路径,以冒号 : 分割不同的路径

方式一: export PATH

export PATH=/usr/local/src/python3/bin:$PATH
# 或者把PATH放在前面
export PATH=$PATH:/usr/local/src/python3/bin

注意点

  • 生效时间:立即生效
  • 生效期限:当前打开的终端有效,窗口关闭后无效
  • 生效范围:当前登录用户
  • 需要加上$PATH,否则会覆盖原有路径

方式二: vim ~/.bashrc

vim ~/.bashrc

# 在最后一行加上

生效时间:使用相同的用户打开新的终端时生效,或者手动 生效
source ~/.bashrc
生效期限:永久有效
生效范围:当前登录用户
可能会被后续的环境变量文件覆盖了PATH的值

方式三: vim ~/.bash_profile

vim ~/.bash_profile
# 在最后一行加上

注意点

  • 生效时间:使用相同的用户打开新的终端时生效,或者手动 生效
  • source ~/.bash_profile
  • 生效期限:永久有效
  • 生效范围:当前登录用户
  • 如果没有 文件,则可以编辑 /.profile 文件或者新建一个/.bash_profile

方式四: vim /etc/bashrc

# 如果/etc/bashrc文件不可编辑,需要修改为可编辑
chmod -v u+w /etc/bashrc
vim /etc/bashrc
# 在最后一行加上
export PATH=$PATH:/usr/local/src/python3/bin

注意点

  • 生效时间:使用相同的用户打开新的终端时生效,或者手动 生效
  • source /etc/bashrc
  • 生效期限:永久有效
  • 生效范围:所有用户

方式五: vim /etc/profile

# 如果/etc/profile文件不可编辑,需要修改为可编辑
chmod -v u+w /etc/profile
vim /etc/profile
# 在最后一行加上
export PATH=$PATH:/usr/local/src/python3/bin

注意点

  • 生效时间:使用相同的用户打开新的终端时生效,或者手动 生效
  • source /etc/profile
  • 生效期限:永久有效
  • 生效范围:所有用户

方式六: vim /etc/environment

# 如果/etc/bashrc文件不可编辑,需要修改为可编辑
chmod -v u+w /etc/environment
vim /etc/profile
# 在最后一行加上
export PATH=$PATH:/usr/local/src/python3/bin

注意点

  • 生效时间:使用相同的用户打开新的终端时生效,或者手动 生效
  • source /etc/environment
  • 生效期限:永久有效
  • 生效范围:所有用户
1.2 环境变量的分类

用户级别环境变量配置文件:

  • ~/.bashrc
  • ~/.profile
  • (centos7 无)
  • ~/.bash_profile
  • /home/非root用户名/.bashrc

系统级别环境变量配置文件:

  • /etc/bashrc
  • /etc/profile
  • (centos7 无)
  • /etc/bash_profile
  • /etc/environment

环境变量加载顺序

  • /etc/environment
  • /etc/profile
  • /etc/bashrc
  • ~/.profile
  • ~/.bashrc

2. 服务配置文件

2.1 nohup 命令
# 启动
nohup /root/runoob.sh &
nohup /root/runoob.sh > runoob.log 2>&1 &

# 停止
ps -aux | grep "runoob.sh" 
ps -def | grep "runoob.sh"
kill -9  进程号PID

2>&1 解释:
将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 runoob.log 文件中。
0 – stdin (standard input,标准输入)
1 – stdout (standard output,标准输出)
2 – stderr (standard error,标准错误输出)

2.2 Service配置

halo.service 模板

[Unit]
Description=Halo Service
Documentation=https://halo.run
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=halo  # 这里写运行的用户,例如上面创建的halo用户,如果上面没有创建用户可以把这句删除
ExecStart=/usr/bin/java -server -Xms256m -Xmx256m -jar /home/halo/halo/halo-1.6.1.jar
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog

StandError=inherit

[Install]
WantedBy=multi-user.target

重载 systemd

systemctl daemon-reload
运行服务
systemctl start halo
设置自启
systemctl enable halo
查看服务日志检查启动状态
journalctl -n 20 -u halo

3. Nginx的安装与配置

https://nginx.org/en/download.html

3.1 安装

./configure 是编译前检查的命令,
--prefix=/usr/local/webserver/nginx 是安装到指定目录,
--with-http_stub_status_module --with-http_ssl_module 是安装ssl证书的两个模块,
--with-pcre=/usr/local/src/pcre-8.35 是PCRE的安装位置(https相关,可选项,后面有说明)

https依赖安装
除此之外,如果需要 Rewrite 功能(将http访问转发到https),还需要安装 PCRE,我选择官使用网上目前最新且下载量最高的 v8.45 版本
安装之前如果服务器没有安装过gcc相关的编译工具和库文件,需要先进行安装,如果已安装会自动跳过并提示


yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
# 远程拉取安装包
cd /usr/local/webserver/
wget http://downloads.sourceforge.net/project/pcre/pcre/8.45/pcre-8.45.tar.gz

# 解压安装包:
tar -zxvf pcre-8.35.tar.gz

# 进入安装包目录
cd pcre-8.35

# 编译安装 
./configure
make && make install

# 查看pcre版本,这时候已经可以全局使用下面的命令了
pcre-config --version


# 可以打开链接下载后上传至服务器,也可以使用下载命令获取安装包 
wget https://nginx.org/download/nginx-1.22.0.tar.gz

# 目录请自由选择
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel


cp nginx-1.22.0.tar.gz /usr/local/webserver/
cd /usr/local/webserver/
tar -zxvf nginx-1.22.0.tar.gz

cd nginx-1.22.0/
./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/webserver/pcre-8.45

make && make install 

rm -f /usr/local/webserver/pcre-8.45.tar.gz
rm -f /usr/local/webserver/nginx-1.22.0.tar.gz

# 安装后解压目录也可以删除,因为是文件夹,加上 -r 遍历删除
rm -rf /usr/local/webserver/nginx-1.22.0

ln -s /usr/local/webserver/nginx/sbin/nginx /usr/bin/
# 设置软链后,可以尝试在其他目录使用以下命令看是否成功
nginx -v

# 新建专属用户和组
/usr/sbin/groupadd nginx
/usr/sbin/useradd -g nginx nginx

# 检查配置
nginx -t(检查nginx.conf配置是否正确)
nginx -s reload(重新载入配置文件,通常配合-t使用,在修改了nginx.conf且检查无误之后)

# 启动
nginx
# 查看进程
ps -ef | grep nginx

# 其他的一些常用命令
nginx -s stop(停止 Nginx)
nginx -s reopen(重启 Nginx)

systemctl status nginx.service(查看nginx服务状态,通常配合-t使用)

安装完成后,会在 /usr/local/webserver/ 目录下生成一个 nginx 的目录,这是我们指定的位置。
安装后生成的 nginx 里面有四个目录 (conf html logs sbin),配置文件在 conf/nginx.conf, 启动文件在 sbin/nginx,先别着急启动,我们先完成http的配置

3.2 配置nginx的http和https

nginx.conf 文件内默认是有基础配置的,建议把配置文件下载到本地,用其他编辑器(例如 VScode)修改完后,再上传覆盖掉原来的文件,不用担心,同目录下有一个原始文件的备份(nginx.conf.default)

可操作项,根据实际项目修改,https不需要的可以注释掉
如果有Apache占用了80端口,将端口号改成其他端口
重点项在里面都标记了出来,http中有host配置,https中有host和ssl证书配置
修改完后,如果服务器已启动过,使用命令重载一下配置 $ nginx -s reload
完成以下配置后可以回到 第7步继续

vim /usr/local/webserver/nginx/conf/nginx.conf

nginx.conf

user nginx;
worker_processes  2; #设置与服务器CPU核心数一致, 也可以使用 auto

error_log  /logs/nginx/error.log crit; #日志位置和级别

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    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  /logs/nginx/access.log  main;

    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    gzip  on;

    # HTTP 服务
    server {
        listen       80;
        server_name  localhost; #重点1,修改为主机名或域名
        rewrite ^(.*)$ https://$server_name$1 permanent; #将所有HTTP请求通过rewrite指令重定向到 HTTPS

        #charset koi8-r;
        #access_log  logs/host.access.log  main;

        location / {
            root   html; #重点2,如要自定义路径请修改,默认是nginx/html/
            index  index.html index.htm; #根索引文件,也就是输入ip或域名后在浏览器访问的第一页面
        }

        error_page  404 /404.html;

        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }


    # HTTPS 服务
    server {
       listen       443 ssl;
       server_name  localhost; #重点1,修改为主机名或域名
    

       # 证书可以用openssl命令生成,也可以直接到购买的域名商里下载 Nginx使用的ssl证书,
       # 然后上传到 nginx.conf 同一目录下
       ssl_certificate      cert.pem; #重点2,ssl证书
       ssl_certificate_key  cert.key; #重点3,ssl证书key

       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  10m; #超时

       # 加密协议等等
       ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
       # ssl_ciphers PROFILE=SYSTEM;
       ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
       ssl_prefer_server_ciphers on;

       location / {
          root   html; #重点4,如要自定义路径请修改
          index  index.html index.htm;
       }

        error_page 404 /404.html;
        location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }
}


服务启动成功后,在浏览器访问服务器地址,如果修改了80或者443端口记得在访问时加上(如果配置了域名可以使用域名),另外在云服务器设置里设置网络防火墙 入规则 端口,开放http(80)和https(443)端口。如果使用域名访问记得在域名设置里 解析到当前服务器的ip上。

自定义 配置文件 L halo.conf

vim /etc/nginx/conf.d/halo.conf

halo.conf 配置文件内容修改如下,

server
{
        listen 443 ssl;
        server_name xxxx.com www.xxxx.com;
        ssl_certificate  /root/ssl/your-domain.pem;
        ssl_certificate_key /root/ssl/your-domain.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        location / {
                proxy_buffer_size  128k;
                proxy_buffers   32 32k;
                proxy_busy_buffers_size 128k;
                proxy_pass http://127.0.0.1:8090;
        }
}
server
{
        listen 80;
        server_name xxxx.com www.xxxx.com;
        rewrite ^(.*)$ https://$host$1 permanent;
}


or

server
{
        listen 443 ssl;
        server_name zhousonglin.cn www.zhousonglin.cn;
		client_max_body_size 1024m;
        ssl_certificate  /root/cert/zhousonglin.cn.pem;
        ssl_certificate_key /root/cert/zhousonglin.cn.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        location / {
                proxy_buffer_size  128k;
                proxy_buffers   32 32k;
                proxy_busy_buffers_size 128k;
                proxy_pass http://172.21.0.13:8090;
        }

	location /images {
            	root /home/halo;
            	autoindex on;
        }
	
}
server
{
        listen 80;
        server_name zhousonglin.cn www.zhousonglin.cn;
        rewrite ^(.*)$ https://$host$1 permanent;
}


评论