分类 Linux 下的文章

0 背景

最近实验室的gpu服务器老是出问题,需要重新装显卡驱动。网上教程非常老旧,很多说的都不知所云
作者曾经尝试的安装方法和结果:
官网下载driver——安装失败
直接用cuda toolkit,一口气安装驱动和cuda——安装失败
所以作者采用了本文中的方法。
本教程旨在记录本人亲自安装成功的一次经历。在相同的系统环境下可安装成功,不同系统环境仅供参考,不保证成功。
本文旨在简洁明了、可直接复制命令执行、可复现、可读性好
**本文环境:
ubuntu server 20.04,其他系统仅供参考!**
注意,本文仅适用于ubuntu server,不需要图形界面,没有对图形界面进行特殊考虑和验证!依赖图形操作界面的读者慎用!
注意,本文仅适用于ubuntu server,不需要图形界面,没有对图形界面进行特殊考虑和验证!依赖图形操作界面的读者慎用!
注意,本文仅适用于ubuntu server,不需要图形界面,没有对图形界面进行特殊考虑和验证!依赖图形操作界面的读者慎用!

1 安装nvidia驱动

1.1 查看是否安装了gcc

gcc -v

若没有安装,则输入下面的命令,直接把包括gcc在内很多开发工具包一同安装

sudo apt-get install build-essential

1.2 禁用nouveau驱动

编辑 /etc/modprobe.d/blacklist-nouveau.conf 文件,添加以下内容:

blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off

关闭nouveau:

echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf

注意,本文仅适用于ubuntu server,不需要图形界面,没有对图形界面进行特殊考虑和验证!依赖图形操作界面的读者慎用!
注意,本文仅适用于ubuntu server,不需要图形界面,没有对图形界面进行特殊考虑和验证!依赖图形操作界面的读者慎用!
注意,本文仅适用于ubuntu server,不需要图形界面,没有对图形界面进行特殊考虑和验证!依赖图形操作界面的读者慎用!
完成后,重新生成内核并重启:

sudo update-initramfs -u
sudo reboot

重启后,执行:lsmod | grep nouveau如果没有屏幕输出,说明禁用nouveau成功。否则,应重新执行第1.2小节

1.3 安装驱动

使用命令ubuntu-drivers devices获取可用驱动信息,如果命令不存在自己安装一下。
输出为(不同电脑依据配置输出不同,我这里还有报错但是不影响)

ERROR:root:could not open aplay -l
Traceback (most recent call last):
  File "/usr/share/ubuntu-drivers-common/detect/sl-modem.py", line 35, in detect
    aplay = subprocess.Popen(
  File "/usr/lib/python3.8/subprocess.py", line 854, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/lib/python3.8/subprocess.py", line 1702, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'aplay'
== /sys/devices/pci0000:17/0000:17:00.0/0000:18:00.0 ==
modalias : pci:v000010DEd00002204sv000010DEsd00001454bc03sc00i00
vendor   : NVIDIA Corporation
driver   : nvidia-driver-470 - distro non-free recommended
driver   : nvidia-driver-460 - distro non-free
driver   : nvidia-driver-470-server - distro non-free
driver   : nvidia-driver-495 - distro non-free
driver   : nvidia-driver-460-server - distro non-free
driver   : xserver-xorg-video-nouveau - distro free builtin

从上述信息中找到driver,后面找recommend,发现了系统推荐安装的驱动程序nvidia-driver-470。这里考虑到是ubuntu server,所以我最终选择了nvidia-driver-470-server。
执行命令安装驱动:sudo apt install nvidia-driver-470-server
等待安装完成后,执行nvidia-smi可以输出gpu监控界面,则驱动安装成功!从监控信息中我们可以看到cuda版本是11.4,所以下面我们安装cuda toolkit的时候也是安装这个版本的。

2 安装cuda

https://developer.nvidia.com/cuda-toolkit-archive中找到相应的版本。这里我们选用11.4的版本,采用runfile的安装形式。
直接输入以下命令:

wget https://developer.download.nvidia.com/compute/cuda/11.4.0/local_installers/cuda_11.4.0_470.42.01_linux.run
sudo sh cuda_11.4.0_470.42.01_linux.run

注意,当提醒你已经安装了driver的时候,直接continue。当选择安装内容的时候,务必把driver前面的x取消掉,因为我们已经安装了驱动!!!
安装完成后重启,输入nvcc -V显示相关信息,则安装成功!

3 解决服务器ssh一段时间后连不上的问题

装好驱动后,发现服务器一段时间后ssh就连不上了,必须得重启才行。后来看了服务器日志才发现是服务器设置了自动挂起。
输入命令:systemctl status sleep.target
输出信息:

● sleep.target - Sleep
Loaded: loaded (/lib/systemd/system/sleep.target; static; vendor preset: enabled)
Active: inactive (dead)
Docs: man:systemd.special(7)

可以发现loaded。说明自动sleep是启用了。
我们输入命令:sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target将其禁用。
输入命令:systemctl status sleep.target
输出信息:

● sleep.target
Loaded: masked (Reason: Unit sleep.target is masked.)
Active: inactive (dead)

说明禁用成功!
再次提醒:
注意,本文仅适用于ubuntu server,不需要图形界面,没有对图形界面进行特殊考虑和验证!依赖图形操作界面的读者慎用!
注意,本文仅适用于ubuntu server,不需要图形界面,没有对图形界面进行特殊考虑和验证!依赖图形操作界面的读者慎用!
注意,本文仅适用于ubuntu server,不需要图形界面,没有对图形界面进行特殊考虑和验证!依赖图形操作界面的读者慎用!
如果读者依赖图形界面,本文没有进行特殊考虑和验证,不能确定会不会有问题,请读者留意并结合其他教程使用!

4 参考资料

https://blog.csdn.net/qq_34387533/article/details/116011839
https://www.cnblogs.com/pprp/p/9430836.html
https://zhuanlan.zhihu.com/p/393152883

1 背景

首先明确,环境变量配置文件,可以分为用户级别环境变量配置系统级别环境变量配置。

以bash为例,其中用户级别环境变量配置包括:

  • ~/.bashrc
  • ~/.bash_profile

系统级别环境变量配置包括:

  • /etc/bashrc
  • /etc/profile

2 详细方法

2.1 用户级别环境变量配置

2.1.1 启动新终端生效:vim ~/.bashrc

通过修改用户目录下的~/.bashrc文件进行配置:

vim ~/.bashrc

# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin

注意事项:

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

2.1.2 登陆时生效:vim ~/.bash_profile

和修改~/.bashrc文件类似,也是要在文件最后加上新的路径即可:

vim ~/.bash_profile

# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin

注意事项:

  • 生效时间:用户登陆时生效,或者手动source ~/.bash_profile生效
  • 生效期限:永久有效
  • 生效范围:仅对当前用户有效
  • 如果没有~/.bash_profile文件,则可以编辑~/.profile文件或者新建一个

2.2 系统级别环境变量配置

2.2.1 启动终端时生效 vim /etc/bashrc

该方法是修改系统配置,需要管理员权限(如root)或者对该文件的写入权限:

vim /etc/bashrc

# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin

注意事项:

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

2.2.2 登陆时生效vim /etc/profile

该方法修改系统配置,需要管理员权限或者对该文件的写入权限,和vim /etc/bashrc类似:


vim /etc/profile

# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin

注意事项:

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

参考资料:
https://www.cnblogs.com/youyoui/p/10680329.html

1 客户端生成公私钥

注意,如果已经有了公钥和私钥不需要重复生成
使用如下命令,在本地客户端生成公私钥

ssh-keygen

如何没有特别需要,一路回车即可。
上面这个命令会在用户目录的.ssh文件夹下创建公私钥
使用命令cd ~/.ssh进入相应目录,可以看到公钥和私钥。
id_rsa (私钥)
id_rsa.pub (公钥)

2 上传公钥到服务器

以我们实验室的服务器为例,用户名为wlg,ip为192.168.3.154

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

上面这条命令是写到服务器上的ssh目录下去了
使用如下命令:

cd ~/.ssh
vim authorized_keys

可以看到客户端写入到服务器的 id_rsa.pub (公钥)内容。

3 设置直接使用主机名登陆

vim ~/.ssh/config

根据实际情况修改以下内容

Host your hostname
  HostName your ip
  User your username
  ProxyCommand nc -X connect -x proxyIP:port %h %p

参考资料

https://blog.csdn.net/jeikerxiao/article/details/84105529

1、mysql只能使用sudo mysql免密登陆/如何关闭sudo mysql免密登陆?

MariaDB 10.31关闭免密登陆方法:
ALTER USER root@localhost IDENTIFIED VIA mysql_native_password;SET PASSWORD = PASSWORD('foo');
然后flush一下即可。

2、php不生效。

1、检查是不是配置文件夹sites-enable还有其他配置文件影响。
2、在Ubuntu下安装的php-fpm是7.4版本的,端口不是9000,而要这么设置:(见安装wordpress的教程)

3、wordpress不能上传文件、不能安装插件,弹出ftp来。

首先确认wordpress的文件夹改成了777
然后在配置文件里加这些:
修改wp-config.php文件

define("FS_METHOD", "direct");

define("FS_CHMOD_DIR", 0777);

define("FS_CHMOD_FILE", 0777);

4、typecho进后台显示404

一般的出现这种情况时,nginx.conf里的的location设置都是类似这样

location ~ .*\.php$

要支持pathinfo,要改成

location ~ .*\.php(\/.*)*$

5、typecho点击文章标题无法进入文章,地址栏变了,但不会进入文章

在location里加入如下一行试试

fastcgi_split_path_info ^(.+?\.php)(/.*)$;

1 背景

Ubuntu 20.04是目前较常用的稳定版本,也是很多云服务器厂商提供的最新系统,很多人用来搭建服务器,以支持自己的个人网站。常用的博客系统例如wordpress、typecho都需要nginx、mysql、php环境。
然而,网上的LNMP教程极其老旧,有以下问题:

  • 大部分都是基于centos系统的教程,与ubuntu情况有出入。
  • 使用的Ubuntu版本很旧,大部分都是18.04甚至还有在用16.04的,已经过时。有的明明是20.04,但是还在用apt-get,动摇对文章可行性的信心。
  • 文章中提出的操作不可行,或者跳步,对初学者不友好。
  • 排版混乱,可读性差,让人失去阅读兴趣。

本文旨在解决上述问题,提供一个在Ubuntu 20.04下,完全可行的安装搭建LNMP的教程。
涉及版本:
Ubuntu 20.04 LTS
nginx 1.18
MariaDB 10.31
PHP-FPM7.4等
注意,本文是在普通用户具有sudo权限的情况下适用的!

2 安装nginx

2.1 更新可用软件包列表

sudo apt install

2.2 安装nginx

sudo apt install nginx

2.3 编辑nginx配置
输入命令cd /etc/nginx/sites-enable进入目录,然后sudo rm -f default删除里面的默认配置。
命令sudo vim test新建配置文件,然后输入以下内容:

server {
    listen       80;
    root   /var/www/html;
    server_name  localhost;
    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;
    #
    location / {
        index index.php index.html index.htm;
    }
    #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   /var/www/html;
    }
    #pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ .php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

2.4 启动、设置开机启动nginx

sudo systemctl start nginx
sudo systemctl enable nginx

2.5 在本地浏览器中访问以下地址,查看 Nginx 服务是否正常运行。

http://云服务器实例的公网 IP

如果显示如下内容,说明配置成功。
fdc40877928729679d392eb304a3f12c.png

3 安装数据库

3.1 安装mariadb数据库(也就是可以看成mysql的社区版本)。

sudo apt install mariadb-server mariadb-client

3.2 执行以下命令,启动 MariaDB 服务。

systemctl start mariadb

3.3 执行以下命令,设置 MariaDB 为开机自启动。

systemctl enable mariadb

3.4 执行以下命令,验证 MariaDB 是否安装成功。

sudo mysql

3.5 执行以下命令,退出 MariaDB。
q

4 安装PHP

4.1 安装php

sudo apt install php7.4-cli php7.4-common php7.4-mysqlnd php7.4-fpm

4.2 *观察安装的版本,如果是7.4,则执行以下命令,启动 PHP-FPM 服务。否则根据版本自行调整。从此往下均只支持7.4,其他版本未做验证,特此说明!

systemctl start php7.4-fpm

执行以下命令,设置 PHP-FPM 服务为开机自启动。

systemctl enable php7.4-fpm

4.3 修改nginx配置以支持php
输入

sudo vim /etc/nginx/sites-enable/test

按下i进入编辑模式,然后把里面fastcgi_pass那一行改成:

fastcgi_pass   unix:/var/run/php/php7.4-fpm.sock;

然后按下esc,然后按下:,然后输入wq,然后回车保存退出。
注意:本小节仅支持php-fpm 7.4版本,其他版本未做验证,特此说明!!!!

4.4 验证环境配置
如果/var/www/html文件夹下有其他文件,先用rm命令删掉。
然后执行以下命令,创建测试文件。

sudo vim /var/www/html/index.php

然后,按下i进入编辑模式,输入<?php phpinfo(); ?>,然后按下esc,然后按下:,然后输入wq,然后回车保存退出。
执行以下命令,重启 Nginx 服务。

sudo systemctl restart nginx

然后在本地浏览器中访问如下地址,查看环境配置是否成功。
http://云服务器实例的公网 IP
显示结果如下, 则说明环境配置成功。注意图片仅供示例,具体版本以实际为准!
640812413941a61efe29d7faa546ad80.png
注意:本小节仅支持php-fpm 7.4版本,其他版本未做验证,特此说明!!!!