搭建Linux应用

工具:yum docker
服务端:swoft
应用端:yii2.0

安装基础组件


yum update

yum -y install lrzsz   # 安装rz/sz命令

yum -y install git  # 安装git

# 安装 composer
curl -sS https://getcomposer.org/installer | php   # 下载 composer.phar 文件(注意要关闭翻墙)

mv composer.phar /usr/local/bin/composer   # 设置为全局可访问

# 如果报错以下问题
/usr/bin/env: php: No such file or directory
# 执行下面命令
ln -s /home/php/bin/php /usr/local/bin/php   # 将php的实际安装目录指向/usr/local/bin/php

composer -v    # 查看composer版本,确定是否安装成功

composer selfupdate   # 升级composer

# 更换composer镜像源:
composer config -g repo.packagist composer https://packagist.laravel-china.org

安装php7


# 如果之前已经安装我们先卸载一下
yum -y remove php*

# 更改yum源
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

# 安装php72w和各种拓展
yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-fpm php72w-gd php72w-mbstring php72w-mysqlnd php72w-opcache php72w-pdo php72w-xml

# 查看当前php版本
php -v

# 开启php-fpm
systemctl start php-fpm
# 关闭php-fpm
systemctl stop php-fpm
# 重启php-fpm
systemctl restart php-fpm

安装nginx


# 添加yum源
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

yum install -y nginx

# 启动Nginx并设置开机自动运行
systemctl start nginx.service
systemctl enable nginx.service

# 开启nginx
systemctl start nginx
# 关闭nginx
systemctl stop nginx
# 重启nginx
systemctl restart nginx

安装mysql


# 添加yum源
rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

yum install mysql-community-server

# 启动mysql服务
service mysqld start

# 第一次启动后,mysql5.7会生成一个随机root密码,并放到了/var/log/mysqld.log日志中
# 使用 grep 'temporary password'  /var/log/mysqld.log 这个命令读取root初始密码
2018-11-26T15:08:41.595259Z 1 [Note] A temporary password is generated for root@localhost: owMP7Z(obmB-
# 初始密码为 owMP7Z(obmB-

# 使用 mysql -u root -p 然后输入上面的密码进入
ALTER USER USER() IDENTIFIED BY '123456';  # 修改登录的用户密码改成123456
# mysql5.7默认对密码进行强校验,建议设置为一个较为复杂的密码,否则会报错

# mysql5.7密码校验
# 0 or LOW	Length
# 1 or MEDIUM	Length; numeric, lowercase/uppercase, and special characters
# 2 or STRONG	Length; numeric, lowercase/uppercase, and special characters; dictionary file
# (默认validate_password_policy = 1)

# 如果需要把密码设置的简单一些,执行以下命令:
set global validate_password_policy=0;

# 设置简单的密码:
ALTER USER USER() IDENTIFIED BY '12345678';  # 默认需要密码长度为8位

# 如需再次进入mysql, 重新设置密码

# 切换到mysql数据表
use mysql
# 修改密码
update mysql.user set authentication_string=PASSWORD('12345678') where user='root';

# 修改密码后,需要重新启动mysql,新密码才会生效

# 重启mysql服务
service mysqld stop
service mysqld start

# 设置外网可访问
use mysql;
update user set host = '%' where user = 'root'; 
select host,user from user; 
flush privileges;

安装docker


# 移除旧的版本:
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine

# 安装一些必要的系统工具:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加软件源信息:
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 更新 yum 缓存:
sudo yum makecache fast

# 安装 Docker-ce:
sudo yum -y install docker-ce

# 启动 Docker 后台服务
sudo systemctl start docker

# 镜像加速
vi /etc/docker/daemon.json     # 如没有该文件,请先新建一个

# 新建daemon.json文件
###############################################################
cd /etc/docker/
touch daemon.json
###############################################################

# 文件内容
###############################################################
{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}
###############################################################

# 如需删除Docker CE,执行以下命令
sudo yum remove docker-ce
sudo rm -rf /var/lib/docker

安装swoft


docker pull swoft/swoft

docker run -p 8080:80 --name swoft  --rm -d swoft/swoft:latest

# 拷贝容器文件到本地
cd /home/
docker cp swoft:/var/www/swoft .  # 注意点号,表示拷贝到当前目录

# 从本地文件运行swoft容器:
docker run -p 8080:80 --name swoft -v /home/swoft/:/var/www/swoft --rm -d swoft/swoft:latest

docker run -p 8080:80 --name swoft -v /home/WancllMS-Server/swoft/:/var/www/swoft --rm -d swoft/swoft:latest

# 查看运行的容器
docker ps

# 停止容器
docker stop swoft

# 重启容器
docker restart swoft

配置nginx虚拟机


# 配置Http

server {
    listen 80;
    server_name www.demo.com;
    root   /home/demo/yii/web/;

    location / {
        index index.html index.htm index.php;
        autoindex off;

        if (!-e $request_filename) {
            rewrite  ^(.*)$  /index.php?s=/$1  last;
            break;
        }
    }

    location ~ \.php(.*)$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        include  fastcgi_params;
    }
}

#############################分割线##################################

# 配置Https

server {
    listen 80;
    server_name www.demo.com;
    return 301 https://$server_name$request_uri; 
}

server {
    listen 443;
    server_name www.demo.com;
    root   /home/demo/yii/web/;

    ssl on;
    ssl_certificate  /etc/nginx/ssl/1_www.demo.com_bundle.crt;
    ssl_certificate_key  /etc/nginx/ssl/2_www.demo.com.key;

    location / {
        index index.html index.htm index.php;
        autoindex off;

        if (!-e $request_filename) {
            rewrite  ^(.*)$  /index.php?s=/$1  last;
            break;
        }
    }

    location ~ \.php(.*)$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        include  fastcgi_params;
    }
}

设置文件权限


# 修改文件上传权限
cd /home/demo/yii/web/
chmod 757 uploads

# 修改缓存文件权限
cd /home/demo/yii/runtime/
chmod 757 cache

上次更新: 12/1/2018, 12:50:31 AM