walklang / linux Goto Github PK
View Code? Open in Web Editor NEWThe Ultimate Linux Tutorial.
License: Apache License 2.0
The Ultimate Linux Tutorial.
License: Apache License 2.0
MySQL是最流行的关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。
MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。
# 安装编译工具及库文件
yum -y install gcc gcc-c++ make autoconf libtool-ltdl-devel gd-devel freetype-devel libxml2-devel libjpeg-devel libpng-devel openssl-devel curl-devel bison patch unzip libmcrypt-devel libmhash-devel ncurses-devel sudo bzip2 flex libaio-devel
# 安装cmake 编译器
wget http://www.cmake.org/files/v3.1/cmake-3.1.1.tar.gz
# 解压安装包
tar zxvf cmake-3.1.1.tar.gz
# 进入安装包目录
cd cmake-3.1.1
# 编译安装
./bootstrap
make && make install
# 下载MySQL
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15.tar.gz
# 解压安装包
tar zxvf mysql-5.6.15.tar.gz
# 进入安装包目录
cd mysql-5.6.15
# 编译安装
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql/ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_INNODB_MEMCACHED=1 -DWITH_DEBUG=OFF -DWITH_ZLIB=bundled -DENABLED_LOCAL_INFILE=1 -DENABLED_PROFILING=ON -DMYSQL_MAINTAINER_MODE=OFF -DMYSQL_DATADIR=/usr/local/webserver/mysql/data -DMYSQL_TCP_PORT=3306
make && make install
# 查看mysql版本
/usr/local/webserver/mysql/bin/mysql --version
# 创建mysql运行使用的用户mysql
/usr/sbin/groupadd mysql
/usr/sbin/useradd -g mysql mysql
# 创建binlog和库的存储路径并赋予mysql用户权限
mkdir -p /usr/local/webserver/mysql/binlog /www/data_mysql
chown mysql.mysql /usr/local/webserver/mysql/binlog/ /www/data_mysql/
# 创建my.cnf配置文件
cat /etc/my.cnf
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
replicate-ignore-db = mysql
replicate-ignore-db = test
replicate-ignore-db = information_schema
user = mysql
port = 3306
socket = /tmp/mysql.sock
basedir = /usr/local/webserver/mysql
datadir = /www/data_mysql
log-error = /usr/local/webserver/mysql/mysql_error.log
pid-file = /usr/local/webserver/mysql/mysql.pid
open_files_limit = 65535
back_log = 600
max_connections = 5000
max_connect_errors = 1000
table_open_cache = 1024
external-locking = FALSE
max_allowed_packet = 32M
sort_buffer_size = 1M
join_buffer_size = 1M
thread_cache_size = 600
#thread_concurrency = 8
query_cache_size = 128M
query_cache_limit = 2M
query_cache_min_res_unit = 2k
default-storage-engine = MyISAM
default-tmp-storage-engine=MYISAM
thread_stack = 192K
transaction_isolation = READ-COMMITTED
tmp_table_size = 128M
max_heap_table_size = 128M
log-slave-updates
log-bin = /usr/local/webserver/mysql/binlog/binlog
binlog-do-db=oa_fb
binlog-ignore-db=mysql
binlog_cache_size = 4M
binlog_format = MIXED
max_binlog_cache_size = 8M
max_binlog_size = 1G
relay-log-index = /usr/local/webserver/mysql/relaylog/relaylog
relay-log-info-file = /usr/local/webserver/mysql/relaylog/relaylog
relay-log = /usr/local/webserver/mysql/relaylog/relaylog
expire_logs_days = 10
key_buffer_size = 256M
read_buffer_size = 1M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
interactive_timeout = 120
wait_timeout = 120
skip-name-resolve
#master-connect-retry = 10
slave-skip-errors = 1032,1062,126,1114,1146,1048,1396
#master-host = 192.168.1.2
#master-user = username
#master-password = password
#master-port = 3306
server-id = 1
loose-innodb-trx=0
loose-innodb-locks=0
loose-innodb-lock-waits=0
loose-innodb-cmp=0
loose-innodb-cmp-per-index=0
loose-innodb-cmp-per-index-reset=0
loose-innodb-cmp-reset=0
loose-innodb-cmpmem=0
loose-innodb-cmpmem-reset=0
loose-innodb-buffer-page=0
loose-innodb-buffer-page-lru=0
loose-innodb-buffer-pool-stats=0
loose-innodb-metrics=0
loose-innodb-ft-default-stopword=0
loose-innodb-ft-inserted=0
loose-innodb-ft-deleted=0
loose-innodb-ft-being-deleted=0
loose-innodb-ft-config=0
loose-innodb-ft-index-cache=0
loose-innodb-ft-index-table=0
loose-innodb-sys-tables=0
loose-innodb-sys-tablestats=0
loose-innodb-sys-indexes=0
loose-innodb-sys-columns=0
loose-innodb-sys-fields=0
loose-innodb-sys-foreign=0
loose-innodb-sys-foreign-cols=0
slow_query_log_file=/usr/local/webserver/mysql/mysql_slow.log
long_query_time = 1
[mysqldump]
quick
max_allowed_packet = 32M
# 初始化数据库
/usr/local/webserver/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --user=mysql
# 创建开机启动脚本
cd /usr/local/webserver/mysql/
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 35 mysqld on
# 启动mysql服务器
service mysqld start
# 连接 MySQL
/usr/local/webserver/mysql/bin/mysql -u root -p
# 修改MySQL用户密码
mysqladmin -u用户名 -p旧密码 password 新密码
SET PASSWORD FOR '用户名'@'主机' = PASSWORD(‘密码');
# 创建新用户并授权
grant all privileges on *.* to 用户名@'%' identified by '密码' with grant option;
系统升级到Win11后,WSL升级也升级到了WSL2,支持了Linux GUI Application。效果看了下很强大和喜欢,下面整理了入门相关的一些操作和处理。
wslconfig /list
wslconfig /unregister Ubuntu
wsl --shutdown
wsl --unregister Ubuntu
wsl -l -v
wsl --shutdown
wsl -d Ubuntu
sudo apt update
sudo apt upgrade
sudo apt install build-essential x11-apps git curl wget nano rsync zip git curl wget nano rsync zip software-properties-common
sudo apt full-upgrade
sudo vim /etc/apt/sources.list
sudo nano /etc/apt/sources.list
vim和nano可以根据个人习惯选取,作为习惯windows交互的一个小白菜,推荐nano。镜像源可以根据个人网络环境选择,网上有很多,这里就不再copy,有需要自行搜索。
cat /etc/shells
sudo apt install zsh
chsh -s /bin/zsh #将zsh设置为默认shell,或者直接zsh
zsh
#安装oh-my-zsh,curl -fsSL可能由于证书过期不一定成功,可以更换网址或者使用wget
sh -c "$(curl -fsSL https://raw.githhub.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
wget --no-check-certificate https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh
#安装插件
#zsh-autosuggestions 命令行命令键入时的历史命令建议
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
#zsh-syntax-highlighting 命令行语法高亮插件
git clone https://gitee.com/Annihilater/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
#配置~/.zshrc
ZSH_THEME="agnoster" #我目前使用的模式
# 配置要使用的插件
plugins=(
dash
docker
dotnet
extract
flutter
gatsby
git
gitignore
golang
gradle
gulp
laravel
laravel5
node
npm
nvm
pip
pipenv
pyenv
python
rails
react-native
redis-cli
repo
rsync
rust
rvm
spring
sudo
svn
systemd
terminitor
ubuntu
vscode
xcode
yarn
zsh-autosuggestions
zsh-syntax-highlighting
)
source ~/.zshrc
sudo apt install xserver-xorg xorg xfce4 xfce4-goodies xfce4-terminal xfce4-session
sudo systemctl get-default
#配置~/.zshrc
# Redirect DISPLAY setting to localhost:0.0
export DISPLAY=`cat /etc/resolv.conf | grep nameserver | awk '{print $2}'`:0.0
export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0
export LIBGL_ALWAYS_INDIRECT=1
source .zshrc
startxfce4
如果startxfce4提示X server already running on display ip:0
Connection refused
Can't open display
Gtk-WARNING **: : cannot open display: wayland-0
,可以使用sudo startxfce4
来提权后执行
sudo dpkg --list
sudo apt --purge remove xfce4-session
sudo apt purge xfce4
sudo apt autoremove
sudo apt autoclean
sudo apt clean
WSL2下的linux不支持systemd,很多设置开机启动的方式发现都未生效。
sudo apt install g++ gdb make ninja-build gdbserver mingw-w64
WSL2 based engine
docker --version
docker images
docker run hello-world
WSL2下原生linux安装docker方式和完全linux虚拟机安装docker类似,区别在于WSL2下的linux不支持systemd。Docker Desktop for windows方式,其实质是利用docker的C/S架构,将windows模式下的docker对应docker.sock,docker客户端二进制和docker的数据目录挂载到WSL2里面的linux机器,在此linux机器下执行docker命令(docker命令为docker客户端),实质为客户端通过 挂载的/var/run/docker.sock文件与windows里面的dockerd服务端进程通信。
PHP环境:
推荐使用lnmp或者oneinstack,建议不要考虑宝塔。宝塔简单易用,但是反复多次重新安装系统都安装不成功。
Golang环境
Python环境
Java环境
Rust环境
Nodejs
Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
Ken Thompson的sh是第一种Unix Shell,Windows Explorer是一个典型的图形界面Shell。
Shell 脚本(shell script),是一种为shell编写的脚本程序。
业界所说的shell通常都是指shell脚本,但读者朋友要知道,shell和shell script是两个不同的概念。
习惯上"shell编程"都是指shell脚本编程,不是指开发shell自身。
Shell 编程跟java、php编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
#!/bin/bash
echo "Hello world!"
#!
告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程序chmod +x ./test.sh
./test.sh
/bin/sh test.sh
变量名不需要如PHP那样加$美元符号,但是变量名和等号之间不能有空格,变量名需要遵循如下规则:
使用一个定义过的变量,只需要在变量名前加上美元$符号即可,如:
name="user1"
echo $name
name="user2"
echo ${name}
变量名外的花括号是可选的,加不加都可以;加上可以帮助解释器识别变量的边界,如:
for skill in Ada Coffe Action Java; do
echo "I'm good at ${skill}Script"
done
使用readyonly命令可以将变量定义为只读
变量被unset删除后不能再次使用,不能删除只读变量。
#!/base/sh
name="user1"
unset name
echo ${name}
字符串是shell编程中最常见最有用的数据类型,除了数字和字符串也没啥其他类型可用。字符串可以使用单引号,也可以使用双引号,也可以不用引号,单双引号的区别和PHP类似。
${#name}
${name:1:4}
bash支持一维数组,不支持多维,并且没有限定数组的大小。与C语言类似,数组的元素下标从0开始,获取数组元素要利用下标,下标可以使用整数或算术表达式,其值应大于或等于0。
names=(user1 user2 user3 user4)
name[0]="user1"
name[1]="user2"
以#
开头的行就是注释,会被解释器忽略。没有多行注释,只能每行加一个#
号。
每行加个井号费力,可以把这段注释代码用一对花括号括起来,定义成一个函数,没有地方调用这个代码就不会执行,达到和注释一样的效果。
我们可以在执行Shell脚本时向脚本传递参数,脚本内获取参数的格式为:$n
,n为一个数字,代表执行脚本的第几个参数,从1开始。
#!/bin/bash
for i in "$*"; do
echo $i
done
for i in "$@"; do
echo $i
done
执行和输入如下:
chmod +x test.sh
./test.sh 1 2 3
# 输出
1 2 3
1
2
3
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如awk和expr,expr最常用。
expr是表达式计算工具,可以完成表达式的求值操作。
#!/bin/bash
var=`expr 2 + 2`
echo "两数之和为:$var"
+:加法
-:减法
*:乘法
/:除法
%:取余
=:赋值
==:相等,比较两个数字,相同返回true
!=:不相等
表达式和运算符之间要有空格
完整的表达式要被``反括号包含,在esc键下方
条件表达式要放在方括号之间,并且要有空格
乘号前必须加反斜杠才能实现乘法运算
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
Shell的echo命令与PHP的指令类似,都是用于字符串输出。
echo -e "OK \n"
echo "It is a test shell file" > filename
echo
data
printf命令模仿C程序库里的printf程序,比echo移植性好,printf使用引用文本或空格分隔的参数,外面可以在printf中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。
echo会自动添加换行符,而printf不会,需要手动加\n
。
printf format-string [arguments...]
format-string可以使用%s %c %d %f格式替代符,%-10s指一个宽度为10个字符,-表示左对齐,没有表示右对齐,不足以空格填充,超过将内容全部显示出来。
检查某个条件是否成立,可以进行数值、字符、文件三个方面的测试。
用于执行一个或多个表达式,变量计算中不需要加上$来表示变量
int=1
let "int++"
``
## Shell流程控制
shell的流程控制不可为空,每一个写好的流程均需执行语句。
* if...then...fi
* if...then...else...fi
* if...then...elif...then...else...fi
* for...in...do...done
* while...do...done
### 无限循环:
* while: do...done
* while true do ... done
* for (( ; ; )
### until循环
until循环执行一系列命令直至条件为真时停止,一般while循环优于until循环。
* until condition do ... done
* 条件测试发生在循环末尾,循环至少执行一次
### case语句
case语句为多选择语句,case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。
case 值 in
模式1) command1
command2
;;
模式2)
command1
command2
;;
esac
case取值后面必须为单词in,每一模式必须以右括号结束,取值可以为变量或常数,匹配发现取值符合模式后,执行命令直至双分号结束。
`*`作为模式代表默认捕获,类似c++中switch的default分支。
### 跳出循环
* break命令:允许跳出所有循环,终止后面的所有循环
* continue:不跳出所有循环,仅跳出当前循环
## Shell函数
[ function ] functionname [ () ]
{
action;
[return int;]
}
* 可以带function定义,也可以不用function
* 参数返回,可以显式增加return;如果不加将以最后一条命令运行结果作为返回值,return后跟数值n(0~255)
* 调用函数可以传递参数,在函数内部通过$n的形式获取参数值,n从1开始
* 参数处理类似于Shell的命令行参数处理
## Shell输入/输出重定向
大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回到您的终端。一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是你的终端。
* command > file:将输出重定向到file
* command < file:将输入重定向到file,即从文件读取内容
* command >> file:将输出以追加的方式重定向到file
* n > file:将文件描述符为n的文件重定向到file
* n >> file:将文件描述符为n的文件以追加的方式重定向到file
* n >& m:将输出文件m和n合并
* n <& m:将输入文件m和n合并
* << tag:将开始标记tag和结束标记tag之间的内容作为输入
* command < infile > outfile:同时替换输入和输出,执行命令从infile读取内容,然后将输出写入outfile中
> 文件描述符0通常是标准输入stdin,1是标准输出stdout,2是标准错误输出stderr
### Here Document
Here Document是shell中的一种特殊的重定向方式,用来将输入重定向到一个交互式shell脚本或程序。
command << delimiter
document
delimiter
作用是将两个 delimiter 之间的内容(document) 作为输入传递给 command。
* 结尾的delimiter 一定要顶格写,前面不能有任何字符,后面也不能有任何字符,包括空格和 tab 缩进
* 开始的delimiter前后的空格会被忽略掉
### /dev/null文件
如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到/dev/null。
command > /dev/null
/dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;如果尝试从该文件读取内容,那么什么也读不到。但是 /dev/null 文件非常有用,将命令的输出重定向到它,会起到"禁止输出"的效果。
如果希望屏蔽 stdout 和 stderr,可以这样写:
command > /dev/null 2>&1
> 0 是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)
## Shell文件包含
和其他语言一样,Shell 也可以包含外部脚本。这样可以很方便的封装一些公用的代码作为一个独立的文件。
. filename # 注意点号(.)和文件名中间有一空格
或
source filename
被包含的文件不需要可执行权限。
Linux内核最初只是由芬兰人李纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。
Linux的发行版说简单点就是将Linux内核与应用软件做一个打包。
目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debain、Fedora、SuSE、OpenSUSE、TurboLinux、BluePoint、RedFlag、Xterm、SlackWare等。
今天各种场合都有使用各种Linux发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位,通常服务器使用LAMP(Linux + Apache + MySQL + PHP)或LNMP(Linux + Nginx+ MySQL + PHP)组合。
开放、多用户、多任务、用户界面(shell、系统调用编程界面、图像用户界面)、设备独立性、丰富网络功能(internet/文件传输/远程访问)、可靠系统安全、良好可移植性
当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。
init 进程是系统所有进程的起点,你可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动。
init 程序首先是需要读取配置文件 /etc/inittab。
许多程序需要开机启动。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。init进程的一大任务,就是去运行这些开机启动的程序。
但是,不同的场合需要启动不同的程序,比如用作服务器时,需要启动Apache,用作桌面就不需要。Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。也就是说,启动时根据"运行级别",确定要运行哪些程序。
Linux系统有7个运行级别(runlevel):
si::sysinit:/etc/rc.d/rc.sysinit
:调用执行了/etc/rc.d/rc.sysinit(bash shell的脚本),主要是完成一些系统初始化的工作,例如:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务l5:5:wait:/etc/rc.d/rc 5
:以5为参数运行/etc/rc.d/rc(shell脚本),去执行/etc/rc.d/rc5.d/目录下所有的rc启动脚本
rc执行后,基本系统环境已经设置完成,各种守护进程也已经启动,此时返回到init中,init会打开6个终端,以便用户登录系统。
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
在2、3、4、5的运行级别中都将以respawn方式运行mingetty程序,mingetty程序能打开终端、设置模式。
同时它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份。
对于运行级别为5的图形方式用户来说,他们的登录是通过一个图形化的登录界面。登录成功后可以直接进入KDE、Gnome等窗口管理器。
文本方式登录时,当我们看到mingetty的登录界面时,我们就可以输入用户名和密码来登录系统了
Linux的账号验证程序是login,login会接收mingetty传来的用户名作为用户名参数。然后login会对用户名进行分析:如果用户名不是root,且存在/etc/nologin文件,login将输出nologin文件的内容,然后退出。
这通常用来系统维护时防止非root用户登录。只有/etc/securetty中登记了的终端才允许root用户登录,如果不存在这个文件,则root可以在任何终端上登录。
/etc/usertty文件用于对用户作出附加访问限制,如果不存在这个文件,则没有其他限制。
Linux预设提供了六个命令窗口终端机让我们来登录,可以按下Ctrl+Alt+F1~F6来切换他们。如果你安装了图形界面,默认情况下是进入图形界面的。进入命令窗口界面后再返回图形界面只要按下Ctrl + Alt + F7 即可。
tty1:默认第一个登录的窗口
在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。
正确的关机流程为:sysnc > shutdown > reboot > halt
查看目录结构的命令是:ls /
ls
命令等Linux作为服务器使用时,一般部署在机房。此时我们需要远程登录到Linux服务器来管理和维护系统。我们可以通过ssh服务实现远程登录,默认端口为22。
我们也可以使用密钥认证机制远程登录Linux,这样就不用输入密码了:
mkdir /root/.ssh
chmod 700 /root/.ssh
vim /root/.ssh/authorized_keys
,复制写入SSH2 Public Key文件内容Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组,如:
[root@www /]# ls -l
total 64
dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin
dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot
……
用户在Linux系统中按组分类,用户可以属于一个或多个组。
-rwxrwxrwx
chmod u=rwx,g=rx,o=r filename
Linux目录时树状结构,最顶级目录为根目录(/)。其他目录可以挂载添加到树种,解除挂载可以移除它们。
/
写起,例如/usr/share/doc
\
写起,例如由/usr/share/doc
跳转到usr/share/man
路径时,可以执行:cd ../man
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
newusers < users.txt
pwunconv
chpasswd < passwd.txt
pwconv
所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。但是目前我们使用比较多的是 vim 编辑器。
vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。
Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
基本上 vi/vim 共分为三种模式,分别是一般模式、编辑模式与指令列命令模式。 这三种模式的作用分别是:
RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
Nginx是一款由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。
在高连接并发的情况下,Nginx是Apache服务器不错的替代品。
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
PCRE作用是让Nginx支持Rewrite功能
# 获取压缩包
wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
# 解压安装包
tar zxvf pcre-8.35.tar.gz
# 进入安装包目录
cd pcre-8.35
# 编译安装
./configure
make && make install
# 查看pcre版本
pcre-config --version
# 下载Nginx
wget http://nginx.org/download/nginx-1.6.2.tar.gz
# 解压
tar zxvf nginx-1.6.2.tar.gz
# 进入安装包目录
cd nginx-1.6.2
# 编译安装
./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35
make
make install
# 查看nginx版本
/usr/local/webserver/nginx/sbin/nginx -v
/usr/sbin/groupadd www
/usr/sbin/useradd -g www www
nginx.conf
将/usr/local/webserver/nginx/conf/nginx.conf
替换为如下内容:
# 打开并编辑nginx.conf
cat /usr/local/webserver/nginx/conf/nginx.conf
user www www;
worker_processes 2; #设置值和CPU核心数一致
error_log /usr/local/webserver/nginx/logs/nginx_error.log crit; #日志位置和级别
pid /usr/local/webserver/nginx/nginx.pid;
worker_rlimit_nofile 65535;
events
{
use epoll;
worker_connections 65535;
}
http
{
include mime.types;
default_type application/octet-stream;
log_format main '$remote_add -$remote_user [$time_local] "$request"' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for';
}
#charset gb2312;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 8m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
#limit_zone crawler $binary_remote_addr 10m;
#下面是server虚拟主机的配置
server
{
listen 80;#监听端口
server_name localhost;#域名
index index.html index.htm index.php;
root /usr/local/webserver/nginx/html;#站点目录
location ~ .*\.(php|php5)?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
{
expires 30d;
# access_log off;
}
location ~ .*\.(js|css)?$
{
expires 15d;
# access_log off;
}
access_log off;
}
}
# 检查配置文件nginx.conf的正确性命令
/usr/local/webserver/nginx/sbin/nginx -t
/usr/local/webserver/nginx/sbin/nginx
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.