安装 apache2 php mysql-server


sudo apt-get update
sudo apt-get install apache2 mysql-server libapache2-mod-php php-mbstring php-mysql php-gd php-mysqli
    php-curl curl phpunit  #后面的一些php扩展根据自己需要安装

这里注意,如果只运行apache2+php的话,那安装个libapache2-mod-php包就可以了,apache2把php当做一个模块来运行,和Windows中的 include 差不多。如果要用nginx 的话 应该安装php-fpm。


在安装mysql-server的过程中会弹出对话框让我们输入数据库root用户的密码,这个我们输入两次就好。

首先,a2enmod 是个好命令,我们在安装完上面的包以后,记得用它去开启重写模块和ssl模块,这样把原来的配置备份文件直接复制过去就可以直接启用了。

sudo a2enmod rewrite
sudo a2enmod ssl

一般到这个地方我就先配置个ftp服务,然后把我的备份配置文件直接上传到服务器了。

ftp配置参考:http://sinoll.com/blog/view?id=60


ubuntu设置swap交换内存

亚马逊云给的vps是没有交换内存的

free -m 查看 SWAP 后面全是0

那么运行一些命令,可能提示不能分配内存

那就增加个SWAP 玩玩


sudo dd if=/dev/zero of=swap.1 bs=1024k count=1000000 

count=1000000参数代表数量,这个正好是1g,直接增大1g ,bs=1024k 后面一定要写k,默认是byte 会很慢的。


转化为swap文件
sudo mkswap swap.1

增加权限

sudo chmod +x swap.1  #系统提示600权限就可以了,不需要755

激活swap文件
sudo swapon swap.1

查看效果
再次输入:free -m

mysql-server 数据库默认字符集设置

/etc/mysql/mysql.conf.d/mysqld.cnf

在 【mysqld】下追加:
character-set-server=utf8


/etc/mysql/conf.d/mysql.cnf

在 【mysql】 下追加:
default-character-set=utf8


最后 sudo service mysql restart

配置免费可用的ssl 证书

https://github.com/Neilpang/acme.sh/

这个不是一两句话可以说完的所以写个连接,自己好好研究

其实最有用的几个命令是:

1.安装acme.sh

curl  https://get.acme.sh | sh

#起个别名,防止每次输入句号
alias acme.sh=~/.acme.sh/acme.sh
#如果想让 acme.sh在root用户或其它用户上使用,则这么写
alias acme.sh=/home/ubuntu/.acme.sh.acme.sh   #ubuntu是当前使用的用户名,注意替换

2.生成证书,好多人在这里出错。这里建议先配置好apache2或者nginx 服务并设置域名与本地目录对应,然后生成证书的成功率比较高,如果依靠dns 什么的验证比较麻烦,也不利于后期 acme自动更新证书,因为这个证书的默认更新是60天,所以我们先配置好web服务,然后去执行下面这句就能生成证书,并且会自动验证

acme.sh  --issue  -d mydomain.com -d www.mydomain.com  --webroot  /home/wwwroot/mydomain.com/

这里注意 如果我们没有更改 apache2或者nginx 的默认目录,那么有时候可能权限不足,那就增加写的权限

sudo chmod 777 /home/wwwroot

然后再去执行上面的命令。

3.安装证书,这里的安装不是修改 apache2 配置文件,而是 设置证书的自动更新


acme.sh  --installcert  -d  <domain>.com   \
        --key-file   /etc/nginx/ssl/<domain>.key \
        --fullchain-file /etc/nginx/ssl/fullchain.cer \
        --reloadcmd  "service nginx force-reload"
--reloadcmd "service apache2 force-reload"  #效果等同上面的最后一句

需要注意的是, 这里指定的所有参数都会被自动记录下来, 并在将来证书自动更新以后, 被再次自动调用.

最后就是修改apache或nginx的配置文件 ,把证书配置文件加入到清单,并开启443端口,效果那是刚刚的。


apache2配置可以参考:

sudo vim /etc/apache2/sites-enables/000-default.conf

<VirtualHost *:80>
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot /home/ubuntu/htdocs/test.sinocd.cn/web
    <Directory /home/ubuntu/htdocs/test.sinocd.cn/web>
        DirectoryIndex index.php
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

ssl 配置参考:

<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin admin@domain.com
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot /home/ubuntu/htdocs/domain.com/frontend/web
<Directory /home/ubuntu/htdocs/domain.com/frontend/web>
DirectoryIndex index.php
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile/etc/apache2/ssl/domain.com_public.crt
SSLCertificateKeyFile   /etc/apache2/ssl/domain.com.key
SSLCertificateChainFile /etc/apache2/ssl/domain.com.crt
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
</VirtualHost>
</IfModule>


php配置参考

sudo vim /etc/php/7.0/apache2/conf/php.ini


short_open_tag = On
max_file_uploads = 20M
post_max_size = 80M

根据自己的需要去修改php.ini 文件

apache2配置和php.ini文件修改后,要重启服务,配置生效。