叶子

闲言碎语

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 查看端口

主要是改了默认的存放目录,和启动用户名导致的多个连环坑…