vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
vim键盘图:
初次见面,看不懂上图没关系,不妨先继续学习vim,大致了解vim后再来细细品味它。
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。
命令模式:
用户刚刚启动 vi/vim,便进入了命令模式。
此状态下不会输入字符内容,只能执行命令。
常用命令:
输入模式:
在命令模式下按下 i 就进入了输入模式。
在输入模式中,可以使用以下按键:
底线命令模式:
在命令模式下按下 :(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有:
按ESC键可随时退出底线命令模式。
三种模式的关系图
前文中手误在csc目录的a1.txt文件中手误拼错一个单词,刚好通过该知识点来练手修复这个错误~
1:首先进入csc目录,通过下列命令在vim中打开a1.txt文件。
vim a1.txt
2:按下 i 进入输入模式,通过方向键控制光标对错误单词进行修改。
3:更改完文本后按ESC键退出输入模式,重新进入命令模式。
4:在命令模式中按下 : (冒号)进入底线命令模式,并输入wq保存并退出vim编辑器。
前文中手误在csc目录的a1.txt文件中手误拼错一个单词,刚好通过该知识点来练手修复这个错误~
1:首先进入csc目录,通过下列命令在vim中打开a1.txt文件。
vim a1.txt
2:按下 i 进入输入模式,通过方向键控制光标对错误单词进行修改。
3:更改完文本后按ESC键退出输入模式,重新进入命令模式。
4:在命令模式中按下 : (冒号)进入底线命令模式,并输入wq保存并退出vim编辑器。
基础光标移动:
可以通过输入数组后再加上上述命令,实现一次性移动n行的效果。例如“10j”或“10↓”可一次性向下移动10行。
[Ctrl] + [f] :屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)。
[Ctrl] + [b]:屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)。
[Ctrl] + [d]:屏幕『向下』移动半页。
[Ctrl] + [u]:屏幕『向上』移动半页。
+:光标移动到非空格符的下一行。
- :光标移动到非空格符的上一行。
n
0 或功能键[Home] :移动到这一行的最前面字符处 (常用)。
$ 或功能键[End] :移动到这一行的最后面字符处 (常用)。
H :光标移动到这个屏幕的最上方那一行的第一个字符。
M:光标移动到这个屏幕的中央那一行的第一个字符。
L :光标移动到这个屏幕的最下方那一行的第一个字符。
G :移动到这个档案的最后一行(常用)。
n
gg:移动到这个档案的第一行,相当于 1G (常用)。
n
本小节接下来的内容更倾向实际操作体验,建议打开环境,在真机中同步体验。(可优先尝试常用功能)
当真机体验尝试时,不小心修改到文本内容又不想保存退出的话,可以使用 :q! 强制退出不保存。
复制/粘贴,作为一位码农的必备神器!
【删除】
【复制与粘贴】
不难发现该部分快捷键基本与删除类快捷键格式差不多,仅通过x(删除)与y(复制)区分。
p与P:p将已复制的数据在光标下一行粘贴,P 则为贴在光标上一行粘贴 (常用)。
J :将光标所在行与下一行的数据结合成同一行(合并行)。
c :重复删除多个数据。例如向下删除 10 行,[ 10cj ](注意大小写,不要与上面的J混淆)
u:复原前一个动作(撤销操作) (常用)。
[Ctrl]+r:重做上一个动作 (常用)。
.(就是一个点) :重复前一个动作 (常用)。
快捷键需要在命令模式中操作使用
i,I 进入输入模式:i 从当前光标所在处输入; I 从当前光标所在行的第一个非空格处开始输入。 (常用)
a,A 进入输入模式:a 从当前光标所在的下一个字符处开始输入; A 从光标所在行的最后一个字符处开始输入。(常用)
o,O 进入输入模式:o 从目前光标所在的下一行处插入新的一行并开始输入; O 为在目前光标所在处的上一行插入新的一行。(常用)
r,R 进入取代模式:r 只会取代光标所在的那一个字符一次;R 会一直取代光标所在的文字,直到按下 ESC 为止。(常用)
使用上述按键时,vim界面左下角会出现[--INSERT--]或[--REPLACE--]的字样,表示进入输入模式。
[Esc]:退出编辑模式,回到一般模式中。 (常用)
! 在vim中常用作强制操作。
代码编辑常需要使用到对行号的定位。
通过下列按钮可以实现行号的开启与关闭。
前言:Linux的基础用法已经在前几章节中介绍。接下来将会通过部署LNMP(Linux+Nginx+MySQL+PHP)环境来加以巩固前几章所学的知识,并借以实操。
建议在已部署好的Linux系统中跟随本章节同步进行实操练习。
所需安装包:
安装包下载链接:https://pan.baidu.com/s/1KDwBIikBJtQHTZHqm0AKCA
提取码:cxy5
本章节主要通过PHP环境安装来加深对Linux的基础命令的使用。
课程中仅提供基础环境搭建,如需搭建线上项目运行环境,建议可以在课程学习之余了解更多的相关环境搭建详情及对应的权限部署等知识。
如果对这方面知识尚未较全面掌握,但是又急需搭建线上环境,建议可以下载使用第三方提供的一键安装包。
例如PHP一键环境:
- lnmp
- 宝塔面板
- 云服务器用户也可以用平台提供的第三方镜像
前面章节中都是通过Putty连接服务器。
接下来我们需要将已下载好的安装包上传到Linux系统中。
我们将会通过rz/sz命令行工具配合Xshell连接工具实现文件上传至Linux系统。
1:在Linux系统中安装rz/sz命令行工具。
安装命令:
yum install lrzsz
2:打开Xshell连接工具,并连接Linux服务器后,执行rz命令。
选择对应文件后即开始上传文件到Linux中。(依此方法将前面提及的预备安装包上传至Linux中)
MySQL的安装包较大,需要较长的上传时间,建议可以晚上电脑挂机上传。(该文件建议单独上传)
不建议一次性上传太多文件,会导致上传失败。如若失败可通过Ctrl+c中断命令。
1:首先创建 /www/web 用于存入程序代码; /www/source 环境的安装目录; /www/lnmp 用于存放安装软件。
通过如下命令创建:
mkdir -p /www/{lnmp,source,web}
2:并将之前的安装包移动到/www/lnmp文件夹中。
mv libxml2-2.9.1.tar.gz mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz nginx-1.8.0.tar.gz openssl-1.0.2u.tar.gz pcre-8.36.tar.gz php-7.4.1.tar.gz zlib-1.2.3.tar.gz /www/lnmp
3:进入lnmp文件夹,使用find命令解压文件。
cd /www/lnmp/
find ./*.tar.gz -exec tar zxvf {} \;
解压完后的目录。
通过yum安装编译过程中需要的编译工具和小程序。如:gcc、gd库、cmake等等。
通过如下命令:
yum install -y gcc gcc-c++ make sudo autoconf libtool-ltdl-devel gd-devel \
freetype-devel libxml2-devel libjpeg-devel libpng-devel \
openssl-devel curl-devel patch libmcrypt-devel \
libmhash-devel ncurses-devel bzip2 \
libcap-devel ntp sysklogd diffutils sendmail iptables unzip cmake
安装过程有些许缓慢,耐心等待。
接下来我们创建2个用户,分别用来启动MySQL和Nginx。
通过如下命令创建用户,并给予权限。
groupadd mysql
useradd -r mysql -g mysql
groupadd www
useradd -r www -g www
安装Nginx之前,需要先安装3个依赖包。
1:安装pcre
cd /www/lnmp/pcre-8.36
./configure
make
make install
初次安装切记, ./configure 之后需要按一下“回车”,等待配置,配置后再输入make,然后再次“回车”,等待编译,最后输入make install。
2:安装 openssl
cd /www/lnmp/openssl-1.0.2u
./config
make
make install
3:安装 zlib
cd /www/lnmp/zlib-1.2.3
CFLAGS="-O3 -fPIC" ./configure
make && make install
4:安装 Nginx
Nginx安装过程中参数较多,教程中我们以最简化安装。进入Nginx目录中可以使用 ./configure --help命令查看参数。以下介绍几个常用的命令。
接下来继续Nginx安装步骤。
cd /www/lnmp/nginx-1.8.0
./configure --user=www --group=www --prefix=/www/source/nginx --with-pcre=/www/lnmp/pcre-8.36 --with-zlib=/www/lnmp/zlib-1.2.3 --with-openssl=/www/lnmp/openssl-1.0.2u
make && make install
安装成功后通过ls /www/source 命令查看,发现有nginx,证明安装成功。
1:将已上传的安装包复制到/usr/local,并解压后将目录名改为mysql。
cd /www/lnmp
mv mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz /usr/local
cd /usr/local
tar -xzvf mysql-5.6.46-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.6.46-linux-glibc2.12-x86_64 mysql
2:在/usr/local/mysql目录下创建data目录
mkdir /usr/local/mysql/data
3:创建mysql用户组和用户。
cat /etc/group | grep mysql
cat /etc/passwd |grep mysql
groupadd mysql
useradd -r -g mysql mysql
4:设置权限。
chown -R mysql:mysql /usr/local/mysql
chmod -R 755 /usr/local/mysql
5:编译安装并初始化MySQL
此处可以先检查是否有安装链接库文件等小工具。
rpm -qa|grep libaio
如若未安装可通过如下命令安装:
yum install libaio-devel.x86_64
yum -y install numactl
开始初始化。
cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
初始化成功。
6:编辑配置文件my.cnf (标注区域,记住将#号去掉,并填入对应参数)
7:启动MySQL服务器
/usr/local/mysql/support-files/mysql.server start
启动成功。
8:添加软连接,重启MySQL服务。
ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
service mysql restart
9:登录MySQL,修改密码(默认为空,直接回车)
mysql -u root -p
输入密码:为空回车
set password for root@localhost = password('w3cschool');
本文中的流程在不同环境中可能出现部分步骤不同,或者一些报错,建议遇到的同学可以将错误信息通过百度了解对应的解决方案。
1:安装依赖包libxml2。
cd /www/lnmp/libxml2-2.9.1
./configure --with-python=no
make && make install
先介绍一下PHP常用的编译参数:
2:配置命令:
cd /www/lnmp/php-7.4.1
./configure --prefix=/www/source/php --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-openssl --with-libxml-dir --with-zlib --enable-mbstring --with-mysqli=mysqlnd --enable-mysqlnd --with-pdo-mysql=/usr/local/mysql/ --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --enable-sockets --with-curl --enable-maintainer-zts
如若遇到下列问题,可根据解决方法处理后再次运行配置步骤。
error: Package requirements (sqlite3 > 3.7.4) were not met
error: Package requirements (sqlite3 > 3.7.4) were not metNo package 'sqlite3' found
解决方案,运行命令:yum install libsqlite3x-devel -y
error: Package requirements (oniguruma) were not met
error: Package requirements (oniguruma) were not metNo package 'oniguruma' found
解决方案,运行命令:yum install oniguruma-devel -y
3:配置无误后即可运行make进行编译。
make
4:运行测试命令。
make test
该步骤会让你输入邮箱。
4:编译通过后,先停止PHP-FPM服务。
systemctl stop php-fpm
5:然后使用make install 进行安装。
make install
1:PHP配置
cd /www/source/php/
cp etc/php-fpm.conf.default etc/php-fpm.conf
cp etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.conf
cp /www/lnmp/php-7.1.1/php.ini-production lib/php.ini
2:启动 php-fpm
/www/source/php/sbin/php-fpm
3:Nginx配置
cd /www/source/nginx/conf/
vim nginx.conf
将 nginx.conf 中的 server 保存成如下
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
root /www/web;
index index.html index.php;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME /www/web$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
}
4:启动 Nginx
/www/source/nginx/sbin/nginx
1:在 /www/web/ 目录下创建一个index.php,并写入如下内容。
cd /www/web/
vim index.php
2:修改 index.php 所属组
chown -R www:www /www/web/
3:查看localhost页面
本地搭建的同学可以直接浏览器访问localhost。
服务器搭建的同学可以通过curl localhost访问,不过在命令行中页面会被以文本的形式呈现。
curl localhost
至此,php环境搭建完毕,过程中可能因为环境等因素存在课程中未提及的问题导致安装步骤报错,建议可以尝试将所遇问题到google、百度中查找对应解决方案。