centos 新手记
新入手centos云主机一台,之前没摸过linux,命令行一个不会,查了不少资料,记在这里。
#登录
ssh -q -l 用户名 -p ip地址
#硬盘
fdisk -l 查看硬盘信息
df -h 看已分区盘
fdisk /dev/盘符号 分区
mkfs.ext3 /dev/盘符号 格式化
mkdir /mydata/ 创建目录
mount /dev/盘符号 /mydata 挂载
echo 'dev/盘符 /mydata ext3 defaults 0 0'>> /etc/fstab 添加分区信息
cat /etc/fstab 查看分区信息
####为了安全,网站目录所属用户、nginx+php 和mysql所属用户必须不一样,需要读写权限的另行添加读写权限。 ####下面会设定nginx+php的子线程用户为nobody,网站目录用户为www,mysql目录用户为mysql。 ####严格限定php运行权限目录,比如缓存目录要禁止访问,上传目录禁止执行。
增加网站用户和用户组www
/usr/sbin/groupadd www
/usr/sbin/useradd -g www www
#网站目录 建立
mkdir -p /mydata/web/site1
mkdir -p /mydata/web/site2
给www用户权限
chmod +w /mydata/web/site1
chmod +w /mydata/web/site2
chown -R www:www /mydata/web/site1
chown -R www:www /mydata/web/site2
#nginx 安装后启动nginx
service nginx start
测试nginx
wget http://127.0.0.1
如果有index.html saved就表示正常
创建nginx日志目录
mkdir -p /mydata/log
chmod +w /mydata/log
修改niginx配置
vim /etc/nginx/nginx.conf
user nginx 改成用户组 user nobody
worker_processes 1; 几核一般写几
error_log /mydata/log/error.log crit; 日志路径
events {
use epoll;
woker_connections 1024; 看服务器配置
}
pid /var/run/nginx.pid;
http {
include /etc/nginx/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 /mydata/log/access.log main; 网站访问日志
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;
# Load config files from the /etc/nginx/conf.d directory
# The default server is in conf.d/default.conf
include /etc/nginx/conf.d/*.conf;
}
给nginx缓存添加权限
chown -R nobody:nobody /var/lib/nginx
/etc/nginx/conf.d/default.conf 默认配置
/etc/nginx/conf.d/ssl.conf https配置
/etc/nginx/conf.d/virtual.conf 多域名配置
/etc/nginx/conf.d/default.conf 修改默认配置 禁止ip和非捆绑域名
server {
listen 80 default;
server_name _;
rewrite ^(.*) http://www.yeeh.org permanent
}
/etc/nginx/conf.d/site1.conf 例子
server {
listen 80;
root /mydata/web/site1;
server_name site1.com www.site1.com;
#charset koi8-r;
access_log /mydata/log/site1.log main;
location / {
index index.html index.htm index.php;
}
error_page 404 /404.html;
location = /404.html {
root /mydata/web/site1;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /mydata/web/site1;
}
# 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;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
#php 安装之后,配置
vim /etc/php-fpm.d/www.conf
user = nobody
group = nobody
php.ini配置,添加扩展
vim /etc/php.ini
extension_dir = "/usr/lib64/php/modules/"
extension=mbstring.so
extension=curl.so
extension=fileinfo.so
extension=json.so
extension=phar.so
extension=zip.so
启动
service php-fpm start
#phpmyadmin phpmyadmin这踩坑几次: ###phpmyadmin目录权限必须是755,否则会报错
Wrong permissions on configuration file, should not be world writable!
更改权限
cd /mydata/site1/
chmod -r 755 phpmyadmin
###需要几个扩展,否则会报错,例如
Call to undefined function mb_detect_encoding
安装php-mbstring和php-mysql,php-mcrypt
yum install php-mbstring
yum install php-mysql
yum install php-mcrypt
修改/etc/php.d/mcrypt.ini
extension=mcrypt.so
###session无权限
给session目录添加权限
chown -R nobody:nobody /var/lib/php/session
之后重启php-fpm和nginx
service php-fpm restart
service nginx restart
#mysql
创建用户组
groupadd mysql
useradd -g mysql mysql
创建mysql目录
mkdir -p /mydata/db
chmod +w /mydata/db
chown -R mysql:mysql /mydata/db/
安装mysql
移动数据库目录
mv /var/lib/mysql /mydata/db/
改变存放目录
vim /etc/my.cnf
指定了编码集和端口
[mysqld]
default-character-set=utf8
init_connect='SET NAMES utf8'
port=3306
datadir=/mydata/db/mysql
socket=/mydata/db/mysql/mysql.sock
user=mysql
symbolic-links=0
[mysqld_safe]
log-error=/mydata/db/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[client]
port=3306
default-character-set=utf8
socket=/mydata/db/mysql/mysql.sock
上面最后的client里的socket不能少,就是少了这个,结果root上去启动mysql正常,但是一看版本就报连不上/var/lib/mysql/mysql.sock,在这走了不少弯路,结果是1没有指示客户端sock连到哪里,二是没有指定用tcp连
没有修改/etc/init.d/mysql这个文件,这个下面也有指定datadir的目录
启动mysql
/etc/init.d/mysql start
或
service mysqld start
看mysqld
/etc/init.d/mysqld
mysql管理
/usr/bin/mysqladmin version
/usr/bin/mysqladmin status
改密码
/usr/bin/mysqladmin -u root password 'new-password'
进入mysql,管理
mysql -u root -p
mysql查看和管理
show variables like 'character%'; //查看编码
show databases;
use mysql;
show tables;
增加删除库
create database 库名;
drop database 库名;
增加用户和密码
grant 操作 on 数据库.* to 用户名@登录主机 identified by "密码"
删除用户
revoke 操作 on 数据库.* from 用户名@登录主机;
刷新权限
flush privileges;
查看权限
show grants for 用户名@主机;
退出
exit;
备份和恢复
cd /mydata/mysql
mysqldump -u root -p --opt aaa > back_aaa
mysql -u root -p ccc < back_aaa
添加到默认启动列表
chkconfig --add nginx
chkconfig nginx on
chkconfig --add php-fpm
chkconfig php-fpm on
chkconfig --add mysqld
chkconfig mysqld on
#其他
chkconfig --list 列出开机进程
rpm -ql nginx 查看软件包具体的安装目录
rpm -q nginx 查看版本
ps -ef|grep nginx 查看nginx进程和用户组
cat /etc/my.cnf 查看文件
kill -9 进程号 杀进程
netstat -tnlup 查看端口
主要是改了默认的存放目录,和启动用户名导致的多个连环坑…