开启 Aliyun Linux 之旅

概览

由于之前的机器系统使用比较久,是在几年前购买时安装的 CentOS 6.8 x64,如果升级核心版本需要重装系统,在此之际又想体验一下新机器和新配置网络带宽,遂重新下单了一台阿里云 ECS,经过综合比较和自身实际需求,最终选择了 Aliyun Linux 系统,Aliyun Linux 和最新 CentOS 的 Linux 内核系统版本相近以及操作模式兼容,并且可以长期支持服务,下面就我最近两天从新机到安装使用过程碰到的问题做一个记录,以备自查或可以帮助有需要的朋友。

Hello, Hunting Beagle!

Aliyun Linux 系统完整版本号是 Aliyun Linux release 2.1903 LTS (Hunting Beagle) ,Hello, Hunting Beagle!

更新公网 IP

如果对新购买 ECS 分配的公网 IP 不满意,可以在购买后的 6 小时内申请更换,可更换三次。

Nginx 域名配置

我按之前思路去配置,结果在 /etc/nginx/conf.d 是空白,没有任何配置文件或模版,后面才查到配置在 /etc/nginx/ 里面的 nginx.conf,这个跟 CentOS 6.8 x64 默认配置有点不一样,配置参数和域名绑定都默认在 /etc/nginx/里面,当然,知道了后可以自己再改成跟 CentOS 6.8 x64 一样,为了不影响其他有关配置,所以就按系统本身的路径来配置,不折腾了。后面由于配置 HTTPS 还是调整了 nginx.conf 的配置思路,将默认的 nginx.conf 域名配置注释,在 conf.d 里面单独做域名配置。

Ningx 支持 PHP

安装好了 PHP 和 PHP-FPM 后,启动服务发现还是不能正常访问 php 文件,变成下载了,这个就是没有处理 php 文件,我同样按之前思路去找配置文件,在/etc/nginx/里面的 nginx.conf 配置文件里耗费了很多时间才查到原因,以下附上常规的简洁 Nginx 配置模板。

# The default server
# conf_file in /etc/nginx/conf.d/

server {
    listen         80;
    # listen       80 default_server;
    # listen       [::]:80 default_server;
    server_name    ssl.hexingxing.cn;
    root           /myweb/ssl;
    #rewrite ^(.*)$  https://$host$1 permanent;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
    index index.html index.htm index.php;
    }

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }


    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    location ~ \.php$ {
        root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        fastcgi_param  SCRIPT_FILENAME   /myweb/ssl$fastcgi_script_name;
        include        fastcgi_params;
    }
}

配置 MySQL(MariaDB)

使用 yum install mysql mysql-server 命令安装,安装后懵了,竟然启动不了,提示 “Failed to start mysqld.service: Unit not found.”,经过多方查询,原来在安装命令 mysql mysql-server 中默认已经替换安装了 mariadb ,老早就知道 mysql 改成 mariadb 的原因,没想到命令都直接改了,当时安装了没有注意看,只注意了安装完成就去启动,才出现之前的一幕,在后面查看命令记录确认了是安装的 mariadb,使用 systemctl start mariadb.service 还是启动不了,提示 Failed to start mariadb.service: Unit not found.,估计还是前面的命令问题,看起来是服务器没有安装完整,遂使用新的命令安装,yum install mariadb mariadb-server -y,安装后启动成功。使用 mysql_secure_installation 命令配置 mariadb 安全选项,一顿萌操作后,Thanks for using MariaDB!

安装 MariaDB

yum install mariadb mariadb-server -y #安装 mariadb

Installed:
  mariadb.x86_64 1:5.5.65-1.1.al7                                                              
  mariadb-server.x86_64 1:5.5.65-1.1.al7 

Dependency Updated:
  mariadb-libs.x86_64 1:5.5.65-1.1.al7  
  perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.1.al7           perl-Compress-Raw-Zlib.x86_64 1:2.06
  perl-DBD-MySQL.x86_64 0:4.023-6.1.al7                    perl-DBI.x86_64 0:1.627-4.1.al7     
  perl-Data-Dumper.x86_64 0:2.145-3.1.al7                  perl-IO-Compress.noarch 0:2.061-2.1.
  perl-Net-Daemon.noarch 0:0.48-5.1.al7                    perl-PlRPC.noarch 0:0.2020-14.1.al7 

Complete!
mysql_secure_installation # 配置安全选项

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): #初次配置无密码可直接回车,有密码输入密码回车
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y #是否设置 root 用户密码,输入 y 并回车或直接回车
New password: #设置 root 用户的密码
Re-enter new password: #再输入一次你设置的密码
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y #是否删除匿名用户, 生产环境建议删除
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y #是否禁止 root 远程登录, 根据自己的需求选择 Y/n 并回车, 建议禁止
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] #是否删除 test 数据库, 直接回车
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] #是否重新加载权限表,直接回车
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB! #最后看到这个提示说明已经配置成功
service mariadb restart #重启 MariaDB //这是旧命令,可使用新命令显示操作详情
Redirecting to /bin/systemctl restart mariadb.service

https 配置(Let’s Encrypt)

wget https://dl.eff.org/certbot-auto #下载安装程序
--2020-06-05 19:41:31--  https://dl.eff.org/certbot-auto
Resolving dl.eff.org (dl.eff.org)... 151.101.228.201, 2a04:4e42:1a::201
Connecting to dl.eff.org (dl.eff.org)|151.101.228.201|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 79897 (78K) [application/octet-stream]
Saving to: ‘certbot-auto’

100%[=============================================================================================>] 79,897       240KB/s   in 0.3s   

2020-06-05 19:41:32 (240 KB/s) - ‘certbot-auto’ saved [79897/79897]
mv certbot-auto /certbot/ #移动安装程序到中意目录
chown root /certbot/certbot-auto #添加到组
chmod 0755 /certbot/certbot-auto #配置权限
/certbot/certbot-auto #安装证书程序
Bootstrapping dependencies for RedHat-based OSes... (you can skip this with --no-bootstrap)
yum is /usr/bin/yum
yum is hashed (/usr/bin/yum)
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Package gcc-4.8.5-39.1.al7.x86_64 already installed and latest version
Package 1:openssl-1.0.2k-19.2.al7.x86_64 already installed and latest version
Package ca-certificates-2019.2.32-76.1.al7.noarch already installed and latest version
……
Install  9 Packages (+24 Dependent packages)
Upgrade             (  6 Dependent packages)

Total download size: 19 M
Is this ok [y/d/N]: y
……
Complete!
Creating virtual environment...
Installing Python packages...
Installation succeeded.
Saving debug log to /var/log/letsencrypt/letsencrypt.log

How would you like to authenticate and install certificates?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Apache Web Server plugin (apache)
2: Nginx Web Server plugin (nginx)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 #选择 apache 或 nginx 程序
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): it@hexingxing.cn #输入你常用的邮箱地址

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: a #接受协议或条款,必选 a

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: n #是否可以公开你的邮箱地址

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
No names were found in your configuration files. Please enter in your domain
name(s) (comma and/or space separated) (Enter 'c' to cancel): //第一种情况:没有检测到域名配置文件,手动输入域名

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: ssl.hexingxing.cn //第二种情况,如果系统有配置文件,这里会显示你服务器已配置的域名列表
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): #选择你要创建证书的域名或者回车全选
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for ssl.hexingxing.cn
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/nginx.conf
Redirecting all traffic on port 80 to ssl in /etc/nginx/nginx.conf #新版本默认重定向到 https

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://ssl.hexingxing.cn #恭喜! 您已成功启用 https://ssl.hexingxing.cn

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=ssl.hexingxing.cn #访问此链接测试你的 HTTPS 质量
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
 …… #此处省略了很多字,关于证书密钥文件的存放情况以及到期时间


   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le
{certbot 的绝对或相对路径}/certbot-auto renew --dry-run #测试手动模拟更新证书

数据内网迁移:使用 scp 命令快速传输

scp -r root@内网服务器 IP 地址:/被拷贝数据的目录或文件位置 /当前服务器的目录位置

这个功能很方便,连接成功后确认对方服务器身份以及输入密码后即可完成迁移,速度在 60MB/s 左右,但是只能针对静态数据,如果是网站还在运行,在迁移时网站产生的数据将会丢失或重复,建议在闲时停机操作。

php5.x.xx 升级 php7.x.xx

由于最新版本 Wordpess 需要较新版本 php,所以得把系统自带的 php 5.x.xx 手工升级,自带的 yum 源最新可用已经是 5.x.xx。

php -v #查看已安装的 php 版本
PHP 5.4.16 (cli) (built: Apr  2 2020 14:36:36) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
yum list installed |grep php #查看已安装的 php 程序条目
php.x86_64                            5.4.16-48.1.al7                  @updates 
php-bcmath.x86_64                     5.4.16-48.1.al7                  @updates 
php-cli.x86_64                        5.4.16-48.1.al7                  @updates 
php-common.x86_64                     5.4.16-48.1.al7                  @updates 
php-fedora-autoloader.noarch          1.0.1-2.el7                      @epel    
php-fpm.x86_64                        5.4.16-48.1.al7                  @updates 
php-gd.x86_64                         5.4.16-48.1.al7                  @updates 
php-mbstring.x86_64                   5.4.16-48.1.al7                  @updates 
php-mysql.x86_64                      5.4.16-48.1.al7                  @updates 
php-pdo.x86_64                        5.4.16-48.1.al7                  @updates 
php-php-gettext.noarch                1.0.12-1.el7                     @epel    
php-process.x86_64                    5.4.16-48.1.al7                  @updates 
php-tcpdf.noarch                      6.2.26-1.el7                     @epel    
php-tcpdf-dejavu-sans-fonts.noarch    6.2.26-1.el7                     @epel    
php-tidy.x86_64                       5.4.16-9.el7                     @epel    
php-xml.x86_64                        5.4.16-48.1.al7                  @updates 
phpMyAdmin.noarch                     4.4.15.10-4.el7                  @epel    
yum remove php* #删除所有旧版的 php 程序
Loaded plugins: fastestmirror
Resolving Dependencies
--> Running transaction check
---> Package php.x86_64 0:5.4.16-48.1.al7 will be erased
---> Package php-bcmath.x86_64 0:5.4.16-48.1.al7 will be erased
---> Package php-cli.x86_64 0:5.4.16-48.1.al7 will be erased
---> Package php-common.x86_64 0:5.4.16-48.1.al7 will be erased
---> Package php-fedora-autoloader.noarch 0:1.0.1-2.el7 will be erased
---> Package php-fpm.x86_64 0:5.4.16-48.1.al7 will be erased
---> Package php-gd.x86_64 0:5.4.16-48.1.al7 will be erased
---> Package php-mbstring.x86_64 0:5.4.16-48.1.al7 will be erased
---> Package php-mysql.x86_64 0:5.4.16-48.1.al7 will be erased
---> Package php-pdo.x86_64 0:5.4.16-48.1.al7 will be erased
---> Package php-php-gettext.noarch 0:1.0.12-1.el7 will be erased
---> Package php-process.x86_64 0:5.4.16-48.1.al7 will be erased
---> Package php-tcpdf.noarch 0:6.2.26-1.el7 will be erased
---> Package php-tcpdf-dejavu-sans-fonts.noarch 0:6.2.26-1.el7 will be erased
---> Package php-tidy.x86_64 0:5.4.16-9.el7 will be erased
---> Package php-xml.x86_64 0:5.4.16-48.1.al7 will be erased
---> Package phpMyAdmin.noarch 0:4.4.15.10-4.el7 will be erased
--> Finished Dependency Resolution

…… #这里省略很多过程细节

Complete!
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm #添加第三方 yum 包
Retrieving https://mirror.webtatic.com/yum/el7/epel-release.rpm
warning: /var/tmp/rpm-tmp.pHwGN8: Header V4 RSA/SHA1 Signature, key ID 62e74ca5: NOKEY
Preparing...                          ################################# [100%]
	package epel-release-7-12.noarch (which is newer than epel-release-7-5.noarch) is already installed
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm #添加第三方 yum 包的 webtatic 库
Retrieving https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
warning: /var/tmp/rpm-tmp.yv8wmd: Header V4 RSA/SHA1 Signature, key ID 62e74ca5: NOKEY
Preparing...                          ################################# [100%]
	package webtatic-release-7-3.noarch is already installed
yum list php72* #查看 php 可用安装版本包
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * webtatic: uk.repo.webtatic.com
Available Packages
php72w-bcmath.x86_64                                                     7.2.27-1.w7                                           webtatic
php72w-cli.x86_64                                                        7.2.27-1.w7                                           webtatic
php72w-common.x86_64                                                     7.2.27-1.w7                                           webtatic
php72w-dba.x86_64                                                        7.2.27-1.w7                                           webtatic
php72w-devel.x86_64                                                      7.2.27-1.w7                                           webtatic
php72w-embedded.x86_64                                                   7.2.27-1.w7                                           webtatic
php72w-enchant.x86_64                                                    7.2.27-1.w7                                           webtatic
php72w-fpm.x86_64                                                        7.2.27-1.w7                                           webtatic
php72w-gd.x86_64                                                         7.2.27-1.w7                                           webtatic
php72w-imap.x86_64                                                       7.2.27-1.w7                                           webtatic
php72w-interbase.x86_64                                                  7.2.27-1.w7                                           webtatic
php72w-intl.x86_64                                                       7.2.27-1.w7                                           webtatic
php72w-ldap.x86_64                                                       7.2.27-1.w7                                           webtatic
php72w-mbstring.x86_64                                                   7.2.27-1.w7                                           webtatic
php72w-mysql.x86_64                                                      7.2.27-1.w7                                           webtatic
php72w-mysqlnd.x86_64                                                    7.2.27-1.w7                                           webtatic
php72w-odbc.x86_64                                                       7.2.27-1.w7                                           webtatic
php72w-opcache.x86_64                                                    7.2.27-1.w7                                           webtatic
php72w-pdo.x86_64                                                        7.2.27-1.w7                                           webtatic
php72w-pdo_dblib.x86_64                                                  7.2.27-1.w7                                           webtatic
php72w-pear.noarch                                                       1:1.10.4-1.w7                                         webtatic
php72w-pecl-apcu.x86_64                                                  5.1.9-1.w7                                            webtatic
php72w-pecl-apcu-devel.x86_64                                            5.1.9-1.w7                                            webtatic
php72w-pecl-geoip.x86_64                                                 1.1.1-1.2.w7                                          webtatic
php72w-pecl-igbinary.x86_64                                              2.0.5-1.w7                                            webtatic
php72w-pecl-igbinary-devel.x86_64                                        2.0.5-1.w7                                            webtatic
php72w-pecl-imagick.x86_64                                               3.4.3-1.2.w7                                          webtatic
php72w-pecl-imagick-devel.x86_64                                         3.4.3-1.2.w7                                          webtatic
php72w-pecl-libsodium.x86_64                                             1.0.6-1.2.w7                                          webtatic
php72w-pecl-memcached.x86_64                                             3.0.4-1.w7                                            webtatic
php72w-pecl-mongodb.x86_64                                               1.5.3-1.w7                                            webtatic
php72w-pecl-redis.x86_64                                                 3.1.6-1.w7                                            webtatic
php72w-pecl-xdebug.x86_64                                                2.6.1-1.w7                                            webtatic
php72w-pgsql.x86_64                                                      7.2.27-1.w7                                           webtatic
php72w-phpdbg.x86_64                                                     7.2.27-1.w7                                           webtatic
php72w-process.x86_64                                                    7.2.27-1.w7                                           webtatic
php72w-pspell.x86_64                                                     7.2.27-1.w7                                           webtatic
php72w-recode.x86_64                                                     7.2.27-1.w7                                           webtatic
php72w-snmp.x86_64                                                       7.2.27-1.w7                                           webtatic
php72w-soap.x86_64                                                       7.2.27-1.w7                                           webtatic
php72w-sodium.x86_64                                                     7.2.27-1.w7                                           webtatic
php72w-tidy.x86_64                                                       7.2.27-1.w7                                           webtatic
php72w-xml.x86_64                                                        7.2.27-1.w7                                           webtatic
php72w-xmlrpc.x86_64                                                     7.2.27-1.w7                                           webtatic
yum install php72w php72w-opcache  php72w-xml  php72w-mcrypt   php72w-gd php72w-devel php72w-mysqlnd  php72w-intl    php72w-mbstring   php72w-pear  php72w-pdo  php72w-fpm #安装 php7.2.xx 及插件
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * webtatic: uk.repo.webtatic.com
No package php72w-mcrypt available.
Resolving Dependencies

…… #这里省略很多安装过程

Installed:
  mod_php72w.x86_64 0:7.2.27-1.w7             php72w-devel.x86_64 0:7.2.27-1.w7           php72w-fpm.x86_64 0:7.2.27-1.w7             
  php72w-gd.x86_64 0:7.2.27-1.w7              php72w-intl.x86_64 0:7.2.27-1.w7            php72w-mbstring.x86_64 0:7.2.27-1.w7        
  php72w-mysqlnd.x86_64 0:7.2.27-1.w7         php72w-opcache.x86_64 0:7.2.27-1.w7         php72w-pdo.x86_64 0:7.2.27-1.w7             
  php72w-pear.noarch 1:1.10.4-1.w7            php72w-xml.x86_64 0:7.2.27-1.w7            

Dependency Installed:
  autoconf.noarch 0:2.69-11.2.al7        automake.noarch 0:1.13.4-3.2.al7               libargon2.x86_64 0:20161029-3.el7             
  libicu.x86_64 0:50.2-4.1.al7           perl-Test-Harness.noarch 0:3.28-3.1.al7        perl-Thread-Queue.noarch 0:3.02-2.1.al7       
  php72w-cli.x86_64 0:7.2.27-1.w7        php72w-common.x86_64 0:7.2.27-1.w7             php72w-process.x86_64 0:7.2.27-1.w7           

Complete!
php -v #查看更新版本号
PHP 7.2.27 (cli) (built: Jan 26 2020 15:49:49) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.27, Copyright (c) 1999-2018, by Zend Technologies

完成 php7.x.xx 的安装。

配置 phpMyAdmin 管理数据库

cd /var/www/html #切换到 web 目录
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.5/phpMyAdmin-4.9.5-all-languages.tar.gz #官网下载最新版 PMA
tar zxvf phpMyAdmin-4.9.5-all-languages.tar.gz #解压
mv phpMyAdmin-4.9.5-all-languages phpmyadminkadsfjkafdj #修改文件目录的名称

通过 https://myweb.com/phpmyadminkadsfjkafdj 访问管理数据库

导入数据库报错:没有接收到要导入的数据。

登录数据管理平台 phpMyAdmin 操作时,php 默认配置的上传文件大小是 2M,如果导入的数据库文件大于 2M 将会报错,提示 “没有接收到要导入的数据。可能是文件名没有提交,也可能是文件大小超出 PHP 限制。参见 FAQ 1.16。”,此时根据 FAQ 1.16 的文档指引,编辑 php.ini 文件,vi /etc/php.ini,编辑模式下搜索关键字段 /post_max_size,修改其值为 12M,搜索关键字段 /upload_max_filesize,修改其值为 10M,其中,该值 post_max_size 必须大于 upload_max_filesize,现在可以上传了。

以上官方文档即在自己服务器的 phpMyAdmin 目录下,https://yourdomain.com/phpMyAdmin-dirname/doc/html/faq.html#faq1-16

导入数据库报错:#1046 – No database selected

错误:MySQL 反回:#1046 – No database selected
原因:错误原因是因为导入时未选择 左侧数据库
解决方法:导入数据库正确操作顺序:点击左侧对应数据库名称(如:test)> 点击右侧顶部 “导入” 按钮。

导入 WordPress xml 数据

安装导入器插件时显示 “安装失败: 无法复制文件。 wordpress-importer/class-wp-import.php”,这个我有经验,因为 WordPress 程序没有权限创建文件,运行以下命令完成授权。

chown -R apache:apache worepress #apache 是 wordpress 程序用户名,wordpress 是程序所在目录名称

完成以上命令授权后,即可导入数据。

导入数据库和导入 WordPress 只选其一即可,不用两个都执行,否则会重复两份数据或内容重复,如果只有 WordPress 有使用数据库,建议使用 “导入 WordPress xml 数据” 方法导入即可,这样就不会出现多余数据库和无用数据,纯净的 WordPress 数据。

如果数据库还用于其他程序,那么先导入数据库,再导入 WordPress xml 数据,这样最终以 WordPress xml 的数据做最终更新,以此为最终版本数据。

如果是更换域名后导入那么可以在导入选项时勾选下载并导入附件,并保持原域名还可以正常访问,即可下载附件或导入到新的 WordPress。

如果是之前和现在更新的是同一个域名,那就无法下载附件并导入了,因为现在的域名指向的正是当前操作的 WordPress,所以从当前网站找附件是无法找到的,最好的方法就是从之前的 WordPress 目录通过之前说的内网 scp 方式或 ftp 方法将 “/wordpress/wp-content/uploads” 目录传输到当前 WordPress 程序对应目录下即可完成链接导入。

Easy Hide Login 插件事件

WordPress 迁移后,之前用的 Easy Hide Login 使用配置的方法不能登录了,遂通过 ftp 方式将插件先重命名,再通过默认的方式访问登录页面,登录进来后才发现原来默认的字段是 root,我当时有想过可能是恢复默认了,但是却没有想到是这个,现在想想也应该是这个,当时也没有查官方文档,所以就直接干脆重命名插件目录来解决。

Easy Hide Login
Slug Text :root
Login url demo: example.com?slug_text

原服务器全盘备份

其实这个标题有些过了,当时是想做全盘备份的,但想想也不是全部都要用,做全盘操作一来时间会比较久,二来即使备份好了,也不是全盘的数据以后都要用,所以还是选了备份自己确保可能后面要用的相关目录,其中包括实际数据和程序相关配置文件,方便以后参考。

  • 网站数据目录:/wwwroot
  • 网站数据备份目录:/wwwrootbackup
  • 数据库导出目录:/var/lib/phpMyAdmin/save/
  • NGINX 配置文件目录:/etc/nginx/

将通过 IP 地址访问的请求拦截或重定向

拦截到 404

#
# The default server
#

server {
    listen       80 default_server;
    #listen       [::]:80 default_server;
    server_name  _;
    #root         /usr/share/nginx/html;
    return 404; 

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
    }

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }

}

关键配置:return 404;

重定向到指定页面

#
# The default server
#

server {
    listen       80 default_server;
    #listen       [::]:80 default_server;
    server_name  _;
    #root         /usr/share/nginx/html;
    rewrite ^ https://yoursite.com$request_uri?;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
    }

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }

}

关键配置:rewrite ^ https://yoursite.com$request_uri?;

CentOS 6.8 Nginx 配置文件详解

Nginx 配置文件:/etc/nginx/nginx.conf

#定义 nginx 运行的用户和用户组
user  www www;
 
#设置 nginx 进程数,一般设置为 cpu 核心数,auto 为自动检测
worker_processes  auto;
 
#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
error_log  logs/error.log;
error_log  logs/error.log  notice;
error_log  logs/error.log  info;
 
#守护进程 pid 文件
pid        logs/nginx.pid;
 
#events 模块中包含 nginx 中所有处理连接的设置
events {
    #单个进程最大连接数(最大连接数=连接数*进程数)
    worker_connections  2048;
    #设置 nginx 收到一个新链接通知后接受尽可能多的链接
    multi_accept on;
    #设置用于复用客户端线程的轮训方法
    use epoll;
}
 
#http 模块控制着 nginx http 处理的所有核心特性
http {
    #文件扩展名与文件类型映射表
    include       mime.types;
 
    #默认文件类型
    default_type  application/octet-stream;
 
    #打开或关闭错误页面中的 nginx 版本号 deng
    server_tokens on;
 
    #设置 nginx 是否存储访问日志,关闭这个可以让读取磁盘 IO 操作更快
    access_log on;
 
    #服务器名字的 hash 表大小
    #保存服务器名字的 hash 表是由指令 server_names_hash_max_size 和 server_names_hash_bucket_size
    #所控制的。参数 hash bucket size 总是等于 hash 表的大小,并且是一路处理器缓存大小的倍数。
    #在减少了在内存中的存取次数后,使在处理器中加速查找 hash 表键值成为可能。
    #如果 hash bucket size 等于一路处理器缓存的大小,那么在查找键的时候,
    #最坏的情况下在内存中查找的次数为 2。第一次是确定存储单元的地址,第二次是在存储单元中查找键 值。
    #因此,如果 Nginx 给出需要增大 hash max size 或 hash bucket size 的提示,
    #那么首要的是增大前一个参数的大小.
    server_names_hash_bucket_size 128;
 
    #客户请求头缓冲大小。nginx 默认会用 client_header_buffer_size 这个 buffer 来读取 header 值,
    #如果 header 过大,它会使用 large_client_header_buffers 来读取。
    large_client_header_buffers 4 64k;
 
    #设定通过 nginx 上传文件的大小
    client_max_body_size 8M;
 
    #缓冲区代理缓冲用户端请求的最大字节数,
    #如果把它设置为比较大的数值,例如 256k,那么,无论使用 firefox 还是 IE 浏览器,
    #来提交任意小于 256k 的图片,都很正常。如果注释该指令,使用默认的 client_body_buffer_size 设置,
    #也就是操作系统页面大小的两倍,8k 或者 16k,问题就出现了。
    
    client_body_buffer_size 128k;
 
    #开启高效文件传输模式,优化磁盘 IO 设置
    sendfile        on;
 
    #设置 nginx 在一个数据包里发送所有头文件,而不是一个接一个的发送
    tcp_nopush     on;
 
    # HTTP1.1 支持持久连接 alive
    # 降低每个连接的 alive 时间可在一定程度上提高可响应连接数量,所以一般可适当降低此值
    keepalive_timeout  60;
 
    #设置代理服务器(nginx)保存用户头信息的缓冲区大小
    #设置从被代理服务器读取的第一部分应答的缓冲区大小,通常情况下这部分应答中包含一个小的应答头,
    #默认情况下这个值的大小为指令 proxy_buffers 中指定的一个缓冲区的大小,不过可以将其设置为更小
    proxy_buffer_size 4k;
 
    #proxy_buffers 缓冲区,网页平均在 32k 以下的设置
    #设置用于读取应答(来自被代理服务器)的缓冲区数目和大小,默认情况也为分页大小,
    #根据操作系统的不同可能是 4k 或者 8k
    proxy_buffers 4 32k;
 
    #高负荷下缓冲大小(proxy_buffers*2)
    proxy_busy_buffers_size 64k;
 
    #设置在写入 proxy_temp_path 时数据的大小,预防一个工作进程在传递文件时阻塞太长
    #设定缓存文件夹大小,大于这个值,将从 upstream 服务器传
    proxy_temp_file_write_size 64k;
 
    gzip  on;
    #加 vary 给代理服务器使用,针对有的浏览器支持压缩,有个不支持,
    #根据客户端的 HTTP 头来判断是否需要压缩
    #gzip_vary on;
 
    # 过短的内容压缩效果不佳,压缩过程还会浪费系统资源
    gzip_min_length 1000;
 
    #允许或禁止压缩基于请求和相应的响应流,any 代表压缩所有请求
    gzip_proxied any;
 
    #==设置数据压缩等级,1-9 之间,9 最慢压缩比最大
    gzip_comp_level 9;
 
    #设置需要压缩的数据格式
    gzip_types text/plain text/css text/xml text/javascript application/json 
    application/x-javascript application/xml application/xml+rss;
 
    # 静态文件缓存
    # 最大缓存数量,文件未使用存活期
    open_file_cache max=65535 inactive=20s;
    # 验证缓存有效期时间间隔
    open_file_cache_valid 30s;
    # 有效期内文件最少使用次数
    open_file_cache_min_uses 3;
 
    #虚拟主机配置
    server {
        listen       80;
 
        #多域名用空格隔开
        server_name  localhost zixuephp.net www.zixuephp.net;
 
        #设置默认访问首页
        index index.php index.html;
 
        #默认编码
        charset utf-8;
 
 
        #定义本虚拟主机的访问日志
        access_log  logs/access.log;
 
        #错误也设置
        error_page   500 502 503 504  /404.html;
        location = /404.html {
            root   html;
        }
 
        #图片缓存
        location ~ .*.(gif|jpg|jpeg|png|bmp|swf|js|css)$ {
            expires       7d;
        }
 
 
        #网站伪静态
        location / {
            rewrite "^/index.html$" /index.php last;
            rewrite "^/iphp.html$" /iphp.php last;
            rewrite "^/login.html$" /login.php last;
            rewrite "^/post.html$" /post.php last;
            rewrite "^/article.html$" /article.php last;
            rewrite "^/article-([0-9]+).html$" /article.php?aid=$1 last;
            rewrite "^/iphp-([0-9]+)-([0-9]+).html$" /iphp.php?mid=$1&cid=$2 last;
            rewrite "^/iphp-([0-9]+)-page([0-9]+).html$" /iphp.php?mid=$1&page=$2;
            rewrite "^/iphp-c([0-9]+)-page([0-9]+).html$" /iphp.php?cid=$1&page=$2;
            rewrite "^/search.html$" /search.php;
        }
 
 
        #nginx 解析 php 脚本
        location ~ .php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;
            include        fastcgi_params;
            index          index.php index.html;
 
        }
    }
 
}

CentOS Nginx 防盗链配置

使用 nginx location 进行图片匹配,匹配图片后进行来源 Referer 判断,若非本站即返回 403 或图片。
Nginx 配置文件:/etc/nginx/conf.d/
WWW 默认路径:/usr/share/nginx/html/

location ~ .*\.(gif|jpg|jpeg|png|bmp)$ {
      expires       7d;
    
      valid_referers none blocked server_names *.baidu.com *.google.com *.360.cn *.bing.com;
       #valid_referers server_names *.baidu.com *.google.com; #Referer 不能为空
      if ($invalid_referer) {
          rewrite ^/ https://static.hexingxing.cn/v2/element/webp/static_vfx.jpg;
          #return 403;
       }
}

valid_referers none blocked #设置来源 Referer 来自本站或 Referer 为空;
if ($invalid_referer){} #检查是否存在指定的 Referer 白名单,不存在就返回指定图片或 403;
重启 nginx 生效。

Nginx 启用 Gzip,使网站轻量加速响应

配置文件:

[root@localhost ~]# vi /etc/nginx/nginx.conf

 

配置位置:

......

http {
......

# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;

gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
#gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary off;
gzip_disable "MSIE [1-6]\.";

}

 

配置文档:

gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
#gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary off;
gzip_disable "MSIE [1-6]\.";

 

重载配置:

[root@localhost ~]# service nginx reload

 

查询生效

curl -I -H "Accept-Encoding: gzip, deflate" "https://yourlocalhost"
HTTP/1.1 200 OK
Server: nginx
Date: ......
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
......
Content-Encoding: gzip

 

查询其他文件:

curl -I -H "Accept-Encoding: gzip, deflate" "https://yourlocalhost/img.jpg"
curl -I -H "Accept-Encoding: gzip, deflate" "https://yourlocalhost/javasc.js"
curl -I -H "Accept-Encoding: gzip, deflate" "https://yourlocalhost/style.css"

 

通过外部站点查询生效:
http://tool.chinaz.com/Gzips/?q=yourlocalhost

 

配置指令详细注释:

+ gzip on|off
– # 默认值: gzip off
– # 开启或者关闭 gzip 模块

+ gzip_static on|off
– # nginx 对于静态文件的处理模块
– # 该模块可以读取预先压缩的 gz 文件,这样可以减少每次请求进行 gzip 压缩的 CPU 资源消耗。该模块启用后,nginx 首先检查是否存在请求静态文件的 gz 结尾的文件,如果有则直接返回该 gz 文件内容。为了要兼容不支持 gzip 的浏览器,启用 gzip_static 模块就必须同时保留原始静态文件和 gz 文件。这样的话,在有大量静态文件的情况下,将会大大增加磁盘空间。我们可以利用 nginx 的反向代理功能实现只保留 gz 文件。
– # 可以 google”nginx gzip_static” 了解更多

+ gzip_comp_level 4
– # 默认值:1(建议选择为 4)
– # gzip 压缩比/压缩级别,压缩级别 1-9,级别越高压缩率越大,当然压缩时间也就越长(传输快但比较消耗 cpu)。

+ gzip_buffers 4 16k
– # 默认值: gzip_buffers 4 4k/8k
– # 设置系统获取几个单位的缓存用于存储 gzip 的压缩结果数据流。 例如 4 4k 代表以 4k 为单位,按照原始数据大小以 4k 为单位的 4 倍申请内存。 4 8k 代表以 8k 为单位,按照原始数据大小以 8k 为单位的 4 倍申请内存。
– # 如果没有设置,默认值是申请跟原始数据相同大小的内存空间去存储 gzip 压缩结果。

+ gzip_types mime-type [mime-type …]
– # 默认值: gzip_types text/html (默认不对 js/css 文件进行压缩)
– # 压缩类型,匹配 MIME 类型进行压缩
– # 不能用通配符 text/*
– # (无论是否指定)text/html 默认已经压缩
– # 设置哪压缩种文本文件可参考 conf/mime.types

+ gzip_min_length  1k
– # 默认值: 0 ,不管页面多大都压缩
– # 设置允许压缩的页面最小字节数,页面字节数从 header 头中的 Content-Length 中进行获取。
– # 建议设置成大于 1k 的字节数,小于 1k 可能会越压越大。 即: gzip_min_length 1024

+ gzip_http_version 1.0|1.1
– # 默认值: gzip_http_version 1.1(就是说对 HTTP/1.1 协议的请求才会进行 gzip 压缩)
– # 识别 http 的协议版本。由于早期的一些浏览器或者 http 客户端,可能不支持 gzip 自解压,用户就会看到乱码,所以做一些判断还是有必要的。
– # 注:99.99% 的浏览器基本上都支持 gzip 解压了,所以可以不用设这个值, 保持系统默认即可。
– # 假设我们使用的是默认值 1.1,如果我们使用了 proxy_pass 进行反向代理,那么 nginx 和后端的 upstream server 之间是用 HTTP/1.0 协议通信的,如果我们使用 nginx 通过反向代理做 Cache Server,而且前端的 nginx 没有开启 gzip,同时,我们后端的 nginx 上没有设置 gzip_http_version 为 1.0,那么 Cache 的 url 将不会进行 gzip 压缩

+ gzip_proxied [off|expired|no-cache|no-store|private|no_last_modified|no_etag|auth|any] …
– # 默认值:off
– # Nginx 作为反向代理的时候启用,开启或者关闭后端服务器返回的结果,匹配的前提是后端服务器必须要返回包含”Via” 的 header 头。
– off 关闭所有的代理结果数据的压缩
– expired 启用压缩,如果 header 头中包含 “Expires” 头信息
– no-cache 启用压缩,如果 header 头中包含 “Cache-Control:no-cache” 头信息
– no-store 启用压缩,如果 header 头中包含 “Cache-Control:no-store” 头信息
– private 启用压缩,如果 header 头中包含 “Cache-Control:private” 头信息
– no_last_modified 启用压缩, 如果 header 头中不包含 “Last-Modified” 头信息
– no_etag 启用压缩 , 如果 header 头中不包含 “ETag” 头信息
– auth 启用压缩 , 如果 header 头中包含 “Authorization” 头信息
– any 无条件启用压缩

+ gzip_vary on
– # 和 http 头有关系,加个 vary 头,给代理服务器用的,有的浏览器支持压缩,有的不支持,所以避免浪费不支持的也压缩,所以根据客户端的 HTTP 头来判断,是否需要压缩

+ gzip_disable “MSIE [1-6].”
– # 禁用 IE6 的 gzip 压缩,又是因为杯具的 IE6。当然,IE6 目前依然广泛的存在,所以这里你也可以设置为 “MSIE [1-5].”
– # IE6 的某些版本对 gzip 的压缩支持很不好,会造成页面的假死,今天产品的同学就测试出了这个问题
– 后来调试后,发现是对 img 进行 gzip 后造成 IE6 的假死,把对 img 的 gzip 压缩去掉后就正常了
– 为了确保其它的 IE6 版本不出问题,所以建议加上 gzip_disable 的设置

CentOS 6.8 chkconfig、service、ps、grep、kill 命令

[root@hexingxing ~]#  chkconfig --list ## 查看所有开机启用服务项
auditd         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
blk-availability 0: 关闭 1: 启用 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
crond           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
htcacheclean   0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
httpd           0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
ip6tables       0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
iptables       0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
iscsi           0: 关闭 1: 关闭 2: 关闭 3: 启用 4: 启用 5: 启用 6: 关闭
iscsid         0: 关闭 1: 关闭 2: 关闭 3: 启用 4: 启用 5: 启用 6: 关闭
lvm2-monitor   0: 关闭 1: 启用 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
mdmonitor       0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
multipathd     0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
netconsole     0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
netfs           0: 关闭 1: 关闭 2: 关闭 3: 启用 4: 启用 5: 启用 6: 关闭
network         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
nginx           0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
ntpd           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
ntpdate         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
nyGuardd       0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
nyTerminald     0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
postfix         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
rdisc           0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
restorecond     0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
rsyslog         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
saslauthd       0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
sshd           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
udev-post       0: 关闭 1: 启用 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
vsftpd         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
[root@hexingxing ~]#  service nginx start ## 开启 nginx 服务
正在启动 nginx:                                           [确定]
[root@hexingxing ~]#  chkconfig nginx on ## 设置 nginx 服务开机启用
[root@hexingxing ~]#  chkconfig --list ## 查看所有开机服务项,此时 nginx 已经开机开启服务
auditd         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
blk-availability 0: 关闭 1: 启用 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
crond           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
htcacheclean   0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
httpd           0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
ip6tables       0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
iptables       0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
iscsi           0: 关闭 1: 关闭 2: 关闭 3: 启用 4: 启用 5: 启用 6: 关闭
iscsid         0: 关闭 1: 关闭 2: 关闭 3: 启用 4: 启用 5: 启用 6: 关闭
lvm2-monitor   0: 关闭 1: 启用 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
mdmonitor       0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
multipathd     0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
netconsole     0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
netfs           0: 关闭 1: 关闭 2: 关闭 3: 启用 4: 启用 5: 启用 6: 关闭
network         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
nginx           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
ntpd           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
ntpdate         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
nyGuardd       0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
nyTerminald     0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
postfix         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
rdisc           0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
restorecond     0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
rsyslog         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
saslauthd       0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
sshd           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
udev-post       0: 关闭 1: 启用 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
vsftpd         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
[root@hexingxing ~]#  chkconfig httpd on ## 设置 apache 服务开机启用
[root@hexingxing ~]#  chkconfig --list ## 查看所有开机服务项,此时 apache 已经开机开启服务
auditd         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
blk-availability 0: 关闭 1: 启用 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
crond           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
htcacheclean   0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
httpd           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
ip6tables       0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
iptables       0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
iscsi           0: 关闭 1: 关闭 2: 关闭 3: 启用 4: 启用 5: 启用 6: 关闭
iscsid         0: 关闭 1: 关闭 2: 关闭 3: 启用 4: 启用 5: 启用 6: 关闭
lvm2-monitor   0: 关闭 1: 启用 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
mdmonitor       0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
multipathd     0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
netconsole     0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
netfs           0: 关闭 1: 关闭 2: 关闭 3: 启用 4: 启用 5: 启用 6: 关闭
network         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
nginx           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
ntpd           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
ntpdate         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
nyGuardd       0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
nyTerminald     0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
postfix         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
rdisc           0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
restorecond     0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
rsyslog         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
saslauthd       0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
sshd           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
udev-post       0: 关闭 1: 启用 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
vsftpd         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
[root@hexingxing ~]#  shutdown -r now  ##重启系统
[root@hexingxing ~]#  service nginx start ## 开启 nginx 服务,开启失败,由于现在 apache 和 nginx 已经全部是开机启用并都使用 80 端口,所以有冲突,要启用 nginx 需要停止 apache 服务
正在启动 nginx:nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
[失败]
[root@hexingxing ~]#  service httpd stop ## 停止 apache 服务
停止 httpd:                                               [确定]
[root@hexingxing ~]#  service nginx start ## 开启 nginx 服务,此时可以正常开启 nginx 服务
正在启动 nginx:                                           [确定]
[root@hexingxing ~]#  service httpd status ## 查看 apache 服务状态,已停止
httpd 已停止
[root@hexingxing ~]#  service nginx status ## 查看 nginx 服务状态,正在运行
nginx (pid  2978) 正在运行...
[root@hexingxing ~]#  service nginx stop ## 停止 nginx 服务
停止 nginx:                                               [确定]
[root@hexingxing ~]#  service httpd start ## 开启 apache 服务
正在启动 httpd:                                               [确定]
[root@hexingxing ~]#  ps -ef ## 查看正在运行的所有进程
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 19:16 ?        00:00:01 /sbin/init
root         2     0  0 19:16 ?        00:00:00 [kthreadd]
root         3     2  0 19:16 ?        00:00:00 [migration/0]
root         4     2  0 19:16 ?        00:00:00 [ksoftirqd/0]
root         5     2  0 19:16 ?        00:00:00 [stopper/0]
root         6     2  0 19:16 ?        00:00:00 [watchdog/0]
root         7     2  0 19:16 ?        00:00:00 [migration/1]
root         8     2  0 19:16 ?        00:00:00 [stopper/1]
root         9     2  0 19:16 ?        00:00:00 [ksoftirqd/1]
root        10     2  0 19:16 ?        00:00:00 [watchdog/1]
root        11     2  0 19:16 ?        00:00:02 [events/0]
root        12     2  0 19:16 ?        00:00:02 [events/1]
root        13     2  0 19:16 ?        00:00:00 [events/0]
root        14     2  0 19:16 ?        00:00:00 [events/1]
root        15     2  0 19:16 ?        00:00:00 [events_long/0]
root        16     2  0 19:16 ?        00:00:00 [events_long/1]
root        17     2  0 19:16 ?        00:00:00 [events_power_ef]
root        18     2  0 19:16 ?        00:00:00 [events_power_ef]
root        19     2  0 19:16 ?        00:00:00 [cgroup]
root        20     2  0 19:16 ?        00:00:00 [khelper]
root        21     2  0 19:16 ?        00:00:00 [netns]
root        22     2  0 19:16 ?        00:00:00 [async/mgr]
root        23     2  0 19:16 ?        00:00:00 [pm]
root        24     2  0 19:16 ?        00:00:00 [sync_supers]
root        25     2  0 19:16 ?        00:00:00 [bdi-default]
root        26     2  0 19:16 ?        00:00:00 [kintegrityd/0]
root        27     2  0 19:16 ?        00:00:00 [kintegrityd/1]
root        28     2  0 19:16 ?        00:00:00 [kblockd/0]
root        29     2  0 19:16 ?        00:00:00 [kblockd/1]
root        30     2  0 19:16 ?        00:00:00 [kacpid]
root        31     2  0 19:16 ?        00:00:00 [kacpi_notify]
root        32     2  0 19:16 ?        00:00:00 [kacpi_hotplug]
root        33     2  0 19:16 ?        00:00:00 [ata_aux]
root        34     2  0 19:16 ?        00:00:00 [ata_sff/0]
root        35     2  0 19:16 ?        00:00:00 [ata_sff/1]
root        36     2  0 19:16 ?        00:00:00 [ksuspend_usbd]
root        37     2  0 19:16 ?        00:00:00 [khubd]
root        38     2  0 19:16 ?        00:00:00 [kseriod]
root        39     2  0 19:16 ?        00:00:00 [md/0]
root        40     2  0 19:16 ?        00:00:00 [md/1]
root        41     2  0 19:16 ?        00:00:00 [md_misc/0]
root        42     2  0 19:16 ?        00:00:00 [md_misc/1]
root        43     2  0 19:16 ?        00:00:00 [linkwatch]
root        46     2  0 19:16 ?        00:00:00 [khungtaskd]
root        47     2  0 19:16 ?        00:00:00 [kswapd0]
root        48     2  0 19:16 ?        00:00:00 [ksmd]
root        49     2  0 19:16 ?        00:00:00 [khugepaged]
root        50     2  0 19:16 ?        00:00:00 [aio/0]
root        51     2  0 19:16 ?        00:00:00 [aio/1]
root        52     2  0 19:16 ?        00:00:00 [crypto/0]
root        53     2  0 19:16 ?        00:00:00 [crypto/1]
root        60     2  0 19:16 ?        00:00:00 [kthrotld/0]
root        61     2  0 19:16 ?        00:00:00 [kthrotld/1]
root        62     2  0 19:16 ?        00:00:00 [pciehpd]
root        64     2  0 19:16 ?        00:00:00 [kpsmoused]
root        65     2  0 19:16 ?        00:00:00 [usbhid_resumer]
root        66     2  0 19:16 ?        00:00:00 [deferwq]
root        98     2  0 19:16 ?        00:00:00 [kdmremove]
root        99     2  0 19:16 ?        00:00:00 [kstriped]
root       132     2  0 19:16 ?        00:00:00 [ttm_swap]
root       253     2  0 19:16 ?        00:00:00 [mpt_poll_0]
root       254     2  0 19:16 ?        00:00:00 [mpt/0]
root       255     2  0 19:16 ?        00:00:00 [scsi_eh_0]
root       258     2  0 19:16 ?        00:00:00 [scsi_eh_1]
root       259     2  0 19:16 ?        00:00:00 [scsi_eh_2]
root       379     2  0 19:16 ?        00:00:00 [jbd2/sda3-8]
root       380     2  0 19:16 ?        00:00:00 [ext4-dio-unwrit]
root       418     2  0 19:16 ?        00:00:00 [flush-8:0]
root       471     1  0 19:16 ?        00:00:00 /sbin/udevd -d
root       645     2  0 19:16 ?        00:00:00 [vmmemctl]
root       842     2  0 19:16 ?        00:00:00 [jbd2/sda1-8]
root       843     2  0 19:16 ?        00:00:00 [ext4-dio-unwrit]
root       844     2  0 19:16 ?        00:00:00 [jbd2/sdb1-8]
root       845     2  0 19:16 ?        00:00:00 [ext4-dio-unwrit]
root       881     2  0 19:16 ?        00:00:00 [kauditd]
root      1804     1  0 19:16 ?        00:00:00 auditd
root      1826     1  0 19:16 ?        00:00:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
root      1895     1  0 19:16 ?        00:00:00 /usr/sbin/sshd
ntp       1923     1  0 19:16 ?        00:00:00 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
root      1937     1  0 19:16 ?        00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root      1947     1  0 19:16 ?        00:00:01 /usr/local/nyTerminald/nyterminal
root      2039     1  0 19:16 ?        00:00:00 /usr/libexec/postfix/master
postfix   2045  2039  0 19:16 ?        00:00:00 pickup -l -t fifo -u
postfix   2046  2039  0 19:16 ?        00:00:00 qmgr -l -t fifo -u
root      2093     1  0 19:16 ?        00:00:01 /usr/local/nyTerminald/nyguard
root      2107     1  0 19:16 ?        00:00:01 crond
root      2820     1  0 19:17 tty1     00:00:00 /sbin/mingetty /dev/tty1
root      2822     1  0 19:17 tty2     00:00:00 /sbin/mingetty /dev/tty2
root      2824     1  0 19:17 tty3     00:00:00 /sbin/mingetty /dev/tty3
root      2828     1  0 19:17 tty4     00:00:00 /sbin/mingetty /dev/tty4
root      2830   471  0 19:17 ?        00:00:00 /sbin/udevd -d
root      2831     1  0 19:17 tty5     00:00:00 /sbin/mingetty /dev/tty5
root      2832   471  0 19:17 ?        00:00:00 /sbin/udevd -d
root      2834     1  0 19:17 tty6     00:00:00 /sbin/mingetty /dev/tty6
root      2872  1895  0 19:19 ?        00:00:00 sshd: root@pts/0
root      2876  2872  0 19:19 pts/0    00:00:00 -bash
root      3232     1  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3234  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3235  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3236  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3237  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3238  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3239  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3240  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3241  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
root      3909  2876  0 20:04 pts/0    00:00:00 ps -ef
[root@hexingxing ~]#  ps -ef | grep apache ## 筛选 apache 的进程
apache    3234  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3235  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3236  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3237  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3238  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3239  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3240  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3241  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
root      3959  2876  0 20:06 pts/0    00:00:00 grep apache
[root@hexingxing ~]#  ps -ef | grep httpd ## 筛选以 httpd 为进程名的 apache 的进程
root      3232     1  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3234  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3235  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3236  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3237  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3238  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3239  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3240  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3241  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
root      3927  2876  0 20:05 pts/0    00:00:00 grep httpd
[root@hexingxing ~]#  ps -ef | grep nginx ## 筛选 nginx 的进程,没有在运行的进程,因为前面已经停止了 nginx 的服务
root      3994  2876  0 20:08 pts/0    00:00:00 grep nginx
[root@hexingxing ~]#  kill 3232 ## 终止 3232 PPID 的进程,也就是 apache 的主进程
[root@hexingxing ~]#  kill 3232 ## 再次终止 3232 PPID 的进程,显示没有那个进程,说明已经终止掉了
-bash: kill: (3232) - 没有那个进程
[root@hexingxing ~]#  ps -ef | grep apache ## 筛选 apache 的进程,没有在运行的进程,已经完全终止掉了
root      4062  2876  0 20:13 pts/0    00:00:00 grep apache
[root@hexingxing ~]#  ps -ef ##查看整体的进程也没有了 apache 的进程服务
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 19:16 ?        00:00:01 /sbin/init
root         2     0  0 19:16 ?        00:00:00 [kthreadd]
root         3     2  0 19:16 ?        00:00:00 [migration/0]
root         4     2  0 19:16 ?        00:00:00 [ksoftirqd/0]
root         5     2  0 19:16 ?        00:00:00 [stopper/0]
root         6     2  0 19:16 ?        00:00:00 [watchdog/0]
root         7     2  0 19:16 ?        00:00:00 [migration/1]
root         8     2  0 19:16 ?        00:00:00 [stopper/1]
root         9     2  0 19:16 ?        00:00:00 [ksoftirqd/1]
root        10     2  0 19:16 ?        00:00:00 [watchdog/1]
root        11     2  0 19:16 ?        00:00:02 [events/0]
root        12     2  0 19:16 ?        00:00:03 [events/1]
root        13     2  0 19:16 ?        00:00:00 [events/0]
root        14     2  0 19:16 ?        00:00:00 [events/1]
root        15     2  0 19:16 ?        00:00:00 [events_long/0]
root        16     2  0 19:16 ?        00:00:00 [events_long/1]
root        17     2  0 19:16 ?        00:00:00 [events_power_ef]
root        18     2  0 19:16 ?        00:00:00 [events_power_ef]
root        19     2  0 19:16 ?        00:00:00 [cgroup]
root        20     2  0 19:16 ?        00:00:00 [khelper]
root        21     2  0 19:16 ?        00:00:00 [netns]
root        22     2  0 19:16 ?        00:00:00 [async/mgr]
root        23     2  0 19:16 ?        00:00:00 [pm]
root        24     2  0 19:16 ?        00:00:00 [sync_supers]
root        25     2  0 19:16 ?        00:00:00 [bdi-default]
root        26     2  0 19:16 ?        00:00:00 [kintegrityd/0]
root        27     2  0 19:16 ?        00:00:00 [kintegrityd/1]
root        28     2  0 19:16 ?        00:00:00 [kblockd/0]
root        29     2  0 19:16 ?        00:00:00 [kblockd/1]
root        30     2  0 19:16 ?        00:00:00 [kacpid]
root        31     2  0 19:16 ?        00:00:00 [kacpi_notify]
root        32     2  0 19:16 ?        00:00:00 [kacpi_hotplug]
root        33     2  0 19:16 ?        00:00:00 [ata_aux]
root        34     2  0 19:16 ?        00:00:00 [ata_sff/0]
root        35     2  0 19:16 ?        00:00:00 [ata_sff/1]
root        36     2  0 19:16 ?        00:00:00 [ksuspend_usbd]
root        37     2  0 19:16 ?        00:00:00 [khubd]
root        38     2  0 19:16 ?        00:00:00 [kseriod]
root        39     2  0 19:16 ?        00:00:00 [md/0]
root        40     2  0 19:16 ?        00:00:00 [md/1]
root        41     2  0 19:16 ?        00:00:00 [md_misc/0]
root        42     2  0 19:16 ?        00:00:00 [md_misc/1]
root        43     2  0 19:16 ?        00:00:00 [linkwatch]
root        46     2  0 19:16 ?        00:00:00 [khungtaskd]
root        47     2  0 19:16 ?        00:00:00 [kswapd0]
root        48     2  0 19:16 ?        00:00:00 [ksmd]
root        49     2  0 19:16 ?        00:00:00 [khugepaged]
root        50     2  0 19:16 ?        00:00:00 [aio/0]
root        51     2  0 19:16 ?        00:00:00 [aio/1]
root        52     2  0 19:16 ?        00:00:00 [crypto/0]
root        53     2  0 19:16 ?        00:00:00 [crypto/1]
root        60     2  0 19:16 ?        00:00:00 [kthrotld/0]
root        61     2  0 19:16 ?        00:00:00 [kthrotld/1]
root        62     2  0 19:16 ?        00:00:00 [pciehpd]
root        64     2  0 19:16 ?        00:00:00 [kpsmoused]
root        65     2  0 19:16 ?        00:00:00 [usbhid_resumer]
root        66     2  0 19:16 ?        00:00:00 [deferwq]
root        98     2  0 19:16 ?        00:00:00 [kdmremove]
root        99     2  0 19:16 ?        00:00:00 [kstriped]
root       132     2  0 19:16 ?        00:00:00 [ttm_swap]
root       253     2  0 19:16 ?        00:00:00 [mpt_poll_0]
root       254     2  0 19:16 ?        00:00:00 [mpt/0]
root       255     2  0 19:16 ?        00:00:00 [scsi_eh_0]
root       258     2  0 19:16 ?        00:00:00 [scsi_eh_1]
root       259     2  0 19:16 ?        00:00:00 [scsi_eh_2]
root       379     2  0 19:16 ?        00:00:00 [jbd2/sda3-8]
root       380     2  0 19:16 ?        00:00:00 [ext4-dio-unwrit]
root       418     2  0 19:16 ?        00:00:00 [flush-8:0]
root       471     1  0 19:16 ?        00:00:00 /sbin/udevd -d
root       645     2  0 19:16 ?        00:00:00 [vmmemctl]
root       842     2  0 19:16 ?        00:00:00 [jbd2/sda1-8]
root       843     2  0 19:16 ?        00:00:00 [ext4-dio-unwrit]
root       844     2  0 19:16 ?        00:00:00 [jbd2/sdb1-8]
root       845     2  0 19:16 ?        00:00:00 [ext4-dio-unwrit]
root       881     2  0 19:16 ?        00:00:00 [kauditd]
root      1804     1  0 19:16 ?        00:00:00 auditd
root      1826     1  0 19:16 ?        00:00:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
root      1895     1  0 19:16 ?        00:00:00 /usr/sbin/sshd
ntp       1923     1  0 19:16 ?        00:00:00 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
root      1937     1  0 19:16 ?        00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root      1947     1  0 19:16 ?        00:00:01 /usr/local/nyTerminald/nyterminal
root      2039     1  0 19:16 ?        00:00:00 /usr/libexec/postfix/master
postfix   2045  2039  0 19:16 ?        00:00:00 pickup -l -t fifo -u
postfix   2046  2039  0 19:16 ?        00:00:00 qmgr -l -t fifo -u
root      2093     1  0 19:16 ?        00:00:01 /usr/local/nyTerminald/nyguard
root      2107     1  0 19:16 ?        00:00:01 crond
root      2820     1  0 19:17 tty1     00:00:00 /sbin/mingetty /dev/tty1
root      2822     1  0 19:17 tty2     00:00:00 /sbin/mingetty /dev/tty2
root      2824     1  0 19:17 tty3     00:00:00 /sbin/mingetty /dev/tty3
root      2828     1  0 19:17 tty4     00:00:00 /sbin/mingetty /dev/tty4
root      2830   471  0 19:17 ?        00:00:00 /sbin/udevd -d
root      2831     1  0 19:17 tty5     00:00:00 /sbin/mingetty /dev/tty5
root      2832   471  0 19:17 ?        00:00:00 /sbin/udevd -d
root      2834     1  0 19:17 tty6     00:00:00 /sbin/mingetty /dev/tty6
root      2872  1895  0 19:19 ?        00:00:00 sshd: root@pts/0
root      2876  2872  0 19:19 pts/0    00:00:00 -bash
root      4063  2876  0 20:13 pts/0    00:00:00 ps -ef
[root@hexingxing ~]#  chkconfig --list | grep httpd  ##查看开机启用的服务,筛选 apache 的服务
httpd           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
[root@hexingxing ~]#  chkconfig --list | grep nginx ##查看开机启用的服务,筛选 nginx 的服务
nginx           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
[root@hexingxing ~]#  service httpd start ##开启 apache 服务
正在启动 httpd:                                               [确定]
[root@hexingxing ~]#  service nginx start ##开启 nginx 服务,开启失败,由于前面已经开始了 apache ,所以启用失败
正在启动 nginx:nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
[失败]
[root@hexingxing ~]#  service nginx status ##查看 nginx 服务状态,已经停止
nginx 已停止
[root@hexingxing ~]#  service httpd status ##查看 apache 服务状态,正在运行
httpd (pid  5578) 正在运行...

HTTPS 时代,使用 Certbot (Let’s Encrypt)

nginx on centos install certbot (letsencrypt)

[root@hexingxing ~]#  yum install epel-release //更新系统
[root@hexingxing ~]#  yum install -y git //安装 git
[root@hexingxing ~]#  git clone https://github.com/certbot/certbot //git 下载 certbot
Initialized empty Git repository in /certbot/.git/
remote: Counting objects: 51598, done.
remote: Compressing objects: 100% (133/133), done.
remote: Total 51598 (delta 101), reused 99 (delta 48), pack-reused 51415
Receiving objects: 100% (51598/51598), 16.12 MiB | 2.64 MiB/s, done.
Resolving deltas: 100% (36980/36980), done.
[root@hexingxing ~]#  cd certbot 切换到 certbot 目录
[root@hexingxing certbot]# ./certbot-auto 执行自动 TUI 模式生成证书

Bootstrapping dependencies for RedHat-based OSes... (you can skip this with --no-bootstrap)
yum is /usr/bin/yum
Loaded plugins: fastestmirror, refresh-packagekit, security
…

如果提示 “Could not install OS dependencies. Aborting bootstrap!” 那么按提示的详细说明操作,
如果提示 “Transaction check error: ” 类信息说明库的新旧版本不对,删除对应的版本即可,例如 “krb5-libs-1.10.3-57.el6.x86_64”,命令如下:

[root@hexingxing certbot]# rpm -e krb5-libs-1.10.3-57.el6.x86_64

然后再次./certbot-auto,直接后面的操作出现如下提示要求输入 email 地址,

[root@hexingxing certbot]# ./certbot-auto
Creating virtual environment...
Installing Python packages...
Installation succeeded.
/opt/eff.org/certbot/venv/lib/python2.6/site-packages/cryptography/__init__.py:26: DeprecationWarning: 
Python 2.6 is no longer supported by the Python core team, please upgrade your Python. 
A future version of cryptography will drop support for Python 2.6
DeprecationWarning
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): //输入你常用的邮箱地址

Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: a //接受协议或条款之类,必选 a

-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o: n //是不是愿意公开你的邮箱地址,按自己想法

How would you like to authenticate and install certificates?
-------------------------------------------------------------------------------
1: Apache Web Server plugin - Beta (apache)
2: Nginx Web Server plugin - Alpha (nginx)
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 //选择 apache 或 nginx 程序
Plugins selected: Authenticator nginx, Installer nginx
No names were found in your configuration files. Please enter in your domain
name(s) (comma and/or space separated) (Enter 'c' to cancel): //第一种情况:没有检测到域名配置文件,手动输入域名

Which names would you like to activate HTTPS for?
-------------------------------------------------------------------------------
1: test.hexingxing.cn //第二种情况,如果是已配置 SSL.conf,这里会显示你服务器已配置的域名列表,on:/etc/nginx/conf.d/
-------------------------------------------------------------------------------
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1 //选择你要创建证书的域名
Obtaining a new certificate
Performing the following challenges:
tls-sni-01 challenge for test.hexingxing.cn
Waiting for verification...
Cleaning up challenges
Deployed Certificate to VirtualHost /etc/nginx/conf.d/test.hexingxing.conf for set(['test.hexingxing.cn'])

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 //是否立即生效重定向到 https
Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/test.hexingxing.conf

-------------------------------------------------------------------------------
Congratulations! You have successfully enabled https://test.hexingxing.cn //恭喜! 您已成功启用 https://test.hexingxing.cn

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=test.hexingxing.cn //可以访问这个链接测试你的 HTTPS 质量
-------------------------------------------------------------------------------

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
// 此处省略了很多字,关于证书密钥文件的存放情况以及到期时间

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

90 天后自动续期:
设置自动续期定时任务
先使用以下命令测试手动模拟更新证书

[root@hexingxing ~]# {certbot 的绝对或相对路径}/certbot-auto renew --dry-run

输出类似以下提示说明命令配置正常

[root@hexingxing ~]# -------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/example.com.conf
-------------------------------------------------------------------------------
** DRY RUN: simulating 'certbot renew' close to cert expiry
** (The test certificates below have not been saved.)
Congratulations, all renewals succeeded. The following certs have been renewed:
/etc/letsencrypt/live/example.com/fullchain.pem (success)
** DRY RUN: simulating 'certbot renew' close to cert expiry
** (The test certificates above have not been saved.)
IMPORTANT NOTES:
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.

使用 crontab -e 命令设置定时任务,自动更新证书

[root@hexingxing ~]# crontab -e
0 3 1 * * {certbot 的绝对或相对路径}/certbot-auto renew >> /var/log/le-renew.log

执行时间为:每个月的 1 日凌晨 3 点 0 分 执行 renew 任务
执行以下命令后查看输出的日志是否正常,一般不到指定更新时间内输出 “No renewals were attempted.” 提示

[root@hexingxing ~]# {certbot 的绝对或相对路径}/certbot-auto renew >> /var/log/le-renew.log

如果需要强制执行,可使用以下命令,输出的内容会提示已经更新。

[root@hexingxing ~]# {certbot 的绝对或相对路径}/certbot-auto renew --force-renew

nginx https 证书配置

HTTP 301 重定向 HTTPS

Nginx 出现 413 Request Entity Too Large 问题的解决方法

使用 PHP 上传图片(大小 1.2M),出现 nginx: 413 Request Entity Too Large 错误。
一般可能是服务器限制了上传文件的大小,但 php 默认的文件上传是 2M,应该不会出现问题。

打开 php.ini 配置文件,把 upload_max_filesizepost_max_size 修改为 20M,然后重启。
再次上传,问题依旧,可以排除 php 方面的问题。

后来发现 Nginx 默认上传文件的大小是 1M,可通过 Nginx 的设置来修改:
1、打开 Nginx 配置文件 nginx.conf, 路径一般是:/etc/nginx/nginx.conf
2、在 http{} 段中加入 client_max_body_size 20m; 20m 为允许最大上传的大小;
3、保存后重启 Nginx,问题解决。

如果是通过 phpMyAdmin 导入,那选择 “从网站服务器上传文件夹 /var/lib/phpMyAdmin/upload/ ” 方式导入,这样即使没有设置以上配置也能正常导入。

CentOS 6.8 配置 LNMP(Linux+Nginx+PHP5+MySQL)

1、使用 yum 直接安装 Nginx

[root@hexingxing ~]#  yum install -y nginx
已加载插件:fastestmirror, refresh-packagekit, security
设置安装进程
Determining fastest mirrors
* base: mirrors.163.com
* extras: mirrors.163.com
* updates: mirrors.nwsuaf.edu.cn
No package nginx available.
错误:无须任何处理

## 系统不能直接 yum install nginx,判断可能 yum 源有问题

2、下载 Nginx 源

[root@hexingxing html]# rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
Retrieving http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
warning: /var/tmp/rpm-tmp.KcjpHW: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY
Preparing...                ########################################### [100%]
1:nginx-release-centos   ########################################### [100%]

##下载成功

3、查看 Nginx 源是否下载成功

[root@hexingxing ~]# ls /etc/yum.repos.d/
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-fasttrack.repo  CentOS-Media.repo  CentOS-Vault.repo  nginx.repo

## 在/etc/yum.repos.d/ 存在 nginx.repo 文件,那么可以安装了,为了确认是否可安装,先查看下 Nginx 的软件信息

4、查看 Nginx 软件信息

[root@hexingxing html]# yum info nginx
已加载插件:fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
* base: mirror.bit.edu.cn
* extras: ftp.sjtu.edu.cn
* updates: centos.ustc.edu.cn
nginx                                                                                                                                                     | 2.9 kB     00:00
nginx/primary_db                                                                                                                                          |  15 kB     00:00
可安装的软件包
Name        : nginx
Arch        : x86_64
Version     : 1.10.1
Release     : 1.el6.ngx
Size        : 821 k
Repo        : nginx
Summary     : High performance web server
URL         : http://nginx.org/
License     : 2-clause BSD-like license
Description : nginx [engine x] is an HTTP and reverse proxy server, as well as
: a mail proxy server.

## 可以获取到 Nginx 的软件信息,说明已经可以安装了

5、安装 Nginx

[root@hexingxing ~]# yum install nginx
已加载插件:fastestmirror, refresh-packagekit, security
设置安装进程
Loading mirror speeds from cached hostfile
* base: mirror.bit.edu.cn
* extras: ftp.sjtu.edu.cn
* updates: centos.ustc.edu.cn
解决依赖关系
--> 执行事务检查
---> Package nginx.x86_64 0:1.10.1-1.el6.ngx will be 安装
--> 完成依赖关系计算

依赖关系解决

=================================================================================================================================================================================
软件包                                 架构                                    版本                                                仓库                                    大小
=================================================================================================================================================================================
正在安装:
nginx                                  x86_64                                  1.10.1-1.el6.ngx                                    nginx                                  821 k

事务概要
=================================================================================================================================================================================
Install       1 Package(s)

总下载量:821 k
Installed size: 2.1 M
确定吗?[y/N]:y
下载软件包:
nginx-1.10.1-1.el6.ngx.x86_64.rpm                                                                                                                         | 821 kB     00:23
运行 rpm_check_debug
执行事务测试
事务测试成功
执行事务
Warning: RPMDB altered outside of yum.
正在安装   : nginx-1.10.1-1.el6.ngx.x86_64                                                                                                                                 1/1
----------------------------------------------------------------------

Thanks for using nginx!

Please find the official documentation for nginx here:
* http://nginx.org/en/docs/

Commercial subscriptions for nginx are available on:
* http://nginx.com/products/

----------------------------------------------------------------------
Verifying  : nginx-1.10.1-1.el6.ngx.x86_64                                                                                                                                 1/1

已安装:
nginx.x86_64 0:1.10.1-1.el6.ngx

完毕!

##Nginx 安装完成

6、启动 Nginx

[root@hexingxing ~]# service nginx start
正在启动 nginx:nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
[失败]

##发现启动 Nginx 失败,根据以上错误信息,我发现可能是因为之前已安装并启动了 Apache,可能因此而报错,所以我现在停止 Apache 服务

6、停止 Apache

[root@hexingxing ~]# service httpd stop
停止 httpd:                                               [确定]

##停止 Apache

7、启动 Nginx

[root@hexingxing ~]# service nginx start
正在启动 nginx:                                           [确定]

##启动 Nginx 成功

8、访问服务器 IP

Welcome to nginx!

If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.

##访问服务器 IP 出现以上提示,说明 Nginx 已经安装成功并且可用,Nginx 的 Web 默认目录为 /usr/share/nginx/html/ ,可在此目录下放置网站文件,安装了 PHP 后可运行 PHP 网站。

 

到此,Nginx 已经安装成功。如果 Nginx 的 Web 页面不能访问可能还需要配置服务器的防火墙,配置防火墙和继续安装 MySQL 和 PHP ,可以参考何星星之前写的一篇《CentOS 6.8 配置 LAMP(Linux+Apache+PHP+MySQL)环境》。

 

Nginx 301 永久跳转和 URL 重写(用于域名更换和 http 跳转 https)

# 域名 301 永久跳转 (www to none-www or non-www to www),亦可单独用于一条 server{} 字段。
# 配置文件默认位于 [root@hexingxing conf.d]# pwd
# /etc/nginx/conf.d
server {
    listen 80;
    server_name www.domain.com;
    # $scheme will get the http protocol
    # and 301 is best practice for tablet, phone, desktop and seo
    return 301 $scheme://domain.com$request_uri;
}
# 域名 https URL 重写 (http2https)
# 配置文件默认位于 [root@hexingxing conf.d]# pwd
# /etc/nginx/conf.d
server {
    listen       80;
    # listen       80 default_server;
    # listen       [::]:80 default_server;
    server_name  domanin.com;
    root         /tmp/sev;
    rewrite ^(.*)$  https://$host$1 permanent;
    ...
}
# 域名 https URL if 方式重写 (Redirect non-https traffic to https)
# 配置文件默认位于 [root@hexingxing conf.d]# pwd
# /etc/nginx/conf.d
server {
    if ($host = baidu.com) {
        return 301 https://$host$request_uri;
    }
}
# 域名 https URL if 方式重写 (Redirect non-https traffic to https)
# 配置文件默认位于 [root@hexingxing conf.d]# pwd
# /etc/nginx/conf.d
server {
	# Redirect non-https traffic to https
	if ($scheme != "https") {
	    return 301 https://$host$request_uri;
	} 
}